DCL 4.0
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 const StringArray& ss = (*it).value;
46 StringArray& ds = params[(*it).key];
47 for (size_t i = 0; i < ss.size(); i++) {
48 ds.add(ss[i]);
49 }
50 }
51 }
52
53 ListedStringToStringArrayMap::Iterator it = params.find(m_strCommand);
54 if (it != params.end()) {
55 if (!((*it).value.isEmpty()))
56 {
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:376
virtual void destroy()
Definition Exception.cpp:74
static int32_t parse(const wchar_t *_number, unsigned _base=10) __DCL_THROWS1(NumericConvertException *)
Definition Numeric.cpp:284
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 125 of file VisitorBook.cpp.

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

◆ onVisitorBookDelete()

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

Definition at line 216 of file VisitorBook.cpp.

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

◆ 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 m_strMainCommand.data(), m_nMainCommandID,
101 m_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 q.execute();
109 q.fetch();
110 while(!q.eof()) {
111 strHREF = String::format(L"?%ls=%d&%ls=%d&%ls=%ls",
112 m_strMainCommand.data(), m_nMainCommandID,
113 m_strCommand.data(), CM_VISITOR_BOOK_BODY,
114 L"id", q.fields().byName(L"ID").asString().data()
115 );
116 row.assign(L"HREF_MSG_BODY", strHREF);
117 row.assign(q.fields(), L"&nbsp;");
118
119 tplList.append(L"row", row);
120 q.fetch();
121 }
122 out << tplList;
123}

◆ onVisitorBookUpdate()

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

Definition at line 257 of file VisitorBook.cpp.

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

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

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