81{
82
83
84 ListedStringToStringArrayMap& mapForm = session.
__ctx.__formMap;
85 StringArray& vCategoryID = mapForm[L"CATEGORY_ID"];
86 StringArray& vCategoryName = mapForm[L"CATEGORY_NAME"];
87 StringArray& vDescription = mapForm[L"COMMENT"];
88 StringArray& vDeleteID = mapForm[L"DELETE_ID"];
89
90 if (vCategoryID.size() <= 1) {
91
92 __pPage->refresh(session, session.
__ctx.getHttpHeader(L
"Referer"));
93 return;
94 }
95
96
97
98 Array<int> vnCategoryID(vCategoryID.size() - 1);
99 for(size_t i = 0; i < vCategoryID.size() - 1; i++)
100 vnCategoryID[i] = (
unsigned int)
Integer::parse(vCategoryID[i], 10);
101
102 for(size_t i = 0; i < vDeleteID.size(); i++)
104
108
109 qInsert.prepare(L""
110 "INSERT INTO DCL_PAGE_CATEGORY (CATEGORY_ID, CATEGORY_NAME, COMMENT"
111 ", UPDATE_TIME)"
112 "\n VALUES(:CATEGORY_ID, :CATEGORY_NAME, :COMMENT, CURRENT_TIMESTAMP)"
113 );
114 qUpdate.prepare(L""
115 "UPDATE DCL_PAGE_CATEGORY"
116 "\n SET CATEGORY_NAME = :CATEGORY_NAME"
117 ", COMMENT = :COMMENT, UPDATE_TIME = CURRENT_TIMESTAMP"
118 "\n WHERE CATEGORY_ID = :CATEGORY_ID"
119 );
120
121 int iDelete = 0;
122 for(size_t i = 0; i < vCategoryID.size() - 1; i++) {
123 if (iDelete < (ssize_t) vDeleteID.size() && vCategoryID[i] == vDeleteID[iDelete]) {
125 "SELECT COUNT(*) FROM DCL_PAGE "
126 "\n WHERE CATEGORY_ID = " + vDeleteID[iDelete]
127 );
129 if (q.
fields()[0].asInteger() == 0) {
131 "DELETE FROM DCL_PAGE_CATEGORY"
132 "\n WHERE CATEGORY_ID = " + vDeleteID[iDelete]
133 );
134 }
135 iDelete++;
136 }
137 else {
138 String& strID = vCategoryID[i];
139 String& strName = vCategoryName[i];
140 String& strDesc = vDescription[i];
141
143 "SELECT COUNT(*) FROM DCL_PAGE_CATEGORY"
144 "\n WHERE CATEGORY_ID = " + strID
145 );
147
148 SQLQuery* pQuery = &qInsert;
149 if (q.
fields()[0].asInteger() != 0)
150 pQuery = &qUpdate;
151
152 pQuery->
params().
byName(L
"CATEGORY_ID").setValue(vnCategoryID[i]);
153 pQuery->
params().
byName(L
"CATEGORY_NAME").setValue(strName);
154 if (strDesc.isEmpty())
156 else
158
160 }
161 }
162
163 __pPage->refresh(session, session.
__ctx.getHttpHeader(L
"Referer"));
164}
static int parse(const wchar_t *_number, unsigned _base=10) __DCL_THROWS1(NumericConvertException *)
SQLParam & byName(const wchar_t *_name) _CONST __DCL_THROWS1(InvalidIndexException *)
_CONST SQLParams & params() _CONST
_CONST SQLFields & fields() _CONST
void execute() __DCL_THROWS1(SQLException *)
SQLConnection * connection() const
void fetch() __DCL_THROWS1(SQLException *)
HttpServletContextEx & __ctx