Skip to content
This repository was archived by the owner on Jan 23, 2025. It is now read-only.

Commit 28aad5f

Browse files
committed
Merge branch 'dev' of https://github.com/appirio-tech/direct-app into dev
2 parents d162526 + 9cc218f commit 28aad5f

File tree

2 files changed

+32
-18
lines changed

2 files changed

+32
-18
lines changed

services/project_service/src/java/main/com/topcoder/service/project/impl/ProjectServiceBean.java

+19
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import java.util.List;
1414
import java.util.Map;
1515
import java.util.Set;
16+
import java.util.regex.Pattern;
1617

1718
import javax.annotation.PostConstruct;
1819
import javax.annotation.Resource;
@@ -371,6 +372,13 @@
371372
@TransactionManagement(TransactionManagementType.CONTAINER)
372373
@TransactionAttribute(TransactionAttributeType.REQUIRED)
373374
public class ProjectServiceBean implements ProjectServiceLocal, ProjectServiceRemote {
375+
/**
376+
* Represents the pattern for project name
377+
*
378+
* @since 2.4
379+
*/
380+
private static final String NAME_PATTERN = "[a-zA-Z0-9\\$\\!\\(\\)\\[\\]'\\\"\\-\\.\\,\\/\\+ ]+";
381+
374382
/**
375383
* Represents the field names to be audit.
376384
*
@@ -1988,6 +1996,17 @@ private void checkProjectData(ProjectData projectData, boolean isCreate) throws
19881996
throw logException(new IllegalArgumentFault("The name attribute of the project data can not be null."));
19891997
} else if (name.trim().length() == 0) {
19901998
throw logException(new IllegalArgumentFault("The name attribute of the project data can not be empty."));
1999+
} else if (!Pattern.matches(NAME_PATTERN, name)) {
2000+
throw logException(new IllegalArgumentFault("The name attribute of the project data is not following pattern as - " + NAME_PATTERN));
2001+
}
2002+
2003+
String description = projectData.getDescription();
2004+
if (null == description) {
2005+
throw logException(new IllegalArgumentFault("The description attribute of the project data can not be null."));
2006+
} else if (description.trim().length() == 0) {
2007+
throw logException(new IllegalArgumentFault("The description attribute of the project data can not be empty."));
2008+
} else if (!Pattern.matches(NAME_PATTERN, description)) {
2009+
throw logException(new IllegalArgumentFault("The description attribute of the project data is not following pattern as - " + NAME_PATTERN));
19912010
}
19922011

19932012
//added in version 2.2

services/project_services/src/java/main/com/topcoder/project/service/impl/ProjectServicesImpl.java

+13-18
Original file line numberDiff line numberDiff line change
@@ -426,7 +426,6 @@
426426
* <ul>
427427
* <li>updated on {@link #createProjectWithTemplate(Project, com.topcoder.project.phases.Project, Resource[], Date, Date, String)}</li>
428428
* <li>updated on {@link #updateProject(Project, String, com.topcoder.project.phases.Project, Resource[], Date, Date, String)}</li>
429-
* <li>added {@link #checkPrivateProjectPhase(Project, com.topcoder.project.phases.Project)}</li>
430429
* </ul>
431430
* <p>
432431
*
@@ -2080,10 +2079,21 @@ public FullProjectData updateProject(Project projectHeader, String projectHeader
20802079
// code with auto assigned review only requires one reviewer.
20812080
p.setAttribute("Reviewer Number", "2");
20822081
}
2082+
2083+
if (p.getPhaseType().getId() == PhaseType.REGISTRATION_PHASE.getId() && projectHeader.getProjectStatus().getId() == ProjectStatus.DRAFT.getId()) {
2084+
if (projectHeader.getProperty(ProjectPropertyType.PRIVATE_PROJECT) != null && projectHeader.getProperty(ProjectPropertyType.PRIVATE_PROJECT).equals("1")) {
2085+
if (p.getPhaseStatus().getId() != PhaseStatus.CLOSED.getId()) {
2086+
p.setPhaseStatus(PhaseStatus.CLOSED);
2087+
}
2088+
} else {
2089+
if (p.getPhaseStatus().getId() == PhaseStatus.CLOSED.getId()) {
2090+
p.setPhaseStatus(PhaseStatus.SCHEDULED);
2091+
}
2092+
}
2093+
}
20832094
}
20842095
}
20852096

2086-
checkPrivateProjectPhase(projectHeader, projectPhases);
20872097
setScorecards(projectHeader, projectPhases);
20882098
// call phaseManager.updatePhases(projectPhases,operator)
20892099
Util.log(logger, Level.DEBUG, "Starts calling PhaseManager#updatePhases method.");
@@ -2740,7 +2750,6 @@ public FullProjectData createProjectWithTemplate(Project projectHeader, com.topc
27402750
}
27412751

27422752
setNewPhasesProperties(projectHeader, newProjectPhases, (multiRoundEndDate != null), isStudio);
2743-
checkPrivateProjectPhase(projectHeader, newProjectPhases);
27442753

27452754
return this.createProject(projectHeader, newProjectPhases, projectResources, operator);
27462755

@@ -5151,25 +5160,11 @@ private void setNewPhasesProperties(Project projectHeader,
51515160
p.setAttribute(SCORECARD_ID_PHASE_ATTRIBUTE_KEY, String.valueOf(iterativeReviewTemplateId));
51525161
p.setAttribute("Reviewer Number", "1");
51535162
}
5154-
}
5155-
}
51565163

5157-
/**
5158-
* Helper to check project phase status. It must set to CLOSED for private project
5159-
*
5160-
* @param projectHeader Project
5161-
* @param projectPhases Project phases
5162-
* @since 2.3
5163-
*/
5164-
private void checkPrivateProjectPhase(Project projectHeader, com.topcoder.project.phases.Project projectPhases) {
5165-
for (Phase p : projectPhases.getAllPhases()) {
51665164
if (p.getPhaseType().getId() == PhaseType.REGISTRATION_PHASE.getId()) {
5167-
if (projectHeader.getProperty(ProjectPropertyType.PRIVATE_PROJECT) != null && projectHeader.getProperty(ProjectPropertyType.PRIVATE_PROJECT).equals("1")) {
5165+
if (projectHeader.getProperty(ProjectPropertyType.PRIVATE_PROJECT) != null && projectHeader.getProperty(ProjectPropertyType.PRIVATE_PROJECT).equals("1") && projectHeader.getProjectStatus().getId() == ProjectStatus.DRAFT.getId()) {
51685166
p.setPhaseStatus(PhaseStatus.CLOSED);
5169-
}else{
5170-
p.setPhaseStatus(PhaseStatus.SCHEDULED);
51715167
}
5172-
break;
51735168
}
51745169
}
51755170
}

0 commit comments

Comments
 (0)