/** * Creates draft copilot posting for the newly created project. * * @param directProject the direct project. * @return the created competition * @throws Exception if error happens when creating the contest. * @since 1.1 */ private SoftwareCompetition createCopilotDraftPosting(ProjectData directProject) throws Exception { SoftwareCompetition cp = new SoftwareCompetition(); cp.setAssetDTO(getAssetDTOForNewSoftware()); String name = getAssetDTO().getName(); if (name == null || name.equals("")) { name = directProject.getName(); } cp.getAssetDTO().setName(name); GregorianCalendar c = new GregorianCalendar(); c.setTime(new Date()); c.add(Calendar.DAY_OF_MONTH, 2); XMLGregorianCalendar contestStartDate = DatatypeFactory.newInstance().newXMLGregorianCalendar(c); cp.getAssetDTO().setProductionDate(contestStartDate); // build the project header Project projectHeader = new Project(); ProjectCategory projectCategory = new ProjectCategory(); projectCategory.setId(29); projectCategory.setName("Copilot Posting"); projectCategory.setProjectType(ProjectType.APPLICATION); projectHeader.setProjectCategory(projectCategory); projectHeader.setId(-1L); if (projectData.getProjectBillingAccountId() > 0) { projectHeader.setProperty( ProjectPropertyType.BILLING_PROJECT_PROJECT_PROPERTY_KEY, String.valueOf(projectData.getProjectBillingAccountId())); } else { projectHeader.setProperty(ProjectPropertyType.BILLING_PROJECT_PROJECT_PROPERTY_KEY, "0"); } projectHeader.setProperty("Confidentiality Type", "public"); projectHeader.setProperty("Copilot Cost", "0"); projectHeader.setProperty("Project Name", name); projectHeader.setTcDirectProjectId(directProject.getProjectId()); projectHeader.setTcDirectProjectName(directProject.getName()); // set spec info - do not need spec review ProjectSpec projectSpec = new ProjectSpec(); projectSpec.setProjectSpecId(0L); if (getProjectHeader() != null && getProjectHeader().getProjectSpec() != null) { projectSpec.setDetailedRequirements( getProjectHeader().getProjectSpec().getDetailedRequirements()); } projectHeader.setProjectSpec(projectSpec); // add prize List<Prize> prizes = new ArrayList<Prize>(); Prize firstPlace = new Prize(); firstPlace.setNumberOfSubmissions(1); firstPlace.setPlace(1); firstPlace.setPrizeAmount(150); firstPlace.setProjectId(directProject.getProjectId()); Prize secondPlace = new Prize(); secondPlace.setNumberOfSubmissions(1); secondPlace.setPlace(2); secondPlace.setPrizeAmount(75); secondPlace.setProjectId(directProject.getProjectId()); com.topcoder.management.project.PrizeType prizeType = new com.topcoder.management.project.PrizeType(); prizeType.setDescription("Contest Prize"); prizeType.setId(15L); firstPlace.setPrizeType(prizeType); prizes.add(firstPlace); secondPlace.setPrizeType(prizeType); prizes.add(secondPlace); projectHeader.setPrizes(prizes); projectHeader.setProperty(ProjectPropertyType.ADMIN_FEE_PROJECT_PROPERTY_KEY, "0"); projectHeader.setProperty(ProjectPropertyType.COPILOT_COST_PROJECT_PROPERTY_KEY, "0"); projectHeader.setProperty(ProjectPropertyType.DR_POINTS_PROJECT_PROPERTY_KEY, "0"); projectHeader.setProperty(ProjectPropertyType.PAYMENTS_PROJECT_PROPERTY_KEY, "150"); projectHeader.setProperty(ProjectPropertyType.FIRST_PLACE_COST_PROJECT_PROPERTY_KEY, "150"); projectHeader.setProperty(ProjectPropertyType.RELIABILITY_BONUS_COST_PROJECT_PROPERTY_KEY, "0"); projectHeader.setProperty(ProjectPropertyType.CHECKPOINT_BONUS_COST_PROJECT_PROPERTY_KEY, "0"); projectHeader.setProperty(ProjectPropertyType.SPEC_REVIEW_COSTS_PROJECT_PROPERTY_KEY, "0"); projectHeader.setProperty(ProjectPropertyType.SECOND_PLACE_COST_PROJECT_PROPERTY_KEY, "75"); projectHeader.setProperty(ProjectPropertyType.REVIEW_COSTS_PROJECT_PROPERTY_KEY, "0"); cp.setId(-1L); cp.setProjectHeader(projectHeader); initializeCompetition(cp); populateCompetition(cp); cp = getContestServiceFacade() .createSoftwareContest( DirectUtils.getTCSubjectFromSession(), cp, directProject.getProjectId(), null, null); return cp; }