private static IBuildDefinition cloneBuildDef(ITeamRepository devrepo, IBuildDefinition oldbuildDef, IProcessAreaHandle new_project)
{
ITeamBuildClient buildClientdev = (ITeamBuildClient) devrepo
.getClientLibrary(ITeamBuildClient.class);
// create a new build definition connected to the new project area
IBuildDefinition newbuildDef = BuildItemFactory.createBuildDefinition((IProcessArea) new_project);
try {
newbuildDef.setId(oldbuildDef.getId()); // worked
newbuildDef.setDescription(oldbuildDef.getDescription()); // worked
newbuildDef.setIgnoreWarnings(oldbuildDef.isIgnoreWarnings());
// process the build pruning info
IBuildResultPruningPolicy ppp = BuildItemFactory.createBuildResultPruningPolicy();
ppp.setEnabled(oldbuildDef.getBuildResultPruningPolicy().isEnabled());
ppp.setFailedResultsToKeep(oldbuildDef.getBuildResultPruningPolicy().getFailedResultsToKeep());
ppp.setSuccessfulResultsToKeep(oldbuildDef.getBuildResultPruningPolicy().getSuccessfulResultsToKeep());
newbuildDef.setBuildResultPruningPolicy(ppp);
// process the build schedule info
IBuildSchedule pppp = BuildItemFactory.createBuildSchedule();
pppp.setScheduleEnabled(oldbuildDef.getBuildSchedule().isScheduleEnabled());
ArrayList<IBuildScheduleEntry> entrylist = new ArrayList<IBuildScheduleEntry>();
for(IBuildScheduleEntry ppppp: (List<IBuildScheduleEntry>)oldbuildDef.getBuildSchedule().getBuildScheduleEntries())
{
IBuildScheduleEntry newschedentry = BuildItemFactory.createBuildScheduleEntry();
newschedentry.setBuildHour(ppppp.getBuildHour());
newschedentry.setBuildInterval(ppppp.getBuildInterval());
newschedentry.setBuildMinute(ppppp.getBuildMinute());
newschedentry.setBuildOnMonday(ppppp.isBuildOnMonday());
newschedentry.setBuildOnTuesday(ppppp.isBuildOnTuesday());
newschedentry.setBuildOnWednesday(ppppp.isBuildOnWednesday());
newschedentry.setBuildOnThursday(ppppp.isBuildOnThursday());
newschedentry.setBuildOnFriday(ppppp.isBuildOnFriday());
newschedentry.setBuildOnSaturday(ppppp.isBuildOnSaturday());
newschedentry.setBuildOnSunday(ppppp.isBuildOnSunday());
System.out.println("build schedule entry time="+newschedentry.getBuildHour()+":"+newschedentry.getBuildMinute());
entrylist.add(newschedentry);
}
pppp.setBuildScheduleEntries(entrylist);
newbuildDef.setBuildSchedule(pppp);
// process the build configuration data
for(IBuildConfigurationElement buildConfElem:(List<IBuildConfigurationElement>)oldbuildDef.getConfigurationElements())
{
System.out.println("\t\tBuild Config element name="+buildConfElem.getName());
IBuildConfigurationElement newconfElem = BuildItemFactory. createBuildConfigurationElement();
newconfElem.setDescription(buildConfElem.getDescription());
newconfElem.setName(buildConfElem.getName());
newconfElem.setElementId(buildConfElem.getElementId());
newconfElem.setLicenseId(buildConfElem.getLicenseId());
newconfElem.setVariableSubstitutionAllowed(buildConfElem.isVariableSubstitutionAllowed());
for (IConfigurationProperty buildConfigProperty : (List <IConfigurationProperty>) buildConfElem.getConfigurationProperties())
{
String name = buildConfigProperty.getName();
String value = buildConfigProperty.getValue();
IConfigurationProperty new_ibcp = BuildItemFactory.createConfigurationProperty(name, value);
newconfElem.getConfigurationProperties().add(new_ibcp);
System.out.println("\t\t\tname:" + name + "---value:" + value);
System.out.println("there are now "+newconfElem.getConfigurationProperties().size()+" properties");
}
newbuildDef.getConfigurationElements().add(newconfElem);
}
// copy all the properties
for(IBuildProperty bdp :(List<IBuildProperty>)oldbuildDef.getProperties())
{
newbuildDef.setProperty(bdp.getName(), bdp.getValue());
}
// save the new build definition
newbuildDef=buildClientdev.save(newbuildDef,null);
}
catch (Exception e)
{
// TODO Auto-generated catch block
System.out.println("clone definition error = "+e.getMessage());
}
return newbuildDef;
}