1 37 package net.sourceforge.cruisecontrol.bootstrappers; 38 39 import net.sourceforge.cruisecontrol.Bootstrapper; 40 import net.sourceforge.cruisecontrol.CruiseControlException; 41 import net.sourceforge.cruisecontrol.util.Commandline; 42 import net.sourceforge.cruisecontrol.util.StreamPumper; 43 import net.sourceforge.cruisecontrol.util.ValidationHelper; 44 45 import org.apache.log4j.Logger; 46 47 import java.io.PrintWriter ; 48 49 64 public class ClearCaseBootstrapper implements Bootstrapper { 65 66 67 private static Logger log = Logger.getLogger(ClearCaseBootstrapper.class); 68 69 private String filename; 70 private String viewpath; 71 72 public void setViewpath(String path) { 73 viewpath = path; 74 } 75 76 public void setFile(String name) { 77 filename = name; 78 } 79 80 83 public void bootstrap() { 84 Commandline commandLine = buildUpdateCommand(); 85 86 log.debug("Executing: " + commandLine); 87 try { 88 Process p = Runtime.getRuntime().exec(commandLine.getCommandline()); 89 StreamPumper errorPumper = 90 new StreamPumper(p.getErrorStream(), new PrintWriter (System.err, true)); 91 new Thread (errorPumper).start(); 92 p.waitFor(); 93 p.getInputStream().close(); 94 p.getOutputStream().close(); 95 p.getErrorStream().close(); 96 } catch (Exception e) { 97 log.error("Error executing ClearCase update command", e); 98 } 99 } 100 101 public void validate() throws CruiseControlException { 102 ValidationHelper.assertIsSet(filename, "file", this.getClass()); 103 } 104 105 protected Commandline buildUpdateCommand() { 106 Commandline commandLine = new Commandline(); 107 commandLine.setExecutable("cleartool"); 108 109 commandLine.createArgument().setValue("update"); 110 commandLine.createArgument().setValue("-force"); 111 commandLine.createArgument().setValue("-log"); 112 commandLine.createArgument().setValue(isWindows() ? "NUL" : "/dev/null"); 113 commandLine.createArgument().setValue(getFullPathFileName()); 114 115 return commandLine; 116 } 117 118 private String getFullPathFileName() { 119 return viewpath == null 120 ? filename 121 : new StringBuffer (viewpath).append("/").append(filename).toString(); 122 } 123 124 protected boolean isWindows() { 125 return getOsName().indexOf("Windows") >= 0; 126 } 127 128 protected String getOsName() { 129 return System.getProperty("os.name"); 130 } 131 132 133 public static void main(String [] args) { 134 ClearCaseBootstrapper bootstrapper = new ClearCaseBootstrapper(); 135 bootstrapper.setViewpath("C:/views/integration_view/project"); 136 bootstrapper.setFile("build.xml"); 137 bootstrapper.bootstrap(); 138 } 139 140 } | Popular Tags |