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;
|
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.impl.b1_7_3.logging.Logger;
|
||||||
import org.adrianvictor.lib.versioning.VersionedServiceFactory;
|
import org.adrianvictor.lib.versioning.VersionedServiceFactory;
|
||||||
import org.adrianvictor.lib.versioning.VersionedServiceRegistrar;
|
import org.adrianvictor.lib.versioning.VersionedServiceRegistrar;
|
||||||
|
|
@ -13,15 +15,22 @@ import org.bukkit.plugin.java.JavaPlugin;
|
||||||
public class B1_7_3Registrar implements VersionedServiceRegistrar {
|
public class B1_7_3Registrar implements VersionedServiceRegistrar {
|
||||||
private JavaPlugin plugin;
|
private JavaPlugin plugin;
|
||||||
|
|
||||||
|
@Override
|
||||||
public void setPlugin(JavaPlugin plugin) {
|
public void setPlugin(JavaPlugin plugin) {
|
||||||
this.plugin = plugin;
|
this.plugin = plugin;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public JavaPlugin getPlugin() {
|
||||||
|
return plugin;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void register(VersionedServiceFactory factory) {
|
public void register(VersionedServiceFactory factory) {
|
||||||
Logger.setPlugin(this.plugin);
|
Logger.setPlugin(this.plugin);
|
||||||
factory.register(ConfigurationProvider.class, "b1_7_3", Configuration::new);
|
factory.register(ConfigurationProvider.class, "b1_7_3", Configuration::new);
|
||||||
factory.register(TextColorProvider.class, "b1_7_3", TextColor::new);
|
factory.register(TextColorProvider.class, "b1_7_3", TextColor::new);
|
||||||
factory.register(LoggerProvider.class, "b1_7_3", Logger::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 {
|
try {
|
||||||
org.adrianvictor.lib.logging.Logger.create(versionedServiceFactory);
|
pluginLogger = LoggerProvider.get();
|
||||||
pluginLogger = versionedServiceFactory.getService(LoggerProvider.class);
|
|
||||||
pluginLogger.info("tenkumaLib has been successfully enabled!");
|
pluginLogger.info("tenkumaLib has been successfully enabled!");
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
globalLogger.severe("[tenkumaLib] Failed to initialize plugin logger: " + e.getMessage());
|
globalLogger.severe("[tenkumaLib] Failed to initialize plugin logger: " + e.getMessage());
|
||||||
|
|
@ -88,10 +87,7 @@ public class Main extends JavaPlugin {
|
||||||
private boolean registerRegistrar(VersionedServiceRegistrar registrar) {
|
private boolean registerRegistrar(VersionedServiceRegistrar registrar) {
|
||||||
String registrarName = registrar.getClass().getName();
|
String registrarName = registrar.getClass().getName();
|
||||||
try {
|
try {
|
||||||
try {
|
registrar.setPlugin(this);
|
||||||
java.lang.reflect.Method setPlugin = registrar.getClass().getMethod("setPlugin", JavaPlugin.class);
|
|
||||||
setPlugin.invoke(registrar, this);
|
|
||||||
} catch (NoSuchMethodException ignored) {}
|
|
||||||
|
|
||||||
registrar.register(versionedServiceFactory);
|
registrar.register(versionedServiceFactory);
|
||||||
globalLogger.info("[tenkumaLib] Registered " + registrarName);
|
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;
|
package org.adrianvictor.lib.configuration.provider;
|
||||||
|
|
||||||
|
import org.adrianvictor.lib.Main;
|
||||||
import org.adrianvictor.lib.configuration.exception.InvalidConfigurationException;
|
import org.adrianvictor.lib.configuration.exception.InvalidConfigurationException;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
|
@ -9,6 +10,10 @@ import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
public interface ConfigurationProvider {
|
public interface ConfigurationProvider {
|
||||||
|
static ConfigurationProvider get() {
|
||||||
|
return Main.getServiceFactory().getService(ConfigurationProvider.class);
|
||||||
|
}
|
||||||
|
|
||||||
void load(File file) throws IOException, InvalidConfigurationException;
|
void load(File file) throws IOException, InvalidConfigurationException;
|
||||||
void load(String contents) throws IOException, InvalidConfigurationException;
|
void load(String contents) throws IOException, InvalidConfigurationException;
|
||||||
void load(Reader reader) 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;
|
package org.adrianvictor.lib.logging.provider;
|
||||||
|
|
||||||
|
import org.adrianvictor.lib.Main;
|
||||||
|
|
||||||
public interface LoggerProvider {
|
public interface LoggerProvider {
|
||||||
|
static LoggerProvider get() {
|
||||||
|
return Main.getServiceFactory().getService(LoggerProvider.class);
|
||||||
|
}
|
||||||
|
|
||||||
void info(String text);
|
void info(String text);
|
||||||
void warning(String text);
|
void warning(String text);
|
||||||
void error(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 {
|
public class TextColorUtils {
|
||||||
private final TextColorProvider provider;
|
private final TextColorProvider provider;
|
||||||
|
|
||||||
|
public TextColorUtils() {
|
||||||
|
this.provider = TextColorProvider.get();
|
||||||
|
}
|
||||||
|
|
||||||
public TextColorUtils(VersionedServiceFactory factory) {
|
public TextColorUtils(VersionedServiceFactory factory) {
|
||||||
provider = TextColor.create(factory);
|
this.provider = factory.getService(TextColorProvider.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
public String formatColors(String message) {
|
public String formatColors(String message) {
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,11 @@
|
||||||
package org.adrianvictor.lib.text.provider;
|
package org.adrianvictor.lib.text.provider;
|
||||||
|
|
||||||
|
import org.adrianvictor.lib.Main;
|
||||||
|
|
||||||
public interface TextColorProvider {
|
public interface TextColorProvider {
|
||||||
|
static TextColorProvider get() {
|
||||||
|
return Main.getServiceFactory().getService(TextColorProvider.class);
|
||||||
|
}
|
||||||
|
|
||||||
String colorize(String colorCode);
|
String colorize(String colorCode);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,9 @@
|
||||||
package org.adrianvictor.lib.versioning;
|
package org.adrianvictor.lib.versioning;
|
||||||
|
|
||||||
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
public interface VersionedServiceRegistrar {
|
public interface VersionedServiceRegistrar {
|
||||||
|
void setPlugin(JavaPlugin plugin);
|
||||||
|
JavaPlugin getPlugin();
|
||||||
void register(VersionedServiceFactory factory);
|
void register(VersionedServiceFactory factory);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
package org.adrianvictor.lib.impl.r1_21;
|
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.impl.r1_21.logging.Logger;
|
||||||
import org.adrianvictor.lib.versioning.VersionedServiceFactory;
|
import org.adrianvictor.lib.versioning.VersionedServiceFactory;
|
||||||
import org.adrianvictor.lib.versioning.VersionedServiceRegistrar;
|
import org.adrianvictor.lib.versioning.VersionedServiceRegistrar;
|
||||||
|
|
@ -13,15 +15,22 @@ import org.bukkit.plugin.java.JavaPlugin;
|
||||||
public class R1_21Registrar implements VersionedServiceRegistrar {
|
public class R1_21Registrar implements VersionedServiceRegistrar {
|
||||||
private JavaPlugin plugin;
|
private JavaPlugin plugin;
|
||||||
|
|
||||||
|
@Override
|
||||||
public void setPlugin(JavaPlugin plugin) {
|
public void setPlugin(JavaPlugin plugin) {
|
||||||
this.plugin = plugin;
|
this.plugin = plugin;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public JavaPlugin getPlugin() {
|
||||||
|
return plugin;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void register(VersionedServiceFactory factory) {
|
public void register(VersionedServiceFactory factory) {
|
||||||
Logger.setPlugin(this.plugin);
|
Logger.setPlugin(this.plugin);
|
||||||
factory.register(ConfigurationProvider.class, "r1_1", Configuration::new);
|
factory.register(ConfigurationProvider.class, "r1_1", Configuration::new);
|
||||||
factory.register(TextColorProvider.class, "r1_16_5", TextColor::new);
|
factory.register(TextColorProvider.class, "r1_16_5", TextColor::new);
|
||||||
factory.register(LoggerProvider.class, "r1_21", Logger::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