Add file provider with support for saving resource to disk
This commit is contained in:
parent
df450e1f9b
commit
26d18e2552
14 changed files with 120 additions and 37 deletions
|
|
@ -1,5 +1,7 @@
|
|||
package org.adrianvictor.lib.impl.b1_7_3;
|
||||
|
||||
import org.adrianvictor.lib.file.provider.FileProvider;
|
||||
import org.adrianvictor.lib.impl.b1_7_3.file.File;
|
||||
import org.adrianvictor.lib.impl.b1_7_3.logging.Logger;
|
||||
import org.adrianvictor.lib.versioning.VersionedServiceFactory;
|
||||
import org.adrianvictor.lib.versioning.VersionedServiceRegistrar;
|
||||
|
|
@ -13,15 +15,22 @@ import org.bukkit.plugin.java.JavaPlugin;
|
|||
public class B1_7_3Registrar implements VersionedServiceRegistrar {
|
||||
private JavaPlugin plugin;
|
||||
|
||||
@Override
|
||||
public void setPlugin(JavaPlugin plugin) {
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JavaPlugin getPlugin() {
|
||||
return plugin;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void register(VersionedServiceFactory factory) {
|
||||
Logger.setPlugin(this.plugin);
|
||||
factory.register(ConfigurationProvider.class, "b1_7_3", Configuration::new);
|
||||
factory.register(TextColorProvider.class, "b1_7_3", TextColor::new);
|
||||
factory.register(LoggerProvider.class, "b1_7_3", Logger::new);
|
||||
factory.register(FileProvider.class, "b1_7_3", () -> new File(plugin));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,44 @@
|
|||
package org.adrianvictor.lib.impl.b1_7_3.file;
|
||||
|
||||
import org.adrianvictor.lib.file.provider.FileProvider;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
|
||||
public class File implements FileProvider {
|
||||
private final JavaPlugin plugin;
|
||||
|
||||
public File(JavaPlugin plugin) {
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void saveResource(String resourcePath, boolean replace) throws IOException {
|
||||
java.io.File file = new java.io.File(plugin.getDataFolder(), resourcePath);
|
||||
|
||||
if (!file.exists() || replace) {
|
||||
|
||||
file.getParentFile().mkdirs();
|
||||
|
||||
InputStream in = this.getClass().getResourceAsStream("/" + resourcePath);
|
||||
|
||||
if (in == null) {
|
||||
throw new IllegalArgumentException("Resource not found: " + resourcePath);
|
||||
}
|
||||
|
||||
FileOutputStream out = new FileOutputStream(file);
|
||||
|
||||
byte[] buf = new byte[1024];
|
||||
int len;
|
||||
|
||||
while ((len = in.read(buf)) != -1) {
|
||||
out.write(buf, 0, len);
|
||||
}
|
||||
|
||||
in.close();
|
||||
out.close();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -63,8 +63,7 @@ public class Main extends JavaPlugin {
|
|||
}
|
||||
|
||||
try {
|
||||
org.adrianvictor.lib.logging.Logger.create(versionedServiceFactory);
|
||||
pluginLogger = versionedServiceFactory.getService(LoggerProvider.class);
|
||||
pluginLogger = LoggerProvider.get();
|
||||
pluginLogger.info("tenkumaLib has been successfully enabled!");
|
||||
} catch (Exception e) {
|
||||
globalLogger.severe("[tenkumaLib] Failed to initialize plugin logger: " + e.getMessage());
|
||||
|
|
@ -88,10 +87,7 @@ public class Main extends JavaPlugin {
|
|||
private boolean registerRegistrar(VersionedServiceRegistrar registrar) {
|
||||
String registrarName = registrar.getClass().getName();
|
||||
try {
|
||||
try {
|
||||
java.lang.reflect.Method setPlugin = registrar.getClass().getMethod("setPlugin", JavaPlugin.class);
|
||||
setPlugin.invoke(registrar, this);
|
||||
} catch (NoSuchMethodException ignored) {}
|
||||
registrar.setPlugin(this);
|
||||
|
||||
registrar.register(versionedServiceFactory);
|
||||
globalLogger.info("[tenkumaLib] Registered " + registrarName);
|
||||
|
|
|
|||
|
|
@ -1,10 +0,0 @@
|
|||
package org.adrianvictor.lib.configuration;
|
||||
|
||||
import org.adrianvictor.lib.versioning.VersionedServiceFactory;
|
||||
import org.adrianvictor.lib.configuration.provider.ConfigurationProvider;
|
||||
|
||||
public class Configuration {
|
||||
public static ConfigurationProvider create(VersionedServiceFactory factory) {
|
||||
return factory.getService(ConfigurationProvider.class);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,5 +1,6 @@
|
|||
package org.adrianvictor.lib.configuration.provider;
|
||||
|
||||
import org.adrianvictor.lib.Main;
|
||||
import org.adrianvictor.lib.configuration.exception.InvalidConfigurationException;
|
||||
|
||||
import java.io.File;
|
||||
|
|
@ -9,6 +10,10 @@ import java.util.List;
|
|||
import java.util.Map;
|
||||
|
||||
public interface ConfigurationProvider {
|
||||
static ConfigurationProvider get() {
|
||||
return Main.getServiceFactory().getService(ConfigurationProvider.class);
|
||||
}
|
||||
|
||||
void load(File file) throws IOException, InvalidConfigurationException;
|
||||
void load(String contents) throws IOException, InvalidConfigurationException;
|
||||
void load(Reader reader) throws IOException, InvalidConfigurationException;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,13 @@
|
|||
package org.adrianvictor.lib.file.provider;
|
||||
|
||||
import org.adrianvictor.lib.Main;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
public interface FileProvider {
|
||||
static FileProvider get() {
|
||||
return Main.getServiceFactory().getService(FileProvider.class);
|
||||
}
|
||||
|
||||
void saveResource(String resourcePath, boolean replace) throws IOException;
|
||||
}
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
package org.adrianvictor.lib.logging;
|
||||
|
||||
import org.adrianvictor.lib.logging.provider.LoggerProvider;
|
||||
import org.adrianvictor.lib.versioning.VersionedServiceFactory;
|
||||
|
||||
public class Logger {
|
||||
public static LoggerProvider create(VersionedServiceFactory factory) {
|
||||
return factory.getService(LoggerProvider.class);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,12 @@
|
|||
package org.adrianvictor.lib.logging.provider;
|
||||
|
||||
import org.adrianvictor.lib.Main;
|
||||
|
||||
public interface LoggerProvider {
|
||||
static LoggerProvider get() {
|
||||
return Main.getServiceFactory().getService(LoggerProvider.class);
|
||||
}
|
||||
|
||||
void info(String text);
|
||||
void warning(String text);
|
||||
void error(String text);
|
||||
|
|
|
|||
|
|
@ -1,10 +0,0 @@
|
|||
package org.adrianvictor.lib.text;
|
||||
|
||||
import org.adrianvictor.lib.versioning.VersionedServiceFactory;
|
||||
import org.adrianvictor.lib.text.provider.TextColorProvider;
|
||||
|
||||
public class TextColor {
|
||||
public static TextColorProvider create(VersionedServiceFactory factory) {
|
||||
return factory.getService(TextColorProvider.class);
|
||||
}
|
||||
}
|
||||
|
|
@ -6,8 +6,12 @@ import org.adrianvictor.lib.text.provider.TextColorProvider;
|
|||
public class TextColorUtils {
|
||||
private final TextColorProvider provider;
|
||||
|
||||
public TextColorUtils() {
|
||||
this.provider = TextColorProvider.get();
|
||||
}
|
||||
|
||||
public TextColorUtils(VersionedServiceFactory factory) {
|
||||
provider = TextColor.create(factory);
|
||||
this.provider = factory.getService(TextColorProvider.class);
|
||||
}
|
||||
|
||||
public String formatColors(String message) {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,11 @@
|
|||
package org.adrianvictor.lib.text.provider;
|
||||
|
||||
import org.adrianvictor.lib.Main;
|
||||
|
||||
public interface TextColorProvider {
|
||||
static TextColorProvider get() {
|
||||
return Main.getServiceFactory().getService(TextColorProvider.class);
|
||||
}
|
||||
|
||||
String colorize(String colorCode);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,9 @@
|
|||
package org.adrianvictor.lib.versioning;
|
||||
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
public interface VersionedServiceRegistrar {
|
||||
void setPlugin(JavaPlugin plugin);
|
||||
JavaPlugin getPlugin();
|
||||
void register(VersionedServiceFactory factory);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
package org.adrianvictor.lib.impl.r1_21;
|
||||
|
||||
import org.adrianvictor.lib.file.provider.FileProvider;
|
||||
import org.adrianvictor.lib.impl.r1_21.file.File;
|
||||
import org.adrianvictor.lib.impl.r1_21.logging.Logger;
|
||||
import org.adrianvictor.lib.versioning.VersionedServiceFactory;
|
||||
import org.adrianvictor.lib.versioning.VersionedServiceRegistrar;
|
||||
|
|
@ -13,15 +15,22 @@ import org.bukkit.plugin.java.JavaPlugin;
|
|||
public class R1_21Registrar implements VersionedServiceRegistrar {
|
||||
private JavaPlugin plugin;
|
||||
|
||||
@Override
|
||||
public void setPlugin(JavaPlugin plugin) {
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JavaPlugin getPlugin() {
|
||||
return plugin;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void register(VersionedServiceFactory factory) {
|
||||
Logger.setPlugin(this.plugin);
|
||||
factory.register(ConfigurationProvider.class, "r1_1", Configuration::new);
|
||||
factory.register(TextColorProvider.class, "r1_16_5", TextColor::new);
|
||||
factory.register(LoggerProvider.class, "r1_21", Logger::new);
|
||||
factory.register(FileProvider.class, "r1_3", () -> new File(plugin));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,17 @@
|
|||
package org.adrianvictor.lib.impl.r1_21.file;
|
||||
|
||||
import org.adrianvictor.lib.file.provider.FileProvider;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
public class File implements FileProvider {
|
||||
private final JavaPlugin plugin;
|
||||
|
||||
public File(JavaPlugin plugin) {
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void saveResource(String resourcePath, boolean replace) {
|
||||
plugin.saveResource(resourcePath, replace);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue