- Timestamp:
- Aug 12, 2014, 3:55:38 PM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/ipp-20140717/ippTools/src/releasetool.c
r37075 r37242 44 44 static bool updaterelexpMode(pxConfig *config); 45 45 static bool listrelexpMode(pxConfig *config); 46 static bool deleterelexpMode(pxConfig *config); 46 47 static bool definerelstackMode(pxConfig *config); 47 48 static bool updaterelstackMode(pxConfig *config); 49 static bool setrelstackcalibratedfromskycalMode(pxConfig *config); 48 50 static bool listrelstackMode(pxConfig *config); 51 static bool deleterelstackMode(pxConfig *config); 49 52 static bool summaryMode(pxConfig *config); 50 53 static bool definerelgroupMode(pxConfig *config); … … 81 84 MODECASE(RELEASETOOL_MODE_UPDATERELEXP, updaterelexpMode); 82 85 MODECASE(RELEASETOOL_MODE_LISTRELEXP, listrelexpMode); 86 MODECASE(RELEASETOOL_MODE_DELETERELEXP, deleterelexpMode); 83 87 84 88 MODECASE(RELEASETOOL_MODE_DEFINERELSTACK, definerelstackMode); 85 89 MODECASE(RELEASETOOL_MODE_UPDATERELSTACK, updaterelstackMode); 90 MODECASE(RELEASETOOL_MODE_SETRELSTACKCALIBRATEDFROMSKYCAL, setrelstackcalibratedfromskycalMode); 86 91 MODECASE(RELEASETOOL_MODE_LISTRELSTACK, listrelstackMode); 92 MODECASE(RELEASETOOL_MODE_DELETERELSTACK, deleterelstackMode); 87 93 MODECASE(RELEASETOOL_MODE_SUMMARY, summaryMode); 88 94 … … 817 823 818 824 psFree(output); 825 826 return true; 827 } 828 829 static bool deleterelexpMode(pxConfig *config) 830 { 831 PS_ASSERT_PTR_NON_NULL(config, false); 832 833 PXOPT_LOOKUP_S64(relexp_id, config->args, "-relexp_id", false, false); 834 // If relexp_id is supplied that is all that we need 835 if (!relexp_id) { 836 // Otherwise we need to identify the release ... 837 PXOPT_LOOKUP_STR(release_name, config->args, "-release_name", false, false); 838 PXOPT_LOOKUP_S32(rel_id, config->args, "-rel_id", false, false); 839 840 if (!release_name && !rel_id) { 841 psError(PXTOOLS_ERR_CONFIG, true, "at least one of -relexp_id, -release_name, or -rel_id is required\n"); 842 return false; 843 } 844 // ... and the exposure 845 PXOPT_LOOKUP_STR(label, config->args, "-label", false, false); 846 PXOPT_LOOKUP_S64(cam_id, config->args, "-cam_id", false, false); 847 PXOPT_LOOKUP_S64(exp_id, config->args, "-exp_id", false, false); 848 PXOPT_LOOKUP_STR(exp_name, config->args, "-exp_name", false, false); 849 if (!label && !cam_id && !exp_id && !exp_name) { 850 psError(PXTOOLS_ERR_CONFIG, true, "at least one of -label, -cam_id, -exp_id, -exp_name is required\n"); 851 return false; 852 } 853 } 854 855 psMetadata *where = psMetadataAlloc(); 856 857 PXOPT_COPY_S32(config->args, where, "-relexp_id", "relExp.relexp_id", "=="); 858 PXOPT_COPY_STR(config->args, where, "-label", "camRun.label", "=="); 859 PXOPT_COPY_S64(config->args, where, "-cam_id", "relExp.cam_id", "=="); 860 PXOPT_COPY_S64(config->args, where, "-exp_id", "relExp.exp_id", "=="); 861 PXOPT_COPY_STR(config->args, where, "-exp_name", "rawExp.exp_name", "=="); 862 863 PXOPT_COPY_S32(config->args, where, "-rel_id", "relExp.rel_id", "=="); 864 PXOPT_COPY_STR(config->args, where, "-release_name", "ippRelease.release_name", "=="); 865 866 psString query = pxDataGet("releasetool_deleterelexp.sql"); 867 868 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 869 psStringAppend(&query, "\n AND %s", whereClause); 870 psFree(whereClause); 871 872 if (!p_psDBRunQuery(config->dbh, query)) { 873 psError(PS_ERR_UNKNOWN, false, "database error"); 874 psFree(query); 875 return false; 876 } 877 878 psU64 affected = psDBAffectedRows(config->dbh); 879 psLogMsg("releasetool", PS_LOG_INFO, "Deleted %" PRIu64 " relExp rows", affected); 880 881 882 psFree(query); 819 883 820 884 return true; … … 1028 1092 return false; 1029 1093 } 1094 static bool setrelstackcalibratedfromskycalMode(pxConfig *config) 1095 { 1096 PS_ASSERT_PTR_NON_NULL(config, NULL); 1097 1098 psMetadata *where = psMetadataAlloc(); 1099 1100 PXOPT_COPY_STR(config->args, where, "-skycal_label", "skycalRun.label", "=="); 1101 PXOPT_COPY_STR(config->args, where, "-skycal_data_group", "skycalRun.data_group", "LIKE"); 1102 PXOPT_COPY_S64(config->args, where, "-skycal_id", "skycalRun.skycal_id", "=="); 1103 if (!psListLength(where->list)) { 1104 psError(PXTOOLS_ERR_CONFIG, false, "at least one of -skycal_label, -skycal_data_group, or -skycal_id is required"); 1105 return false; 1106 } 1107 1108 PXOPT_COPY_STR(config->args, where, "-tess_id", "stackRun.tess_id", "=="); 1109 PXOPT_COPY_STR(config->args, where, "-skycell_id", "stackRun.skycell_id", "=="); 1110 pxskycellAddWhere(config, where); 1111 1112 // insure that at least one of these is supplied to select the release 1113 PXOPT_LOOKUP_S64(rel_id, config->args, "-rel_id", false, false); 1114 PXOPT_LOOKUP_STR(release_name, config->args, "-release_name", false, false); 1115 if (!rel_id && !release_name) { 1116 psError(PXTOOLS_ERR_CONFIG, true, "either -rel_id or -release_name is required"); 1117 return false; 1118 } 1119 1120 // limit query to the target release. (Note: this will select nothing if release_name and rel_id don't match) 1121 // note: we add these after above to insure that search args are supplied 1122 PXOPT_COPY_STR(config->args, where, "-release_name", "ippRelease.release_name", "=="); 1123 PXOPT_COPY_S32(config->args, where, "-rel_id", "ippRelease.rel_id", "=="); 1124 1125 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 1126 PXOPT_LOOKUP_BOOL(replace, config->args, "-replace", false); 1127 1128 psString query = pxDataGet("releasetool_setrelstackcalibratedfromskycal.sql"); 1129 if (!query) { 1130 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1131 psFree(where); 1132 return false; 1133 } 1134 1135 if (replace) { 1136 // don't cut on relStack.state 1137 psStringAppend(&query, "\nWHERE ");; 1138 } else { 1139 // normal path only update rows in state processed 1140 psStringAppend(&query, "\nWHERE relStack.state = 'processed'\nAND ");; 1141 } 1142 1143 // Add in the where conditions 1144 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1145 psStringAppend(&query, "%s", whereClause); 1146 psFree(whereClause); 1147 1148 if (limit) { 1149 psString limitString = psDBGenerateLimitSQL(limit); 1150 psStringAppend(&query, " %s", limitString); 1151 psFree(limitString); 1152 } 1153 1154 if (!p_psDBRunQuery(config->dbh, query)) { 1155 psError(PS_ERR_UNKNOWN, false, "database error"); 1156 psFree(query); 1157 return false; 1158 } 1159 psFree(query); 1160 1161 psU64 affected = psDBAffectedRows(config->dbh); 1162 psLogMsg("releasetool", PS_LOG_INFO, "Updated %" PRIu64 " relStack rows", affected); 1163 1164 return true; 1165 } 1166 1167 static bool deleterelstackMode(pxConfig *config) 1168 { 1169 PS_ASSERT_PTR_NON_NULL(config, false); 1170 1171 PXOPT_LOOKUP_S64(relstack_id, config->args, "-relstack_id", false, false); 1172 // If relexp_id is supplied that is all that we need 1173 if (!relstack_id) { 1174 // Otherwise we need to identify the release ... 1175 PXOPT_LOOKUP_STR(release_name, config->args, "-release_name", false, false); 1176 PXOPT_LOOKUP_S32(rel_id, config->args, "-rel_id", false, false); 1177 1178 if (!release_name && !rel_id) { 1179 psError(PXTOOLS_ERR_CONFIG, true, "at least one of -relstack_id, -release_name, or -rel_id is required\n"); 1180 return false; 1181 } 1182 // ... and the Stack 1183 PXOPT_LOOKUP_STR(label, config->args, "-label", false, false); 1184 PXOPT_LOOKUP_S64(stack_id, config->args, "-stack_id", false, false); 1185 if (!label && !stack_id) { 1186 psError(PXTOOLS_ERR_CONFIG, true, "at least one of -label and -stack_id is required\n"); 1187 return false; 1188 } 1189 } 1190 1191 psMetadata *where = psMetadataAlloc(); 1192 1193 PXOPT_COPY_S32(config->args, where, "-relstack_id", "relStack.relstack_id", "=="); 1194 PXOPT_COPY_STR(config->args, where, "-label", "stackRun.label", "=="); 1195 PXOPT_COPY_S64(config->args, where, "-stack_id", "relStack.stack_id", "=="); 1196 1197 PXOPT_COPY_S32(config->args, where, "-rel_id", "relStack.rel_id", "=="); 1198 PXOPT_COPY_STR(config->args, where, "-release_name", "ippRelease.release_name", "=="); 1199 1200 psString query = pxDataGet("releasetool_deleterelstack.sql"); 1201 1202 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1203 psStringAppend(&query, "\n AND %s", whereClause); 1204 psFree(whereClause); 1205 1206 if (!p_psDBRunQuery(config->dbh, query)) { 1207 psError(PS_ERR_UNKNOWN, false, "database error"); 1208 psFree(query); 1209 return false; 1210 } 1211 1212 psU64 affected = psDBAffectedRows(config->dbh); 1213 psLogMsg("releasetool", PS_LOG_INFO, "Deleted %" PRIu64 " relStack rows", affected); 1214 1215 1216 psFree(query); 1217 1218 return true; 1219 } 1030 1220 1031 1221 static bool listrelstackMode(pxConfig *config) … … 1052 1242 1053 1243 PXOPT_COPY_STR(config->args, where, "-surveyName", "survey.surveyName", "LIKE"); 1054 PXOPT_COPY_S32(config->args, where, "-rel_id", "rel Exp.rel_id", "==");1244 PXOPT_COPY_S32(config->args, where, "-rel_id", "relStack.rel_id", "=="); 1055 1245 pxskycellAddWhere(config, where); 1056 1246
Note:
See TracChangeset
for help on using the changeset viewer.
