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

#include <VisitorBook.h>

Inheritance diagram for VisitorBook:
Object

Public Member Functions

 VisitorBook (const String &strMainCommand, int nMainCommandID, const String &strCommand, const EShopServlet &_servlet)
bool onVisitorBook (HttpServletContextEx &ctx, Writer &out, SQLConnection *pSQLConn)
void onVisitorBookList (SQLConnection *pSQLConn, Writer &out)
bool onVisitorBookBody (ListedStringToStringArrayMap &params, SQLConnection *pSQLConn, Writer &out)
void onVisitorBookUpdateForm (ListedStringToStringArrayMap &params, SQLConnection *pSQLConn, Writer &out)
void onVisitorBookUpdate (ListedStringToStringArrayMap &params, HttpServletContextEx &ctx, SQLConnection *pSQLConn, Writer &out)
void onVisitorBookDelete (ListedStringToStringArrayMap &params, SQLConnection *pSQLConn, Writer &out)
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

Protected Member Functions inherited from Object
virtual ~Object ()
 Object ()

Detailed Description

Definition at line 16 of file VisitorBook.h.

Constructor & Destructor Documentation

◆ VisitorBook()

VisitorBook::VisitorBook ( const String & strMainCommand,
int nMainCommandID,
const String & strCommand,
const EShopServlet & _servlet )

Member Function Documentation

◆ onVisitorBook()

bool VisitorBook::onVisitorBook ( HttpServletContextEx & ctx,
Writer & out,
SQLConnection * pSQLConn )

Definition at line 34 of file VisitorBook.cpp.

39{
40 int nCMD = CM_VISITOR_BOOK_LIST;
41 ListedStringToStringArrayMap params = ctx.__queryMap;
42 {
43 for (ListedStringToStringArrayMap::ConstIterator it = ctx.__formMap.begin();
44 it != ctx.__formMap.end(); it++
45 ) {
46 const StringArray& ss = (*it).value;
47 StringArray& ds = params[(*it).key];
48 for (size_t i = 0; i < ss.size(); i++) {
49 ds.add(ss[i]);
50 }
51 }
52 }
53
54 ListedStringToStringArrayMap::Iterator it = params.find(__strCommand);
55 if (it != params.end()) {
56 if (!((*it).value.isEmpty())) {
57 try {
58 nCMD = Int32::parse((*it).value[0]);
59 }
60 catch(Exception* e) {
61 e->destroy();
62 }
63 }
64 }
65
66 __DCL_TRACE1(L"nCMD [%d]\n", nCMD);
67
68 switch(nCMD) {
69 case CM_VISITOR_BOOK_LIST :
70 onVisitorBookList(pSQLConn, out);
71 break;
72 case CM_VISITOR_BOOK_BODY :
73 return onVisitorBookBody(params, pSQLConn, out);
74 break;
75 case CM_VISITOR_BOOK_DELETE :
76 onVisitorBookDelete(params, pSQLConn, out);
77 break;
78 case CM_VISITOR_BOOK_UPDATE_FORM :
79 onVisitorBookUpdateForm(params, pSQLConn, out);
80 break;
81 case CM_VISITOR_BOOK_UPDATE :
82 onVisitorBookUpdate(params, ctx, pSQLConn, out);
83 break;
84 default :
85 return false;
86 }
87
88 return true;
89}
#define __DCL_TRACE1(fmt, arg1)
Definition Object.h:399
virtual void destroy()
Definition Exception.cpp:74
static int32_t parse(const wchar_t *_number, unsigned _base=10) __DCL_THROWS1(NumericConvertException *)
Definition Numeric.cpp:264
bool onVisitorBookBody(ListedStringToStringArrayMap &params, SQLConnection *pSQLConn, Writer &out)
void onVisitorBookDelete(ListedStringToStringArrayMap &params, SQLConnection *pSQLConn, Writer &out)
void onVisitorBookList(SQLConnection *pSQLConn, Writer &out)
void onVisitorBookUpdateForm(ListedStringToStringArrayMap &params, SQLConnection *pSQLConn, Writer &out)
void onVisitorBookUpdate(ListedStringToStringArrayMap &params, HttpServletContextEx &ctx, SQLConnection *pSQLConn, Writer &out)

◆ onVisitorBookBody()

bool VisitorBook::onVisitorBookBody ( ListedStringToStringArrayMap & params,
SQLConnection * pSQLConn,
Writer & out )

Definition at line 126 of file VisitorBook.cpp.

131{
132 ListedStringToStringArrayMap::Iterator it = params.find(L"id");
133 if (it == params.end()) {
134 onVisitorBookList(pSQLConn, out);
135 return false;
136 }
137
138 String strID;
139 if (!(*it).value.isEmpty())
140 strID = (*it).value[0];
141
142 TextTemplate tplBody(__servlet.readTemplate(L"visitbody.html"));
143 SQLQuery q(pSQLConn);
144 q.prepare(
145 L"SELECT ID, SUBJECT, BODY, REGIST, VISITOR, EMAIL, RHOST"
146 " FROM ES_VISITOR_BOOK WHERE ID = " + strID
147 );
148 q.execute();
149 q.fetch();
150 if (q.eof())
151 return false;
152 else {
153 String strHREF = String::format(L"?%ls=%d",
154 __strMainCommand.data(), __nMainCommandID
155 );
156 tplBody.assign(L"HREF_ACTION", strHREF);
157 tplBody.assign(L"COMMAND_STR", __strCommand);
158 tplBody.assign(L"CM_VISITOR_BOOK_LIST", String::valueOf(CM_VISITOR_BOOK_LIST));
159 tplBody.assign(L"CM_VISITOR_BOOK_UPDATE_FORM", String::valueOf(CM_VISITOR_BOOK_UPDATE_FORM));
160 tplBody.assign(L"CM_VISITOR_BOOK_DELETE", String::valueOf(CM_VISITOR_BOOK_DELETE));
161
162 tplBody.assign(q.fields(), L"&nbsp;");
163 if (!q.fields().byName(L"BODY").isNull()) {
164 tplBody.assign(L"BODY",
166 q.fields().byName(L"BODY").asString(),
167 4, L"", L"<br>\n"
168 )
169 );
170 }
171 out << tplBody;
172 }
173 return true;
174}
static String format(const String &_str, int _tab2Space, const String &_beginOfLine, const String &_endOfLine)
Definition Html.cpp:122

◆ onVisitorBookDelete()

void VisitorBook::onVisitorBookDelete ( ListedStringToStringArrayMap & params,
SQLConnection * pSQLConn,
Writer & out )

Definition at line 218 of file VisitorBook.cpp.

223{
224 String strID;
225 String strPasswd;
226
227 ListedStringToStringArrayMap::Iterator it = params.find(L"id");
228 if ((it != params.end()) && (!(*it).value.isEmpty()))
229 strID = (*it).value[0];
230
231 it = params.find(L"passwd");
232 if ((it != params.end()) && (!(*it).value.isEmpty()))
233 strPasswd = (*it).value[0];
234
235 SQLQuery q(pSQLConn);
236 q.execute(L"SELECT PASSWD FROM ES_VISITOR_BOOK WHERE ID = " + strID);
237 q.fetch();
238 if (!q.eof()) {
239 bool bDoDelete = false;
240 if (q.fields()[0].isNull() && strPasswd.isEmpty())
241 bDoDelete = true;
242 else {
243 if (q.fields()[0].asString() == strPasswd)
244 bDoDelete = true;
245 }
246
247 if (bDoDelete) {
248 q.execute(L"DELETE FROM ES_VISITOR_BOOK WHERE ID = " + strID);
249 }
250 }
251
252 if (q.affectedRows() > 0)
253 onVisitorBookList(pSQLConn, out);
254 else
255 onVisitorBookBody(params, pSQLConn, out);
256}

◆ onVisitorBookList()

void VisitorBook::onVisitorBookList ( SQLConnection * pSQLConn,
Writer & out )

Definition at line 91 of file VisitorBook.cpp.

95{
96 TextTemplate tplList(__servlet.readTemplate(L"visitlist.html"));
97 TextTemplate& row = tplList[L"row"];
98
99 StringBuilder strHREF = String::format(L"?%ls=%d&%ls=%d",
100 __strMainCommand.data(), __nMainCommandID,
101 __strCommand.data(), CM_VISITOR_BOOK_UPDATE_FORM
102 );
103 tplList.assign(L"HREF_NEW_MSG", strHREF);
104
105 SQLQuery q(pSQLConn);
106 q.prepare(L"SELECT ID, SUBJECT, BODY, REGIST, VISITOR, EMAIL, RHOST"
107 " FROM ES_VISITOR_BOOK ORDER BY ID"
108 );
109 q.execute();
110 q.fetch();
111 while(!q.eof()) {
112 strHREF = String::format(L"?%ls=%d&%ls=%d&%ls=%ls",
113 __strMainCommand.data(), __nMainCommandID,
114 __strCommand.data(), CM_VISITOR_BOOK_BODY,
115 L"id", q.fields().byName(L"ID").asString().data()
116 );
117 row.assign(L"HREF_MSG_BODY", strHREF);
118 row.assign(q.fields(), L"&nbsp;");
119
120 tplList.append(L"row", row);
121 q.fetch();
122 }
123 out << tplList;
124}

◆ onVisitorBookUpdate()

void VisitorBook::onVisitorBookUpdate ( ListedStringToStringArrayMap & params,
HttpServletContextEx & ctx,
SQLConnection * pSQLConn,
Writer & out )

Definition at line 258 of file VisitorBook.cpp.

264{
265 String strID;
266 String strPasswd;
267
268 String strSubject;
269 String strBody;
270 String strVisitor;
271 String strEmail;
272 String strRHost = ctx.remoteAddr();
273
274 ListedStringToStringArrayMap::Iterator it;
275
276 it = params.find(L"id");
277 if ((it != params.end()) && (!(*it).value.isEmpty()))
278 strID = (*it).value[0];
279
280 it = params.find(L"passwd");
281 if ((it != params.end()) && (!(*it).value.isEmpty()))
282 strPasswd = (*it).value[0];
283
284 it = params.find(L"subject");
285 if ((it != params.end()) && (!(*it).value.isEmpty()))
286 strSubject = (*it).value[0];
287
288 it = params.find(L"body");
289 if ((it != params.end()) && (!(*it).value.isEmpty()))
290 strBody = (*it).value[0];
291
292 it = params.find(L"visitor");
293 if ((it != params.end()) && (!(*it).value.isEmpty()))
294 strVisitor = (*it).value[0];
295
296 it = params.find(L"email");
297 if ((it != params.end()) && (!(*it).value.isEmpty()))
298 strEmail = (*it).value[0];
299
300 if (strSubject.isEmpty()
301 || strBody.isEmpty()
302 || strVisitor.isEmpty()
303 || strEmail.isEmpty()
304 ) {
305 out << L"<br><br><p><strong>모두 입력해 주세요!!</strong></p>";
306 return;
307 }
308
309 String strSQL = L""
310 "INSERT INTO "
311 " ES_VISITOR_BOOK(SUBJECT, BODY, REGIST, VISITOR,"
312 " EMAIL, RHOST, PASSWD) "
313 " VALUES(:SUBJECT, :BODY, CURRENT_TIMESTAMP, :VISITOR,"
314 " :EMAIL, :RHOST, :PASSWD)"
315 ;
316
317 SQLQuery q(pSQLConn);
318 if (!strID.isEmpty()) {
319 q.execute(L"SELECT PASSWD FROM ES_VISITOR_BOOK WHERE ID = " + strID);
320 q.fetch();
321 if (!q.eof()) {
322 if (q.fields()[0].isNull()
323 || q.fields()[0].asString() == strPasswd) {
324 strSQL = L""
325 "UPDATE ES_VISITOR_BOOK "
326 " SET SUBJECT = :SUBJECT, BODY = :BODY, VISITOR = :VISITOR, "
327 " EMAIL = :EMAIL, RHOST = :RHOST, PASSWD = :PASSWD "
328 " WHERE ID = " + strID;
329 }
330 else {
331 onVisitorBookBody(params, pSQLConn, out);
332 return;
333 }
334 }
335 }
336
337 q.prepare(strSQL);
338 SQLParams& sqlParams = q.params();
339 sqlParams.byName(L"SUBJECT").setValue(strSubject);
340 sqlParams.byName(L"BODY").setValue(strBody);
341 sqlParams.byName(L"VISITOR").setValue(strVisitor);
342 sqlParams.byName(L"EMAIL").setValue(strEmail);
343 sqlParams.byName(L"RHOST").setValue(strRHost);
344 sqlParams.byName(L"PASSWD").setValue(strPasswd);
345
346 q.execute();
347
348 onVisitorBookList(pSQLConn, out);
349}
SQLParam & byName(const wchar_t *_name) _CONST __DCL_THROWS1(InvalidIndexException *)
Definition SQLQuery.cpp:157

◆ onVisitorBookUpdateForm()

void VisitorBook::onVisitorBookUpdateForm ( ListedStringToStringArrayMap & params,
SQLConnection * pSQLConn,
Writer & out )

Definition at line 176 of file VisitorBook.cpp.

181{
182 String strID;
183 ListedStringToStringArrayMap::Iterator it = params.find(L"id");
184 if ((it != params.end()) && (!(*it).value.isEmpty()))
185 strID = (*it).value[0];
186
187 StringBuilder strHREF;
188 strHREF.format(L"?%ls=%d&%ls=%d",
189 __strMainCommand.data(), __nMainCommandID,
190 __strCommand.data(), CM_VISITOR_BOOK_UPDATE
191 );
192
193 TextTemplate tpl(__servlet.readTemplate(L"visitupdate.html"));
194 if (!strID.isEmpty()) {
195 SQLQuery q(pSQLConn);
196 q.execute(L"SELECT ID, SUBJECT, BODY, REGIST, VISITOR, EMAIL, RHOST"
197 " FROM ES_VISITOR_BOOK WHERE ID = " + strID);
198 q.fetch();
199 if (!q.eof()) {
200 strHREF += L"&id=" + q.fields().byName(L"ID").asString();
201 tpl.assign(L"HREF_ACTION", strHREF);
202 tpl.assign(q.fields(), L"&nbsp");
203
204 out << tpl;
205 return;
206 }
207 }
208
209 tpl.assign(L"HREF_ACTION", strHREF);
210 tpl.assign(L"SUBJECT", L"");
211 tpl.assign(L"VISITOR", L"");
212 tpl.assign(L"EMAIL", L"");
213 tpl.assign(L"BODY", L"");
214
215 out << tpl;
216}

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