Changeset 23310 for trunk/ippTools/src/flatcorr.c
- Timestamp:
- Mar 12, 2009, 3:42:47 PM (17 years ago)
- File:
-
- 1 edited
-
trunk/ippTools/src/flatcorr.c (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ippTools/src/flatcorr.c
r21402 r23310 46 46 static bool inputexpMode(pxConfig *config); 47 47 static bool inputimfileMode(pxConfig *config); 48 static bool exportrunMode(pxConfig *config); 49 static bool importrunMode(pxConfig *config); 48 50 49 51 static bool setflatcorrRunState(pxConfig *config, psS64 corr_id, const char *state); … … 78 80 MODECASE(FLATCORR_MODE_INPUTEXP, inputexpMode); 79 81 MODECASE(FLATCORR_MODE_INPUTIMFILE, inputimfileMode); 82 MODECASE(FLATCORR_MODE_EXPORTRUN, exportrunMode); 83 MODECASE(FLATCORR_MODE_IMPORTRUN, importrunMode); 80 84 default: 81 85 psAbort("invalid option (this should not happen)"); … … 734 738 return true; 735 739 } 740 741 bool exportrunMode(pxConfig *config) 742 { 743 typedef struct ExportTable { 744 char tableName[80]; 745 char sqlFilename[80]; 746 } ExportTable; 747 748 int numExportTables = 3; 749 750 PS_ASSERT_PTR_NON_NULL(config, NULL); 751 752 PXOPT_LOOKUP_S64(det_id, config->args, "-corr_id", true, false); 753 PXOPT_LOOKUP_STR(outfile, config->args, "-outfile", true, false); 754 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 755 756 FILE *f = fopen (outfile, "w"); 757 if (f == NULL) { 758 psError(PS_ERR_UNKNOWN, false, "failed to open output file"); 759 return false; 760 } 761 762 psMetadata *where = psMetadataAlloc(); 763 PXOPT_COPY_S64(config->args, where, "-coor_id", "corr_id", "=="); 764 765 ExportTable tables [] = { 766 {"flatcorrRun", "flatcorrtool_export_run.sql"}, 767 {"flatcorrCamLink", "flatcorrtool_export_cam_link.sql"}, 768 {"flatcorrChipLink", "flatcorr_export_chip_link.sql"}, 769 }; 770 771 for (int i=0; i < numExportTables; i++) { 772 psString query = pxDataGet(tables[i].sqlFilename); 773 if (!query) { 774 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 775 return false; 776 } 777 778 if (where && psListLength(where->list)) { 779 psString whereClause = psDBGenerateWhereSQL(where, NULL); 780 psStringAppend(&query, " %s", whereClause); 781 psFree(whereClause); 782 } 783 784 // treat limit == 0 as "no limit" 785 if (limit) { 786 psString limitString = psDBGenerateLimitSQL(limit); 787 psStringAppend(&query, " %s", limitString); 788 psFree(limitString); 789 } 790 791 if (!p_psDBRunQuery(config->dbh, query)) { 792 psError(PS_ERR_UNKNOWN, false, "database error"); 793 psFree(query); 794 return false; 795 } 796 psFree(query); 797 798 psArray *output = p_psDBFetchResult(config->dbh); 799 if (!output) { 800 psError(PS_ERR_UNKNOWN, false, "database error"); 801 return false; 802 } 803 if (!psArrayLength(output)) { 804 psTrace("regtool", PS_LOG_INFO, "no rows found"); 805 psFree(output); 806 return true; 807 } 808 809 // we must write the export table in non-simple (true) format 810 if (!ippdbPrintMetadatas(f, output, tables[i].tableName, true)) { 811 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 812 psFree(output); 813 return false; 814 } 815 psFree(output); 816 } 817 818 fclose (f); 819 820 return true; 821 } 822 823 bool importrunMode(pxConfig *config) 824 { 825 unsigned int nFail; 826 psMetadataItem *item, *entry; 827 828 int numImportTables = 3; 829 830 char tables[3] [80] = {"flatcorrRun", "flatcorrCamLink", "flatcorrChipLink"}; 831 832 PS_ASSERT_PTR_NON_NULL(config, NULL); 833 834 PXOPT_LOOKUP_STR(infile, config->args, "-infile", true, false); 835 836 psMetadata *input = psMetadataConfigRead (NULL, &nFail, infile, false); 837 838 fprintf (stdout, "---- input ----\n"); 839 psMetadataPrint (stderr, input, 1); 840 841 for (int i = 0; i < numImportTables; i++) { 842 item = psMetadataLookup (input, tables[i]); 843 psAssert (item, "entry not in input?"); 844 psAssert (item->type == PS_DATA_METADATA_MULTI, "entry not multi?"); 845 846 entry = psListGet (item->data.list, 0); 847 assert (entry); 848 assert (entry->type == PS_DATA_METADATA); 849 850 switch (i) { 851 case 0: 852 { 853 flatcorrRunRow *flatcorrRun = flatcorrRunObjectFromMetadata (entry->data.md); 854 flatcorrRunInsertObject (config->dbh, flatcorrRun); 855 856 // fprintf (stdout, "---- flatcorr run ----\n"); 857 // psMetadataPrint (stderr, entry->data.md, 1); 858 break; 859 } 860 case 1: 861 { 862 flatcorrCamLinkRow *flatcorrCamLink = flatcorrCamLinkObjectFromMetadata (entry->data.md); 863 flatcorrCamLinkInsertObject (config->dbh, flatcorrCamLink); 864 865 // fprintf (stdout, "---- flatcorr cam link ----\n"); 866 // psMetadataPrint (stderr, entry->data.md, 1); 867 break; 868 } 869 case 2: 870 { 871 flatcorrChipLinkRow *flatcorrChipLink = flatcorrChipLinkObjectFromMetadata (entry->data.md); 872 flatcorrChipLinkInsertObject (config->dbh, flatcorrChipLink); 873 874 // fprintf (stdout, "---- flatcorr chip link ----\n"); 875 // psMetadataPrint (stderr, entry->data.md, 1); 876 break; 877 } 878 } 879 } 880 return true; 881 }
Note:
See TracChangeset
for help on using the changeset viewer.
