29
29
import com .topcoder .direct .services .view .util .DirectUtils ;
30
30
import com .topcoder .management .deliverable .Submission ;
31
31
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 ;
32
35
import com .topcoder .project .phases .Phase ;
33
36
import com .topcoder .shared .dataAccess .DataAccess ;
34
37
import com .topcoder .shared .dataAccess .Request ;
50
53
/**
51
54
* Action supporting project work management page.
52
55
*
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
55
66
*/
56
67
public class ProjectWorkManagementAction extends BaseDirectStrutsAction implements FormAction <ProjectIdForm > {
57
68
@@ -129,6 +140,13 @@ public class ProjectWorkManagementAction extends BaseDirectStrutsAction implemen
129
140
*/
130
141
private MimeTypeRetriever mimeTypeRetriever ;
131
142
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
+
132
150
/**
133
151
* Logger for this class.
134
152
*/
@@ -581,6 +599,7 @@ public String pushSubmissions() {
581
599
Map <Long , Map <Integer , Submission >> organizingMap = new HashMap <Long , Map <Integer , Submission >>();
582
600
583
601
for (Submission s : checkpointSubmissions ) {
602
+ resolveSubmitter (s );
584
603
585
604
Long submissionUserId = Long .parseLong (s .getCreationUser ());
586
605
@@ -591,8 +610,6 @@ public String pushSubmissions() {
591
610
Map <Integer , Submission > userSubmissionMap = new TreeMap <Integer , Submission >();
592
611
userSubmissionMap .put (s .getUserRank (), s );
593
612
organizingMap .put (submissionUserId , userSubmissionMap );
594
- userHandlesMap .put (submissionUserId ,
595
- this .getUserService ().getUserHandle (submissionUserId ));
596
613
}
597
614
}
598
615
@@ -615,6 +632,7 @@ public String pushSubmissions() {
615
632
Map <Long , Map <Integer , Submission >> organizingMap = new HashMap <Long , Map <Integer , Submission >>();
616
633
617
634
for (Submission s : finalRoundSubmissions ) {
635
+ resolveSubmitter (s );
618
636
619
637
Long submissionUserId = Long .parseLong (s .getCreationUser ());
620
638
@@ -625,8 +643,6 @@ public String pushSubmissions() {
625
643
Map <Integer , Submission > userSubmissionMap = new TreeMap <Integer , Submission >();
626
644
userSubmissionMap .put (s .getUserRank (), s );
627
645
organizingMap .put (submissionUserId , userSubmissionMap );
628
- userHandlesMap .put (submissionUserId ,
629
- this .getUserService ().getUserHandle (submissionUserId ));
630
646
}
631
647
}
632
648
@@ -647,17 +663,14 @@ public String pushSubmissions() {
647
663
648
664
// find out the latest final fix submission
649
665
Submission latestSubmission = finalFixesSubmissions .get (0 );
666
+ resolveSubmitter (latestSubmission );
650
667
for (int i = 1 , n = finalFixesSubmissions .size (); i < n ; ++i ) {
651
668
if (latestSubmission .getModificationTimestamp ().compareTo (
652
669
finalFixesSubmissions .get (i ).getModificationTimestamp ()) < 0 ) {
653
670
latestSubmission = finalFixesSubmissions .get (i );
654
671
}
655
672
}
656
673
657
- userHandlesMap .put (Long .parseLong (latestSubmission .getCreationUser ()),
658
- this .getUserService ().getUserHandle (
659
- Long .parseLong (latestSubmission .getCreationUser ())));
660
-
661
674
List <com .appirio .client .asp .api .Submission > finalFixSubmissionsToPush = new ArrayList <com .appirio .client .asp .api .Submission >();
662
675
663
676
finalFixSubmissionsToPush .add (getStudioSubmissionDataForAPI (latestSubmission , true ));
@@ -678,6 +691,7 @@ public String pushSubmissions() {
678
691
for (Submission sub : submissions ) {
679
692
if (sub .getId () == firstPlaceWinner .getSubmissionId ()) {
680
693
// find the winner
694
+ resolveSubmitter (sub );
681
695
List <com .appirio .client .asp .api .Submission > winnerSubmissionToPush = new ArrayList <com .appirio .client .asp .api .Submission >();
682
696
683
697
winnerSubmissionToPush .add (getSoftwareSubmissionDataForAPI (sub ));
@@ -695,6 +709,7 @@ public String pushSubmissions() {
695
709
for (Upload upload : uploads ) {
696
710
if (upload .getProjectPhase () != null && upload .getProjectPhase ().longValue () == lastClosedFinalFixPhase .getId ()) {
697
711
Submission finalFixSubmission = new Submission ();
712
+ resolveSubmitter (finalFixSubmission );
698
713
long finalFixSubmissionId = 0 ;
699
714
long submitterId = 0 ;
700
715
for (ContestFinalFixDTO ff : finalFixes ) {
@@ -893,6 +908,25 @@ private String createAbsoluteStudioSubmissionBasePath(Submission submission) {
893
908
return buf .toString ();
894
909
}
895
910
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
+
896
930
/**
897
931
* Gets the absolute path of the preview deliverable zip.
898
932
*
@@ -1126,6 +1160,26 @@ public void setMimeTypeRetriever(MimeTypeRetriever mimeTypeRetriever) {
1126
1160
this .mimeTypeRetriever = mimeTypeRetriever ;
1127
1161
}
1128
1162
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
+
1129
1183
public static class SubmissionPresentationFilter implements FilenameFilter {
1130
1184
1131
1185
/**
0 commit comments