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

Commit 73ff0e4

Browse files
committed
Merge pull request #127 from isvisv/dev
Submission author is determined by respective resource properties but…
2 parents 088fb1d + dfcf053 commit 73ff0e4

File tree

2 files changed

+83
-10
lines changed

2 files changed

+83
-10
lines changed

conf/web/WEB-INF/applicationContext.xml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,24 @@
249249

250250
<bean id="mimeTypeRetriever" class="com.topcoder.direct.services.view.action.contest.launch.MimeTypeRetriever"/>
251251

252+
<bean id="dbConnectionFactory" class="com.topcoder.db.connectionfactory.DBConnectionFactoryImpl">
253+
<constructor-arg index="0" value="com.topcoder.db.connectionfactory.DBConnectionFactoryImpl"/>
254+
</bean>
255+
256+
<bean id="resourcePersistence" class="com.topcoder.management.resource.persistence.sql.SqlResourcePersistence">
257+
<constructor-arg index="0" ref="dbConnectionFactory"/>
258+
</bean>
259+
260+
<bean id="searchBundleManager" class="com.topcoder.search.builder.SearchBundleManager">
261+
<constructor-arg index="0" value="com.topcoder.searchbuilder.common"/>
262+
</bean>
263+
264+
<bean id="persistenceResourceManager"
265+
class="com.topcoder.management.resource.persistence.PersistenceResourceManager">
266+
<constructor-arg index="0" ref="resourcePersistence"/>
267+
<constructor-arg index="1" ref="searchBundleManager"/>
268+
</bean>
269+
252270
<!-- Actions -->
253271
<bean id="baseDirectStrutsAction"
254272
class="com.topcoder.direct.services.view.action.BaseDirectStrutsAction"
@@ -300,6 +318,7 @@
300318
<property name="studioSubmissionBase" value="@studio.submission.base@"/>
301319
<property name="softwareSubmissionBase" value="@file_storage_location@"/>
302320
<property name="mimeTypeRetriever" ref="mimeTypeRetriever"/>
321+
<property name="resourceManager" ref="persistenceResourceManager"/>
303322
</bean>
304323

305324
<bean id="getProjectVMInstancesAction"

src/java/main/com/topcoder/direct/services/view/action/project/ProjectWorkManagementAction.java

Lines changed: 64 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@
2929
import com.topcoder.direct.services.view.util.DirectUtils;
3030
import com.topcoder.management.deliverable.Submission;
3131
import com.topcoder.management.deliverable.Upload;
32+
import com.topcoder.management.resource.Resource;
33+
import com.topcoder.management.resource.ResourceManager;
34+
import com.topcoder.management.resource.persistence.ResourcePersistenceException;
3235
import com.topcoder.project.phases.Phase;
3336
import com.topcoder.shared.dataAccess.DataAccess;
3437
import com.topcoder.shared.dataAccess.Request;
@@ -50,8 +53,16 @@
5053
/**
5154
* Action supporting project work management page.
5255
*
53-
* @author TCSASSEMBLER
54-
* @version 1.0
56+
*
57+
* <p>
58+
* Version 1.1 Change notes:
59+
* <ol>
60+
* <li>Added {@link #resourceManager} property.</li>
61+
* <li>Added {@link #resolveSubmitter(Submission)} method.</li>
62+
* </ol>
63+
* </p>
64+
* @author isv, TCSASSEMBLER
65+
* @version 1.1
5566
*/
5667
public class ProjectWorkManagementAction extends BaseDirectStrutsAction implements FormAction<ProjectIdForm> {
5768

@@ -129,6 +140,13 @@ public class ProjectWorkManagementAction extends BaseDirectStrutsAction implemen
129140
*/
130141
private MimeTypeRetriever mimeTypeRetriever;
131142

143+
/**
144+
* <p>A <code>ResourceManager</code> providing the value for resourceManager property.</p>
145+
*
146+
* @since 1.1
147+
*/
148+
private ResourceManager resourceManager;
149+
132150
/**
133151
* Logger for this class.
134152
*/
@@ -581,6 +599,7 @@ public String pushSubmissions() {
581599
Map<Long, Map<Integer, Submission>> organizingMap = new HashMap<Long, Map<Integer, Submission>>();
582600

583601
for (Submission s : checkpointSubmissions) {
602+
resolveSubmitter(s);
584603

585604
Long submissionUserId = Long.parseLong(s.getCreationUser());
586605

@@ -591,8 +610,6 @@ public String pushSubmissions() {
591610
Map<Integer, Submission> userSubmissionMap = new TreeMap<Integer, Submission>();
592611
userSubmissionMap.put(s.getUserRank(), s);
593612
organizingMap.put(submissionUserId, userSubmissionMap);
594-
userHandlesMap.put(submissionUserId,
595-
this.getUserService().getUserHandle(submissionUserId));
596613
}
597614
}
598615

@@ -615,6 +632,7 @@ public String pushSubmissions() {
615632
Map<Long, Map<Integer, Submission>> organizingMap = new HashMap<Long, Map<Integer, Submission>>();
616633

617634
for (Submission s : finalRoundSubmissions) {
635+
resolveSubmitter(s);
618636

619637
Long submissionUserId = Long.parseLong(s.getCreationUser());
620638

@@ -625,8 +643,6 @@ public String pushSubmissions() {
625643
Map<Integer, Submission> userSubmissionMap = new TreeMap<Integer, Submission>();
626644
userSubmissionMap.put(s.getUserRank(), s);
627645
organizingMap.put(submissionUserId, userSubmissionMap);
628-
userHandlesMap.put(submissionUserId,
629-
this.getUserService().getUserHandle(submissionUserId));
630646
}
631647
}
632648

@@ -647,17 +663,14 @@ public String pushSubmissions() {
647663

648664
// find out the latest final fix submission
649665
Submission latestSubmission = finalFixesSubmissions.get(0);
666+
resolveSubmitter(latestSubmission);
650667
for (int i = 1, n = finalFixesSubmissions.size(); i < n; ++i) {
651668
if (latestSubmission.getModificationTimestamp().compareTo(
652669
finalFixesSubmissions.get(i).getModificationTimestamp()) < 0) {
653670
latestSubmission = finalFixesSubmissions.get(i);
654671
}
655672
}
656673

657-
userHandlesMap.put(Long.parseLong(latestSubmission.getCreationUser()),
658-
this.getUserService().getUserHandle(
659-
Long.parseLong(latestSubmission.getCreationUser())));
660-
661674
List<com.appirio.client.asp.api.Submission> finalFixSubmissionsToPush = new ArrayList<com.appirio.client.asp.api.Submission>();
662675

663676
finalFixSubmissionsToPush.add(getStudioSubmissionDataForAPI(latestSubmission, true));
@@ -678,6 +691,7 @@ public String pushSubmissions() {
678691
for (Submission sub : submissions) {
679692
if (sub.getId() == firstPlaceWinner.getSubmissionId()) {
680693
// find the winner
694+
resolveSubmitter(sub);
681695
List<com.appirio.client.asp.api.Submission> winnerSubmissionToPush = new ArrayList<com.appirio.client.asp.api.Submission>();
682696

683697
winnerSubmissionToPush.add(getSoftwareSubmissionDataForAPI(sub));
@@ -695,6 +709,7 @@ public String pushSubmissions() {
695709
for (Upload upload : uploads) {
696710
if (upload.getProjectPhase() != null && upload.getProjectPhase().longValue() == lastClosedFinalFixPhase.getId()) {
697711
Submission finalFixSubmission = new Submission();
712+
resolveSubmitter(finalFixSubmission);
698713
long finalFixSubmissionId = 0;
699714
long submitterId = 0;
700715
for (ContestFinalFixDTO ff : finalFixes) {
@@ -893,6 +908,25 @@ private String createAbsoluteStudioSubmissionBasePath(Submission submission) {
893908
return buf.toString();
894909
}
895910

911+
/**
912+
* <p>Gets the details for actual submitter based on the submitter resource associated with the specified submission
913+
* and updates {@link Submission#getCreationUser()} accordingly.</p>
914+
*
915+
* @param submission a <code>Submission</code> providing submission details.
916+
* @throws ResourcePersistenceException if an unexpected error occurs.
917+
* @since 1.1
918+
*/
919+
private void resolveSubmitter(Submission submission) throws ResourcePersistenceException {
920+
long submitterResourceId = submission.getUpload().getOwner();
921+
Resource submitterResource = getResourceManager().getResource(submitterResourceId);
922+
long submitterUserId = Long.parseLong(submitterResource.getProperty("External Reference ID"));
923+
String submitterHandle = submitterResource.getProperty("Handle");
924+
925+
this.userHandlesMap.put(submitterUserId, submitterHandle);
926+
927+
submission.setCreationUser(String.valueOf(submitterUserId));
928+
}
929+
896930
/**
897931
* Gets the absolute path of the preview deliverable zip.
898932
*
@@ -1126,6 +1160,26 @@ public void setMimeTypeRetriever(MimeTypeRetriever mimeTypeRetriever) {
11261160
this.mimeTypeRetriever = mimeTypeRetriever;
11271161
}
11281162

1163+
/**
1164+
* <p>Gets the resourceManager property.</p>
1165+
*
1166+
* @return a <code>ResourceManager</code> providing the value for resourceManager property.
1167+
* @since 1.1
1168+
*/
1169+
public ResourceManager getResourceManager() {
1170+
return this.resourceManager;
1171+
}
1172+
1173+
/**
1174+
* <p>Sets the resourceManager property.</p>
1175+
*
1176+
* @param resourceManager a <code>ResourceManager</code> providing the value for resourceManager property.
1177+
* @since 1.1
1178+
*/
1179+
public void setResourceManager(ResourceManager resourceManager) {
1180+
this.resourceManager = resourceManager;
1181+
}
1182+
11291183
public static class SubmissionPresentationFilter implements FilenameFilter {
11301184

11311185
/**

0 commit comments

Comments
 (0)