- Timestamp:
- Feb 27, 2020, 12:44:56 PM (6 years ago)
- Location:
- trunk/ippTools
- Files:
-
- 7 edited
- 2 copied
-
. (modified) (1 prop)
-
share (modified) (1 prop)
-
share/Makefile.am (modified) (1 diff)
-
share/stacktool_addexternal.sql (copied) (copied from branches/eam_branches/ippTools.20200226/share/stacktool_addexternal.sql )
-
share/stacktool_insertexternal_link.sql (copied) (copied from branches/eam_branches/ippTools.20200226/share/stacktool_insertexternal_link.sql )
-
src (modified) (1 prop)
-
src/stacktool.c (modified) (3 diffs)
-
src/stacktool.h (modified) (1 diff)
-
src/stacktoolConfig.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ippTools
-
Property svn:mergeinfo
set to
/branches/eam_branches/ippTools.20200226 merged eligible
-
Property svn:mergeinfo
set to
-
trunk/ippTools/share
- Property svn:mergeinfo changed
/branches/eam_branches/ippTools.20200226/share (added) merged: 41294-41295
- Property svn:mergeinfo changed
-
trunk/ippTools/share/Makefile.am
r40109 r41297 426 426 stacktool_revertsummary.sql \ 427 427 stacktool_summary.sql \ 428 stacktool_addexternal.sql \ 429 stacktool_insertexternal_link.sql \ 428 430 staticskytool_definebyquery_select.sql \ 429 431 staticskytool_definebyquery_select_by_dg.sql \ -
trunk/ippTools/src
- Property svn:mergeinfo changed
/branches/eam_branches/ippTools.20200226/src (added) merged: 41294-41295
- Property svn:mergeinfo changed
-
trunk/ippTools/src/stacktool.c
r41145 r41297 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 PS_ASSERT_PTR_NON_NULL(config, NULL); 2152 2153 PXOPT_LOOKUP_STR(infile, config->args, "-infile", true, false); 2154 PXOPT_LOOKUP_S64(ext_camera_id, config->args, "-ext_camera_id", true, false); 2155 2156 // optionally let the user change the filter: 2157 PXOPT_LOOKUP_STR(new_filter, config->args, "-set_filter", false, false); 2158 2159 psMetadata *input = psMetadataConfigRead (NULL, &nFail, infile, false); 2160 2161 // XXX for TEST: psMetadataPrint (stderr, input, 1); 2162 2163 psMetadataItem *itemRun = psMetadataLookup (input, "stackRun"); 2164 psAssert (itemRun, "entry not in input?"); 2165 psAssert (itemRun->type == PS_DATA_METADATA_MULTI, "entry not multi?"); 2166 2167 psMetadataItem *entry = psListGet (itemRun->data.list, 0); 2168 assert (entry); 2169 assert (entry->type == PS_DATA_METADATA); 2170 2171 // grab the data for the stackRun & format as stackRunRow: 2172 stackRunRow *stackRun = stackRunObjectFromMetadata (entry->data.md); 2173 2174 // save the original stack_id and insert with stack_id = 0 to force a 2175 // new iD. we then need to retrieve that ID and use it below 2176 // the new stackRun should 2177 2178 psS64 ext_stack_id = stackRun->stack_id; 2179 stackRun->stack_id = 0; 2180 2181 // update filter as well.. 2182 if (new_filter) { 2183 stackRun->filter = psMemIncrRefCounter(new_filter); 2184 } 2185 2186 // start the transaction so we can ensure stackRun, stackSumSkyfile, stackExternalStack table entries are consistent 2187 if (!psDBTransaction(config->dbh)) { 2188 psError(PS_ERR_UNKNOWN, false, "database error"); 2189 return false; 2190 } 2191 2192 // now insert the new stackRun object: 2193 stackRunInsertObject (config->dbh, stackRun); 2194 2195 // get the new stack_id 2196 psS64 stack_id = psDBLastInsertID(config->dbh); 2197 2198 // add an entry in the stackExternalStack table: 2199 psString query = pxDataGet("stacktool_insertexternal_link.sql"); 2200 if (!query) { 2201 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 2202 return false; 2203 } 2204 2205 if (!p_psDBRunQueryF(config->dbh, query, stack_id, ext_stack_id, ext_camera_id)) { 2206 psError(PS_ERR_UNKNOWN,false, "database error"); 2207 return(NULL); 2208 } 2209 2210 // now insert the stackSumSkyfile data 2211 psMetadataItem *itemSum = psMetadataLookup (input, "stackSumSkyfile"); 2212 2213 psAssert (itemSum, "entry not in input?"); 2214 psAssert (itemSum->type == PS_DATA_METADATA_MULTI, "entry not multi?"); 2215 2216 for (int i = 0; i < itemSum->data.list->n; i++) { 2217 entry = psListGet (itemSum->data.list, i); 2218 assert (entry); 2219 assert (entry->type == PS_DATA_METADATA); 2220 stackSumSkyfileRow *stackSumSkyfile = stackSumSkyfileObjectFromMetadata (entry->data.md); 2221 2222 // need to update stack_id 2223 stackSumSkyfile->stack_id = stack_id; 2224 stackSumSkyfileInsertObject (config->dbh, stackSumSkyfile); 2225 2226 // fprintf (stdout, "---- row %d ----\n", i); 2227 // psMetadataPrint (stderr, entry->data.md, 1); 2228 } 2229 2230 if (!psDBCommit(config->dbh)) { 2231 psError(PS_ERR_UNKNOWN, false, "database error"); 2232 return false; 2233 } 2234 2235 return true; 2236 } 2237 2238 bool addexternalMode(pxConfig *config) { 2239 2240 PS_ASSERT_PTR_NON_NULL(config, NULL); 2241 2242 PXOPT_LOOKUP_STR(ext_camera, config->args, "-ext_camera", true, false); 2243 2244 psString query = pxDataGet("stacktool_addexternal.sql"); 2245 if (!query) { 2246 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 2247 return false; 2248 } 2249 2250 psStringSubstitute(&query, ext_camera, "@EXT_CAMERA@"); 2251 2252 if (!psDBTransaction(config->dbh)) { 2253 psError(PS_ERR_UNKNOWN, false, "database error"); 2254 return false; 2255 } 2256 2257 if (!p_psDBRunQuery(config->dbh, query)) { 2258 psError(PS_ERR_UNKNOWN,false, "database error"); 2259 return(NULL); 2260 } 2261 2262 int ext_camera_id = psDBLastInsertID(config->dbh); 2263 psLogMsg("stacktool", PS_LOG_INFO, "Added new external camera %s (ID = %d)", ext_camera, ext_camera_id); 2264 2265 if (!psDBCommit(config->dbh)) { 2266 psError(PS_ERR_UNKNOWN, false, "database error"); 2267 return false; 2268 } 2269 2270 return true; 2271 } -
trunk/ippTools/src/stacktool.h
r37384 r41297 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 -
trunk/ippTools/src/stacktoolConfig.c
r41145 r41297 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 psMetadataAddS64(importexternalArgs, PS_LIST_TAIL, "-ext_camera_id", 0, "external stacks come from this camera (required)", 0); 341 psMetadataAddStr(importexternalArgs, PS_LIST_TAIL, "-set_filter", 0, "replace the filter names with this value", NULL); 342 343 // -addexternalcamera 344 psMetadata *addexternalArgs = psMetadataAlloc(); 345 psMetadataAddStr(addexternalArgs, PS_LIST_TAIL, "-ext_camera", 0, "external camera which can supply stacks (required)", NULL); 337 346 338 347 psFree(now); … … 368 377 PXOPT_ADD_MODE("-importrun", "import run from metadata file", STACKTOOL_MODE_IMPORTRUN, importrunArgs); 369 378 379 PXOPT_ADD_MODE("-importexternal", "import stacks from external camera from metadata file", STACKTOOL_MODE_IMPORTEXTERNAL, importexternalArgs); 380 PXOPT_ADD_MODE("-addexternal", "add external camera which can supply stacks", STACKTOOL_MODE_ADDEXTERNAL, addexternalArgs); 381 370 382 if (!pxGetOptions(stderr, argc, argv, config, modes, argSets)) { 371 383 psError(PS_ERR_UNKNOWN, true, "option parsing failed");
Note:
See TracChangeset
for help on using the changeset viewer.
