package hudson.plugins.accurev.cmd; import hudson.EnvVars; import hudson.FilePath; import hudson.Launcher; import hudson.model.TaskListener; import hudson.plugins.accurev.AccurevLauncher; import hudson.plugins.accurev.AccurevSCM; import hudson.plugins.accurev.AccurevSCM.AccurevServer; import hudson.plugins.accurev.parsers.output.ParsePopulate; import hudson.util.ArgumentListBuilder; import org.apache.commons.lang.StringUtils; import java.io.IOException; import java.util.Date; import java.util.StringTokenizer; import java.util.logging.Logger; public class PopulateCmd extends Command { private static final Logger logger = Logger.getLogger(PopulateCmd.class.getName()); private Date _startDateOfPopulate; /** * @return Date */ public Date get_startDateOfPopulate() { return (Date) _startDateOfPopulate.clone(); } /** * @param scm Accurev SCm * @param launcher launcher * @param listener listener * @param server server * @param streamName stream Name * @param overwrite overwrite * @param fromMessage from Messge * @param workspace Accurev Workspace * @param accurevEnv Accurev Environment * @param files list of files to be populated * @return boolean * @throws IOException Handle it above */ public boolean populate(AccurevSCM scm, Launcher launcher, TaskListener listener, AccurevServer server, String streamName, boolean overwrite, String fromMessage, FilePath workspace, EnvVars accurevEnv, String files) throws IOException { listener.getLogger().println("Populating " + fromMessage + "..."); final ArgumentListBuilder cmd = new ArgumentListBuilder(); cmd.add("pop"); addServer(cmd, server); if (streamName != null) { cmd.add("-v"); cmd.add(streamName); } cmd.add("-L"); cmd.add(workspace.getRemote()); // Add the list files to be populated if (files != null) { cmd.add("-l"); cmd.add(files); } if (overwrite) cmd.add("-O"); cmd.add("-R"); if (StringUtils.isBlank(scm.getSubPath())) { cmd.add("."); } else { final StringTokenizer st = new StringTokenizer(scm.getSubPath(), ","); while (st.hasMoreElements()) { cmd.add(st.nextToken().trim()); } } _startDateOfPopulate = new Date(); final Boolean success = AccurevLauncher.runCommand("Populate " + fromMessage + " command", scm.getAccurevTool(), launcher, cmd, scm.getOptionalLock(), accurevEnv, workspace, listener, logger, new ParsePopulate(), listener.getLogger()); if (success == null || !success) { return false; } listener.getLogger().println("Populate completed successfully."); return true; } }