DCL 3.7.4
Loading...
Searching...
No Matches
PageCategoryForm Class Reference

#include <Page.h>

Inheritance diagram for PageCategoryForm:
FormView HtmlView TextTemplate Object

Public Member Functions

 PageCategoryForm (HtmlPage *pPage)
virtual void onPrint (Session &session) __DCL_THROWS1(Exception *)
virtual void onPost (Session &session) __DCL_THROWS1(Exception *)
Public Member Functions inherited from HtmlView
const HtmlPagepage () const
String SELF () const
String VNO () const
virtual void init (SQLFields &fields) __DCL_THROWS1(Exception *)
virtual void onGet (Session &session) __DCL_THROWS1(Exception *)
Public Member Functions inherited from Object
virtual String toString () const
virtual void destroy ()
String className () const
bool isInstanceOf (const std::type_info &typeinfo) const
virtual const std::type_info & typeInfo () const

Additional Inherited Members

Static Public Member Functions inherited from HtmlView
static HtmlViewcreateObject (HtmlPage *pPage, int nClassID, int nIndex)
Protected Member Functions inherited from HtmlView
 HtmlView (HtmlPage *pPage)
Protected Member Functions inherited from TextTemplate
virtual String onSQLFieldValue (_CONST SQLField &_field, const String &_fieldIsNullValue)
void parseHelper (const char_t *_begin, const char_t *_end)
void parse (const char_t *_begin, const char_t *_end)
int append (const char_t *_name, const String &_value, bool _clearExists)
int append (const char_t *_name, const TextTemplate &_template, bool _clearExists)
int append (const StringStringArray &_nameToValues, bool _clearExists)
int append (_CONST SQLFields &_fields, const String &_fieldIsNullValue, bool _clearExists)
Protected Member Functions inherited from Object
virtual ~Object ()
 Object ()
Static Protected Member Functions inherited from HtmlView
static size_t split (const String &str, StringStringArray &v)
static void dump (Session &session)
static String getDefault (ListedStringToStringArrayMap &map, const String &strKey)
static size_t getShortString (SQLField &field, size_t _len, String &strLong, String &strShort)
Protected Attributes inherited from HtmlView
HtmlPage__pPage
int __nIndex
int __nClassID
StringToStringMap __mapParams
Protected Attributes inherited from TextTemplate
void * __textList
void * __subTemplateMap

Detailed Description

Definition at line 20 of file Page.h.

Constructor & Destructor Documentation

◆ PageCategoryForm()

PageCategoryForm::PageCategoryForm ( HtmlPage * pPage)

Member Function Documentation

◆ onPost()

void PageCategoryForm::onPost ( Session & session)
virtual

Reimplemented from FormView.

Definition at line 79 of file Page.cpp.

81{
82// HtmlView::dump(session);
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 // 스킨 템플릿에서 마지막 CATEGORY_ID는 사용하지 않는다.
92 __pPage->refresh(session, session.__ctx.getHttpHeader(L"Referer"));
93 return;
94 }
95
96 // vCategoryID와 vDeleteID가 숫자문자열인지 검사한다.
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++)
103 Integer::parse(vDeleteID[i], 10);
104
105 SQLQuery& q = session.__query;
106 SQLQuery qInsert(q.connection());
107 SQLQuery qUpdate(q.connection());
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]) {
124 q.execute(L""
125 "SELECT COUNT(*) FROM DCL_PAGE "
126 "\n WHERE CATEGORY_ID = " + vDeleteID[iDelete]
127 );
128 q.fetch();
129 if (q.fields()[0].asInteger() == 0) {
130 q.execute(L""
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
142 q.execute(L""
143 "SELECT COUNT(*) FROM DCL_PAGE_CATEGORY"
144 "\n WHERE CATEGORY_ID = " + strID
145 );
146 q.fetch();
147
148 SQLQuery* pQuery = &qInsert;
149 if (q.fields()[0].asInteger() != 0) // then UPDATE
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())
155 pQuery->params().byName(L"COMMENT").setNull();
156 else
157 pQuery->params().byName(L"COMMENT").setValue(strDesc);
158
159 pQuery->execute();
160 }
161 }
162
163 __pPage->refresh(session, session.__ctx.getHttpHeader(L"Referer"));
164}
HtmlPage * __pPage
Definition HtmlView.h:108
static int parse(const wchar_t *_number, unsigned _base=10) __DCL_THROWS1(NumericConvertException *)
Definition Numeric.inl:36
SQLParam & byName(const wchar_t *_name) _CONST __DCL_THROWS1(InvalidIndexException *)
Definition SQLQuery.cpp:157
_CONST SQLParams & params() _CONST
Definition SQL.inl:106
_CONST SQLFields & fields() _CONST
Definition SQL.inl:101
void execute() __DCL_THROWS1(SQLException *)
Definition SQLQuery.cpp:316
SQLConnection * connection() const
Definition SQL.inl:116
void fetch() __DCL_THROWS1(SQLException *)
Definition SQLQuery.cpp:336
HttpServletContextEx & __ctx
Definition Session.h:41
SQLQuery & __query
Definition Session.h:42

◆ onPrint()

void PageCategoryForm::onPrint ( Session & session)
virtual

Reimplemented from FormView.

Definition at line 61 of file Page.cpp.

63{
64 SQLQuery& q = session.__query;
65
66 TextTemplate& CATEGORY = (*this)[L"CATEGORY"];
67 q.execute(L"SELECT * FROM DCL_PAGE_CATEGORY ORDER BY CATEGORY_ID");
68 q.fetch();
69 while(!q.eof()) {
70 CATEGORY.assign(q.fields(), L"");
71 CATEGORY.assign(L"VNO", VNO());
72 append(L"CATEGORY", CATEGORY);
73 q.fetch();
74 }
75
76 FormView::onPrint(session);
77}
String VNO() const
Definition HtmlView.cpp:293
bool eof() const
Definition SQL.inl:91

The documentation for this class was generated from the following files: