IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 41295


Ignore:
Timestamp:
Feb 27, 2020, 12:35:07 PM (6 years ago)
Author:
eugene
Message:

stacktool -addexternal and -importexternal are now working

Location:
branches/eam_branches/ippTools.20200226
Files:
1 added
4 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/ippTools.20200226/share/Makefile.am

    r40109 r41295  
    426426        stacktool_revertsummary.sql \
    427427        stacktool_summary.sql \
     428        stacktool_addexternal.sql \
     429        stacktool_insertexternal_link.sql \
    428430        staticskytool_definebyquery_select.sql \
    429431        staticskytool_definebyquery_select_by_dg.sql \
  • branches/eam_branches/ippTools.20200226/share/stacktool_addexternal.sql

    r41294 r41295  
    11
    2 INSERT into stackExtCamera
    3  (ext_camera_id, ext_camera_name) = (0, '@EXT_CAMERA@')
     2INSERT INTO stackExternalCamera
     3 (ext_camera_id, ext_camera) VALUES (0, '@EXT_CAMERA@')
  • branches/eam_branches/ippTools.20200226/src/stacktool.c

    r41294 r41295  
    21492149    unsigned int nFail;
    21502150
    2151     int numImportTables = 2;
    2152 
    2153     char tables[2] [80] = {"stackInputSkyfile", "stackSumSkyfile"};
    2154 
    21552151    PS_ASSERT_PTR_NON_NULL(config, NULL);
    21562152
    21572153    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);
    21582158
    21592159    psMetadata *input = psMetadataConfigRead (NULL, &nFail, infile, false);
    21602160
    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);
     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);
    21762168    assert (entry);
    21772169    assert (entry->type == PS_DATA_METADATA);
     2170
     2171    // grab the data for the stackRun & format as stackRunRow:
    21782172    stackRunRow *stackRun = stackRunObjectFromMetadata (entry->data.md);
    21792173
     
    21862180
    21872181    // update filter as well..
    2188     // stackRun->filter = new_filter;
    2189 
     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
    21902187    if (!psDBTransaction(config->dbh)) {
    21912188        psError(PS_ERR_UNKNOWN, false, "database error");
    2192         psFree(where);
    21932189        return false;
    21942190    }
    21952191
     2192    // now insert the new stackRun object:
    21962193    stackRunInsertObject (config->dbh, stackRun);
    21972194
     
    21992196    psS64 stack_id = psDBLastInsertID(config->dbh);
    22002197
    2201     if (!psDBCommit(config->dbh)) {
    2202         psError(PS_ERR_UNKNOWN, false, "database error");
    2203         psFree(list);
     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");
    22042202        return false;
    22052203    }
    22062204
    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);
     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);
    22142218        assert (entry);
    22152219        assert (entry->type == PS_DATA_METADATA);
     
    22222226        // fprintf (stdout, "---- row %d ----\n", i);
    22232227        // psMetadataPrint (stderr, entry->data.md, 1);
     2228    }
     2229
     2230    if (!psDBCommit(config->dbh)) {
     2231        psError(PS_ERR_UNKNOWN, false, "database error");
     2232        return false;
    22242233    }
    22252234
     
    22432252    if (!psDBTransaction(config->dbh)) {
    22442253        psError(PS_ERR_UNKNOWN, false, "database error");
    2245         psFree(where);
    22462254        return false;
    22472255    }
     
    22492257    if (!p_psDBRunQuery(config->dbh, query)) {
    22502258        psError(PS_ERR_UNKNOWN,false, "database error");
    2251         psFree(select);
    22522259        return(NULL);
    22532260    }
     
    22582265    if (!psDBCommit(config->dbh)) {
    22592266        psError(PS_ERR_UNKNOWN, false, "database error");
    2260         psFree(list);
    22612267        return false;
    22622268    }
  • branches/eam_branches/ippTools.20200226/src/stacktoolConfig.c

    r41294 r41295  
    338338    psMetadata *importexternalArgs = psMetadataAlloc();
    339339    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);
     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);
    341342
    342343    // -addexternalcamera
Note: See TracChangeset for help on using the changeset viewer.