1
mirror of https://github.com/CarmJos/EasyConfiguration.git synced 2026-06-04 18:48:20 +08:00

初始版本完成

This commit is contained in:
2022-04-17 00:32:33 +08:00
commit 3d0927aeeb
62 changed files with 5235 additions and 0 deletions
+47
View File
@@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>easyconfiguration-parent</artifactId>
<groupId>cc.carm.lib</groupId>
<version>1.0.0</version>
<relativePath>../../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<properties>
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
</properties>
<artifactId>easyconfiguration-bungee</artifactId>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>${project.parent.groupId}</groupId>
<artifactId>easyconfiguration-core</artifactId>
<version>${project.parent.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>net.md-5</groupId>
<artifactId>bungeecord-api</artifactId>
<version>1.18-R0.1-SNAPSHOT</version>
<type>jar</type>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>net.md-5</groupId>
<artifactId>bungeecord-api</artifactId>
<version>1.18-R0.1-SNAPSHOT</version>
<type>javadoc</type>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
@@ -0,0 +1,34 @@
package cc.carm.lib.configuration;
import cc.carm.lib.configuration.bungee.BungeeConfigProvider;
import java.io.File;
import java.io.IOException;
public class EasyConfiguration {
public static BungeeConfigProvider from(File file, String source) {
BungeeConfigProvider provider = new BungeeConfigProvider(file);
try {
provider.initializeFile(source);
provider.initialize();
} catch (IOException e) {
e.printStackTrace();
}
return provider;
}
public static BungeeConfigProvider from(File file) {
return from(file, file.getName());
}
public static BungeeConfigProvider from(String fileName) {
return from(fileName, fileName);
}
public static BungeeConfigProvider from(String fileName, String source) {
return from(new File(fileName), source);
}
}
@@ -0,0 +1,54 @@
package cc.carm.lib.configuration.bungee;
import cc.carm.lib.configuration.core.source.ConfigurationWrapper;
import cc.carm.lib.configuration.core.source.impl.FileConfigProvider;
import net.md_5.bungee.config.Configuration;
import net.md_5.bungee.config.ConfigurationProvider;
import net.md_5.bungee.config.YamlConfiguration;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.io.File;
import java.io.IOException;
public class BungeeConfigProvider extends FileConfigProvider {
Configuration configuration;
public BungeeConfigProvider(@NotNull File file) {
super(file);
}
public void initialize() throws IOException {
this.configuration = getLoader().load(file);
}
@Override
public @NotNull ConfigurationWrapper getConfiguration() {
return BungeeSectionWrapper.of(configuration);
}
@Override
public void reload() throws Exception {
this.configuration = getLoader().load(file);
}
@Override
public void save() throws Exception {
getLoader().save(configuration, file);
}
@Override
public void setComments(@NotNull String path, @NotNull String... comments) {
}
@Override
public @Nullable String[] getComments(@NotNull String path) {
return null;
}
public static ConfigurationProvider getLoader() {
return ConfigurationProvider.getProvider(YamlConfiguration.class);
}
}
@@ -0,0 +1,70 @@
package cc.carm.lib.configuration.bungee;
import cc.carm.lib.configuration.core.source.ConfigurationWrapper;
import net.md_5.bungee.config.Configuration;
import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.*;
import java.util.stream.Collectors;
public class BungeeSectionWrapper implements ConfigurationWrapper {
private final Configuration section;
private BungeeSectionWrapper(Configuration section) {
this.section = section;
}
@Contract("!null->!null")
public static @Nullable BungeeSectionWrapper of(@Nullable Configuration section) {
return section == null ? null : new BungeeSectionWrapper(section);
}
@Override
public @NotNull Set<String> getKeys(boolean deep) {
return new LinkedHashSet<>(section.getKeys());
}
@Override
public @NotNull Map<String, Object> getValues(boolean deep) {
return section.getKeys().stream()
.collect(Collectors.toMap(key -> key, section::get, (a, b) -> b, LinkedHashMap::new));
}
@Override
public void set(@NotNull String path, @Nullable Object value) {
this.section.set(path, value);
}
@Override
public boolean contains(@NotNull String path) {
return this.section.contains(path);
}
@Override
public @Nullable Object get(@NotNull String path) {
return this.section.get(path);
}
@Override
public boolean isList(@NotNull String path) {
return get(path) instanceof List<?>;
}
@Override
public @Nullable List<?> getList(@NotNull String path) {
return this.section.getList(path);
}
@Override
public boolean isConfigurationSection(@NotNull String path) {
return true; // No provided functions :( SRY
}
@Override
public @Nullable ConfigurationWrapper getConfigurationSection(@NotNull String path) {
return of(this.section.getSection(path));
}
}