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

Commit d4eeadf

Browse files
authored
Merge pull request #262 from deedee/support_challenge_group
Change group
2 parents 413a849 + 47c43bc commit d4eeadf

File tree

25 files changed

+2030
-429
lines changed

25 files changed

+2030
-429
lines changed

components/project_management/src/java/main/com/topcoder/management/project/persistence/AbstractInformixProjectPersistence.java

Lines changed: 3 additions & 232 deletions
Original file line numberDiff line numberDiff line change
@@ -385,21 +385,9 @@
385385
* <p>
386386
* Version 1.8.2 (TOPCODER - SUPPORT GROUPS CONCEPT FOR CHALLENGES):
387387
* <ul>
388-
* <li>Added {@link #CREATE_PROJECT_GROUP_SQL}</li>
389-
* <li>Added {@link #DELETE_PROJECT_GROUP_SQL}</li>
390388
* <li>Added {@link #QUERY_ALL_PROJECT_GROUP_SQL}</li>
391389
* <li>Added {@link #QUERY_ALL_PROJECT_GROUP_COLUMN_TYPES}</li>
392-
* <li>Added {@link #QUERY_PROJECT_GROUP_SQL}</li>
393-
* <li>Added {@link #QUERY_PROJECT_GROUP_COLUMN_TYPES}</li>
394-
* <li>Added {@link #QUERY_PROJECT_GROUP_IDS_SQL}</li>
395-
* <li>Updated {@link #createProject(Long, Project, String, Connection)}</li>
396-
* <li>Updated {@link #getProjects(long[], Connection)} add groups</li>
397-
* <li>Updated {@link #updateProject(Project, String, String, Connection)}</li>
398-
* <li>Added {@link #updateProjectGroups(Long, List<ProjectGroup>, String, Connection)} to update challenge groups</li>
399390
* <li>Added {@link #getAllProjectGroups()} get all groups</li>
400-
* <li>Added {@link #createProjectGroup(Long, List, String, Connection)}to add groups of challenge</li>
401-
* <li>Added {@link #getProjectGroupIdsForProject(Long, Connection)} get groupg ids of challenge</li>
402-
* <li>Added {@link #deleteProjectGroup(Long, List, Connection)} to delete groups</li>
403391
* </ul>
404392
*
405393
* @author tuenm, urtks, bendlund, fuyun, flytoj2ee, tangzx, GreatKevin, frozenfx, freegod, bugbuka, Veve, GreatKevin, TCSCODER
@@ -2464,28 +2452,12 @@ public abstract class AbstractInformixProjectPersistence implements ProjectPersi
24642452
private static final String UPDATE_CHECKPOINT_FEEDBACK_SQL = "UPDATE comp_milestone_feedback "
24652453
+ "SET feedback = ? WHERE project_id = ";
24662454

2467-
/**
2468-
* Sql statement for adding challenge group
2469-
* @since 1.8.2
2470-
*/
2471-
private static final String CREATE_PROJECT_GROUP_SQL = "INSERT INTO project_group_xref "
2472-
+ "(project_id, project_group_id,"
2473-
+ "create_user, create_date, modify_user, modify_date) "
2474-
+ "VALUES (?, ?, ?, CURRENT, ?, CURRENT)";
2475-
2476-
/**
2477-
* Sql statement for deleting challenge group
2478-
* @since 1.8.2
2479-
*/
2480-
private static final String DELETE_PROJECT_GROUP_SQL = "DELETE FROM project_group_xref "
2481-
+ "WHERE project_id = ? AND project_group_id IN ";
2482-
24832455
/**
24842456
* Sql statement for fetching all of challenge groups
24852457
* @since 1.8.2
24862458
*/
2487-
private static final String QUERY_ALL_PROJECT_GROUP_SQL = "SELECT project_group_id, name " +
2488-
" FROM project_group_lu";
2459+
private static final String QUERY_ALL_PROJECT_GROUP_SQL = "SELECT group_id, description " +
2460+
" FROM security_groups where challenge_group_ind=1";
24892461

24902462
/**
24912463
* Return type of {@link #QUERY_ALL_PROJECT_GROUP_SQL}
@@ -2494,30 +2466,6 @@ public abstract class AbstractInformixProjectPersistence implements ProjectPersi
24942466
private static final DataType[] QUERY_ALL_PROJECT_GROUP_COLUMN_TYPES = new DataType[] {
24952467
Helper.LONG_TYPE, Helper.STRING_TYPE };
24962468

2497-
/**
2498-
* Sql statement for fetching challenge groups of a challenge
2499-
* @since 1.8.2
2500-
*/
2501-
private static final String QUERY_PROJECT_GROUP_SQL =
2502-
"SELECT pg.project_id, pg.project_group_id, plu.name \n" +
2503-
"FROM project_group_xref pg \n" +
2504-
"INNER JOIN project_group_lu plu \n" +
2505-
"ON pg.project_group_id = plu.project_group_id WHERE pg.project_id IN";
2506-
2507-
/**
2508-
* Return type of {@link #QUERY_PROJECT_GROUP_SQL}
2509-
* @since 1.8.2
2510-
*/
2511-
private static final DataType[] QUERY_PROJECT_GROUP_COLUMN_TYPES = new DataType[] {
2512-
Helper.LONG_TYPE, Helper.LONG_TYPE, Helper.STRING_TYPE};
2513-
2514-
/**
2515-
* Sql statement for fetching group id of challenge group
2516-
* @since 1.8.2
2517-
*/
2518-
private static final String QUERY_PROJECT_GROUP_IDS_SQL = "SELECT "
2519-
+ "project_group_id FROM project_group_xref WHERE project_id = ?";
2520-
25212469
/**
25222470
* <p>
25232471
* The factory instance used to create connection to the database. It is
@@ -5425,9 +5373,6 @@ private void createProject(Long projectId, Project project,
54255373

54265374
// create the project platforms
54275375
createProjectPlatforms(projectId, project.getPlatforms(), operator, conn);
5428-
5429-
//create challenge group
5430-
createProjectGroup(projectId, project.getGroups(), operator, conn);
54315376
}
54325377

54335378
/**
@@ -5586,9 +5531,6 @@ private void updateProject(Project project, String reason, String operator,
55865531

55875532
// update the project platforms
55885533
updateProjectPlatforms(projectId, project.getPlatforms(), operator, conn);
5589-
5590-
//update group
5591-
updateProjectGroups(projectId, project.getGroups(), operator, conn);
55925534
}
55935535

55945536
/**
@@ -5937,14 +5879,7 @@ private Project[] getProjects(long ids[], Connection conn)
59375879

59385880
project.getPlatforms().add(new ProjectPlatform((Long) row[1], (String) row[2]));
59395881
}
5940-
//get challenge group
5941-
rows = Helper.doQuery(conn, QUERY_PROJECT_GROUP_SQL + idList, new Object[]{},
5942-
QUERY_PROJECT_GROUP_COLUMN_TYPES);
5943-
for(int i = 0; i < rows.length; ++i) {
5944-
Object[] row = rows[i];
5945-
Project project = (Project) projectMap.get(row[0]);
5946-
project.getGroups().add(new ProjectGroup((Long) row[1], (String) row[2]));
5947-
}
5882+
59485883
return projects;
59495884
}
59505885
/**
@@ -10080,58 +10015,6 @@ private List<CopilotContestExtraInfo> getCopilotContestExtraInfos(long projectId
1008010015
}
1008110016
}
1008210017

10083-
/**
10084-
* <p>
10085-
* Update groups of the challenge
10086-
* </p>
10087-
*
10088-
* @param projectId project Id
10089-
* @param groups list of challenge groups
10090-
* @param operator user id who execute this
10091-
* @param conn connection
10092-
* @throws PersistenceException if database related exception occur
10093-
* @since 1.8.2
10094-
*/
10095-
private void updateProjectGroups(Long projectId, List<ProjectGroup> groups, String operator, Connection conn)
10096-
throws PersistenceException {
10097-
10098-
if(groups == null) {
10099-
groups = new ArrayList<ProjectGroup>();
10100-
}
10101-
10102-
// get old platform ids from database
10103-
Set<Long> oldGroupIds = getProjectGroupIdsForProject(projectId, conn);
10104-
10105-
// create a list to contain the platforms to insert
10106-
List<ProjectGroup> groupsToAdd = new ArrayList<ProjectGroup>();
10107-
10108-
// create a list to contain the platforms to remove
10109-
List<Long> groupsToDelete = new ArrayList<Long>();
10110-
10111-
Set<Long> newGroupIds = new HashSet<Long>();
10112-
10113-
for(ProjectGroup p : groups) {
10114-
if(!oldGroupIds.contains(p.getId())) {
10115-
// the existing does not contain, to add
10116-
groupsToAdd.add(p);
10117-
}
10118-
newGroupIds.add(p.getId());
10119-
}
10120-
10121-
for(Long oldGId : oldGroupIds) {
10122-
if(!newGroupIds.contains(oldGId)) {
10123-
// the old platform is not in the new platform, to remove
10124-
groupsToDelete.add(oldGId);
10125-
}
10126-
}
10127-
10128-
// create the new platforms
10129-
createProjectGroup(projectId, groupsToAdd, operator, conn);
10130-
10131-
// delete the old platforms
10132-
deleteProjectGroup(projectId, groupsToDelete, conn);
10133-
}
10134-
1013510018
/**
1013610019
* <p>
1013710020
* Get all groups
@@ -10172,116 +10055,4 @@ public ProjectGroup[] getAllProjectGroups() throws PersistenceException {
1017210055
throw e;
1017310056
}
1017410057
}
10175-
10176-
/**
10177-
* <p>
10178-
* Add groups to a challenge
10179-
* </p>
10180-
*
10181-
* @param projectId project Id
10182-
* @param groups list of ProjectGroup of the challenge
10183-
* @param operator user whos execute this
10184-
* @param conn connection
10185-
* @throws PersistenceException if any database exception occur
10186-
* @since 1.8.2
10187-
*/
10188-
private void createProjectGroup(Long projectId, List<ProjectGroup> groups, String operator, Connection conn)
10189-
throws PersistenceException {
10190-
10191-
getLogger().log(Level.INFO, new LogMessage(projectId, operator,
10192-
"insert record into project_group_xref with project id" + projectId));
10193-
10194-
if (groups == null || groups.size() == 0) {
10195-
return;
10196-
}
10197-
10198-
PreparedStatement preparedStatement = null;
10199-
10200-
try {
10201-
// prepare the statement.
10202-
preparedStatement = conn
10203-
.prepareStatement(CREATE_PROJECT_GROUP_SQL);
10204-
10205-
// enumerator each project platform
10206-
for (ProjectGroup group : groups) {
10207-
System.out.println("DDD create: " + group.getId());
10208-
Object[] queryArgs = new Object[]{projectId, group.getId(),
10209-
operator, operator};
10210-
Helper.doDMLQuery(preparedStatement, queryArgs);
10211-
}
10212-
10213-
} catch (SQLException e) {
10214-
throw new PersistenceException(
10215-
"Unable to create prepared statement ["
10216-
+ CREATE_PROJECT_GROUP_SQL + "].", e);
10217-
} finally {
10218-
Helper.closeStatement(preparedStatement);
10219-
}
10220-
}
10221-
10222-
/**
10223-
* <p>
10224-
* Get ids of groups of the challenge
10225-
* </p>
10226-
*
10227-
* @param projectId project ID
10228-
* @param conn connection
10229-
* @return list of ids of groups
10230-
* @throws PersistenceException if any database related exception occur
10231-
* @sincec 1.8.2
10232-
*/
10233-
private Set<Long> getProjectGroupIdsForProject(Long projectId, Connection conn) throws PersistenceException {
10234-
Set<Long> groupIds = new HashSet<Long>();
10235-
10236-
// find projects in the table.
10237-
Object[][] rows = Helper.doQuery(conn, QUERY_PROJECT_GROUP_IDS_SQL,
10238-
new Object[]{projectId}, new DataType[] {Helper.LONG_TYPE});
10239-
10240-
// enumerator each row
10241-
for (int i = 0; i < rows.length; ++i) {
10242-
Object[] row = rows[i];
10243-
10244-
// add the id to the map
10245-
groupIds.add((Long) row[0]);
10246-
}
10247-
10248-
return groupIds;
10249-
}
10250-
10251-
/**
10252-
* <p>
10253-
* Delete groups from challenge
10254-
* </p>
10255-
*
10256-
* @param projectId project Id
10257-
* @param groupIds list ids of groups to delete
10258-
* @param conn connection
10259-
* @throws PersistenceException if any database related exception occur
10260-
* @since 1.8.2
10261-
*/
10262-
private void deleteProjectGroup(Long projectId, List<Long> groupIds, Connection conn)
10263-
throws PersistenceException {
10264-
10265-
if (groupIds!= null && !groupIds.isEmpty()) {
10266-
10267-
// build the id list string
10268-
StringBuffer idListBuffer = new StringBuffer();
10269-
idListBuffer.append('(');
10270-
int idx = 0;
10271-
for (Long pid : groupIds) {
10272-
if (idx++ != 0) {
10273-
idListBuffer.append(',');
10274-
}
10275-
idListBuffer.append(pid);
10276-
}
10277-
idListBuffer.append(')');
10278-
10279-
getLogger().log(Level.INFO, new LogMessage(projectId, null,
10280-
"delete records from project_group_xref with projectId:" + projectId));
10281-
10282-
// delete the project platforms whose id is in the set
10283-
Helper.doDMLQuery(conn, DELETE_PROJECT_GROUP_SQL
10284-
+ idListBuffer.toString(), new Object[] {projectId});
10285-
}
10286-
}
1028710058
}

0 commit comments

Comments
 (0)