diff --git a/src/main/java/com/appirio/service/challengefeeder/api/challengedetail/ChallengeDetailData.java b/src/main/java/com/appirio/service/challengefeeder/api/challengedetail/ChallengeDetailData.java deleted file mode 100644 index 9ce357e..0000000 --- a/src/main/java/com/appirio/service/challengefeeder/api/challengedetail/ChallengeDetailData.java +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Copyright (C) 2018 TopCoder Inc., All Rights Reserved. - */ -package com.appirio.service.challengefeeder.api.challengedetail; - -import java.util.List; - -import com.appirio.service.challengefeeder.api.IdentifiableData; -import com.appirio.service.challengefeeder.api.TermsOfUseData; - -import lombok.Getter; -import lombok.Setter; - -/** - * Represents the ChallengeDetailData model - * - * It's added in Topcoder ElasticSearch Feeder Service - Way To Populate Challenge-Detail Index For Legacy Marathon Matches v1.0 - * - * @author TCCoder - * @version 1.0 - * - */ -public class ChallengeDetailData extends IdentifiableData { - - /** - * The round1Introduction field - */ - @Getter - @Setter - private String round1Introduction; - - - /** - * The round2Introduction field - */ - @Getter - @Setter - private String round2Introduction; - - - /** - * The introduction field - */ - @Getter - @Setter - private String introduction; - - - /** - * The detailedRequirements field - */ - @Getter - @Setter - private String detailedRequirements; - - - /** - * The finalSubmissionGuidelines field - */ - @Getter - @Setter - private String finalSubmissionGuidelines; - - - /** - * The document field - */ - @Getter - @Setter - private List document; - - /** - * The registrants field - */ - @Getter - @Setter - private List registrants; - - /** - * The terms field - */ - @Getter - @Setter - private List terms; - - /** - * The checkpoints field - */ - @Getter - @Setter - private List checkpoints; - - /** - * The submissions field - */ - @Getter - @Setter - private List submissions; - - /** - * The snippet field - */ - @Getter - @Setter - private String snippet; -} diff --git a/src/main/java/com/appirio/service/challengefeeder/api/challengedetail/CheckpointSubmissionData.java b/src/main/java/com/appirio/service/challengefeeder/api/challengedetail/CheckpointSubmissionData.java deleted file mode 100644 index df61e65..0000000 --- a/src/main/java/com/appirio/service/challengefeeder/api/challengedetail/CheckpointSubmissionData.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.appirio.service.challengefeeder.api.challengedetail; - -import java.util.Date; - -import com.appirio.service.challengefeeder.helper.CustomDateDeserializer; -import com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; - -import lombok.Getter; -import lombok.Setter; - -/** - * Represents the CheckpointData model - * - * It's added in Topcoder ElasticSearch Feeder Service - Way To Populate Challenge-Detail Index For Legacy Marathon Matches v1.0 - * - * @author TCCoder - * @version 1.0 - * - */ -public class CheckpointSubmissionData { - /** - * The submissionId field. - */ - @Getter - @Setter - private Long submissionId; - - /** - * The submitter field. - */ - @Getter - @Setter - private String submitter; - - /** - * The submissionTime field. - */ - @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", timezone = "UTC") - @JsonDeserialize(using = CustomDateDeserializer.class) - @Getter - @Setter - private Date submissionTime; - - /** - * The challengeId field. - */ - @Getter - @Setter - private Long challengeId; -} diff --git a/src/main/java/com/appirio/service/challengefeeder/api/challengedetail/DocumentData.java b/src/main/java/com/appirio/service/challengefeeder/api/challengedetail/DocumentData.java deleted file mode 100644 index 7ac3ae9..0000000 --- a/src/main/java/com/appirio/service/challengefeeder/api/challengedetail/DocumentData.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (C) 2018 TopCoder Inc., All Rights Reserved. - */ -package com.appirio.service.challengefeeder.api.challengedetail; - -import lombok.Getter; -import lombok.Setter; - -/** - * Represents the DocumentData model - * - * It's added in Topcoder ElasticSearch Feeder Service - Way To Populate Challenge-Detail Index For Legacy Marathon Matches v1.0 - * - * @author TCCoder - * @version 1.0 - * - */ -public class DocumentData { - /** - * The documentName field. - */ - @Getter - @Setter - private String documentName; - - /** - * The url field. - */ - @Getter - @Setter - private String url; - - /** - * The challengeId field. - */ - @Getter - @Setter - private Long challengeId; -} diff --git a/src/main/java/com/appirio/service/challengefeeder/api/challengedetail/RegistrantData.java b/src/main/java/com/appirio/service/challengefeeder/api/challengedetail/RegistrantData.java deleted file mode 100644 index f2ba233..0000000 --- a/src/main/java/com/appirio/service/challengefeeder/api/challengedetail/RegistrantData.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (C) 2018 TopCoder Inc., All Rights Reserved. - */ -package com.appirio.service.challengefeeder.api.challengedetail; - -import java.util.Date; - -import com.appirio.service.challengefeeder.api.ResourceData; - -import lombok.Getter; -import lombok.Setter; - -/** - * Represents the RegistrantData model - * - * It's added in Topcoder ElasticSearch Feeder Service - Way To Populate Challenge-Detail Index For Legacy Marathon Matches v1.0 - * - * @author TCCoder - * @version 1.0 - * - */ -public class RegistrantData extends ResourceData { - /** - * The colorStyle field - */ - @Getter - @Setter - private String colorStyle; - - /** - * The submissionDate field - */ - @Getter - @Setter - private Date submissionDate; -} diff --git a/src/main/java/com/appirio/service/challengefeeder/api/challengedetail/SubmissionData.java b/src/main/java/com/appirio/service/challengefeeder/api/challengedetail/SubmissionData.java deleted file mode 100644 index 65fd334..0000000 --- a/src/main/java/com/appirio/service/challengefeeder/api/challengedetail/SubmissionData.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright (C) 2018 TopCoder Inc., All Rights Reserved. - */ -package com.appirio.service.challengefeeder.api.challengedetail; - -import java.util.Date; - -import com.appirio.service.challengefeeder.helper.CustomDateDeserializer; -import com.fasterxml.jackson.annotation.JsonFormat; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; - -import lombok.Getter; -import lombok.Setter; - -/** - * Represents the SubmissionData model - * - * It's added in Topcoder ElasticSearch Feeder Service - Way To Populate Challenge-Detail Index For Legacy Marathon Matches v1.0 - * - * @author TCCoder - * @version 1.0 - * - */ -public class SubmissionData { - /** - * The placement field. - */ - @Getter - @Setter - private Integer placement; - - /** - * The submitter field. - */ - @Getter - @Setter - private String submitter; - - - /** - * The screeningScore field. - */ - @Getter - @Setter - private Double screeningScore; - - - /** - * The initialScore field. - */ - @Getter - @Setter - private Double initialScore; - - - /** - * The finalScore field. - */ - @Getter - @Setter - private Double finalScore; - - - /** - * The submissionStatus field. - */ - @Getter - @Setter - private String submissionStatus; - - - /** - * The submissionDate field. - */ - @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", timezone = "UTC") - @JsonDeserialize(using = CustomDateDeserializer.class) - @Getter - @Setter - private Date submissionTime; - - - /** - * The submissionId field. - */ - @Getter - @Setter - private Long submissionId; - - /** - * The challengeId field. - */ - @Getter - @Setter - private Long challengeId; - -} diff --git a/src/main/java/com/appirio/service/challengefeeder/dao/ChallengeDetailMMFeederDAO.java b/src/main/java/com/appirio/service/challengefeeder/dao/ChallengeDetailMMFeederDAO.java index fcaf7d0..ad1ba80 100644 --- a/src/main/java/com/appirio/service/challengefeeder/dao/ChallengeDetailMMFeederDAO.java +++ b/src/main/java/com/appirio/service/challengefeeder/dao/ChallengeDetailMMFeederDAO.java @@ -3,16 +3,16 @@ */ package com.appirio.service.challengefeeder.dao; -import java.util.List; - -import com.appirio.service.challengefeeder.api.challengedetail.ChallengeDetailData; -import com.appirio.service.challengefeeder.api.challengedetail.RegistrantData; -import com.appirio.service.challengefeeder.api.challengedetail.SubmissionData; +import com.appirio.service.challengefeeder.api.detail.ChallengeDetailData; +import com.appirio.service.challengefeeder.api.detail.RegistrantData; +import com.appirio.service.challengefeeder.api.detail.SubmissionData; import com.appirio.supply.dataaccess.ApiQueryInput; import com.appirio.supply.dataaccess.DatasourceName; import com.appirio.supply.dataaccess.SqlQueryFile; import com.appirio.tech.core.api.v3.request.QueryParameter; +import java.util.List; + /** * DAO to interact with challenge data * diff --git a/src/main/java/com/appirio/service/challengefeeder/manager/ChallengeDetailMMFeederManager.java b/src/main/java/com/appirio/service/challengefeeder/manager/ChallengeDetailMMFeederManager.java index fb291e2..f780609 100644 --- a/src/main/java/com/appirio/service/challengefeeder/manager/ChallengeDetailMMFeederManager.java +++ b/src/main/java/com/appirio/service/challengefeeder/manager/ChallengeDetailMMFeederManager.java @@ -4,9 +4,9 @@ package com.appirio.service.challengefeeder.manager; import com.appirio.service.challengefeeder.api.ResourceData; -import com.appirio.service.challengefeeder.api.challengedetail.ChallengeDetailData; -import com.appirio.service.challengefeeder.api.challengedetail.RegistrantData; -import com.appirio.service.challengefeeder.api.challengedetail.SubmissionData; +import com.appirio.service.challengefeeder.api.detail.ChallengeDetailData; +import com.appirio.service.challengefeeder.api.detail.RegistrantData; +import com.appirio.service.challengefeeder.api.detail.SubmissionData; import com.appirio.service.challengefeeder.dao.ChallengeDetailMMFeederDAO; import com.appirio.service.challengefeeder.dao.MmFeederDAO; import com.appirio.service.challengefeeder.dto.MmFeederParam; @@ -138,7 +138,7 @@ private static void associateAllSubmissions(List challenges * Associate all resources * * @param challenges the challenges to use - * @param resources the resources to use + * @param registrants the resources to use */ private static void associateAllRegistrants(List challenges, List registrants) { for (RegistrantData item : registrants) { @@ -147,57 +147,12 @@ private static void associateAllRegistrants(List challenges if (challenge.getRegistrants() == null) { challenge.setRegistrants(new ArrayList()); } - Integer rating = null; - if (item.getRating() != null) { - if (!item.getRating().equalsIgnoreCase("n/a")) { - rating = Integer.parseInt(item.getRating()); - } - } - item.setColorStyle(getColorStyle(rating)); + item.setColorStyle(ChallengeFeederUtil.getColorStyle(item.getRating())); challenge.getRegistrants().add(item); - break; } } } - for (ResourceData item : registrants) { - item.setChallengeId(null); - } - } - - /** - * Get color style - * - * @param rating the rating to use - * @return the String result representing the color - */ - private static String getColorStyle(Integer rating) { - - if (rating == null) { - return "color: #000000"; - } - - if (rating < 0) { - return "color: #FF9900"; // orange - } - if (rating < 900) { - return "color: #999999";// gray - } - if (rating < 1200) { - return "color: #00A900";// green - } - if (rating < 1500) { - return "color: #6666FF";// blue - } - if (rating < 2200) { - return "color: #DDCC00";// yellow - } - if (rating > 2199) { - return "color: #EE0000";// red - } - // return black otherwise. - return "color: #000000"; - } /** diff --git a/src/main/resources/sql/mm-feeder-into-challenges/get_marathon_matches_for_challenge_details.sql b/src/main/resources/sql/mm-feeder-into-challenges/get_marathon_matches_for_challenge_details.sql index 37d77f8..0c6808c 100644 --- a/src/main/resources/sql/mm-feeder-into-challenges/get_marathon_matches_for_challenge_details.sql +++ b/src/main/resources/sql/mm-feeder-into-challenges/get_marathon_matches_for_challenge_details.sql @@ -1,6 +1,9 @@ select r.round_id as id, -r.round_id as challengeId +r.round_id as challengeId, +c.component_text as detailRequirements from informixoltp\:round r +join informixoltp\:round_component rc on r.round_id = rc.round_id +join informixoltp\:component c on rc.component_id = c.component_id left join project_info pi on pi.project_info_type_id = 56 and pi.value::decimal = r.round_id -where pi.project_id is null and r.round_type_id = 13 and {filter} \ No newline at end of file +where pi.project_id is null and r.round_type_id = 13 and {filter} \ No newline at end of file diff --git a/src/main/resources/sql/mm-feeder-into-challenges/get_registrants.sql b/src/main/resources/sql/mm-feeder-into-challenges/get_registrants.sql index a02c600..cf5ab89 100644 --- a/src/main/resources/sql/mm-feeder-into-challenges/get_registrants.sql +++ b/src/main/resources/sql/mm-feeder-into-challenges/get_registrants.sql @@ -1,16 +1,15 @@ select rr.round_id as challengeId, rr.timestamp as registrationDate, -CASE - WHEN ls.submit_time IS NOT NULL THEN extend(dbinfo("UTC_TO_DATETIME",ls.submit_time/1000), year to fraction) - ELSE NULL -END as submissionDate, -al.rating as rating, -u.handle as handle +user.handle as handle, +ar.rating as rating, +(select decode(submit_time, null, null, dbinfo("utc_to_datetime", submit_time/1000)) + from (select min(ls.submit_time) as submit_time from informixoltp\:long_component_state lcs, informixoltp\:long_submission ls + where lcs.long_component_state_id = ls.long_component_state_id + and lcs.round_id = rr.round_id and lcs.coder_id = rr.coder_id and ls.example = 0) + ) as submissionDate from informixoltp\:round_registration rr -left join user u on u.user_id = rr.coder_id -left join informixoltp\:long_component_state lcs on lcs.round_id = rr.round_id -left join informixoltp\:long_submission ls on ls.long_component_state_id = lcs.long_component_state_id -left join informixoltp\:algo_rating al on al.coder_id = u.user_id +join user on user.user_id = coder_id +left join informixoltp\:algo_rating ar on ar.coder_id = rr.coder_id and ar.algo_rating_type_id=3 where {filter}