Changeset 19760 for trunk/ippTools/src/pstamptool.c
- Timestamp:
- Sep 25, 2008, 2:05:59 PM (18 years ago)
- File:
-
- 1 edited
-
trunk/ippTools/src/pstamptool.c (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ippTools/src/pstamptool.c
r19219 r19760 44 44 static bool pendingJobMode(pxConfig *config); 45 45 static bool updateJobMode(pxConfig *config); 46 static bool addProjectMode(pxConfig *config); 47 static bool projectMode(pxConfig *config); 48 static bool modProjectMode(pxConfig *config); 46 49 47 50 # define MODECASE(caseName, func) \ … … 77 80 MODECASE(PSTAMPTOOL_MODE_PENDINGJOB, pendingJobMode); 78 81 MODECASE(PSTAMPTOOL_MODE_UPDATEJOB, updateJobMode); 82 MODECASE(PSTAMPTOOL_MODE_ADDPROJECT, addProjectMode); 83 MODECASE(PSTAMPTOOL_MODE_MODPROJECT, modProjectMode); 84 MODECASE(PSTAMPTOOL_MODE_PROJECT, projectMode); 79 85 default: 80 86 psAbort("invalid option (this should not happen)"); … … 718 724 return true; 719 725 } 726 static bool addProjectMode(pxConfig *config) 727 { 728 PS_ASSERT_PTR_NON_NULL(config, false); 729 730 PXOPT_LOOKUP_STR(name, config->args, "-name", true, false); 731 PXOPT_LOOKUP_STR(state, config->args, "-state", false, false); 732 PXOPT_LOOKUP_STR(imagedb, config->args, "-imagedb", true, false); 733 PXOPT_LOOKUP_STR(dvodb, config->args, "-dvodb", false, false); 734 PXOPT_LOOKUP_STR(camera, config->args, "-inst", true, false); 735 PXOPT_LOOKUP_STR(telescope, config->args, "-telescope", true, false); 736 PXOPT_LOOKUP_BOOL(need_magic, config->args, "-need_magic", false); 737 738 if (!pstampProjectInsert(config->dbh, 739 0, 740 name, 741 state, 742 imagedb, 743 dvodb, 744 camera, 745 telescope, 746 need_magic 747 )) { 748 psError(PS_ERR_UNKNOWN, false, "database error"); 749 return false; 750 } 751 752 return true; 753 } 754 755 static bool projectMode(pxConfig *config) 756 { 757 PS_ASSERT_PTR_NON_NULL(config, false); 758 psMetadata *where = psMetadataAlloc(); 759 760 PXOPT_COPY_STR(config->args, where, "-name", "name", "=="); 761 762 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 763 764 psString query = pxDataGet("pstamptool_project.sql"); 765 if (!query) { 766 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 767 return false; 768 } 769 770 if (psListLength(where->list)) { 771 psString whereClause = psDBGenerateWhereSQL(where, NULL); 772 psStringAppend(&query, " %s", whereClause); 773 psFree(whereClause); 774 } 775 psFree(where); 776 777 if (!p_psDBRunQuery(config->dbh, query)) { 778 psError(PS_ERR_UNKNOWN, false, "database error"); 779 return false; 780 } 781 782 psArray *output = p_psDBFetchResult(config->dbh); 783 if (!output) { 784 psError(PS_ERR_UNKNOWN, false, "database error"); 785 return false; 786 } 787 if (!psArrayLength(output)) { 788 psTrace("pstamptool", PS_LOG_INFO, "no rows found"); 789 psFree(output); 790 return true; 791 } 792 793 // negative simple so the default is true 794 if (!ippdbPrintMetadatas(stdout, output, "pstampDataStore", !simple)) { 795 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 796 psFree(output); 797 return false; 798 } 799 800 psFree(output); 801 802 return true; 803 } 804 static bool modProjectMode(pxConfig *config) 805 { 806 PS_ASSERT_PTR_NON_NULL(config, false); 807 808 PXOPT_LOOKUP_S64(proj_id, config->args, "-proj_id", true, false); 809 PXOPT_LOOKUP_STR(state, config->args, "-state", true, false); 810 811 char *query = psStringCopy ("UPDATE pstampProject SET"); 812 813 psStringAppend(&query, " state = '%s'", state); 814 815 psStringAppend(&query, " WHERE proj_id = %" PRId64, proj_id); 816 817 if (!p_psDBRunQuery(config->dbh, query)) { 818 psError(PS_ERR_UNKNOWN, false, "database error"); 819 psFree(query); 820 return false; 821 } 822 823 psU64 affected = psDBAffectedRows(config->dbh); 824 if (affected != 1) { 825 psError(PS_ERR_UNKNOWN, false, "should have affected one row but %" 826 PRIu64 " rows were modified", affected); 827 return false; 828 } 829 830 return true; 831 } 832
Note:
See TracChangeset
for help on using the changeset viewer.
