Changeset 15415
- Timestamp:
- Oct 29, 2007, 2:08:17 PM (19 years ago)
- Location:
- trunk/ippTools/src
- Files:
-
- 3 edited
-
difftool.c (modified) (3 diffs)
-
difftool.h (modified) (1 diff)
-
difftoolConfig.c (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ippTools/src/difftool.c
r15376 r15415 39 39 static bool diffskyfileMode(pxConfig *config); 40 40 static bool revertdiffskyfileMode(pxConfig *config); 41 static bool definepoprunMode(pxConfig *config); 41 42 42 43 static bool setdiffRunState(pxConfig *config, const char *diff_id, const char *state); … … 62 63 MODECASE(DIFFTOOL_MODE_DEFINERUN, definerunMode); 63 64 MODECASE(DIFFTOOL_MODE_UPDATERUN, updaterunMode); 64 MODECASE(DIFFTOOL_MODE_ADDINPUTSKYFILE, addinputskyfileMode); 65 MODECASE(DIFFTOOL_MODE_INPUTSKYFILE, inputskyfileMode); 66 MODECASE(DIFFTOOL_MODE_TODIFFSKYFILE, todiffskyfileMode); 67 MODECASE(DIFFTOOL_MODE_ADDDIFFSKYFILE, adddiffskyfileMode); 68 MODECASE(DIFFTOOL_MODE_DIFFSKYFILE, diffskyfileMode); 69 MODECASE(DIFFTOOL_MODE_REVERTDIFFSKYFILE, revertdiffskyfileMode); 65 MODECASE(DIFFTOOL_MODE_ADDINPUTSKYFILE, addinputskyfileMode); 66 MODECASE(DIFFTOOL_MODE_INPUTSKYFILE, inputskyfileMode); 67 MODECASE(DIFFTOOL_MODE_TODIFFSKYFILE, todiffskyfileMode); 68 MODECASE(DIFFTOOL_MODE_ADDDIFFSKYFILE, adddiffskyfileMode); 69 MODECASE(DIFFTOOL_MODE_DIFFSKYFILE, diffskyfileMode); 70 MODECASE(DIFFTOOL_MODE_REVERTDIFFSKYFILE, revertdiffskyfileMode); 71 MODECASE(DIFFTOOL_MODE_DEFINEPOPRUN, definepoprunMode); 70 72 default: 71 73 psAbort("invalid option (this should not happen)"); … … 787 789 return true; 788 790 } 791 792 793 794 795 796 static bool definepoprunMode(pxConfig *config) 797 { 798 PS_ASSERT_PTR_NON_NULL(config, false); 799 800 // required options 801 bool status = false; 802 psString workdir = psMetadataLookupStr(&status, config->args, "-workdir"); 803 if (!status) { 804 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -workdir"); 805 return false; 806 } 807 if (!workdir) { 808 psError(PS_ERR_UNKNOWN, true, "-workdir is required"); 809 return false; 810 } 811 812 psString skycell_id = psMetadataLookupStr(&status, config->args, "-skycell_id"); 813 if (!status) { 814 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -skycell_id"); 815 return false; 816 } 817 if (!skycell_id) { 818 psError(PS_ERR_UNKNOWN, true, "-skycell_id is required"); 819 return false; 820 } 821 822 psString tess_id = psMetadataLookupStr(&status, config->args, "-tess_id"); 823 if (!status) { 824 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -tess_id"); 825 return false; 826 } 827 if (!tess_id) { 828 psError(PS_ERR_UNKNOWN, true, "-tess_id is required"); 829 return false; 830 } 831 832 psString template_stack_id = psMetadataLookupStr(&status, config->args, "-template_stack_id"); 833 if (!status) { 834 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -template_stack_id"); 835 return false; 836 } 837 psString template_warp_id = psMetadataLookupStr(&status, config->args, "-template_warp_id"); 838 if (!status) { 839 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -template_warp_id"); 840 return false; 841 } 842 if (template_stack_id && template_warp_id) { 843 psError(PS_ERR_BAD_PARAMETER_VALUE, true, "Only one template can be defined."); 844 return false; 845 } 846 if (!template_stack_id && !template_warp_id) { 847 psError(PS_ERR_BAD_PARAMETER_VALUE, true, 848 "No template has been defined (-template_stack_id or -template_warp_id)"); 849 return false; 850 } 851 852 psString input_stack_id = psMetadataLookupStr(&status, config->args, "-input_stack_id"); 853 if (!status) { 854 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -input_stack_id"); 855 return false; 856 } 857 psString input_warp_id = psMetadataLookupStr(&status, config->args, "-input_warp_id"); 858 if (!status) { 859 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -input_warp_id"); 860 return false; 861 } 862 if (input_stack_id && input_warp_id) { 863 psError(PS_ERR_BAD_PARAMETER_VALUE, true, "Only one input can be defined."); 864 return false; 865 } 866 if (!input_stack_id && !input_warp_id) { 867 psError(PS_ERR_BAD_PARAMETER_VALUE, true, 868 "No input has been defined (-input_stack_id or -input_warp_id)"); 869 return false; 870 } 871 872 psString kind = NULL; 873 874 psTime *registered = NULL; 875 { 876 psString registeredStr = psMetadataLookupStr(&status, config->args, "-registered"); 877 if (!status) { 878 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -registered"); 879 return false; 880 } 881 // pass through NULL as this is an optional field 882 if (registeredStr) { 883 registered = psTimeFromISO(registeredStr, PS_TIME_UTC); 884 } else { 885 registered = NULL; 886 } 887 } 888 889 bool simple = false; 890 { 891 bool status = false; 892 simple = psMetadataLookupBool(&status, config->args, "-simple"); 893 if (!status) { 894 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -simple"); 895 return false; 896 } 897 } 898 899 diffRunRow *run = diffRunRowAlloc( 900 0, // ID 901 "reg", // state 902 workdir, 903 NULL, // dvodb 904 registered, 905 skycell_id, 906 tess_id 907 ); 908 psFree(registered); 909 910 if (!run) { 911 psError(PS_ERR_UNKNOWN, false, "failed to alloc diffRun object"); 912 return true; 913 } 914 915 916 if (!psDBTransaction(config->dbh)) { 917 psError(PS_ERR_UNKNOWN, false, "database error"); 918 return false; 919 } 920 921 if (!diffRunInsertObject(config->dbh, run)) { 922 psError(PS_ERR_UNKNOWN, false, "database error"); 923 psFree(run); 924 return true; 925 } 926 927 // get the assigned diff_id 928 run->diff_id = psDBLastInsertID(config->dbh); 929 930 // Template 931 if (!diffInputSkyfileInsert(config->dbh, 932 run->diff_id, 933 true, 934 template_stack_id ? (psS64)atoll(template_stack_id) : PS_MAX_S64, // defined or NULL 935 template_warp_id ? (psS64)atoll(template_warp_id) : PS_MAX_S64, // defined or NULL 936 skycell_id, 937 tess_id, 938 kind 939 )) { 940 if (!psDBRollback(config->dbh)) { 941 psError(PS_ERR_UNKNOWN, false, "database error"); 942 } 943 psError(PS_ERR_UNKNOWN, false, "database error"); 944 return false; 945 } 946 947 // Input 948 if (!diffInputSkyfileInsert(config->dbh, 949 run->diff_id, 950 false, 951 input_stack_id ? (psS64)atoll(input_stack_id) : PS_MAX_S64, // defined or NULL 952 input_warp_id ? (psS64)atoll(input_warp_id) : PS_MAX_S64, // defined or NULL 953 skycell_id, 954 tess_id, 955 kind 956 )) { 957 if (!psDBRollback(config->dbh)) { 958 psError(PS_ERR_UNKNOWN, false, "database error"); 959 } 960 psError(PS_ERR_UNKNOWN, false, "database error"); 961 return false; 962 } 963 964 char *query = "UPDATE diffRun SET state = 'run' WHERE diff_id = '%" PRId64 "'"; 965 if (!p_psDBRunQuery(config->dbh, query, run->diff_id)) { 966 if (!psDBRollback(config->dbh)) { 967 psError(PS_ERR_UNKNOWN, false, "database error"); 968 } 969 psError(PS_ERR_UNKNOWN, false, 970 "failed to set state to run for diff_id %" PRId64, run->diff_id); 971 return false; 972 } 973 974 // point of no return 975 if (!psDBCommit(config->dbh)) { 976 psError(PS_ERR_UNKNOWN, false, "database error"); 977 return false; 978 } 979 980 if (!diffRunPrintObject(stdout, run, !simple)) { 981 psError(PS_ERR_UNKNOWN, false, "failed to print object"); 982 psFree(run); 983 return false; 984 } 985 986 psFree(run); 987 988 return true; 989 } -
trunk/ippTools/src/difftool.h
r14108 r15415 33 33 DIFFTOOL_MODE_DIFFSKYFILE, 34 34 DIFFTOOL_MODE_REVERTDIFFSKYFILE, 35 DIFFTOOL_MODE_DEFINEPOPRUN, 35 36 } difftoolMode; 36 37 -
trunk/ippTools/src/difftoolConfig.c
r15376 r15415 80 80 "define warp ID", NULL); 81 81 psMetadataAddStr(addinputskyfileArgs, PS_LIST_TAIL, "-stack_id", 0, 82 "define stack ID )", NULL);82 "define stack ID", NULL); 83 83 psMetadataAddStr(addinputskyfileArgs, PS_LIST_TAIL, "-kind", 0, 84 84 "define kind", NULL); … … 151 151 "search by fault code", 0); 152 152 153 // -definepoprun 154 psMetadata *definepoprunArgs = psMetadataAlloc(); 155 psMetadataAddStr(definepoprunArgs, PS_LIST_TAIL, "-workdir", 0, 156 "define workdir (required)", NULL); 157 psMetadataAddStr(definepoprunArgs, PS_LIST_TAIL, "-registered", 0, 158 "time detrend run was registered", now); 159 psMetadataAddStr(definepoprunArgs, PS_LIST_TAIL, "-skycell_id", 0, 160 "define skycell ID (required)", NULL); 161 psMetadataAddStr(definepoprunArgs, PS_LIST_TAIL, "-tess_id", 0, 162 "define tessellation ID (required)", NULL); 163 psMetadataAddBool(definepoprunArgs, PS_LIST_TAIL, "-simple", 0, 164 "use the simple output format", false); 165 psMetadataAddStr(definepoprunArgs, PS_LIST_TAIL, "-template_warp_id", 0, 166 "define warp ID for template", NULL); 167 psMetadataAddStr(definepoprunArgs, PS_LIST_TAIL, "-template_stack_id", 0, 168 "define stack ID for template", NULL); 169 psMetadataAddStr(definepoprunArgs, PS_LIST_TAIL, "-input_warp_id", 0, 170 "define warp ID for input", NULL); 171 psMetadataAddStr(definepoprunArgs, PS_LIST_TAIL, "-input_stack_id", 0, 172 "define stack ID for input", NULL); 173 153 174 psFree(now); 154 175 … … 156 177 psMetadata *modes = psMetadataAlloc(); 157 178 158 PXTOOL_ADD_MODE("-definerun", "", DIFFTOOL_MODE_DEFINERUN, definerunArgs); 159 PXTOOL_ADD_MODE("-updaterun", "", DIFFTOOL_MODE_UPDATERUN, updaterunArgs); 160 PXTOOL_ADD_MODE("-addinputskyfile", "", DIFFTOOL_MODE_ADDINPUTSKYFILE, addinputskyfileArgs); 161 PXTOOL_ADD_MODE("-inputskyfile", "", DIFFTOOL_MODE_INPUTSKYFILE, inputskyfileArgs); 162 PXTOOL_ADD_MODE("-todiffskyfile", "", DIFFTOOL_MODE_TODIFFSKYFILE, todiffskyfileArgs); 163 PXTOOL_ADD_MODE("-adddiffskyfile", "", DIFFTOOL_MODE_ADDDIFFSKYFILE, adddiffskyfileArgs); 164 PXTOOL_ADD_MODE("-diffskyfile", "", DIFFTOOL_MODE_DIFFSKYFILE, diffskyfileArgs); 165 PXTOOL_ADD_MODE("-revertdiffskyfile","", DIFFTOOL_MODE_REVERTDIFFSKYFILE, revertdiffskyfileArgs); 179 PXTOOL_ADD_MODE("-definerun", "", DIFFTOOL_MODE_DEFINERUN, definerunArgs); 180 PXTOOL_ADD_MODE("-updaterun", "", DIFFTOOL_MODE_UPDATERUN, updaterunArgs); 181 PXTOOL_ADD_MODE("-addinputskyfile", "", DIFFTOOL_MODE_ADDINPUTSKYFILE, addinputskyfileArgs); 182 PXTOOL_ADD_MODE("-inputskyfile", "", DIFFTOOL_MODE_INPUTSKYFILE, inputskyfileArgs); 183 PXTOOL_ADD_MODE("-todiffskyfile", "", DIFFTOOL_MODE_TODIFFSKYFILE, todiffskyfileArgs); 184 PXTOOL_ADD_MODE("-adddiffskyfile", "", DIFFTOOL_MODE_ADDDIFFSKYFILE, adddiffskyfileArgs); 185 PXTOOL_ADD_MODE("-diffskyfile", "", DIFFTOOL_MODE_DIFFSKYFILE, diffskyfileArgs); 186 PXTOOL_ADD_MODE("-revertdiffskyfile","", DIFFTOOL_MODE_REVERTDIFFSKYFILE, revertdiffskyfileArgs); 187 PXTOOL_ADD_MODE("-definepoprun", "", DIFFTOOL_MODE_DEFINEPOPRUN, definepoprunArgs); 166 188 167 189 if (!pxGetOptions(stderr, argc, argv, config, modes, argSets)) {
Note:
See TracChangeset
for help on using the changeset viewer.
