From 68d18fab7a47f0a0ed7fd99969e8e78f6ebc876c Mon Sep 17 00:00:00 2001 From: Guiqiang Zhang Date: Mon, 10 Dec 2018 19:51:12 +0800 Subject: [PATCH 1/2] add rating and reliability support for code challenges --- .gitignore | 3 + .../1.0.0/command_line_utility.jar | Bin 0 -> 8497 bytes .../1.0.4/reliability_calculator.jar | Bin 0 -> 46124 bytes scripts/dde/DWLoad.sh | 13 +- scripts/dde/DWLoad.xml | 6 + scripts/dde/RatingQubits.xml | 8 + .../ReliabilityCalculationUtility.properties | 1 + scripts/dde/ReliabilityCalculationUtility.xml | 191 ++++++++++++++++++ scripts/dde/runRatings.sh | 8 +- scripts/dde/runReliability.sh | 31 +-- .../dde/util/DWLoad/RatingQubits.java | 160 ++++++++++++--- .../topcoder/utilities/dwload/TCLoadTCS.java | 26 ++- .../utilities/pacts/PayReliabilityBonus.java | 23 ++- 13 files changed, 412 insertions(+), 58 deletions(-) create mode 100644 .gitignore create mode 100755 lib/jars/tcs/command_line_utility/1.0.0/command_line_utility.jar create mode 100755 lib/jars/tcs/reliability_calculator/1.0.4/reliability_calculator.jar create mode 100755 scripts/dde/ReliabilityCalculationUtility.properties create mode 100755 scripts/dde/ReliabilityCalculationUtility.xml diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000000..7413f970fb6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +*.iml +*.ipr +*.iws diff --git a/lib/jars/tcs/command_line_utility/1.0.0/command_line_utility.jar b/lib/jars/tcs/command_line_utility/1.0.0/command_line_utility.jar new file mode 100755 index 0000000000000000000000000000000000000000..ec371d5ad6d067e1b364e52e3b65f5e2df3936a4 GIT binary patch literal 8497 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 E0iDV*H2?qr literal 0 HcmV?d00001 diff --git a/lib/jars/tcs/reliability_calculator/1.0.4/reliability_calculator.jar b/lib/jars/tcs/reliability_calculator/1.0.4/reliability_calculator.jar new file mode 100755 index 0000000000000000000000000000000000000000..af87e73afdb3ba59674da972b686095e4ddcc2e8 GIT binary patch literal 46124 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 aQva1?;UG1rP*4vcU!Ng=Igu3K-1{HpS4$WG literal 0 HcmV?d00001 diff --git a/scripts/dde/DWLoad.sh b/scripts/dde/DWLoad.sh index 602649bb4cc..a2ce0a03609 100755 --- a/scripts/dde/DWLoad.sh +++ b/scripts/dde/DWLoad.sh @@ -1,4 +1,11 @@ #!/bin/sh -CP=../conf:../build/classes:../jars/configmanager_xerces-1.4.4.jar:../jars/tcsUtil.jar:$CLASSPATH - -java -cp $CP com.topcoder.dde.util.DWLoad.DWLoad $1 +BASE=../.. +CP="" +CP=$CP:$BASE/resources +CP=$CP:$BASE/lib/jars/log4j-1.2.7.jar +CP=$CP:$BASE/lib/jars/ifxjdbc.jar +CP=$CP:$BASE/lib/jars/tcs/shared.jar +CP=$CP:$BASE/build/classes +CP=$CP:$BASE/build/tcs_dw_loader.jar +echo $CP +java -cp $CP com.topcoder.shared.util.dwload.TCLoadUtility -xmlfile $1 diff --git a/scripts/dde/DWLoad.xml b/scripts/dde/DWLoad.xml index b7555039599..31f819a8d2f 100755 --- a/scripts/dde/DWLoad.xml +++ b/scripts/dde/DWLoad.xml @@ -2,4 +2,10 @@ jdbc:informix-sqli://192.168.14.51:2020/tcs_catalog:INFORMIXSERVER=informixoltp_tcp;user=coder;password=xxx jdbc:informix-sqli://192.168.14.52:2022/tcs_dw:INFORMIXSERVER=datawarehouse_tcp;user=coder;password=xxx + + com.topcoder.utilities.dwload.TCLoadTCS + + + + diff --git a/scripts/dde/RatingQubits.xml b/scripts/dde/RatingQubits.xml index 2d1a48df26a..19a502c3476 100755 --- a/scripts/dde/RatingQubits.xml +++ b/scripts/dde/RatingQubits.xml @@ -9,4 +9,12 @@ 300 + + 150 + 149 + + + 06/01/2010 06:06:06 + NULL + diff --git a/scripts/dde/ReliabilityCalculationUtility.properties b/scripts/dde/ReliabilityCalculationUtility.properties new file mode 100755 index 00000000000..b4eda12449e --- /dev/null +++ b/scripts/dde/ReliabilityCalculationUtility.properties @@ -0,0 +1 @@ +com.topcoder.reliability.ReliabilityCalculationUtility=ReliabilityCalculationUtility.xml diff --git a/scripts/dde/ReliabilityCalculationUtility.xml b/scripts/dde/ReliabilityCalculationUtility.xml new file mode 100755 index 00000000000..b62eca82dbb --- /dev/null +++ b/scripts/dde/ReliabilityCalculationUtility.xml @@ -0,0 +1,191 @@ + + + + + myLogger + + + + + com.topcoder.reliability.impl.ReliabilityCalculatorImpl + + + + + + + 1 + 2 + 6 + 7 + 13 + 14 + 19 + 23 + 24 + 26 + 39 + + + ReliabilityCalculatorImpl + + + + 1 + 2 + 7 + + + myLogger + + + + + com.topcoder.reliability.impl.persistence.DatabaseReliabilityDataPersistence + + + + + com.topcoder.reliability.impl.comparators.UserProjectParticipationDataResolutionDateBasedComparator + + + + + com.topcoder.reliability.impl.calculators.UniformUserReliabilityCalculator + + + + + com.topcoder.reliability.impl.calculators.WeightedUserReliabilityCalculator + + + + + com.topcoder.reliability.impl.detectors.PhaseEndTimeBasedResolutionDateDetector + + + + + DatabaseReliabilityDataPersistence + + + + + myLogger + + + + + + myConnection + + + + com.topcoder.db.connectionfactory.producers.JDBCConnectionProducer + + + + com.informix.jdbc.IfxDriver + + + jdbc:informix-sqli://env.topcoder.com:2021/tcs_catalog:INFORMIXSERVER=informixoltp_tcp + + + cursor + + + informix + + + 1nf0rm1x + + + + + + + + myConnection + + + + UserProjectParticipationDataResolutionDateBasedComparator + + + + 1 + 2 + 3 + 39 + + + 2005-10-05 09:00 + + + UniformUserReliabilityCalculator + + + + myLogger + + + 15 + + + + PhaseEndTimeBasedResolutionDateDetector + + + + myLogger + + + + + + 6 + 7 + 13 + 14 + 19 + 23 + 24 + 26 + 39 + + + 2009-03-23 00:00 + + + WeightedUserReliabilityCalculator + + + + myLogger + + + 0.82 + 0.84 + 0.86 + 0.88 + 0.9 + 0.92 + 0.94 + 0.96 + 0.98 + 1.00 + + + + PhaseEndTimeBasedResolutionDateDetector + + + + myLogger + + + + + + + diff --git a/scripts/dde/runRatings.sh b/scripts/dde/runRatings.sh index 19798a5b5f9..79c12b5e2e4 100755 --- a/scripts/dde/runRatings.sh +++ b/scripts/dde/runRatings.sh @@ -1,15 +1,17 @@ BASE=../.. +mkdir -p $BASE/resources/com/topcoder/dde/util/DWLoad +cp -f RatingQubits.xml $BASE/resources/com/topcoder/dde/util/DWLoad CP="" -CP=$CP:$BASE/conf CP=$CP:$BASE/resources CP=$CP:$BASE/lib/jars/log4j.jar CP=$CP:$BASE/lib/jars/ifxjdbc.jar CP=$CP:$BASE/lib/jars/jdbc7.0-1.2.jar CP=$CP:$BASE/lib/jars/xml/xerces/xercesImpl.jar CP=$CP:$BASE/build/classes +CP=$CP:$BASE/lib/jars/tcs/shared.jar +CP=$CP:$BASE/lib/jars/log4j-1.2.7.jar CP=$CP:$BASE/lib/jars/tcsUtil.jar CP=$CP:$BASE/lib/jars/configmanager2.jar CP=$CP:$BASE/lib/jars/jboss/xercesImpl.jar CP=$CP:$BASE/lib/jars/jboss/xml-apis.jar - -nohup java -cp $CP com.topcoder.dde.util.DWLoad.RatingQubits >> ./ratings.log 2>&1 & +nohup java -cp $CP com.topcoder.dde.util.DWLoad.RatingQubits > ./ratings.log 2>&1 & diff --git a/scripts/dde/runReliability.sh b/scripts/dde/runReliability.sh index 64e432c309b..bdc96c8cb4d 100755 --- a/scripts/dde/runReliability.sh +++ b/scripts/dde/runReliability.sh @@ -1,16 +1,19 @@ #!/bin/sh -CP=$CP:/home/tc/web/conf -CP=$CP:/home/tc/web/build/classes -CP=$CP:/home/tc/web/lib/jars/log4j-1.2.7.jar -CP=$CP:/home/tc/web/lib/jars/ifxjdbc.jar -CP=$CP:/home/tc/web/lib/jars/tcs/configuration_manager/2.1.3/configuration_manager.jar -CP=$CP:/home/tc/web/lib/jars/tcsUtil.jar: -CP=$CP:/home/tc/web/lib/jars/jboss/xml-apis.jar: -CP=$CP:/home/tc/web/lib/jars/jboss/xalan.jar: -CP=$CP:/home/tc/web/lib/jars/jboss/xercesImpl.jar: -CP=$CP:/home/tc/jboss-4.0.4.GA/server/all/lib/shared.jar -CP=$CP:/home/tc/jboss-4.0.4.GA/client/jbossall-client.jar -CP=$CP:/home/tc/jboss-4.0.4.GA/server/all/conf/cache.properties -echo $CP +BASE=../.. +CP=$CP:$BASE/resources +CP=$CP:$BASE/lib/jars/log4j-1.2.7.jar +CP=$CP:$BASE/lib/jars/ifxjdbc.jar +CP=$CP:$BASE/lib/jars/tcs/base_exception/2.0.0/base_exception.jar +CP=$CP:$BASE/lib/jars/tcs/configuration_api/1.1.0/configuration_api.jar +CP=$CP:$BASE/lib/jars/tcs/configuration_persistence/1.0.2/configuration_persistence.jar +CP=$CP:$BASE/lib/jars/tcs/logging_wrapper.jar +CP=$CP:$BASE/lib/jars/tcs/command_line_utility/1.0.0/command_line_utility.jar +CP=$CP:$BASE/lib/jars/tcs/db_connection_factory/1.1/db_connection_factory.jar +CP=$CP:$BASE/lib/jars/tcs/object_factory/2.0/object_factory.jar +CP=$CP:$BASE/lib/jars/tcs/object_factory_configuration_api_plugin/1.0.0/object_factory_configuration_api_plugin.jar +CP=$CP:$BASE/lib/jars/tcs/object_formatter/1.0.0/object_formatter.jar +CP=$CP:$BASE/lib/jars/tcs/typesafe_enum/1.0/typesafe_enum.jar +CP=$CP:$BASE/lib/jars/tcs/configuration_manager/2.1.5/configuration_manager.jar +CP=$CP:$BASE/lib/jars/tcs/reliability_calculator/1.0.4/reliability_calculator.jar -java -cp $CP com.topcoder.dde.util.DWLoad.ReliabilityRating \ No newline at end of file +java -cp $CP com.topcoder.reliability.ReliabilityCalculationUtility -c ReliabilityCalculationUtility.properties diff --git a/src/main/com/topcoder/dde/util/DWLoad/RatingQubits.java b/src/main/com/topcoder/dde/util/DWLoad/RatingQubits.java index 14135147452..c96bed01679 100755 --- a/src/main/com/topcoder/dde/util/DWLoad/RatingQubits.java +++ b/src/main/com/topcoder/dde/util/DWLoad/RatingQubits.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004 - 2009 TopCoder Inc., All Rights Reserved. + * Copyright (C) 2004 - 2018 TopCoder Inc., All Rights Reserved. */ package com.topcoder.dde.util.DWLoad; @@ -13,10 +13,7 @@ import java.text.DecimalFormat; import java.text.ParseException; import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.TreeMap; -import java.util.Vector; +import java.util.*; import com.topcoder.shared.util.DBMS; import com.topcoder.shared.util.logging.Logger; @@ -42,8 +39,15 @@ * *

* - * @author pulky, VolodymyrK - * @version 1.2 + *

+ * Version 1.3 Change notes(Topcoder - Support Rating and Reliability Generation For Code Challenges in DWLoad): + *

    + *
  1. Added support for code challenge and load phase ids, cutoffs configurations from file.
  2. + *
+ *

+ * + * @author pulky, VolodymyrK,TCCODER + * @version 1.3 */ public class RatingQubits { private static final Logger log = Logger.getLogger(RatingQubits.class); @@ -52,6 +56,34 @@ public class RatingQubits { public static final String CONNECTION_URL_KEY = "ConnectionURL"; public static final String HISTORY_LENGTH_KEY = "HistoryLength"; + /** + * Property key name for phase ids + * + * @since 1.3 + */ + private static final String PHASE_IDS_KEY = "PhaseIds"; + + /** + * Property key name for cutoffs + * + * @since 1.3 + */ + private static final String CUT_OFFS_KEY = "CutOffs"; + + /** + * Property value for null value of cutoff + * + * @since 1.3 + */ + private static final String NULL_CUT_OFF = "null"; + + /** + * The simple date format for cut off. + * + * @since 1.3 + */ + private static final SimpleDateFormat SDF = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss"); + private static final String NEW_PHASES_CUT_OFF = "03/23/2009 00:00:00"; private static final String UI_PROTOTYPE_CUT_OFF = "08/01/2009 00:00:00"; private static final String RIA_BUILD_CUT_OFF = "06/01/2010 00:00:00"; @@ -68,6 +100,12 @@ public class RatingQubits { private static final int RIA_BUILDS_PHASE_ID = 135; private static final int CONTENT_CREATION_PHASE_ID = 146; private static final int REPORTING_PHASE_ID = 147; + /** + * Code challenge phase id. + * + * @since 1.3 + */ + private static final int CODE_PHASE_ID = 150; private final static String NEW_RATING_STATUSES = "(4, 7, 8)"; /** @@ -88,6 +126,11 @@ public class RatingQubits { " and p.project_id in (select pi.project_id from project_info pi where pi.project_info_type_id=13 " + "and (pi.value='Yes' or pi.value='yes')) "; + /** + * Load phase ids and cutoffs configurations from file + * @param args the command arguments + * @since 1.3 + */ public static void main(String[] args) { RatingQubits tmp = new RatingQubits(); @@ -113,6 +156,7 @@ public static void main(String[] args) { String jdbcDriver; String connectionURL; + Map projects = new HashMap(); try { jdbcDriver = config.getString(namespace, DRIVER_KEY); connectionURL = config.getString(namespace, CONNECTION_URL_KEY); @@ -126,6 +170,42 @@ public static void main(String[] args) { System.err.println("No Connection URL specified. (Config param '" + CONNECTION_URL_KEY + "')"); return; } + String[] phaseIds = config.getStringArray(namespace, PHASE_IDS_KEY); + String[] cutOffs = config.getStringArray(namespace, CUT_OFFS_KEY); + if (phaseIds!= null && cutOffs !=null) { + if (phaseIds.length != cutOffs.length) { + System.err.println("(Config param '" + PHASE_IDS_KEY + "')(" + phaseIds.length + ") and (Config param '" + + CUT_OFFS_KEY + "')("+ cutOffs.length + ") should have same length of string array"); + return; + } + for (int i = 0; i < phaseIds.length; i++) { + String id = phaseIds[i]; + int phaseId = -1; + try { + phaseId = Integer.parseInt(id); + } catch (NumberFormatException e) { + System.err.println("Invalid phase id value for "+ id + ", please check it"); + return; + } + if (projects.containsKey(phaseId)) { + System.err.println("(Config param '" + PHASE_IDS_KEY + "') contains duplicated phase id "+id); + return; + } + String cutoff = cutOffs[i]; + + Date cutoffDate = null; + try { + if (!NULL_CUT_OFF.equalsIgnoreCase(cutoff)){ + cutoffDate = new Date(SDF.parse(cutoff).getTime()); + } + } catch (ParseException e) { + e.printStackTrace(); + System.err.println("Invalid cutoff value " + cutoff + "for phase id "+ phaseId + ", please check it"); + return; + } + projects.put(phaseId, cutoffDate); + } + } } catch (UnknownNamespaceException e) { System.err.println("Initialized ConfigManager and namespace '" + namespace + "' without trouble but could not retrieve resource bundle"); return; @@ -137,7 +217,7 @@ public static void main(String[] args) { c = DriverManager.getConnection(connectionURL); c.setAutoCommit(true); - tmp.runAllScores(c, historyLength); + tmp.runAllScores(c, historyLength, projects); } catch (Exception e) { e.printStackTrace(); } finally { @@ -149,13 +229,18 @@ public static void main(String[] args) { } } - public void runAllScores(Connection conn, String historyLength) { - - SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss"); + /** + * Run all score + * @param conn the database connection + * @param historyLength the length of history + * @param projects the projects map with keyis phase id and value is cut off date + * @since 1.3 + */ + public void runAllScores(Connection conn, String historyLength, Map projects) { Date newPhasesCutoff = null; try { - newPhasesCutoff = new Date(sdf.parse(NEW_PHASES_CUT_OFF).getTime()); + newPhasesCutoff = new Date(SDF.parse(NEW_PHASES_CUT_OFF).getTime()); } catch (ParseException e1) { System.err.println("Invalid value for constant NEW_PHASES_CUT_OFF, please check it"); return; @@ -163,7 +248,7 @@ public void runAllScores(Connection conn, String historyLength) { Date uiPrototypeCutoff = null; try { - uiPrototypeCutoff = new Date(sdf.parse(UI_PROTOTYPE_CUT_OFF).getTime()); + uiPrototypeCutoff = new Date(SDF.parse(UI_PROTOTYPE_CUT_OFF).getTime()); } catch (ParseException e1) { System.err.println("Invalid value for constant UI_PROTOTYPE_CUT_OFF, please check it"); return; @@ -171,24 +256,43 @@ public void runAllScores(Connection conn, String historyLength) { Date riaBuildCutoff = null; try { - riaBuildCutoff = new Date(sdf.parse(RIA_BUILD_CUT_OFF).getTime()); + riaBuildCutoff = new Date(SDF.parse(RIA_BUILD_CUT_OFF).getTime()); } catch (ParseException e1) { System.err.println("Invalid value for constant RIA_BUILD_CUT_OFF, please check it"); return; } - runScore(conn, historyLength, DESIGN_PHASE_ID); - runScore(conn, historyLength, DEV_PHASE_ID); - runScore(conn, historyLength, ASSEMBLY_PHASE_ID, newPhasesCutoff); - runScore(conn, historyLength, ARCHITECTURE_PHASE_ID, newPhasesCutoff); - runScore(conn, historyLength, SPECIFICATION_PHASE_ID, newPhasesCutoff); - runScore(conn, historyLength, CONCEPTUALIZATION_PHASE_ID, newPhasesCutoff); - runScore(conn, historyLength, TESTING_PHASE_ID, newPhasesCutoff); - runScore(conn, historyLength, TEST_SCENARIOS_PHASE_ID, newPhasesCutoff); - runScore(conn, historyLength, UI_PROTOTYPES_PHASE_ID, uiPrototypeCutoff); - runScore(conn, historyLength, RIA_BUILDS_PHASE_ID, riaBuildCutoff); - runScore(conn, historyLength, CONTENT_CREATION_PHASE_ID, riaBuildCutoff); - runScore(conn, historyLength, REPORTING_PHASE_ID, riaBuildCutoff); + for (Map.Entry entry : projects.entrySet()) { + runScore(conn, historyLength, entry.getKey(), entry.getValue()); + } + // phase ids without cut off + int[] phaseIds1 = new int [] { DESIGN_PHASE_ID, DEV_PHASE_ID } ; + for (int i = 0; i < phaseIds1.length; i++) { + if(!projects.containsKey(phaseIds1[i])) { + runScore(conn, historyLength, phaseIds1[i]); + } + } + + // phase ids with newPhasesCutoff + int[] phaseIds2 = new int [] { ASSEMBLY_PHASE_ID, ARCHITECTURE_PHASE_ID, SPECIFICATION_PHASE_ID, + CONCEPTUALIZATION_PHASE_ID, TESTING_PHASE_ID, TEST_SCENARIOS_PHASE_ID } ; + for (int i = 0; i < phaseIds2.length; i++) { + if(!projects.containsKey(phaseIds2[i])) { + runScore(conn, historyLength, phaseIds2[i], newPhasesCutoff); + } + } + + if (!projects.containsKey(UI_PROTOTYPES_PHASE_ID)) { + runScore(conn, historyLength, UI_PROTOTYPES_PHASE_ID, uiPrototypeCutoff); + } + + // phase ids with riaBuildCutoff + int[] phaseIds3 = new int [] { RIA_BUILDS_PHASE_ID, CONTENT_CREATION_PHASE_ID, REPORTING_PHASE_ID, CODE_PHASE_ID } ; + for (int i = 0; i < phaseIds3.length; i++) { + if(!projects.containsKey(phaseIds3[i])) { + runScore(conn, historyLength, phaseIds3[i], riaBuildCutoff); + } + } } // Run a score without a specific cut off time @@ -203,8 +307,11 @@ private void runScore(Connection conn, String historyLength, int phase) { * @param historyLength the history length * @param phase the phase * @param cutoff the cutoff date + * @since 1.3 */ private void runScore(Connection conn, String historyLength, int phase, Date cutoff) { + System.out.println("Run score for historyLength " + historyLength + " phase " + phase + + " cutoff " + ( cutoff == null ? NULL_CUT_OFF : SDF.format(cutoff))); PreparedStatement ps = null; ResultSet rs = null; @@ -231,7 +338,6 @@ private void runScore(Connection conn, String historyLength, int phase, Date cut "and pp.actual_start_time > ? "; } sqlStr += "order by year, month, day, hour, 1"; - ps = conn.prepareStatement(sqlStr); ps.setInt(1, phase - 111); // Project Category if (cutoff != null) { diff --git a/src/main/com/topcoder/utilities/dwload/TCLoadTCS.java b/src/main/com/topcoder/utilities/dwload/TCLoadTCS.java index 6c4629eb4f6..939b4724397 100755 --- a/src/main/com/topcoder/utilities/dwload/TCLoadTCS.java +++ b/src/main/com/topcoder/utilities/dwload/TCLoadTCS.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004 - 2015 TopCoder Inc., All Rights Reserved. + * Copyright (C) 2004 - 2018 TopCoder Inc., All Rights Reserved. */ package com.topcoder.utilities.dwload; @@ -197,8 +197,12 @@ *
  • Update {#link #doLoadProjectResults} to load the correct results for First2Finish
  • *

    * - * @author rfairfax, pulky, ivern, VolodymyrK, moonli, isv, minhu, Blues, Veve, Veve - * @version 1.4.3 + *

    + * Version 1.4.4 (Topcoder - Support Rating and Reliability Generation For Code Challenges in DWLoad) + *

  • add support for user rating of code challenge
  • + *

    + * @author rfairfax, pulky, ivern, VolodymyrK, moonli, isv, minhu, Blues, Veve, Veve,TCCODER + * @version 1.4.4 */ public class TCLoadTCS extends TCLoad { @@ -211,8 +215,9 @@ public class TCLoadTCS extends TCLoad { /** *

    An int array representing all project categories that are currently being rated. * IF YOU CHANGE THIS LIST, YOU MUST ALSO UPDATE THE getCurrentRatings METHOD!

    + * @since 1.4.4 */ - private static final int[] RATED_CATEGORIES = new int[] {1, 2, 6, 7, 13, 14, 23, 26, 19, 24, 35, 36}; + private static final int[] RATED_CATEGORIES = new int[] {1, 2, 6, 7, 13, 14, 23, 26, 19, 24, 35, 36, 39}; /** * The DR percentage table of the studio contests. @@ -1838,7 +1843,6 @@ public void doLoadProjects() throws Exception { " AND MONTH(project.posting_date) = c.month_numeric " + " AND DAY(project.posting_date) = c.day_of_month) " + "WHERE complete_date IS NOT NULL AND tc_direct_project_id > 0 AND posting_date IS NOT NULL"; - select = prepareStatement(SELECT, SOURCE_DB); select.setTimestamp(1, fLastLogTime); select.setTimestamp(2, fLastLogTime); @@ -4827,6 +4831,7 @@ public void doLoadUserEvent() throws Exception { * * @return List containing CoderRating objects * @throws Exception if something goes wrong when querying + * @since 1.4.4 */ private List getCurrentRatings() throws Exception { StringBuffer query; @@ -4877,6 +4882,10 @@ private List getCurrentRatings() throws Exception { query.append(" , case"); query.append(" when ur.phase_id = 147 and exists (select '1' from active_reporting_competitors arep where arep.user_id = ur.user_id)"); query.append(" then 1 else 0 end as active_rep"); + query.append(" , case"); + // use raw sql instead of view here + query.append(" when ur.phase_id = 150 and exists (select '1' from user_rating x0,project x1 where x0.last_rated_project_id = x1.project_id and x1.phase_id = x0.phase_id and x0.phase_id = 150 and x1.posting_date > (CURRENT YEAR TO fraction(3) - interval( 180) DAY(9) TO DAY) and x0.user_id = ur.user_id)"); + query.append(" then 1 else 0 end as active_code"); query.append(" , cs.school_id"); query.append(" , c.coder_type_id"); query.append(" , c.comp_country_code"); @@ -4886,7 +4895,6 @@ private List getCurrentRatings() throws Exception { query.append(" where ur.user_id = cs.coder_id"); query.append(" and ur.user_id = c.coder_id"); query.append(" and c.status = 'A'"); - psSel = prepareStatement(query.toString(), TARGET_DB); rs = psSel.executeQuery(); @@ -4930,6 +4938,9 @@ private List getCurrentRatings() throws Exception { } else if (rs.getInt("phase_id") == 147) { ret.add(new CoderRating(rs.getLong("user_id"), rs.getInt("rating"), rs.getInt("active_rep") == 1, rs.getInt("phase_id"), rs.getString("comp_country_code"))); + } else if (rs.getInt("phase_id") == 150) { + ret.add(new CoderRating(rs.getLong("user_id"), rs.getInt("rating"), + rs.getInt("active_code") == 1, rs.getInt("phase_id"), rs.getString("comp_country_code"))); } } else { //students @@ -4969,6 +4980,9 @@ private List getCurrentRatings() throws Exception { } else if (rs.getInt("phase_id") == 147) { ret.add(new CoderRating(rs.getLong("user_id"), rs.getInt("rating"), rs.getLong("school_id"), rs.getInt("active_rep") == 1, rs.getInt("phase_id"), rs.getString("comp_country_code"))); + } else if (rs.getInt("phase_id") == 150) { + ret.add(new CoderRating(rs.getLong("user_id"), rs.getInt("rating"), rs.getLong("school_id"), + rs.getInt("active_code") == 1, rs.getInt("phase_id"), rs.getString("comp_country_code"))); } } } diff --git a/src/main/com/topcoder/utilities/pacts/PayReliabilityBonus.java b/src/main/com/topcoder/utilities/pacts/PayReliabilityBonus.java index 00d038c8d97..668e83564ba 100644 --- a/src/main/com/topcoder/utilities/pacts/PayReliabilityBonus.java +++ b/src/main/com/topcoder/utilities/pacts/PayReliabilityBonus.java @@ -1,3 +1,6 @@ +/* + * Copyright (C) 2004 - 2018 TopCoder Inc., All Rights Reserved. + */ package com.topcoder.utilities.pacts; @@ -18,10 +21,15 @@ /** * Checks the component payments that don't have reliability bonus payment and create their payments. - * - * - * @author cucu, DixonD - * @version 1.0 + * + *

    + * Version 1.1 Change notes(Topcoder - Support Rating and Reliability Generation For Code Challenges in DWLoad): + *

      + *
    1. Added support for code challenge.
    2. + *
    + *

    + * @author cucu, DixonD,TCCODER + * @version 1.1 */ public class PayReliabilityBonus extends DBUtility { @@ -30,6 +38,11 @@ public class PayReliabilityBonus extends DBUtility { */ private String onlyAnalyze = null; + /** + * Run utility. + * @throws Exception throws if error happens + * @ since 1.1 + */ protected void runUtility() throws Exception { PactsClientServices ejb = (PactsClientServices) createEJB(); @@ -60,7 +73,7 @@ protected void runUtility() throws Exception { query.append("AND pr.project_id = pro.project_id "); query.append("AND reliability_on_registration >= 0.8 "); query.append("AND pd.payment_type_id = " + PactsConstants.CONTEST_PAYMENT + " "); - query.append("AND pro.project_category_id in (1, 2, 6, 7, 13, 14, 19, 23, 24, 26, 35, 36) "); + query.append("AND pro.project_category_id in (1, 2, 6, 7, 13, 14, 19, 23, 24, 26, 35, 36,39) "); query.append("AND pro.project_id not in (select project_id from tcs_catalog:project_info where project_info_type_id=45 and (value='false' or value='False')) "); // The following line is not to pay the old projects posted before we did the change to the reliability calculation logic on Dec 2010 From 9f49a2a23a15d315859cfd76ab1d590800fd0bfd Mon Sep 17 00:00:00 2001 From: skyhit Date: Thu, 31 Jan 2019 01:40:23 +0000 Subject: [PATCH 2/2] add source and target --- build_data_loader.xml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/build_data_loader.xml b/build_data_loader.xml index 7a4597eac00..887ff9bc3e2 100644 --- a/build_data_loader.xml +++ b/build_data_loader.xml @@ -82,7 +82,10 @@ excludes="${packagedir}/**/SiteCrawler.java,${packagedir}/dwload/cloudspokes/**/*.java,${packagedir}/**/ProcessJiraPayments.java" debug="true" nowarn="true" - verbose="${verbose}"> + verbose="${verbose}" + source="1.5" + target="1.5" + >