/** {@inheritDoc} */ protected ScmResult executeEditCommand(ScmProviderRepository repository, ScmFileSet fileSet) throws ScmException { if (getLogger().isDebugEnabled()) { getLogger().debug("executing edit command..."); } SynergyScmProviderRepository repo = (SynergyScmProviderRepository) repository; if (getLogger().isDebugEnabled()) { getLogger().debug("basedir: " + fileSet.getBasedir()); } String ccmAddr = SynergyUtil.start(getLogger(), repo.getUser(), repo.getPassword(), null); try { String projectSpec = SynergyUtil.getWorkingProject( getLogger(), repo.getProjectSpec(), repo.getUser(), ccmAddr); File waPath = SynergyUtil.getWorkArea(getLogger(), projectSpec, ccmAddr); File sourcePath = new File(waPath, repo.getProjectName()); if (projectSpec == null) { throw new ScmException("You should checkout project first"); } int taskNum = SynergyUtil.createTask( getLogger(), "Maven SCM Synergy provider: edit command for project " + repo.getProjectSpec(), repo.getProjectRelease(), true, ccmAddr); if (getLogger().isInfoEnabled()) { getLogger().info("Task " + taskNum + " was created to perform checkout."); } for (Iterator i = fileSet.getFileList().iterator(); i.hasNext(); ) { File f = (File) i.next(); File dest = f; File source = new File(sourcePath, SynergyUtil.removePrefix(fileSet.getBasedir(), f)); List list = new LinkedList(); list.add(source); SynergyUtil.checkoutFiles(getLogger(), list, ccmAddr); if (!source.equals(dest)) { if (getLogger().isDebugEnabled()) { getLogger().debug("Copy file [" + source + "] to expected folder [" + dest + "]."); } try { FileUtils.copyFile(source, dest); } catch (IOException e) { throw new ScmException("Unable to copy file from Work Area", e); } } } } finally { SynergyUtil.stop(getLogger(), ccmAddr); } return new EditScmResult("", fileSet.getFileList()); }