1 package jp.sourceforge.stigmata.command;
8 import java.io.FileInputStream;
9 import java.io.FileOutputStream;
10 import java.io.IOException;
11 import java.io.InputStream;
12 import java.io.OutputStream;
14 import jp.sourceforge.stigmata.BirthmarkContext;
15 import jp.sourceforge.stigmata.BirthmarkEnvironment;
16 import jp.sourceforge.stigmata.Stigmata;
17 import jp.sourceforge.stigmata.utils.Utility;
21 * @author Haruaki Tamada
24 public class InstallCommand extends AbstractStigmataCommand{
25 public boolean isAvailableArguments(String[] args){
26 return args.length > 0;
30 public String getCommandString(){
34 public void perform(Stigmata stigmata, BirthmarkContext context, String[] args){
35 File pluginsDir = new File(BirthmarkEnvironment.getStigmataHome(), "plugins");
36 BirthmarkEnvironment env = context.getEnvironment();
38 for(int i = 0; i < args.length; i++){
39 File pluginSource = new File(args[i]);
40 File pluginDest = new File(pluginsDir, pluginSource.getName());
42 if(!Utility.isStigmataPluginJarFile(pluginSource)){
43 throw new IllegalArgumentException(pluginSource + ": not stigmata plugin file.");
45 if(pluginDest.exists()){
46 String override = env.getProperty("override.exists.plugin");
47 if(override != null &&
48 (override.equalsIgnoreCase("true") || override.equalsIgnoreCase("yes"))){
52 File backupFile = new File(pluginDest.getParent(), pluginDest.getName() + ".back");
53 if(backupFile.exists()) backupFile.delete();
54 pluginDest.renameTo(backupFile);
58 byte[] data = new byte[256];
62 InputStream in = new FileInputStream(pluginSource);
63 OutputStream out = new FileOutputStream(pluginDest);
65 while((read = in.read(data)) != -1){
66 out.write(data, 0, read);
70 } catch(IOException e){