Changeset 41294
- Timestamp:
- Feb 26, 2020, 6:00:56 PM (6 years ago)
- Location:
- branches/eam_branches/ippTools.20200226
- Files:
-
- 1 added
- 3 edited
-
share/stacktool_addexternal.sql (added)
-
src/stacktool.c (modified) (3 diffs)
-
src/stacktool.h (modified) (1 diff)
-
src/stacktoolConfig.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/ippTools.20200226/src/stacktool.c
r41145 r41294 53 53 static bool exportrunMode(pxConfig *config); 54 54 static bool importrunMode(pxConfig *config); 55 static bool importexternalMode(pxConfig *config); 56 static bool addexternalMode(pxConfig *config); 55 57 56 58 static bool setstackRunState(pxConfig *config, psS64 stack_id, const char *state); … … 96 98 MODECASE(STACKTOOL_MODE_EXPORTRUN, exportrunMode); 97 99 MODECASE(STACKTOOL_MODE_IMPORTRUN, importrunMode); 100 MODECASE(STACKTOOL_MODE_IMPORTEXTERNAL, importexternalMode); 101 MODECASE(STACKTOOL_MODE_ADDEXTERNAL, addexternalMode); 98 102 default: 99 103 psAbort("invalid option (this should not happen)"); … … 2138 2142 return true; 2139 2143 } 2144 2145 // in this mode, the supplied stacks are inserted into the db and the 2146 // StackExternalStack table is updated with the IDs of the inserted stack 2147 bool importexternalMode(pxConfig *config) 2148 { 2149 unsigned int nFail; 2150 2151 int numImportTables = 2; 2152 2153 char tables[2] [80] = {"stackInputSkyfile", "stackSumSkyfile"}; 2154 2155 PS_ASSERT_PTR_NON_NULL(config, NULL); 2156 2157 PXOPT_LOOKUP_STR(infile, config->args, "-infile", true, false); 2158 2159 psMetadata *input = psMetadataConfigRead (NULL, &nFail, infile, false); 2160 2161 #ifdef notdef 2162 fprintf (stderr, "---- input ----\n"); 2163 psMetadataPrint (stderr, input, 1); 2164 #endif 2165 2166 // XXX do we need to do this? 2167 if (!pxCheckImportVersion(config, input)) { 2168 psError(PS_ERR_UNKNOWN, false, "pxCheckImportVersion failed"); 2169 return false; 2170 } 2171 psMetadataItem *item = psMetadataLookup (input, "stackRun"); 2172 psAssert (item, "entry not in input?"); 2173 psAssert (item->type == PS_DATA_METADATA_MULTI, "entry not multi?"); 2174 2175 psMetadataItem *entry = psListGet (item->data.list, 0); 2176 assert (entry); 2177 assert (entry->type == PS_DATA_METADATA); 2178 stackRunRow *stackRun = stackRunObjectFromMetadata (entry->data.md); 2179 2180 // save the original stack_id and insert with stack_id = 0 to force a 2181 // new iD. we then need to retrieve that ID and use it below 2182 // the new stackRun should 2183 2184 psS64 ext_stack_id = stackRun->stack_id; 2185 stackRun->stack_id = 0; 2186 2187 // update filter as well.. 2188 // stackRun->filter = new_filter; 2189 2190 if (!psDBTransaction(config->dbh)) { 2191 psError(PS_ERR_UNKNOWN, false, "database error"); 2192 psFree(where); 2193 return false; 2194 } 2195 2196 stackRunInsertObject (config->dbh, stackRun); 2197 2198 // get the new stack_id 2199 psS64 stack_id = psDBLastInsertID(config->dbh); 2200 2201 if (!psDBCommit(config->dbh)) { 2202 psError(PS_ERR_UNKNOWN, false, "database error"); 2203 psFree(list); 2204 return false; 2205 } 2206 2207 psMetadataItem *item = psMetadataLookup (input, "stackSumSkyfile"); 2208 2209 psAssert (item, "entry not in input?"); 2210 psAssert (item->type == PS_DATA_METADATA_MULTI, "entry not multi?"); 2211 2212 for (int i = 0; i < item->data.list->n; i++) { 2213 entry = psListGet (item->data.list, i); 2214 assert (entry); 2215 assert (entry->type == PS_DATA_METADATA); 2216 stackSumSkyfileRow *stackSumSkyfile = stackSumSkyfileObjectFromMetadata (entry->data.md); 2217 2218 // need to update stack_id 2219 stackSumSkyfile->stack_id = stack_id; 2220 stackSumSkyfileInsertObject (config->dbh, stackSumSkyfile); 2221 2222 // fprintf (stdout, "---- row %d ----\n", i); 2223 // psMetadataPrint (stderr, entry->data.md, 1); 2224 } 2225 2226 return true; 2227 } 2228 2229 bool addexternalMode(pxConfig *config) { 2230 2231 PS_ASSERT_PTR_NON_NULL(config, NULL); 2232 2233 PXOPT_LOOKUP_STR(ext_camera, config->args, "-ext_camera", true, false); 2234 2235 psString query = pxDataGet("stacktool_addexternal.sql"); 2236 if (!query) { 2237 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 2238 return false; 2239 } 2240 2241 psStringSubstitute(&query, ext_camera, "@EXT_CAMERA@"); 2242 2243 if (!psDBTransaction(config->dbh)) { 2244 psError(PS_ERR_UNKNOWN, false, "database error"); 2245 psFree(where); 2246 return false; 2247 } 2248 2249 if (!p_psDBRunQuery(config->dbh, query)) { 2250 psError(PS_ERR_UNKNOWN,false, "database error"); 2251 psFree(select); 2252 return(NULL); 2253 } 2254 2255 int ext_camera_id = psDBLastInsertID(config->dbh); 2256 psLogMsg("stacktool", PS_LOG_INFO, "Added new external camera %s (ID = %d)", ext_camera, ext_camera_id); 2257 2258 if (!psDBCommit(config->dbh)) { 2259 psError(PS_ERR_UNKNOWN, false, "database error"); 2260 psFree(list); 2261 return false; 2262 } 2263 2264 return true; 2265 } -
branches/eam_branches/ippTools.20200226/src/stacktool.h
r37384 r41294 46 46 STACKTOOL_MODE_UPDATESUMSKYFILE, 47 47 STACKTOOL_MODE_EXPORTRUN, 48 STACKTOOL_MODE_IMPORTRUN 48 STACKTOOL_MODE_IMPORTRUN, 49 STACKTOOL_MODE_IMPORTEXTERNAL, 50 STACKTOOL_MODE_ADDEXTERNAL 49 51 } stacktoolMode; 50 52 -
branches/eam_branches/ippTools.20200226/src/stacktoolConfig.c
r41145 r41294 335 335 psMetadataAddStr(importrunArgs, PS_LIST_TAIL, "-infile", 0, "import from this file (required)", NULL); 336 336 337 // -importexternal 338 psMetadata *importexternalArgs = psMetadataAlloc(); 339 psMetadataAddStr(importexternalArgs, PS_LIST_TAIL, "-infile", 0, "import from this file (required)", NULL); 340 psMetadataAddStr(importexternalArgs, PS_LIST_TAIL, "-ext_camera", 0, "external stacks come from this camera (required)", NULL); 341 342 // -addexternalcamera 343 psMetadata *addexternalArgs = psMetadataAlloc(); 344 psMetadataAddStr(addexternalArgs, PS_LIST_TAIL, "-ext_camera", 0, "external camera which can supply stacks (required)", NULL); 337 345 338 346 psFree(now); … … 368 376 PXOPT_ADD_MODE("-importrun", "import run from metadata file", STACKTOOL_MODE_IMPORTRUN, importrunArgs); 369 377 378 PXOPT_ADD_MODE("-importexternal", "import stacks from external camera from metadata file", STACKTOOL_MODE_IMPORTEXTERNAL, importexternalArgs); 379 PXOPT_ADD_MODE("-addexternal", "add external camera which can supply stacks", STACKTOOL_MODE_ADDEXTERNAL, addexternalArgs); 380 370 381 if (!pxGetOptions(stderr, argc, argv, config, modes, argSets)) { 371 382 psError(PS_ERR_UNKNOWN, true, "option parsing failed");
Note:
See TracChangeset
for help on using the changeset viewer.
