mirror of
				https://e.coding.net/circlecloud/Yum.git
				synced 2025-11-04 13:16:02 +00:00 
			
		
		
		
	add repo manager fix unload error...
Signed-off-by: 502647092 <jtb1@163.com>
This commit is contained in:
		
							
								
								
									
										3
									
								
								pom.xml
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								pom.xml
									
									
									
									
									
								
							@@ -3,8 +3,9 @@
 | 
				
			|||||||
	<modelVersion>4.0.0</modelVersion>
 | 
						<modelVersion>4.0.0</modelVersion>
 | 
				
			||||||
	<groupId>cn.citycraft</groupId>
 | 
						<groupId>cn.citycraft</groupId>
 | 
				
			||||||
	<artifactId>Yum</artifactId>
 | 
						<artifactId>Yum</artifactId>
 | 
				
			||||||
	<version>1.3</version>
 | 
						<version>1.3-bate1</version>
 | 
				
			||||||
	<name>Yum</name>
 | 
						<name>Yum</name>
 | 
				
			||||||
 | 
						<description>Minecraft 服务器插件管理系统</description>
 | 
				
			||||||
	<build>
 | 
						<build>
 | 
				
			||||||
		<finalName>${project.name}</finalName>
 | 
							<finalName>${project.name}</finalName>
 | 
				
			||||||
		<resources>
 | 
							<resources>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -7,7 +7,9 @@ import org.bukkit.plugin.java.JavaPlugin;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import cn.citycraft.Yum.commands.CommandHandler;
 | 
					import cn.citycraft.Yum.commands.CommandHandler;
 | 
				
			||||||
import cn.citycraft.Yum.config.FileConfig;
 | 
					import cn.citycraft.Yum.config.FileConfig;
 | 
				
			||||||
import cn.citycraft.Yum.utils.DownloadManager;
 | 
					import cn.citycraft.Yum.manager.DownloadManager;
 | 
				
			||||||
 | 
					import cn.citycraft.Yum.manager.PluginsManager;
 | 
				
			||||||
 | 
					import cn.citycraft.Yum.repository.RepositoryManager;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * MC插件仓库
 | 
					 * MC插件仓库
 | 
				
			||||||
@@ -16,14 +18,26 @@ import cn.citycraft.Yum.utils.DownloadManager;
 | 
				
			|||||||
 */
 | 
					 */
 | 
				
			||||||
public class Yum extends JavaPlugin {
 | 
					public class Yum extends JavaPlugin {
 | 
				
			||||||
	public DownloadManager download;
 | 
						public DownloadManager download;
 | 
				
			||||||
 | 
						public PluginsManager plugman;
 | 
				
			||||||
 | 
						public RepositoryManager repo;
 | 
				
			||||||
	public FileConfig config;
 | 
						public FileConfig config;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	@Override
 | 
						@Override
 | 
				
			||||||
	public void onEnable() {
 | 
						public void onEnable() {
 | 
				
			||||||
 | 
							plugman = new PluginsManager(this);
 | 
				
			||||||
		download = new DownloadManager(this);
 | 
							download = new DownloadManager(this);
 | 
				
			||||||
 | 
							repo = new RepositoryManager(this);
 | 
				
			||||||
		config = new FileConfig(this, "config.yml");
 | 
							config = new FileConfig(this, "config.yml");
 | 
				
			||||||
 | 
							repo.jsonToCache(config.getString("cache"));
 | 
				
			||||||
		CommandHandler cmdhandler = new CommandHandler(this);
 | 
							CommandHandler cmdhandler = new CommandHandler(this);
 | 
				
			||||||
		this.getCommand("yum").setExecutor(cmdhandler);
 | 
							this.getCommand("yum").setExecutor(cmdhandler);
 | 
				
			||||||
		this.getCommand("yum").setTabCompleter(cmdhandler);
 | 
							this.getCommand("yum").setTabCompleter(cmdhandler);
 | 
				
			||||||
 | 
							this.getPluginLoader();
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@Override
 | 
				
			||||||
 | 
						public void onDisable() {
 | 
				
			||||||
 | 
							config.set("cache", repo.cacheToJson());
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,12 +3,12 @@
 | 
				
			|||||||
 */
 | 
					 */
 | 
				
			||||||
package cn.citycraft.Yum.commands;
 | 
					package cn.citycraft.Yum.commands;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.bukkit.Bukkit;
 | 
				
			||||||
import org.bukkit.command.CommandException;
 | 
					import org.bukkit.command.CommandException;
 | 
				
			||||||
import org.bukkit.command.CommandSender;
 | 
					import org.bukkit.command.CommandSender;
 | 
				
			||||||
import org.bukkit.plugin.Plugin;
 | 
					import org.bukkit.plugin.Plugin;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import cn.citycraft.Yum.Yum;
 | 
					import cn.citycraft.Yum.Yum;
 | 
				
			||||||
import cn.citycraft.Yum.utils.PluginsManager;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * 插件删除命令类
 | 
					 * 插件删除命令类
 | 
				
			||||||
@@ -16,22 +16,22 @@ import cn.citycraft.Yum.utils.PluginsManager;
 | 
				
			|||||||
 * @author 蒋天蓓 2015年8月12日下午2:04:05
 | 
					 * @author 蒋天蓓 2015年8月12日下午2:04:05
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
public class CommandDelete extends BaseCommand {
 | 
					public class CommandDelete extends BaseCommand {
 | 
				
			||||||
	Yum yum;
 | 
						Yum main;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/**
 | 
						/**
 | 
				
			||||||
	 * @param name
 | 
						 * @param name
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	public CommandDelete(Yum main) {
 | 
						public CommandDelete(Yum main) {
 | 
				
			||||||
		super("delete");
 | 
							super("delete");
 | 
				
			||||||
		this.yum = main;
 | 
							this.main = main;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	@Override
 | 
						@Override
 | 
				
			||||||
	public void execute(CommandSender sender, String label, String[] args) throws CommandException {
 | 
						public void execute(CommandSender sender, String label, String[] args) throws CommandException {
 | 
				
			||||||
		String pluginname = args[0];
 | 
							String pluginname = args[0];
 | 
				
			||||||
		Plugin plugin = yum.getServer().getPluginManager().getPlugin(pluginname);
 | 
							Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin(pluginname);
 | 
				
			||||||
		if (plugin != null) {
 | 
							if (plugin != null) {
 | 
				
			||||||
			PluginsManager.deletePlugin(sender, plugin);
 | 
								main.plugman.deletePlugin(sender, plugin);
 | 
				
			||||||
		} else {
 | 
							} else {
 | 
				
			||||||
			sender.sendMessage("§c插件 " + pluginname + " 不存在或已卸载!");
 | 
								sender.sendMessage("§c插件 " + pluginname + " 不存在或已卸载!");
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,7 +16,6 @@ import org.bukkit.entity.Player;
 | 
				
			|||||||
import org.bukkit.util.StringUtil;
 | 
					import org.bukkit.util.StringUtil;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import cn.citycraft.Yum.Yum;
 | 
					import cn.citycraft.Yum.Yum;
 | 
				
			||||||
import cn.citycraft.Yum.utils.PluginsManager;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * 子命令处理类
 | 
					 * 子命令处理类
 | 
				
			||||||
@@ -51,7 +50,7 @@ public class CommandHandler implements CommandExecutor, TabCompleter {
 | 
				
			|||||||
	/**
 | 
						/**
 | 
				
			||||||
	 * 插件主类
 | 
						 * 插件主类
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	Yum plugin;
 | 
						Yum main;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/**
 | 
						/**
 | 
				
			||||||
	 * 注册子命令
 | 
						 * 注册子命令
 | 
				
			||||||
@@ -60,7 +59,7 @@ public class CommandHandler implements CommandExecutor, TabCompleter {
 | 
				
			|||||||
	 *            - 插件主类
 | 
						 *            - 插件主类
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	public CommandHandler(Yum yum) {
 | 
						public CommandHandler(Yum yum) {
 | 
				
			||||||
		this.plugin = yum;
 | 
							this.main = yum;
 | 
				
			||||||
		registerCommand(new CommandList(yum));
 | 
							registerCommand(new CommandList(yum));
 | 
				
			||||||
		registerCommand(new CommandInstall(yum));
 | 
							registerCommand(new CommandInstall(yum));
 | 
				
			||||||
		registerCommand(new CommandUpdate(yum));
 | 
							registerCommand(new CommandUpdate(yum));
 | 
				
			||||||
@@ -125,7 +124,7 @@ public class CommandHandler implements CommandExecutor, TabCompleter {
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
			if (args.length == 2) {
 | 
								if (args.length == 2) {
 | 
				
			||||||
				String partialPlugin = args[1];
 | 
									String partialPlugin = args[1];
 | 
				
			||||||
				List<String> plugins = PluginsManager.getPluginNames(false);
 | 
									List<String> plugins = main.plugman.getPluginNames(false);
 | 
				
			||||||
				StringUtil.copyPartialMatches(partialPlugin, plugins, completions);
 | 
									StringUtil.copyPartialMatches(partialPlugin, plugins, completions);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			Collections.sort(completions);
 | 
								Collections.sort(completions);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -10,7 +10,6 @@ import org.bukkit.plugin.Plugin;
 | 
				
			|||||||
import org.bukkit.plugin.PluginDescriptionFile;
 | 
					import org.bukkit.plugin.PluginDescriptionFile;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import cn.citycraft.Yum.Yum;
 | 
					import cn.citycraft.Yum.Yum;
 | 
				
			||||||
import cn.citycraft.Yum.utils.PluginsManager;
 | 
					 | 
				
			||||||
import cn.citycraft.Yum.utils.StringUtil;
 | 
					import cn.citycraft.Yum.utils.StringUtil;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -19,14 +18,14 @@ import cn.citycraft.Yum.utils.StringUtil;
 | 
				
			|||||||
 * @author 蒋天蓓 2015年8月12日下午2:04:05
 | 
					 * @author 蒋天蓓 2015年8月12日下午2:04:05
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
public class CommandInfo extends BaseCommand {
 | 
					public class CommandInfo extends BaseCommand {
 | 
				
			||||||
	Yum yum;
 | 
						Yum main;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/**
 | 
						/**
 | 
				
			||||||
	 * @param name
 | 
						 * @param name
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	public CommandInfo(Yum main) {
 | 
						public CommandInfo(Yum main) {
 | 
				
			||||||
		super("info");
 | 
							super("info");
 | 
				
			||||||
		this.yum = main;
 | 
							this.main = main;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	@Override
 | 
						@Override
 | 
				
			||||||
@@ -40,7 +39,7 @@ public class CommandInfo extends BaseCommand {
 | 
				
			|||||||
			return;
 | 
								return;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		String pluginname = args[0];
 | 
							String pluginname = args[0];
 | 
				
			||||||
		Plugin plugin = yum.getServer().getPluginManager().getPlugin(pluginname);
 | 
							Plugin plugin = main.getServer().getPluginManager().getPlugin(pluginname);
 | 
				
			||||||
		if (plugin != null) {
 | 
							if (plugin != null) {
 | 
				
			||||||
			PluginDescriptionFile desc = plugin.getDescription();
 | 
								PluginDescriptionFile desc = plugin.getDescription();
 | 
				
			||||||
			sender.sendMessage("§6插件名称: §3" + plugin.getName());
 | 
								sender.sendMessage("§6插件名称: §3" + plugin.getName());
 | 
				
			||||||
@@ -51,7 +50,7 @@ public class CommandInfo extends BaseCommand {
 | 
				
			|||||||
			StringUtil.sendStringArray(sender, desc.getDepend());
 | 
								StringUtil.sendStringArray(sender, desc.getDepend());
 | 
				
			||||||
			sender.sendMessage("§6插件软依赖: §3" + (desc.getSoftDepend().size() == 0 ? "无" : ""));
 | 
								sender.sendMessage("§6插件软依赖: §3" + (desc.getSoftDepend().size() == 0 ? "无" : ""));
 | 
				
			||||||
			StringUtil.sendStringArray(sender, desc.getSoftDepend());
 | 
								StringUtil.sendStringArray(sender, desc.getSoftDepend());
 | 
				
			||||||
			sender.sendMessage("§6插件物理路径: §3" + PluginsManager.getPluginFile(plugin).getAbsolutePath());
 | 
								sender.sendMessage("§6插件物理路径: §3" + main.plugman.getPluginFile(plugin).getAbsolutePath());
 | 
				
			||||||
		} else {
 | 
							} else {
 | 
				
			||||||
			sender.sendMessage("§4错误: §c插件 " + pluginname + " 不存在或已卸载!");
 | 
								sender.sendMessage("§4错误: §c插件 " + pluginname + " 不存在或已卸载!");
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -9,6 +9,7 @@ import org.bukkit.command.CommandSender;
 | 
				
			|||||||
import org.bukkit.plugin.Plugin;
 | 
					import org.bukkit.plugin.Plugin;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import cn.citycraft.Yum.Yum;
 | 
					import cn.citycraft.Yum.Yum;
 | 
				
			||||||
 | 
					import cn.citycraft.Yum.repository.PluginInfo;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * 插件安装命令类
 | 
					 * 插件安装命令类
 | 
				
			||||||
@@ -16,14 +17,14 @@ import cn.citycraft.Yum.Yum;
 | 
				
			|||||||
 * @author 蒋天蓓 2015年8月12日下午2:04:05
 | 
					 * @author 蒋天蓓 2015年8月12日下午2:04:05
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
public class CommandInstall extends BaseCommand {
 | 
					public class CommandInstall extends BaseCommand {
 | 
				
			||||||
	Yum yum;
 | 
						Yum main;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/**
 | 
						/**
 | 
				
			||||||
	 * @param name
 | 
						 * @param name
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	public CommandInstall(Yum main) {
 | 
						public CommandInstall(Yum main) {
 | 
				
			||||||
		super("install");
 | 
							super("install");
 | 
				
			||||||
		this.yum = main;
 | 
							this.main = main;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	@Override
 | 
						@Override
 | 
				
			||||||
@@ -31,10 +32,14 @@ public class CommandInstall extends BaseCommand {
 | 
				
			|||||||
		final String pluginname = args[0];
 | 
							final String pluginname = args[0];
 | 
				
			||||||
		Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin(pluginname);
 | 
							Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin(pluginname);
 | 
				
			||||||
		if (plugin == null) {
 | 
							if (plugin == null) {
 | 
				
			||||||
			Bukkit.getScheduler().runTaskAsynchronously(yum, new Runnable() {
 | 
								Bukkit.getScheduler().runTaskAsynchronously(main, new Runnable() {
 | 
				
			||||||
				@Override
 | 
									@Override
 | 
				
			||||||
				public void run() {
 | 
									public void run() {
 | 
				
			||||||
 | 
										PluginInfo pi = main.repo.getPlugin(pluginname);
 | 
				
			||||||
 | 
										if (pi != null)
 | 
				
			||||||
 | 
											if (main.download.run(sender, pi.getMavenUrl())) {
 | 
				
			||||||
 | 
												main.plugman.load(sender, pluginname);
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			});
 | 
								});
 | 
				
			||||||
		} else {
 | 
							} else {
 | 
				
			||||||
@@ -43,6 +48,24 @@ public class CommandInstall extends BaseCommand {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	};
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// public static boolean installFromYum(CommandSender sender, String
 | 
				
			||||||
 | 
						// filename) {
 | 
				
			||||||
 | 
						// if (sender == null) {
 | 
				
			||||||
 | 
						// sender = Bukkit.getConsoleSender();
 | 
				
			||||||
 | 
						// }
 | 
				
			||||||
 | 
						// File file = new File("plugins/YumCenter", filename + ".jar");
 | 
				
			||||||
 | 
						// if (!file.exists()) {
 | 
				
			||||||
 | 
						// sender.sendMessage("§4错误: §c仓库不存在 " + filename + " 插件!");
 | 
				
			||||||
 | 
						// return false;
 | 
				
			||||||
 | 
						// }
 | 
				
			||||||
 | 
						// File pluginfile = new File("plugins", filename + ".jar");
 | 
				
			||||||
 | 
						// FileUtil.copyFile(file, pluginfile);
 | 
				
			||||||
 | 
						// if (PluginsManager.load(sender, filename + ".jar")) {
 | 
				
			||||||
 | 
						// sender.sendMessage("§6安装: §a从Yum仓库安装插件 " + filename + " 成功!");
 | 
				
			||||||
 | 
						// }
 | 
				
			||||||
 | 
						// return false;
 | 
				
			||||||
 | 
						// }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	@Override
 | 
						@Override
 | 
				
			||||||
	public int getMinimumArguments() {
 | 
						public int getMinimumArguments() {
 | 
				
			||||||
		return 1;
 | 
							return 1;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -9,7 +9,6 @@ import org.bukkit.command.CommandSender;
 | 
				
			|||||||
import org.bukkit.plugin.Plugin;
 | 
					import org.bukkit.plugin.Plugin;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import cn.citycraft.Yum.Yum;
 | 
					import cn.citycraft.Yum.Yum;
 | 
				
			||||||
import cn.citycraft.Yum.utils.PluginsManager;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * 插件查看命令类
 | 
					 * 插件查看命令类
 | 
				
			||||||
@@ -17,14 +16,14 @@ import cn.citycraft.Yum.utils.PluginsManager;
 | 
				
			|||||||
 * @author 蒋天蓓 2015年8月12日下午2:04:05
 | 
					 * @author 蒋天蓓 2015年8月12日下午2:04:05
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
public class CommandList extends BaseCommand {
 | 
					public class CommandList extends BaseCommand {
 | 
				
			||||||
	Yum plugin;
 | 
						Yum main;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/**
 | 
						/**
 | 
				
			||||||
	 * @param name
 | 
						 * @param name
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	public CommandList(Yum main) {
 | 
						public CommandList(Yum main) {
 | 
				
			||||||
		super("list");
 | 
							super("list");
 | 
				
			||||||
		this.plugin = main;
 | 
							this.main = main;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	@Override
 | 
						@Override
 | 
				
			||||||
@@ -36,7 +35,7 @@ public class CommandList extends BaseCommand {
 | 
				
			|||||||
	public void execute(CommandSender sender, String label, String[] args) throws CommandException {
 | 
						public void execute(CommandSender sender, String label, String[] args) throws CommandException {
 | 
				
			||||||
		sender.sendMessage("§6[Yum仓库]§3服务器已安装插件: ");
 | 
							sender.sendMessage("§6[Yum仓库]§3服务器已安装插件: ");
 | 
				
			||||||
		for (Plugin plugin : Bukkit.getPluginManager().getPlugins()) {
 | 
							for (Plugin plugin : Bukkit.getPluginManager().getPlugins()) {
 | 
				
			||||||
			sender.sendMessage("§6 - " + PluginsManager.getFormattedName(plugin, true));
 | 
								sender.sendMessage("§6 - " + main.plugman.getFormattedName(plugin, true));
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										55
									
								
								src/main/java/cn/citycraft/Yum/commands/CommandRepo.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								src/main/java/cn/citycraft/Yum/commands/CommandRepo.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,55 @@
 | 
				
			|||||||
 | 
					/**
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					package cn.citycraft.Yum.commands;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.bukkit.command.CommandException;
 | 
				
			||||||
 | 
					import org.bukkit.command.CommandSender;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import cn.citycraft.Yum.Yum;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * 插件删除命令类
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @author 蒋天蓓 2015年8月12日下午2:04:05
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					public class CommandRepo extends BaseCommand {
 | 
				
			||||||
 | 
						Yum main;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * @param name
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public CommandRepo(Yum main) {
 | 
				
			||||||
 | 
							super("delete");
 | 
				
			||||||
 | 
							this.main = main;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@Override
 | 
				
			||||||
 | 
						public void execute(CommandSender sender, String label, String[] args) throws CommandException {
 | 
				
			||||||
 | 
							String cmd = args[0];
 | 
				
			||||||
 | 
							switch (cmd) {
 | 
				
			||||||
 | 
							case "add":
 | 
				
			||||||
 | 
								if (args.length == 2) {
 | 
				
			||||||
 | 
									main.repo.addRepositories(args[1]);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							case "list":
 | 
				
			||||||
 | 
							case "clean":
 | 
				
			||||||
 | 
								main.repo.clean();
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@Override
 | 
				
			||||||
 | 
						public int getMinimumArguments() {
 | 
				
			||||||
 | 
							return 1;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@Override
 | 
				
			||||||
 | 
						public String getPossibleArguments() {
 | 
				
			||||||
 | 
							return "<add|del|clean|list> <仓库名称>";
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@Override
 | 
				
			||||||
 | 
						public boolean isOnlyPlayerExecutable() {
 | 
				
			||||||
 | 
							return false;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -9,19 +9,20 @@ import org.bukkit.command.CommandSender;
 | 
				
			|||||||
import org.bukkit.plugin.Plugin;
 | 
					import org.bukkit.plugin.Plugin;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import cn.citycraft.Yum.Yum;
 | 
					import cn.citycraft.Yum.Yum;
 | 
				
			||||||
 | 
					import cn.citycraft.Yum.repository.PluginInfo;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * @author 蒋天蓓 2015年8月12日下午2:04:05
 | 
					 * @author 蒋天蓓 2015年8月12日下午2:04:05
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
public class CommandUpdate extends BaseCommand {
 | 
					public class CommandUpdate extends BaseCommand {
 | 
				
			||||||
	Yum yum;
 | 
						Yum main;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/**
 | 
						/**
 | 
				
			||||||
	 * @param name
 | 
						 * @param name
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	public CommandUpdate(Yum main) {
 | 
						public CommandUpdate(Yum main) {
 | 
				
			||||||
		super("update");
 | 
							super("update");
 | 
				
			||||||
		this.yum = main;
 | 
							this.main = main;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	@Override
 | 
						@Override
 | 
				
			||||||
@@ -30,10 +31,16 @@ public class CommandUpdate extends BaseCommand {
 | 
				
			|||||||
		final Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin(pluginname);
 | 
							final Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin(pluginname);
 | 
				
			||||||
		sender.sendMessage("§a开始更新插件: " + pluginname);
 | 
							sender.sendMessage("§a开始更新插件: " + pluginname);
 | 
				
			||||||
		if (plugin != null) {
 | 
							if (plugin != null) {
 | 
				
			||||||
			Bukkit.getScheduler().runTaskAsynchronously(yum, new Runnable() {
 | 
								Bukkit.getScheduler().runTaskAsynchronously(main, new Runnable() {
 | 
				
			||||||
				@Override
 | 
									@Override
 | 
				
			||||||
				public void run() {
 | 
									public void run() {
 | 
				
			||||||
 | 
										PluginInfo pi = main.repo.getPlugin(pluginname);
 | 
				
			||||||
 | 
										if (pi != null)
 | 
				
			||||||
 | 
											if (main.download.run(sender, pi.getMavenUrl())) {
 | 
				
			||||||
 | 
												if (main.plugman.unload(sender, plugin)) {
 | 
				
			||||||
 | 
													main.plugman.load(sender, pluginname);
 | 
				
			||||||
 | 
												}
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			});
 | 
								});
 | 
				
			||||||
		} else {
 | 
							} else {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,7 @@
 | 
				
			|||||||
/**
 | 
					/**
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
package cn.citycraft.Yum.utils;
 | 
					package cn.citycraft.Yum.manager;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.io.BufferedInputStream;
 | 
					import java.io.BufferedInputStream;
 | 
				
			||||||
import java.io.File;
 | 
					import java.io.File;
 | 
				
			||||||
@@ -14,7 +14,10 @@ import org.bukkit.command.CommandSender;
 | 
				
			|||||||
import org.bukkit.plugin.Plugin;
 | 
					import org.bukkit.plugin.Plugin;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * @author 蒋天蓓 2015年8月21日下午6:08:09 TODO
 | 
					 * 下载管理类
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * @author 蒋天蓓
 | 
				
			||||||
 | 
					 *         2015年8月21日下午6:08:09
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
public class DownloadManager {
 | 
					public class DownloadManager {
 | 
				
			||||||
	Plugin plugin;
 | 
						Plugin plugin;
 | 
				
			||||||
@@ -23,14 +26,27 @@ public class DownloadManager {
 | 
				
			|||||||
		this.plugin = main;
 | 
							this.plugin = main;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * 从地址获得文件名称
 | 
				
			||||||
 | 
						 * 
 | 
				
			||||||
 | 
						 * @param url
 | 
				
			||||||
 | 
						 *            - 地址
 | 
				
			||||||
 | 
						 * @return 文件名称
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
	public String getFileName(String url) {
 | 
						public String getFileName(String url) {
 | 
				
			||||||
		int end = url.lastIndexOf('/');
 | 
							int end = url.lastIndexOf('/');
 | 
				
			||||||
		return url.substring(end + 1);
 | 
							return url.substring(end + 1);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * 从地址获得文件名称
 | 
				
			||||||
 | 
						 * 
 | 
				
			||||||
 | 
						 * @param url
 | 
				
			||||||
 | 
						 *            - 地址
 | 
				
			||||||
 | 
						 * @return 文件名称
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
	public String getFileName(URL url) {
 | 
						public String getFileName(URL url) {
 | 
				
			||||||
		int end = url.getFile().lastIndexOf('/');
 | 
							return getFileName(url.getFile());
 | 
				
			||||||
		return url.getFile().substring(end + 1);
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	private String getPer(int per) {
 | 
						private String getPer(int per) {
 | 
				
			||||||
@@ -47,6 +63,41 @@ public class DownloadManager {
 | 
				
			|||||||
		return sb.toString();
 | 
							return sb.toString();
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * 从网络下载文件
 | 
				
			||||||
 | 
						 * 
 | 
				
			||||||
 | 
						 * @param urlstring
 | 
				
			||||||
 | 
						 *            - 下载地址
 | 
				
			||||||
 | 
						 * @return 是否成功
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public boolean run(String urlstring) {
 | 
				
			||||||
 | 
							return run(null, urlstring);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * 从网络下载文件
 | 
				
			||||||
 | 
						 * 
 | 
				
			||||||
 | 
						 * @param sender
 | 
				
			||||||
 | 
						 *            - 命令发送者
 | 
				
			||||||
 | 
						 * @param urlstring
 | 
				
			||||||
 | 
						 *            - 下载地址
 | 
				
			||||||
 | 
						 * @return 是否成功
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public boolean run(CommandSender sender, String urlstring) {
 | 
				
			||||||
 | 
							return run(sender, urlstring, new File("plugins", getFileName(urlstring)));
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * 从网络下载文件
 | 
				
			||||||
 | 
						 * 
 | 
				
			||||||
 | 
						 * @param sender
 | 
				
			||||||
 | 
						 *            - 命令发送者
 | 
				
			||||||
 | 
						 * @param urlstring
 | 
				
			||||||
 | 
						 *            - 下载地址
 | 
				
			||||||
 | 
						 * @param file
 | 
				
			||||||
 | 
						 *            - 保存文件
 | 
				
			||||||
 | 
						 * @return 是否成功
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
	public boolean run(CommandSender sender, String urlstring, File file) {
 | 
						public boolean run(CommandSender sender, String urlstring, File file) {
 | 
				
			||||||
		URL url;
 | 
							URL url;
 | 
				
			||||||
		try {
 | 
							try {
 | 
				
			||||||
@@ -58,6 +109,17 @@ public class DownloadManager {
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * 从网络下载文件
 | 
				
			||||||
 | 
						 * 
 | 
				
			||||||
 | 
						 * @param sender
 | 
				
			||||||
 | 
						 *            - 命令发送者
 | 
				
			||||||
 | 
						 * @param url
 | 
				
			||||||
 | 
						 *            - 下载地址
 | 
				
			||||||
 | 
						 * @param file
 | 
				
			||||||
 | 
						 *            - 保存文件
 | 
				
			||||||
 | 
						 * @return 是否成功
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
	public boolean run(CommandSender sender, URL url, File file) {
 | 
						public boolean run(CommandSender sender, URL url, File file) {
 | 
				
			||||||
		BufferedInputStream in = null;
 | 
							BufferedInputStream in = null;
 | 
				
			||||||
		FileOutputStream fout = null;
 | 
							FileOutputStream fout = null;
 | 
				
			||||||
@@ -108,10 +170,28 @@ public class DownloadManager {
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * 从网络下载文件
 | 
				
			||||||
 | 
						 * 
 | 
				
			||||||
 | 
						 * @param urlstring
 | 
				
			||||||
 | 
						 *            - 下载地址
 | 
				
			||||||
 | 
						 * @param file
 | 
				
			||||||
 | 
						 *            - 保存文件
 | 
				
			||||||
 | 
						 * @return 是否成功
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
	public boolean run(String urlstring, File file) {
 | 
						public boolean run(String urlstring, File file) {
 | 
				
			||||||
		return run(null, urlstring, file);
 | 
							return run(null, urlstring, file);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * 从网络下载文件
 | 
				
			||||||
 | 
						 * 
 | 
				
			||||||
 | 
						 * @param url
 | 
				
			||||||
 | 
						 *            - 下载地址
 | 
				
			||||||
 | 
						 * @param file
 | 
				
			||||||
 | 
						 *            - 保存文件
 | 
				
			||||||
 | 
						 * @return 是否成功
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
	public boolean run(URL url, File file) {
 | 
						public boolean run(URL url, File file) {
 | 
				
			||||||
		return run(null, url, file);
 | 
							return run(null, url, file);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -1,13 +1,10 @@
 | 
				
			|||||||
/**
 | 
					/**
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
package cn.citycraft.Yum.utils;
 | 
					package cn.citycraft.Yum.manager;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.io.File;
 | 
					import java.io.File;
 | 
				
			||||||
import java.io.FileInputStream;
 | 
					 | 
				
			||||||
import java.io.FileOutputStream;
 | 
					 | 
				
			||||||
import java.io.IOException;
 | 
					import java.io.IOException;
 | 
				
			||||||
import java.io.InputStream;
 | 
					 | 
				
			||||||
import java.lang.reflect.Field;
 | 
					import java.lang.reflect.Field;
 | 
				
			||||||
import java.net.URL;
 | 
					import java.net.URL;
 | 
				
			||||||
import java.net.URLClassLoader;
 | 
					import java.net.URLClassLoader;
 | 
				
			||||||
@@ -28,10 +25,14 @@ import org.bukkit.event.Event;
 | 
				
			|||||||
import org.bukkit.plugin.InvalidDescriptionException;
 | 
					import org.bukkit.plugin.InvalidDescriptionException;
 | 
				
			||||||
import org.bukkit.plugin.InvalidPluginException;
 | 
					import org.bukkit.plugin.InvalidPluginException;
 | 
				
			||||||
import org.bukkit.plugin.Plugin;
 | 
					import org.bukkit.plugin.Plugin;
 | 
				
			||||||
 | 
					import org.bukkit.plugin.PluginDescriptionFile;
 | 
				
			||||||
import org.bukkit.plugin.PluginManager;
 | 
					import org.bukkit.plugin.PluginManager;
 | 
				
			||||||
import org.bukkit.plugin.RegisteredListener;
 | 
					import org.bukkit.plugin.RegisteredListener;
 | 
				
			||||||
import org.bukkit.plugin.UnknownDependencyException;
 | 
					import org.bukkit.plugin.UnknownDependencyException;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import cn.citycraft.Yum.Yum;
 | 
				
			||||||
 | 
					import cn.citycraft.Yum.utils.StringUtil;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.google.common.base.Joiner;
 | 
					import com.google.common.base.Joiner;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -40,43 +41,52 @@ import com.google.common.base.Joiner;
 | 
				
			|||||||
 * @author 蒋天蓓 2015年8月21日下午7:03:26
 | 
					 * @author 蒋天蓓 2015年8月21日下午7:03:26
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
public class PluginsManager {
 | 
					public class PluginsManager {
 | 
				
			||||||
 | 
						Yum main;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	public static boolean copyFile(File src, File des) {
 | 
						public PluginsManager(Yum yum) {
 | 
				
			||||||
		InputStream inStream = null; // 读入原文件
 | 
							this.main = yum;
 | 
				
			||||||
		FileOutputStream fs = null;
 | 
					 | 
				
			||||||
		try {
 | 
					 | 
				
			||||||
			int byteread = 0;
 | 
					 | 
				
			||||||
			if (!src.exists())
 | 
					 | 
				
			||||||
				return false;
 | 
					 | 
				
			||||||
			inStream = new FileInputStream(src); // 读入原文件
 | 
					 | 
				
			||||||
			fs = new FileOutputStream(des);
 | 
					 | 
				
			||||||
			byte[] buffer = new byte[1024];
 | 
					 | 
				
			||||||
			while ((byteread = inStream.read(buffer)) != -1) {
 | 
					 | 
				
			||||||
				fs.write(buffer, 0, byteread);
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
			inStream.close();
 | 
					 | 
				
			||||||
			fs.close();
 | 
					 | 
				
			||||||
			return true;
 | 
					 | 
				
			||||||
		} catch (Exception e) {
 | 
					 | 
				
			||||||
			return false;
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	public static boolean deletePlugin(CommandSender sender, Plugin plugin) {
 | 
						/**
 | 
				
			||||||
 | 
						 * 删除插件
 | 
				
			||||||
 | 
						 * 
 | 
				
			||||||
 | 
						 * @param sender
 | 
				
			||||||
 | 
						 *            - 命令发送者
 | 
				
			||||||
 | 
						 * @param plugin
 | 
				
			||||||
 | 
						 *            - 插件
 | 
				
			||||||
 | 
						 * @return 是否成功
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public boolean deletePlugin(CommandSender sender, Plugin plugin) {
 | 
				
			||||||
		return unload(sender, plugin) && getPluginFile(plugin).delete();
 | 
							return unload(sender, plugin) && getPluginFile(plugin).delete();
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	public static boolean deletePlugin(Plugin plugin) {
 | 
						/**
 | 
				
			||||||
 | 
						 * 删除插件
 | 
				
			||||||
 | 
						 * 
 | 
				
			||||||
 | 
						 * @param plugin
 | 
				
			||||||
 | 
						 *            - 插件
 | 
				
			||||||
 | 
						 * @return 是否成功
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public boolean deletePlugin(Plugin plugin) {
 | 
				
			||||||
		return deletePlugin(Bukkit.getConsoleSender(), plugin);
 | 
							return deletePlugin(Bukkit.getConsoleSender(), plugin);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	public static void disable(Plugin plugin) {
 | 
						/**
 | 
				
			||||||
 | 
						 * 关闭插件
 | 
				
			||||||
 | 
						 * 
 | 
				
			||||||
 | 
						 * @param plugin
 | 
				
			||||||
 | 
						 *            - 插件
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public void disable(Plugin plugin) {
 | 
				
			||||||
		if ((plugin.isEnabled()) && (plugin != null)) {
 | 
							if ((plugin.isEnabled()) && (plugin != null)) {
 | 
				
			||||||
			Bukkit.getPluginManager().disablePlugin(plugin);
 | 
								Bukkit.getPluginManager().disablePlugin(plugin);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	public static void disableAll() {
 | 
						/**
 | 
				
			||||||
 | 
						 * 关闭所有插件
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public void disableAll() {
 | 
				
			||||||
		for (Plugin plugin : Bukkit.getPluginManager().getPlugins()) {
 | 
							for (Plugin plugin : Bukkit.getPluginManager().getPlugins()) {
 | 
				
			||||||
			if (!isIgnored(plugin)) {
 | 
								if (!isIgnored(plugin)) {
 | 
				
			||||||
				disable(plugin);
 | 
									disable(plugin);
 | 
				
			||||||
@@ -84,13 +94,22 @@ public class PluginsManager {
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	public static void enable(Plugin plugin) {
 | 
						/**
 | 
				
			||||||
 | 
						 * 启用插件
 | 
				
			||||||
 | 
						 * 
 | 
				
			||||||
 | 
						 * @param plugin
 | 
				
			||||||
 | 
						 *            - 插件
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public void enable(Plugin plugin) {
 | 
				
			||||||
		if ((!plugin.isEnabled()) && (plugin != null)) {
 | 
							if ((!plugin.isEnabled()) && (plugin != null)) {
 | 
				
			||||||
			Bukkit.getPluginManager().enablePlugin(plugin);
 | 
								Bukkit.getPluginManager().enablePlugin(plugin);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	public static void enableAll() {
 | 
						/**
 | 
				
			||||||
 | 
						 * 启用所有插件
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public void enableAll() {
 | 
				
			||||||
		for (Plugin plugin : Bukkit.getPluginManager().getPlugins()) {
 | 
							for (Plugin plugin : Bukkit.getPluginManager().getPlugins()) {
 | 
				
			||||||
			if (!isIgnored(plugin)) {
 | 
								if (!isIgnored(plugin)) {
 | 
				
			||||||
				enable(plugin);
 | 
									enable(plugin);
 | 
				
			||||||
@@ -98,11 +117,27 @@ public class PluginsManager {
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	public static String getFormattedName(Plugin plugin) {
 | 
						/**
 | 
				
			||||||
 | 
						 * 获得格式化的插件名称
 | 
				
			||||||
 | 
						 * 
 | 
				
			||||||
 | 
						 * @param plugin
 | 
				
			||||||
 | 
						 *            - 插件
 | 
				
			||||||
 | 
						 * @return 格式化的插件名称
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public String getFormattedName(Plugin plugin) {
 | 
				
			||||||
		return getFormattedName(plugin, false);
 | 
							return getFormattedName(plugin, false);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	public static String getFormattedName(Plugin plugin, boolean includeVersions) {
 | 
						/**
 | 
				
			||||||
 | 
						 * 获得格式化的插件名称(可带版本)
 | 
				
			||||||
 | 
						 * 
 | 
				
			||||||
 | 
						 * @param plugin
 | 
				
			||||||
 | 
						 *            - 插件
 | 
				
			||||||
 | 
						 * @param includeVersions
 | 
				
			||||||
 | 
						 *            - 是否包括版本
 | 
				
			||||||
 | 
						 * @return 格式化的插件名称
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public String getFormattedName(Plugin plugin, boolean includeVersions) {
 | 
				
			||||||
		ChatColor color = plugin.isEnabled() ? ChatColor.GREEN : ChatColor.RED;
 | 
							ChatColor color = plugin.isEnabled() ? ChatColor.GREEN : ChatColor.RED;
 | 
				
			||||||
		String pluginName = color + plugin.getName();
 | 
							String pluginName = color + plugin.getName();
 | 
				
			||||||
		if (includeVersions) {
 | 
							if (includeVersions) {
 | 
				
			||||||
@@ -111,15 +146,36 @@ public class PluginsManager {
 | 
				
			|||||||
		return pluginName;
 | 
							return pluginName;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	public static Plugin getPluginByName(String name) {
 | 
						/**
 | 
				
			||||||
 | 
						 * 通过名称获得插件
 | 
				
			||||||
 | 
						 * 
 | 
				
			||||||
 | 
						 * @param name
 | 
				
			||||||
 | 
						 *            - 名称
 | 
				
			||||||
 | 
						 * @return 插件
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public Plugin getPluginByName(String name) {
 | 
				
			||||||
		return Bukkit.getPluginManager().getPlugin(name);
 | 
							return Bukkit.getPluginManager().getPlugin(name);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	public static Plugin getPluginByName(String[] args, int start) {
 | 
						/**
 | 
				
			||||||
 | 
						 * 通过名称获得插件(处理带空格的插件)
 | 
				
			||||||
 | 
						 * 
 | 
				
			||||||
 | 
						 * @param name
 | 
				
			||||||
 | 
						 *            - 名称
 | 
				
			||||||
 | 
						 * @return 插件
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public Plugin getPluginByName(String[] args, int start) {
 | 
				
			||||||
		return getPluginByName(StringUtil.consolidateStrings(args, start));
 | 
							return getPluginByName(StringUtil.consolidateStrings(args, start));
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	public static File getPluginFile(Plugin plugin) {
 | 
						/**
 | 
				
			||||||
 | 
						 * 获得插件绝对路径
 | 
				
			||||||
 | 
						 * 
 | 
				
			||||||
 | 
						 * @param plugin
 | 
				
			||||||
 | 
						 *            - 插件
 | 
				
			||||||
 | 
						 * @return 插件的绝对路径
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public File getPluginFile(Plugin plugin) {
 | 
				
			||||||
		File file = null;
 | 
							File file = null;
 | 
				
			||||||
		ClassLoader cl = plugin.getClass().getClassLoader();
 | 
							ClassLoader cl = plugin.getClass().getClassLoader();
 | 
				
			||||||
		if ((cl instanceof URLClassLoader)) {
 | 
							if ((cl instanceof URLClassLoader)) {
 | 
				
			||||||
@@ -131,7 +187,7 @@ public class PluginsManager {
 | 
				
			|||||||
		return file;
 | 
							return file;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	public static List<String> getPluginNames(boolean fullName) {
 | 
						public List<String> getPluginNames(boolean fullName) {
 | 
				
			||||||
		List<String> plugins = new ArrayList<String>();
 | 
							List<String> plugins = new ArrayList<String>();
 | 
				
			||||||
		for (Plugin plugin : Bukkit.getPluginManager().getPlugins()) {
 | 
							for (Plugin plugin : Bukkit.getPluginManager().getPlugins()) {
 | 
				
			||||||
			plugins.add(fullName ? plugin.getDescription().getFullName() : plugin.getName());
 | 
								plugins.add(fullName ? plugin.getDescription().getFullName() : plugin.getName());
 | 
				
			||||||
@@ -139,14 +195,28 @@ public class PluginsManager {
 | 
				
			|||||||
		return plugins;
 | 
							return plugins;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	public static String getPluginVersion(String name) {
 | 
						/**
 | 
				
			||||||
 | 
						 * 获得插件版本
 | 
				
			||||||
 | 
						 * 
 | 
				
			||||||
 | 
						 * @param name
 | 
				
			||||||
 | 
						 *            - 插件名称
 | 
				
			||||||
 | 
						 * @return 插件版本
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public String getPluginVersion(String name) {
 | 
				
			||||||
		Plugin plugin = getPluginByName(name);
 | 
							Plugin plugin = getPluginByName(name);
 | 
				
			||||||
		if ((plugin != null) && (plugin.getDescription() != null))
 | 
							if ((plugin != null) && (plugin.getDescription() != null))
 | 
				
			||||||
			return plugin.getDescription().getVersion();
 | 
								return plugin.getDescription().getVersion();
 | 
				
			||||||
		return null;
 | 
							return null;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	public static String getUsages(Plugin plugin) {
 | 
						/**
 | 
				
			||||||
 | 
						 * 获得插件命令
 | 
				
			||||||
 | 
						 * 
 | 
				
			||||||
 | 
						 * @param plugin
 | 
				
			||||||
 | 
						 *            - 插件
 | 
				
			||||||
 | 
						 * @return 插件命令
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public String getUsages(Plugin plugin) {
 | 
				
			||||||
		List<String> parsedCommands = new ArrayList<String>();
 | 
							List<String> parsedCommands = new ArrayList<String>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		Map<String, Map<String, Object>> commands = plugin.getDescription().getCommands();
 | 
							Map<String, Map<String, Object>> commands = plugin.getDescription().getCommands();
 | 
				
			||||||
@@ -165,28 +235,25 @@ public class PluginsManager {
 | 
				
			|||||||
		return Joiner.on(", ").join(parsedCommands);
 | 
							return Joiner.on(", ").join(parsedCommands);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	public static boolean installFromYum(CommandSender sender, String filename) {
 | 
						/**
 | 
				
			||||||
		if (sender == null) {
 | 
						 * 判断插件是否在忽略列表
 | 
				
			||||||
			sender = Bukkit.getConsoleSender();
 | 
						 * 
 | 
				
			||||||
		}
 | 
						 * @param plugin
 | 
				
			||||||
		File file = new File("plugins/YumCenter", filename + ".jar");
 | 
						 *            - 插件
 | 
				
			||||||
		if (!file.exists()) {
 | 
						 * @return 是否
 | 
				
			||||||
			sender.sendMessage("§4错误: §c仓库不存在 " + filename + " 插件!");
 | 
						 */
 | 
				
			||||||
			return false;
 | 
						public boolean isIgnored(Plugin plugin) {
 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		File pluginfile = new File("plugins", filename + ".jar");
 | 
					 | 
				
			||||||
		copyFile(file, pluginfile);
 | 
					 | 
				
			||||||
		if (load(sender, filename + ".jar")) {
 | 
					 | 
				
			||||||
			sender.sendMessage("§6安装: §a从Yum仓库安装插件 " + filename + " 成功!");
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		return false;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	public static boolean isIgnored(Plugin plugin) {
 | 
					 | 
				
			||||||
		return isIgnored(plugin.getName());
 | 
							return isIgnored(plugin.getName());
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	public static boolean isIgnored(String plugin) {
 | 
						/**
 | 
				
			||||||
 | 
						 * 判断插件是否在忽略列表
 | 
				
			||||||
 | 
						 * 
 | 
				
			||||||
 | 
						 * @param plugin
 | 
				
			||||||
 | 
						 *            - 插件名称
 | 
				
			||||||
 | 
						 * @return 是否
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public boolean isIgnored(String plugin) {
 | 
				
			||||||
		for (String name : new ArrayList<String>()) {
 | 
							for (String name : new ArrayList<String>()) {
 | 
				
			||||||
			if (name.equalsIgnoreCase(plugin))
 | 
								if (name.equalsIgnoreCase(plugin))
 | 
				
			||||||
				return true;
 | 
									return true;
 | 
				
			||||||
@@ -194,12 +261,16 @@ public class PluginsManager {
 | 
				
			|||||||
		return false;
 | 
							return false;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	public static boolean load(CommandSender sender, Plugin plugin) {
 | 
						/**
 | 
				
			||||||
		String filename = getPluginFile(plugin).getName();
 | 
						 * 载入插件
 | 
				
			||||||
		return load(sender, filename);
 | 
						 * 
 | 
				
			||||||
	}
 | 
						 * @param sender
 | 
				
			||||||
 | 
						 *            - 命令发送者
 | 
				
			||||||
	public static boolean load(CommandSender sender, String name) {
 | 
						 * @param name
 | 
				
			||||||
 | 
						 *            - 插件名称
 | 
				
			||||||
 | 
						 * @return 是否成功
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public boolean load(CommandSender sender, String name) {
 | 
				
			||||||
		Plugin target = null;
 | 
							Plugin target = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (sender == null) {
 | 
							if (sender == null) {
 | 
				
			||||||
@@ -221,20 +292,35 @@ public class PluginsManager {
 | 
				
			|||||||
		File pluginFile = new File(pluginDir, name);
 | 
							File pluginFile = new File(pluginDir, name);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (!pluginFile.isFile() && !new File(updateDir, name).isFile()) {
 | 
							if (!pluginFile.isFile() && !new File(updateDir, name).isFile()) {
 | 
				
			||||||
			sender.sendMessage("§c在插件目录和更新目录未找到 " + name + " 插件 请确认文件是否存在!");
 | 
								pluginFile = null;
 | 
				
			||||||
			return false;
 | 
								for (File file : pluginDir.listFiles()) {
 | 
				
			||||||
 | 
									if (file.getName().endsWith(".jar")) {
 | 
				
			||||||
 | 
										try {
 | 
				
			||||||
 | 
											PluginDescriptionFile desc = main.getPluginLoader().getPluginDescription(file);
 | 
				
			||||||
 | 
											if (desc.getName().equalsIgnoreCase(name)) {
 | 
				
			||||||
 | 
												pluginFile = file;
 | 
				
			||||||
 | 
												break;
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
										} catch (InvalidDescriptionException e) {
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								if (pluginFile == null) {
 | 
				
			||||||
 | 
									sender.sendMessage("§c在插件目录和更新目录均未找到 " + name + " 插件 请确认文件是否存在!");
 | 
				
			||||||
 | 
									return false;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		try {
 | 
							try {
 | 
				
			||||||
			target = Bukkit.getPluginManager().loadPlugin(pluginFile);
 | 
								target = Bukkit.getPluginManager().loadPlugin(pluginFile);
 | 
				
			||||||
		} catch (InvalidDescriptionException e) {
 | 
							} catch (InvalidDescriptionException e) {
 | 
				
			||||||
			sender.sendMessage("§c异常: " + e.getMessage() + " 插件: " + name + " 的plugin.yml文件存在错误!");
 | 
								sender.sendMessage("§4异常: §c" + e.getMessage() + " 插件: " + name + " 的plugin.yml文件存在错误!");
 | 
				
			||||||
			return false;
 | 
								return false;
 | 
				
			||||||
		} catch (InvalidPluginException e) {
 | 
							} catch (InvalidPluginException e) {
 | 
				
			||||||
			sender.sendMessage("§c异常: " + e.getMessage() + " 文件: " + name + " 不是一个可载入的插件!");
 | 
								sender.sendMessage("§4异常: §c" + e.getMessage() + " 文件: " + name + " 不是一个可载入的插件!");
 | 
				
			||||||
			return false;
 | 
								return false;
 | 
				
			||||||
		} catch (UnknownDependencyException e) {
 | 
							} catch (UnknownDependencyException e) {
 | 
				
			||||||
			sender.sendMessage("§c异常: " + e.getMessage() + " 插件: " + name + " 缺少部分依赖项目!");
 | 
								sender.sendMessage("§4异常: §c" + e.getMessage() + " 插件: " + name + " 缺少部分依赖项目!");
 | 
				
			||||||
			return false;
 | 
								return false;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -244,25 +330,40 @@ public class PluginsManager {
 | 
				
			|||||||
		return true;
 | 
							return true;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	public static boolean load(Plugin plugin) {
 | 
						public boolean load(String name) {
 | 
				
			||||||
		return load(Bukkit.getConsoleSender(), plugin);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	public static boolean load(String name) {
 | 
					 | 
				
			||||||
		return load(Bukkit.getConsoleSender(), name);
 | 
							return load(Bukkit.getConsoleSender(), name);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	public static boolean reload(CommandSender sender, Plugin plugin) {
 | 
						/**
 | 
				
			||||||
 | 
						 * 删除重载插件
 | 
				
			||||||
 | 
						 * 
 | 
				
			||||||
 | 
						 * @param sender
 | 
				
			||||||
 | 
						 *            - 命令发送者
 | 
				
			||||||
 | 
						 * @param plugin
 | 
				
			||||||
 | 
						 *            - 插件
 | 
				
			||||||
 | 
						 * @return 是否成功
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public boolean reload(CommandSender sender, Plugin plugin) {
 | 
				
			||||||
		if (plugin != null)
 | 
							if (plugin != null)
 | 
				
			||||||
			return unload(sender, plugin) && load(sender, plugin);
 | 
								return unload(sender, plugin) && load(sender, plugin.getName());
 | 
				
			||||||
		return false;
 | 
							return false;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	public static boolean reload(Plugin plugin) {
 | 
						/**
 | 
				
			||||||
 | 
						 * 重载插件
 | 
				
			||||||
 | 
						 * 
 | 
				
			||||||
 | 
						 * @param plugin
 | 
				
			||||||
 | 
						 *            - 插件
 | 
				
			||||||
 | 
						 * @return 是否成功
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public boolean reload(Plugin plugin) {
 | 
				
			||||||
		return reload(Bukkit.getConsoleSender(), plugin);
 | 
							return reload(Bukkit.getConsoleSender(), plugin);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	public static void reloadAll() {
 | 
						/**
 | 
				
			||||||
 | 
						 * 重载所有插件
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public void reloadAll() {
 | 
				
			||||||
		for (Plugin plugin : Bukkit.getPluginManager().getPlugins()) {
 | 
							for (Plugin plugin : Bukkit.getPluginManager().getPlugins()) {
 | 
				
			||||||
			if (!isIgnored(plugin)) {
 | 
								if (!isIgnored(plugin)) {
 | 
				
			||||||
				reload(plugin);
 | 
									reload(plugin);
 | 
				
			||||||
@@ -270,8 +371,17 @@ public class PluginsManager {
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * 卸载插件
 | 
				
			||||||
 | 
						 * 
 | 
				
			||||||
 | 
						 * @param sender
 | 
				
			||||||
 | 
						 *            - 命令发送者
 | 
				
			||||||
 | 
						 * @param plugin
 | 
				
			||||||
 | 
						 *            - 插件
 | 
				
			||||||
 | 
						 * @return 是否成功
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
	@SuppressWarnings("unchecked")
 | 
						@SuppressWarnings("unchecked")
 | 
				
			||||||
	public static boolean unload(CommandSender sender, Plugin plugin) {
 | 
						public boolean unload(CommandSender sender, Plugin plugin) {
 | 
				
			||||||
		String name = plugin.getName();
 | 
							String name = plugin.getName();
 | 
				
			||||||
		if (sender == null) {
 | 
							if (sender == null) {
 | 
				
			||||||
			sender = Bukkit.getConsoleSender();
 | 
								sender = Bukkit.getConsoleSender();
 | 
				
			||||||
@@ -309,7 +419,7 @@ public class PluginsManager {
 | 
				
			|||||||
				knownCommandsField.setAccessible(true);
 | 
									knownCommandsField.setAccessible(true);
 | 
				
			||||||
				knownCommands = (Map<String, Command>) knownCommandsField.get(commandMap);
 | 
									knownCommands = (Map<String, Command>) knownCommandsField.get(commandMap);
 | 
				
			||||||
			} catch (Exception e) {
 | 
								} catch (Exception e) {
 | 
				
			||||||
				sender.sendMessage("§c异常: " + e.getMessage() + " 插件 " + name + " 卸载失败!");
 | 
									sender.sendMessage("§4异常: §c" + e.getMessage() + " 插件 " + name + " 卸载失败!");
 | 
				
			||||||
				return false;
 | 
									return false;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@@ -333,6 +443,7 @@ public class PluginsManager {
 | 
				
			|||||||
							if (command.getPlugin() == next) {
 | 
												if (command.getPlugin() == next) {
 | 
				
			||||||
								command.unregister(commandMap);
 | 
													command.unregister(commandMap);
 | 
				
			||||||
								it.remove();
 | 
													it.remove();
 | 
				
			||||||
 | 
													sender.sendMessage("§6卸载: §a插件: " + name + " 的命令!");
 | 
				
			||||||
							}
 | 
												}
 | 
				
			||||||
						}
 | 
											}
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
@@ -345,6 +456,7 @@ public class PluginsManager {
 | 
				
			|||||||
					RegisteredListener value = it.next();
 | 
										RegisteredListener value = it.next();
 | 
				
			||||||
					if (value.getPlugin().getName().equals(name)) {
 | 
										if (value.getPlugin().getName().equals(name)) {
 | 
				
			||||||
						it.remove();
 | 
											it.remove();
 | 
				
			||||||
 | 
											sender.sendMessage("§6卸载: §a插件: " + name + " 的监听器!");
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
@@ -353,6 +465,7 @@ public class PluginsManager {
 | 
				
			|||||||
		if ((cl instanceof URLClassLoader)) {
 | 
							if ((cl instanceof URLClassLoader)) {
 | 
				
			||||||
			try {
 | 
								try {
 | 
				
			||||||
				((URLClassLoader) cl).close();
 | 
									((URLClassLoader) cl).close();
 | 
				
			||||||
 | 
									sender.sendMessage("§6卸载: §a插件: " + name + " 的类加载器!");
 | 
				
			||||||
			} catch (IOException ex) {
 | 
								} catch (IOException ex) {
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@@ -360,7 +473,14 @@ public class PluginsManager {
 | 
				
			|||||||
		return true;
 | 
							return true;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	public static boolean unload(Plugin plugin) {
 | 
						/**
 | 
				
			||||||
 | 
						 * 卸载插件
 | 
				
			||||||
 | 
						 * 
 | 
				
			||||||
 | 
						 * @param plugin
 | 
				
			||||||
 | 
						 *            - 卸载插件
 | 
				
			||||||
 | 
						 * @return 是否成功
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public boolean unload(Plugin plugin) {
 | 
				
			||||||
		return unload(Bukkit.getConsoleSender(), plugin);
 | 
							return unload(Bukkit.getConsoleSender(), plugin);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
							
								
								
									
										19
									
								
								src/main/java/cn/citycraft/Yum/repository/Package.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								src/main/java/cn/citycraft/Yum/repository/Package.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,19 @@
 | 
				
			|||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					package cn.citycraft.Yum.repository;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.ArrayList;
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * TODO
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * @author 蒋天蓓
 | 
				
			||||||
 | 
					 *         2015年8月31日下午7:42:22
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					public class Package {
 | 
				
			||||||
 | 
						public String name;
 | 
				
			||||||
 | 
						public String url;
 | 
				
			||||||
 | 
						public List<Plugin> plugins = new ArrayList<>();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										16
									
								
								src/main/java/cn/citycraft/Yum/repository/Plugin.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								src/main/java/cn/citycraft/Yum/repository/Plugin.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,16 @@
 | 
				
			|||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					package cn.citycraft.Yum.repository;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * TODO
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * @author 蒋天蓓
 | 
				
			||||||
 | 
					 *         2015年8月31日下午7:42:54
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					public class Plugin {
 | 
				
			||||||
 | 
						public String groupId;
 | 
				
			||||||
 | 
						public String artifactId;
 | 
				
			||||||
 | 
						public String version;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										20
									
								
								src/main/java/cn/citycraft/Yum/repository/PluginInfo.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								src/main/java/cn/citycraft/Yum/repository/PluginInfo.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,20 @@
 | 
				
			|||||||
 | 
					package cn.citycraft.Yum.repository;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * TODO
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * @author 蒋天蓓
 | 
				
			||||||
 | 
					 *         2015年8月31日下午7:43:19
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					public class PluginInfo {
 | 
				
			||||||
 | 
						public Plugin plugin;
 | 
				
			||||||
 | 
						public String url;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public String getMavenUrl() {
 | 
				
			||||||
 | 
							return String.format(url + "/%1$s/%2$s/%3$s/%2$s-%3$s.jar", plugin.groupId.replace(".", "/"), plugin.artifactId, plugin.version);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public String getFileName() {
 | 
				
			||||||
 | 
							return String.format("%1$s-%2$s.jar", plugin.artifactId, plugin.version);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										16
									
								
								src/main/java/cn/citycraft/Yum/repository/Repository.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								src/main/java/cn/citycraft/Yum/repository/Repository.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,16 @@
 | 
				
			|||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					package cn.citycraft.Yum.repository;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * TODO
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * @author 蒋天蓓
 | 
				
			||||||
 | 
					 *         2015年8月31日下午7:41:53
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					public class Repository {
 | 
				
			||||||
 | 
						public String id;
 | 
				
			||||||
 | 
						public String url;
 | 
				
			||||||
 | 
						public String type;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										147
									
								
								src/main/java/cn/citycraft/Yum/repository/RepositoryManager.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										147
									
								
								src/main/java/cn/citycraft/Yum/repository/RepositoryManager.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,147 @@
 | 
				
			|||||||
 | 
					/**
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					package cn.citycraft.Yum.repository;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.io.BufferedReader;
 | 
				
			||||||
 | 
					import java.io.IOException;
 | 
				
			||||||
 | 
					import java.io.InputStreamReader;
 | 
				
			||||||
 | 
					import java.net.URL;
 | 
				
			||||||
 | 
					import java.util.ArrayList;
 | 
				
			||||||
 | 
					import java.util.HashMap;
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					import java.util.Map.Entry;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import cn.citycraft.Yum.Yum;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.google.common.base.Charsets;
 | 
				
			||||||
 | 
					import com.google.gson.Gson;
 | 
				
			||||||
 | 
					import com.google.gson.JsonSyntaxException;
 | 
				
			||||||
 | 
					import com.google.gson.reflect.TypeToken;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * 仓库管理类
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @author 蒋天蓓
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					public class RepositoryManager {
 | 
				
			||||||
 | 
						Gson gson = new Gson();
 | 
				
			||||||
 | 
						HashMap<String, PluginInfo> plugins = new HashMap<String, PluginInfo>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						Yum main;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public RepositoryManager(Yum yum) {
 | 
				
			||||||
 | 
							this.main = yum;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public void clean() {
 | 
				
			||||||
 | 
							plugins.clear();
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public void update(Package pkg) {
 | 
				
			||||||
 | 
							for (Plugin plugin : pkg.plugins) {
 | 
				
			||||||
 | 
								PluginInfo pi = new PluginInfo();
 | 
				
			||||||
 | 
								pi.plugin = plugin;
 | 
				
			||||||
 | 
								pi.url = pkg.url;
 | 
				
			||||||
 | 
								plugins.put(plugin.groupId + plugin.artifactId, pi);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public String cacheToJson() {
 | 
				
			||||||
 | 
							return gson.toJson(plugins);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public boolean jsonToCache(String json) {
 | 
				
			||||||
 | 
							if (json == "") {
 | 
				
			||||||
 | 
								return false;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							try {
 | 
				
			||||||
 | 
								plugins = gson.fromJson(json, new TypeToken<HashMap<String, PluginInfo>>() {
 | 
				
			||||||
 | 
								}.getType());
 | 
				
			||||||
 | 
								return true;
 | 
				
			||||||
 | 
							} catch (JsonSyntaxException e) {
 | 
				
			||||||
 | 
								return false;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public boolean addRepositories(String urlstring) {
 | 
				
			||||||
 | 
							String json = getHtml(urlstring);
 | 
				
			||||||
 | 
							if (json == "") {
 | 
				
			||||||
 | 
								return false;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							List<Repository> lrepo = jsonToRepositories(json);
 | 
				
			||||||
 | 
							if (lrepo == null) {
 | 
				
			||||||
 | 
								return false;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							for (Repository repository : lrepo) {
 | 
				
			||||||
 | 
								addPackage(repository.url);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return true;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public boolean addPackage(String urlstring) {
 | 
				
			||||||
 | 
							String json = getHtml(urlstring);
 | 
				
			||||||
 | 
							if (json == "") {
 | 
				
			||||||
 | 
								return false;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							Package pkg = jsonToPackage(json);
 | 
				
			||||||
 | 
							if (pkg == null) {
 | 
				
			||||||
 | 
								return false;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							update(pkg);
 | 
				
			||||||
 | 
							return true;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public String getHtml(String urlstring) {
 | 
				
			||||||
 | 
							String html = "";
 | 
				
			||||||
 | 
							try {
 | 
				
			||||||
 | 
								URL url = new URL(urlstring);
 | 
				
			||||||
 | 
								BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream(), Charsets.UTF_8));
 | 
				
			||||||
 | 
								String line;
 | 
				
			||||||
 | 
								while ((line = br.readLine()) != null) {
 | 
				
			||||||
 | 
									html += line;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								return html;
 | 
				
			||||||
 | 
							} catch (IOException e) {
 | 
				
			||||||
 | 
								return null;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public PluginInfo getPluginInfo(String groupId, String artifactId) {
 | 
				
			||||||
 | 
							return plugins.get(groupId + artifactId);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public PluginInfo getPlugin(String name) {
 | 
				
			||||||
 | 
							for (Entry<String, PluginInfo> plugin : plugins.entrySet()) {
 | 
				
			||||||
 | 
								if (plugin.getValue().plugin.artifactId.equalsIgnoreCase(name))
 | 
				
			||||||
 | 
									return plugin.getValue();
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return null;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public List<PluginInfo> getPluginInfo(String name) {
 | 
				
			||||||
 | 
							List<PluginInfo> li = new ArrayList<PluginInfo>();
 | 
				
			||||||
 | 
							for (Entry<String, PluginInfo> plugin : plugins.entrySet()) {
 | 
				
			||||||
 | 
								if (plugin.getValue().plugin.artifactId.equalsIgnoreCase(name))
 | 
				
			||||||
 | 
									li.add(plugin.getValue());
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return li;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public List<Repository> jsonToRepositories(String json) {
 | 
				
			||||||
 | 
							try {
 | 
				
			||||||
 | 
								return gson.fromJson(json, new TypeToken<List<Repository>>() {
 | 
				
			||||||
 | 
								}.getType());
 | 
				
			||||||
 | 
							} catch (JsonSyntaxException e) {
 | 
				
			||||||
 | 
								return null;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public Package jsonToPackage(String json) {
 | 
				
			||||||
 | 
							try {
 | 
				
			||||||
 | 
								return gson.fromJson(json, Package.class);
 | 
				
			||||||
 | 
							} catch (JsonSyntaxException e) {
 | 
				
			||||||
 | 
								return null;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										36
									
								
								src/main/java/cn/citycraft/Yum/sql/MySQLHelper.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								src/main/java/cn/citycraft/Yum/sql/MySQLHelper.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,36 @@
 | 
				
			|||||||
 | 
					package cn.citycraft.Yum.sql;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// import java.sql.*;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * 数据库操作类
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * @author 蒋天蓓 2015年7月14日下午3:25:06
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					public class MySQLHelper extends SQLHelper {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private static String drivername = "com.mysql.jdbc.Driver";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * 初始化连接信息
 | 
				
			||||||
 | 
						 * 
 | 
				
			||||||
 | 
						 * @param host
 | 
				
			||||||
 | 
						 *            - 域名
 | 
				
			||||||
 | 
						 * @param port
 | 
				
			||||||
 | 
						 *            - 端口
 | 
				
			||||||
 | 
						 * @param dbname
 | 
				
			||||||
 | 
						 *            - 数据库
 | 
				
			||||||
 | 
						 * @param username
 | 
				
			||||||
 | 
						 *            - 用户名
 | 
				
			||||||
 | 
						 * @param password
 | 
				
			||||||
 | 
						 *            - 密码
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public MySQLHelper(String host, String port, String dbname, String username, String password) {
 | 
				
			||||||
 | 
							super(password, password, drivername, getUrl(host, port, dbname));
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public static String getUrl(String host, String port, String dbaName) {
 | 
				
			||||||
 | 
							String Encode = "?&useUnicode=true&characterEncoding=utf-8";
 | 
				
			||||||
 | 
							return "jdbc:mysql://" + host + ":" + port + "/" + dbaName + Encode;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										428
									
								
								src/main/java/cn/citycraft/Yum/sql/SQLHelper.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										428
									
								
								src/main/java/cn/citycraft/Yum/sql/SQLHelper.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,428 @@
 | 
				
			|||||||
 | 
					package cn.citycraft.Yum.sql;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * 数据库连接、选择、更新、删除演示
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					// import java.sql.*;
 | 
				
			||||||
 | 
					import java.io.BufferedReader;
 | 
				
			||||||
 | 
					import java.io.File;
 | 
				
			||||||
 | 
					import java.io.FileReader;
 | 
				
			||||||
 | 
					import java.sql.Connection;
 | 
				
			||||||
 | 
					import java.sql.DatabaseMetaData;
 | 
				
			||||||
 | 
					import java.sql.DriverManager;
 | 
				
			||||||
 | 
					import java.sql.PreparedStatement;
 | 
				
			||||||
 | 
					import java.sql.ResultSet;
 | 
				
			||||||
 | 
					import java.sql.SQLException;
 | 
				
			||||||
 | 
					import java.sql.Statement;
 | 
				
			||||||
 | 
					import java.util.ArrayList;
 | 
				
			||||||
 | 
					import java.util.HashMap;
 | 
				
			||||||
 | 
					import java.util.Iterator;
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					import java.util.Map;
 | 
				
			||||||
 | 
					import java.util.Map.Entry;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @author 蒋天蓓 2015年7月14日下午3:25:06 数据库操作类
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					public abstract class SQLHelper {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// ///////////////////////////////////////———–>>>数据成员 and 构造函数
 | 
				
			||||||
 | 
						protected Connection dbconn = null;
 | 
				
			||||||
 | 
						protected Statement dbstate = null;
 | 
				
			||||||
 | 
						protected ResultSet dbresult = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						protected String username;
 | 
				
			||||||
 | 
						protected String password;
 | 
				
			||||||
 | 
						protected String url;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						protected String drivername;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * 初始化连接信息
 | 
				
			||||||
 | 
						 * 
 | 
				
			||||||
 | 
						 * @param username
 | 
				
			||||||
 | 
						 *            - 用户名
 | 
				
			||||||
 | 
						 * @param password
 | 
				
			||||||
 | 
						 *            - 密码
 | 
				
			||||||
 | 
						 * @param drivername
 | 
				
			||||||
 | 
						 *            - 驱动名称
 | 
				
			||||||
 | 
						 * @param url
 | 
				
			||||||
 | 
						 *            - 数据库地址
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public SQLHelper(String username, String password, String drivername, String url) {
 | 
				
			||||||
 | 
							try {
 | 
				
			||||||
 | 
								Class.forName(drivername).newInstance();
 | 
				
			||||||
 | 
							} catch (Exception e) {
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							this.username = username;
 | 
				
			||||||
 | 
							this.password = password;
 | 
				
			||||||
 | 
							this.drivername = drivername;
 | 
				
			||||||
 | 
							this.url = url;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * 创建数据表
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @param tableName
 | 
				
			||||||
 | 
						 *            - 表名
 | 
				
			||||||
 | 
						 * @param fields
 | 
				
			||||||
 | 
						 *            - 字段参数
 | 
				
			||||||
 | 
						 * @param Conditions
 | 
				
			||||||
 | 
						 *            -附加值
 | 
				
			||||||
 | 
						 * @return 运行结果
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public boolean createTables(String tableName, HashMap<String, String> fields, String Conditions) {
 | 
				
			||||||
 | 
							if (!dbConnection())
 | 
				
			||||||
 | 
								return false;
 | 
				
			||||||
 | 
							String kv = "";
 | 
				
			||||||
 | 
							for (Entry<String, String> kvs : fields.entrySet()) {
 | 
				
			||||||
 | 
								kv += "`" + kvs.getKey() + "` " + kvs.getValue() + " NOT NULL , ";
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							kv = kv.substring(0, kv.length() - 2);// 根据String的索引提取子串
 | 
				
			||||||
 | 
							String sql = "CREATE TABLE `" + tableName + "` ( " + kv + (Conditions == "" ? "" : " , " + Conditions)
 | 
				
			||||||
 | 
									+ " ) ENGINE = InnoDB DEFAULT CHARSET=UTF8";
 | 
				
			||||||
 | 
							try {
 | 
				
			||||||
 | 
								PreparedStatement state = dbconn.prepareStatement(sql);
 | 
				
			||||||
 | 
								state.executeUpdate();
 | 
				
			||||||
 | 
								state.close();
 | 
				
			||||||
 | 
								return true;
 | 
				
			||||||
 | 
							} catch (final Exception e) {
 | 
				
			||||||
 | 
								print("数据库操作出错: " + e.getMessage());
 | 
				
			||||||
 | 
								print("SQL查询语句: " + sql);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return false;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * 断开数据库
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @return bool值,成功返回true,失败返回false
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public boolean dbClose() {
 | 
				
			||||||
 | 
							try {
 | 
				
			||||||
 | 
								dbconn.close();
 | 
				
			||||||
 | 
								return true;
 | 
				
			||||||
 | 
							} catch (Exception e) {
 | 
				
			||||||
 | 
								print("数据库操作出错: " + e.getMessage());
 | 
				
			||||||
 | 
								return false;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}// end dbClose()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * 连接到数据库
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @return 是否成功
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public boolean dbConnection() {
 | 
				
			||||||
 | 
							try {
 | 
				
			||||||
 | 
								dbconn = DriverManager.getConnection(url, username, password);
 | 
				
			||||||
 | 
								dbstate = dbconn.createStatement();
 | 
				
			||||||
 | 
								return true;
 | 
				
			||||||
 | 
							} catch (Exception e) {
 | 
				
			||||||
 | 
								print("数据库操作出错: " + e.getMessage());// 得到出错信息
 | 
				
			||||||
 | 
								print("登录URL: " + url); // 发生错误时,将连接数据库信息打印出来
 | 
				
			||||||
 | 
								print("登录账户: " + username);
 | 
				
			||||||
 | 
								print("登录密码: " + password);
 | 
				
			||||||
 | 
								return false;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * 对数据库表中的记录进行删除操作
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @param tableName
 | 
				
			||||||
 | 
						 * @param condition
 | 
				
			||||||
 | 
						 * @return bool值,表示删除成功或者失败。
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public boolean dbDelete(String tableName, HashMap<String, String> selConditions) {// ——–>>>删除操作
 | 
				
			||||||
 | 
							if (!dbConnection())
 | 
				
			||||||
 | 
								return false;
 | 
				
			||||||
 | 
							String selCondition = "";
 | 
				
			||||||
 | 
							if (selConditions != null && !selConditions.isEmpty()) {
 | 
				
			||||||
 | 
								for (Entry<String, String> kvs : selConditions.entrySet()) {
 | 
				
			||||||
 | 
									selCondition += kvs.getKey() + "='" + kvs.getValue() + "', ";
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								selCondition = " WHERE " + selCondition.substring(0, selCondition.length() - 2);// 根据String的索引提取子串
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							String sql = "DELETE FROM `" + tableName + "` " + selCondition;
 | 
				
			||||||
 | 
							try {
 | 
				
			||||||
 | 
								dbstate.executeUpdate(sql);
 | 
				
			||||||
 | 
								return true;
 | 
				
			||||||
 | 
							} catch (Exception e) {
 | 
				
			||||||
 | 
								print("数据库操作出错: " + e.getMessage());
 | 
				
			||||||
 | 
								print("SQL查询语句: " + sql);
 | 
				
			||||||
 | 
								return false;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}// end dbDelete(…)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * 判断数据库某个值是否存在!
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @param tableName
 | 
				
			||||||
 | 
						 *            数据库表名
 | 
				
			||||||
 | 
						 * @param fieles
 | 
				
			||||||
 | 
						 *            字段名
 | 
				
			||||||
 | 
						 * @param selCondition
 | 
				
			||||||
 | 
						 *            选择条件
 | 
				
			||||||
 | 
						 * @return 首个符合条件的结果
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public boolean dbExist(String tableName, HashMap<String, String> selConditions) {
 | 
				
			||||||
 | 
							if (!dbConnection())
 | 
				
			||||||
 | 
								return false;
 | 
				
			||||||
 | 
							String selCondition = "";
 | 
				
			||||||
 | 
							if (selConditions != null && !selConditions.isEmpty()) {
 | 
				
			||||||
 | 
								for (Entry<String, String> kvs : selConditions.entrySet()) {
 | 
				
			||||||
 | 
									selCondition += kvs.getKey() + "='" + kvs.getValue() + "', ";
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								selCondition = " WHERE " + selCondition.substring(0, selCondition.length() - 2);// 根据String的索引提取子串
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							String sql = "SELECT * FROM " + tableName + selCondition;
 | 
				
			||||||
 | 
							try {
 | 
				
			||||||
 | 
								dbresult = dbstate.executeQuery(sql);
 | 
				
			||||||
 | 
								return dbresult.next();
 | 
				
			||||||
 | 
							} catch (Exception e) {
 | 
				
			||||||
 | 
								print("数据库操作出错: " + e.getMessage());
 | 
				
			||||||
 | 
								print("SQL查询语句: " + sql);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return false;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * 对数据库表进行插入操作
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @param tabName
 | 
				
			||||||
 | 
						 *            - 表名
 | 
				
			||||||
 | 
						 * @param values
 | 
				
			||||||
 | 
						 *            - 带键值的HashMap
 | 
				
			||||||
 | 
						 * @return bool值,成功返回true,失败返回false
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public boolean dbInsert(String tabName, HashMap<String, String> values) {
 | 
				
			||||||
 | 
							if (!dbConnection())
 | 
				
			||||||
 | 
								return false;
 | 
				
			||||||
 | 
							String sql = "";
 | 
				
			||||||
 | 
							String insertFields = "";
 | 
				
			||||||
 | 
							String insertValues = "";
 | 
				
			||||||
 | 
							for (Entry<String, String> kvs : values.entrySet()) {
 | 
				
			||||||
 | 
								insertFields += "`" + kvs.getKey() + "`, ";
 | 
				
			||||||
 | 
								insertValues += "'" + kvs.getValue() + "', ";
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							insertFields = insertFields.substring(0, insertFields.length() - 2);
 | 
				
			||||||
 | 
							insertValues = insertValues.substring(0, insertValues.length() - 2);
 | 
				
			||||||
 | 
							sql += "INSERT INTO `" + tabName + "` (" + insertFields + ") VALUES" + "(" + insertValues + ")";
 | 
				
			||||||
 | 
							try {
 | 
				
			||||||
 | 
								dbstate.executeUpdate(sql);
 | 
				
			||||||
 | 
								return true;
 | 
				
			||||||
 | 
							} catch (Exception e) {
 | 
				
			||||||
 | 
								print("数据库操作出错: " + e.getMessage());
 | 
				
			||||||
 | 
								print("SQL查询语句: " + sql);
 | 
				
			||||||
 | 
								return false;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						}// end dbInsert(…)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * 对数据库表进行选择操作!
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @param tableName
 | 
				
			||||||
 | 
						 *            数据库表名
 | 
				
			||||||
 | 
						 * @param fieles
 | 
				
			||||||
 | 
						 *            字段名
 | 
				
			||||||
 | 
						 * @param selCondition
 | 
				
			||||||
 | 
						 *            选择条件
 | 
				
			||||||
 | 
						 * @return 一个含有map的List(列表)
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						@SuppressWarnings({
 | 
				
			||||||
 | 
								"rawtypes",
 | 
				
			||||||
 | 
								"unchecked"
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
						public List dbSelect(String tableName, List<String> fields, String selCondition) {
 | 
				
			||||||
 | 
							if (!dbConnection())
 | 
				
			||||||
 | 
								return null;
 | 
				
			||||||
 | 
							List mapInList = new ArrayList();
 | 
				
			||||||
 | 
							String selFields = "";
 | 
				
			||||||
 | 
							for (int i = 0; i < fields.size(); ++i) {
 | 
				
			||||||
 | 
								selFields += fields.get(i) + ", ";
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							String selFieldsTem = selFields.substring(0, selFields.length() - 2);// 根据String的索引提取子串
 | 
				
			||||||
 | 
							String sql = "SELECT " + selFieldsTem + " FROM `" + tableName + "`" + selCondition == "" ? "" : " WHERE " + selCondition;
 | 
				
			||||||
 | 
							try {
 | 
				
			||||||
 | 
								dbstate = dbconn.createStatement();
 | 
				
			||||||
 | 
								try {
 | 
				
			||||||
 | 
									dbresult = dbstate.executeQuery(sql);
 | 
				
			||||||
 | 
								} catch (Exception e) {
 | 
				
			||||||
 | 
									print("数据库操作出错: " + e.getMessage());
 | 
				
			||||||
 | 
									print("SQL查询语句: " + sql);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								while (dbresult.next()) {
 | 
				
			||||||
 | 
									Map selResult = new HashMap();
 | 
				
			||||||
 | 
									for (String col : fields) {
 | 
				
			||||||
 | 
										selResult.put(col, dbresult.getString(col));
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									mapInList.add(selResult);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							} catch (Exception e) {
 | 
				
			||||||
 | 
								print("数据库操作出错: " + e.getMessage());
 | 
				
			||||||
 | 
								print("SQL查询语句: " + sql);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return mapInList;
 | 
				
			||||||
 | 
						}// end String dbSelect(…)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * 对数据库表进行选择操作!
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @param tableName
 | 
				
			||||||
 | 
						 *            数据库表名
 | 
				
			||||||
 | 
						 * @param fieles
 | 
				
			||||||
 | 
						 *            字段名
 | 
				
			||||||
 | 
						 * @param selCondition
 | 
				
			||||||
 | 
						 *            选择条件
 | 
				
			||||||
 | 
						 * @return 首个符合条件的结果
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public String dbSelectFirst(String tableName, String fields, HashMap<String, String> selConditions) {
 | 
				
			||||||
 | 
							if (!dbConnection())
 | 
				
			||||||
 | 
								return null;
 | 
				
			||||||
 | 
							String selFieldsTem = fields;
 | 
				
			||||||
 | 
							String selCondition = "";
 | 
				
			||||||
 | 
							if (selConditions != null && !selConditions.isEmpty()) {
 | 
				
			||||||
 | 
								for (Entry<String, String> kvs : selConditions.entrySet()) {
 | 
				
			||||||
 | 
									selCondition += kvs.getKey() + "='" + kvs.getValue() + "', ";
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								selCondition = " WHERE " + selCondition.substring(0, selCondition.length() - 2);// 根据String的索引提取子串
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							String sql = "SELECT " + selFieldsTem + " FROM " + tableName + selCondition + " limit 1";
 | 
				
			||||||
 | 
							try {
 | 
				
			||||||
 | 
								dbresult = dbstate.executeQuery(sql);
 | 
				
			||||||
 | 
								if (dbresult.next())
 | 
				
			||||||
 | 
									return dbresult.getString(fields);
 | 
				
			||||||
 | 
							} catch (Exception e) {
 | 
				
			||||||
 | 
								print("数据库操作出错: " + e.getMessage());
 | 
				
			||||||
 | 
								print("SQL查询语句: " + sql);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return null;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * 对数据库表中记录进行更新操作
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @param tabName
 | 
				
			||||||
 | 
						 * @param reCount
 | 
				
			||||||
 | 
						 * @return bool值,成功返回true,失败返回false
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						@SuppressWarnings({
 | 
				
			||||||
 | 
							"rawtypes"
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
						public boolean dbUpdate(String tabName, HashMap reCount, String upCondition) {
 | 
				
			||||||
 | 
							if (!dbConnection())
 | 
				
			||||||
 | 
								return false;
 | 
				
			||||||
 | 
							String Values = "";
 | 
				
			||||||
 | 
							Iterator keyValues = reCount.entrySet().iterator();
 | 
				
			||||||
 | 
							for (int i = 0; i < reCount.size(); ++i) {
 | 
				
			||||||
 | 
								Map.Entry entry = (Map.Entry) keyValues.next();
 | 
				
			||||||
 | 
								Object key = entry.getKey();
 | 
				
			||||||
 | 
								Object value = entry.getValue();
 | 
				
			||||||
 | 
								Values += key + "='" + value + "'" + ", ";
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							String updateValues = Values.substring(0, Values.length() - 2);
 | 
				
			||||||
 | 
							String sql = "UPDATE `" + tabName + "` SET " + updateValues + " " + upCondition;
 | 
				
			||||||
 | 
							try {
 | 
				
			||||||
 | 
								dbstate.executeUpdate(sql);
 | 
				
			||||||
 | 
								return true;
 | 
				
			||||||
 | 
							} catch (Exception e) {
 | 
				
			||||||
 | 
								print("数据库操作出错: " + e.getMessage());
 | 
				
			||||||
 | 
								print("SQL查询语句: " + sql);
 | 
				
			||||||
 | 
								return false;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}// end dbUpdate(…)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * 判断数据表是否存在
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @param table
 | 
				
			||||||
 | 
						 *            - 表名
 | 
				
			||||||
 | 
						 * @return 是否存在
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public boolean isTableExists(final String table) {
 | 
				
			||||||
 | 
							try {
 | 
				
			||||||
 | 
								if (!dbConnection())
 | 
				
			||||||
 | 
									return false;
 | 
				
			||||||
 | 
								final DatabaseMetaData dbm = dbconn.getMetaData();
 | 
				
			||||||
 | 
								final ResultSet tables = dbm.getTables(null, null, table, null);
 | 
				
			||||||
 | 
								return tables.next();
 | 
				
			||||||
 | 
							} catch (final SQLException e) {
 | 
				
			||||||
 | 
								e.printStackTrace();
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return false;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public void print(String str)// 简化输出
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							System.out.println(str);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * 运行SQL语句
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @param sql
 | 
				
			||||||
 | 
						 *            - SQL语句
 | 
				
			||||||
 | 
						 * @return 运行结果
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public boolean runSql(String sql) {
 | 
				
			||||||
 | 
							if (!dbConnection())
 | 
				
			||||||
 | 
								return false;
 | 
				
			||||||
 | 
							try {
 | 
				
			||||||
 | 
								PreparedStatement state = dbconn.prepareStatement(sql);
 | 
				
			||||||
 | 
								state.executeUpdate();
 | 
				
			||||||
 | 
								state.close();
 | 
				
			||||||
 | 
								return true;
 | 
				
			||||||
 | 
							} catch (final Exception e) {
 | 
				
			||||||
 | 
								print("数据库操作出错: " + e.getMessage());
 | 
				
			||||||
 | 
								print("SQL语句: " + sql);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return false;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * 运行SQL文件
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @param sql
 | 
				
			||||||
 | 
						 *            - SQL文件
 | 
				
			||||||
 | 
						 * @return 运行结果
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public boolean runSqlfile(File file) {
 | 
				
			||||||
 | 
							BufferedReader br = null;
 | 
				
			||||||
 | 
							Statement state = null;
 | 
				
			||||||
 | 
							String sql = null;
 | 
				
			||||||
 | 
							if (!file.exists())
 | 
				
			||||||
 | 
								return false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if (!dbConnection())
 | 
				
			||||||
 | 
								return false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							try {
 | 
				
			||||||
 | 
								print("执行SQL文件: " + file.getName() + " ...");
 | 
				
			||||||
 | 
								br = new BufferedReader(new FileReader(file));
 | 
				
			||||||
 | 
								state = dbconn.createStatement();
 | 
				
			||||||
 | 
								while ((sql = br.readLine()) != null) {
 | 
				
			||||||
 | 
									if (sql != "") {
 | 
				
			||||||
 | 
										try {
 | 
				
			||||||
 | 
											state.executeUpdate(sql);
 | 
				
			||||||
 | 
										} catch (Exception e) {
 | 
				
			||||||
 | 
											print("数据库操作出错: " + e.getMessage());
 | 
				
			||||||
 | 
											print("SQL语句: " + sql);
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								return true;
 | 
				
			||||||
 | 
							} catch (Exception e) {
 | 
				
			||||||
 | 
								print("执行SQL文件 " + file.getName() + "出错: " + e.getMessage());
 | 
				
			||||||
 | 
								return false;
 | 
				
			||||||
 | 
							} finally {
 | 
				
			||||||
 | 
								try {
 | 
				
			||||||
 | 
									state.close();
 | 
				
			||||||
 | 
									br.close();
 | 
				
			||||||
 | 
								} catch (Exception e) {
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										39
									
								
								src/main/java/cn/citycraft/Yum/sql/SQLiteHelper.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								src/main/java/cn/citycraft/Yum/sql/SQLiteHelper.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,39 @@
 | 
				
			|||||||
 | 
					package cn.citycraft.Yum.sql;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// import java.sql.*;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * 数据库操作类
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * @author 蒋天蓓 2015年7月14日下午3:25:06
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					public class SQLiteHelper extends SQLHelper {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private static String drivername = "org.sqlite.JDBC";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * 初始化连接信息
 | 
				
			||||||
 | 
						 * 
 | 
				
			||||||
 | 
						 * @param host
 | 
				
			||||||
 | 
						 *            - 域名
 | 
				
			||||||
 | 
						 * @param port
 | 
				
			||||||
 | 
						 *            - 端口
 | 
				
			||||||
 | 
						 * @param dbname
 | 
				
			||||||
 | 
						 *            - 数据库
 | 
				
			||||||
 | 
						 * @param username
 | 
				
			||||||
 | 
						 *            - 用户名
 | 
				
			||||||
 | 
						 * @param password
 | 
				
			||||||
 | 
						 *            - 密码
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public SQLiteHelper(String filepath, String username, String password) {
 | 
				
			||||||
 | 
							super(password, password, drivername, getUrl(filepath));
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public static String getUrl(String filepath) {
 | 
				
			||||||
 | 
							return "jdbc:sqlite:" + filepath;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						//
 | 
				
			||||||
 | 
						// Class.forName("org.sqlite.JDBC");
 | 
				
			||||||
 | 
						// Connection conn =
 | 
				
			||||||
 | 
						// DriverManager.getConnection("jdbc:sqlite:filename");//filename为你的SQLite数据名称
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										47
									
								
								src/main/java/cn/citycraft/Yum/utils/FileUtil.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								src/main/java/cn/citycraft/Yum/utils/FileUtil.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,47 @@
 | 
				
			|||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					package cn.citycraft.Yum.utils;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.io.File;
 | 
				
			||||||
 | 
					import java.io.FileInputStream;
 | 
				
			||||||
 | 
					import java.io.FileOutputStream;
 | 
				
			||||||
 | 
					import java.io.InputStream;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * 文件处理工具
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * @author 蒋天蓓
 | 
				
			||||||
 | 
					 *         2015年8月31日上午9:09:54
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					public class FileUtil {
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * 复制文件
 | 
				
			||||||
 | 
						 * 
 | 
				
			||||||
 | 
						 * @param src
 | 
				
			||||||
 | 
						 *            - 源文件
 | 
				
			||||||
 | 
						 * @param des
 | 
				
			||||||
 | 
						 *            - 目标文件
 | 
				
			||||||
 | 
						 * @return 是否成功
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public static boolean copyFile(File src, File des) {
 | 
				
			||||||
 | 
							InputStream inStream = null;
 | 
				
			||||||
 | 
							FileOutputStream fs = null;
 | 
				
			||||||
 | 
							try {
 | 
				
			||||||
 | 
								int byteread = 0;
 | 
				
			||||||
 | 
								if (!src.exists())
 | 
				
			||||||
 | 
									return false;
 | 
				
			||||||
 | 
								inStream = new FileInputStream(src); // 读入原文件
 | 
				
			||||||
 | 
								fs = new FileOutputStream(des);
 | 
				
			||||||
 | 
								byte[] buffer = new byte[1024];
 | 
				
			||||||
 | 
								while ((byteread = inStream.read(buffer)) != -1) {
 | 
				
			||||||
 | 
									fs.write(buffer, 0, byteread); // 写入到目标文件
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								inStream.close();
 | 
				
			||||||
 | 
								fs.close();
 | 
				
			||||||
 | 
								return true;
 | 
				
			||||||
 | 
							} catch (Exception e) {
 | 
				
			||||||
 | 
								return false;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -1,13 +0,0 @@
 | 
				
			|||||||
/**
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
package cn.citycraft.Yum.utils;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * 仓库管理类
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * @author 蒋天蓓
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
public class RepositoryManager {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -8,9 +8,10 @@ import java.util.Collection;
 | 
				
			|||||||
import org.bukkit.command.CommandSender;
 | 
					import org.bukkit.command.CommandSender;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 | 
					 * 字符串工具
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 * @author 蒋天蓓
 | 
					 * @author 蒋天蓓
 | 
				
			||||||
 *         2015年8月22日下午12:41:59
 | 
					 *         2015年8月22日下午12:41:59
 | 
				
			||||||
 *         TODO
 | 
					 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
public class StringUtil {
 | 
					public class StringUtil {
 | 
				
			||||||
	/**
 | 
						/**
 | 
				
			||||||
@@ -31,9 +32,17 @@ public class StringUtil {
 | 
				
			|||||||
		return ret;
 | 
							return ret;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	public static void sendStringArray(CommandSender player, Collection<String> msg) {
 | 
						/**
 | 
				
			||||||
 | 
						 * 给玩家或控制台发送消息组
 | 
				
			||||||
 | 
						 * 
 | 
				
			||||||
 | 
						 * @param sender
 | 
				
			||||||
 | 
						 *            - 接收消息的玩家
 | 
				
			||||||
 | 
						 * @param msg
 | 
				
			||||||
 | 
						 *            - 消息组
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public static void sendStringArray(CommandSender sender, Collection<String> msg) {
 | 
				
			||||||
		for (String string : msg) {
 | 
							for (String string : msg) {
 | 
				
			||||||
			player.sendMessage("§6 - §3" + string);
 | 
								sender.sendMessage("§6 - §3" + string);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,5 @@
 | 
				
			|||||||
name: ${project.artifactId}
 | 
					name: ${project.artifactId}
 | 
				
			||||||
 | 
					description: ${project.description}
 | 
				
			||||||
main: ${project.groupId}.${project.artifactId}.${project.artifactId}
 | 
					main: ${project.groupId}.${project.artifactId}.${project.artifactId}
 | 
				
			||||||
version: ${project.version}
 | 
					version: ${project.version}
 | 
				
			||||||
auther: 喵♂呜
 | 
					auther: 喵♂呜
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user