001: /*
002: * Copyright (c) 2006 - 2007 OpenSubsystems s.r.o. Slovak Republic. All rights reserved.
003: *
004: * Project: OpenChronicle
005: *
006: * $Id: OracleBlogDatabaseSchema.java,v 1.3 2007/02/20 02:13:19 bastafidli Exp $
007: *
008: * This program is free software; you can redistribute it and/or modify
009: * it under the terms of the GNU General Public License as published by
010: * the Free Software Foundation; version 2 of the License.
011: *
012: * This program is distributed in the hope that it will be useful,
013: * but WITHOUT ANY WARRANTY; without even the implied warranty of
014: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
015: * GNU General Public License for more details.
016: *
017: * You should have received a copy of the GNU General Public License
018: * along with this program; if not, write to the Free Software
019: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
020: */
021:
022: package org.opensubsystems.blog.persist.db.oracle;
023:
024: import java.sql.Connection;
025: import java.sql.SQLException;
026: import java.sql.Statement;
027: import java.util.logging.Level;
028: import java.util.logging.Logger;
029:
030: import org.opensubsystems.blog.data.Blog;
031: import org.opensubsystems.blog.data.Entry;
032: import org.opensubsystems.blog.persist.db.BlogDatabaseSchema;
033: import org.opensubsystems.core.error.OSSException;
034: import org.opensubsystems.core.persist.db.DatabaseImpl;
035: import org.opensubsystems.core.util.DatabaseUtils;
036: import org.opensubsystems.core.util.Log;
037:
038: /**
039: * Database specific operations related to persistence of blogs and their
040: * entries. This class encapsulate functionality specific for Oracle.
041: *
042: * @version $Id: OracleBlogDatabaseSchema.java,v 1.3 2007/02/20 02:13:19 bastafidli Exp $
043: * @author Julian Legeny
044: * @code.reviewer Miro Halas
045: * @code.reviewed 1.3 2006/07/21 00:54:58 jlegeny
046: */
047: public class OracleBlogDatabaseSchema extends BlogDatabaseSchema {
048: /*
049: Use sequence for ID
050: Name all constraints to easily identify them later.
051:
052: CREATE SEQUENCE BLOG_ID_SEQ INCREMENT BY 1 START WITH 1 NOCYCLE
053:
054: CREATE TABLE BF_BLOG
055: (
056: ID INTEGER NOT NULL,
057: DOMAIN_ID INTEGER NOT NULL,
058: FOLDER VARCHAR(50) NOT NULL,
059: CAPTION VARCHAR(1024) NOT NULL,
060: COMMENTS VARCHAR(4000) NOT NULL,
061: CREATION_DATE TIMESTAMP(9) NOT NULL,
062: MODIFICATION_DATE TIMESTAMP(9) NOT NULL,
063: CONSTRAINT BF_BLOG_PK PRIMARY KEY (ID),
064: CONSTRAINT BF_BLOG_FLDR_UQ UNIQUE (FOLDER)
065: // CONSTRAINT BF_BLOGDOM_FK FOREIGN KEY (DOMAIN_ID)
066: // REFERENCES BF_DOMAIN (ID) ON DELETE CASCADE
067: )
068:
069:
070: CREATE OR REPLACE PROCEDURE INSERT_BF_BLOG
071: (
072: IN_DOMAIN_ID IN INTEGER,
073: IN_FOLDER IN VARCHAR,
074: IN_CAPTION IN VARCHAR,
075: IN_COMMENTS IN VARCHAR,
076: OUT_KEY OUT INTEGER,
077: OUT_TIMESTAMP OUT TIMESTAMP
078: )
079: IS
080: NEW_OUT_KEY INTEGER;
081: NEW_OUT_TIMESTAMP TIMESTAMP(9);
082: BEGIN
083: SELECT BLOG_ID_SEQ.NEXTVAL INTO NEW_OUT_KEY FROM DUAL;
084: OUT_KEY := NEW_OUT_KEY;
085: SELECT SYSDATE INTO NEW_OUT_TIMESTAMP FROM DUAL;
086: OUT_TIMESTAMP := NEW_OUT_TIMESTAMP;
087: INSERT INTO " + strUserName + ".BF_BLOG(ID, DOMAIN_ID, FOLDER,
088: CAPTION, COMMENTS, CREATION_DATE, MODIFICATION_DATE)
089: VALUES (OUT_KEY, IN_DOMAIN_ID, IN_FOLDER, IN_CAPTION,
090: IN_COMMENTS, OUT_TIMESTAMP, OUT_TIMESTAMP);
091: END;
092:
093:
094: CREATE OR REPLACE PROCEDURE UPDATE_BF_BLOG
095: (
096: IN_FOLDER IN VARCHAR,
097: IN_CAPTION IN VARCHAR,
098: IN_COMMENTS IN VARCHAR,
099: IN_BLOG_ID IN INTEGER,
100: IN_DOMAIN_ID IN INTEGER,
101: IN_MODIFICATION_DATE IN TIMESTAMP,
102: OUT_TIMESTAMP OUT TIMESTAMP
103: )
104: IS
105: NEW_OUT_TIMESTAMP TIMESTAMP(9);
106: BEGIN
107: SELECT SYSDATE INTO NEW_OUT_TIMESTAMP FROM DUAL;
108: OUT_TIMESTAMP := NEW_OUT_TIMESTAMP;
109: UPDATE BF_BLOG SET FOLDER = IN_FOLDER, CAPTION = IN_CAPTION,
110: COMMENTS = IN_COMMENTS, MODIFICATION_DATE = OUT_TIMESTAMP
111: WHERE ID = IN_BLOG_ID AND DOMAIN_ID = IN_DOMAIN_ID
112: AND MODIFICATION_DATE = IN_MODIFICATION_DATE;
113: END;
114:
115:
116: CREATE SEQUENCE BLOGENTRY_ID_SEQ INCREMENT BY 1 START WITH 1 NOCYCLE
117:
118: CREATE TABLE BF_BLOG_ENTRY
119: (
120: ID INTEGER NOT NULL,
121: DOMAIN_ID INTEGER NOT NULL,
122: BLOG_ID INTEGER NOT NULL,
123: CAPTION VARCHAR(1024) NOT NULL,
124: COMMENTS VARCHAR(4000) NOT NULL,
125: IMAGEURL VARCHAR(1024) NOT NULL,
126: TARGETURL VARCHAR(1024) NOT NULL,
127: CREATION_DATE TIMESTAMP(9) NOT NULL,
128: MODIFICATION_DATE TIMESTAMP(9) NOT NULL,
129: CONSTRAINT BF_BLOGENTR_PK PRIMARY KEY (ID),
130: CONSTRAINT BF_BLOGENTR_FK FOREIGN KEY (BLOG_ID)
131: REFERENCES BF_BLOG (ID) ON DELETE CASCADE
132: // CONSTRAINT BF_BLOGENTRDOM_FK FOREIGN KEY (DOMAIN_ID)
133: // REFERENCES BF_DOMAIN (ID) ON DELETE CASCADE
134: )
135:
136:
137: CREATE OR REPLACE PROCEDURE INSERT_BF_BLOGENTR
138: (
139: IN_DOMAIN_ID IN INTEGER,
140: IN_BLOG_ID IN INTEGER,
141: IN_CAPTION IN VARCHAR,
142: IN_COMMENTS IN VARCHAR,
143: IN_IMAGEURL IN VARCHAR(,
144: IN_TARGETURL IN VARCHAR,
145: OUT_KEY OUT INTEGER,
146: OUT_TIMESTAMP OUT TIMESTAMP
147: )
148: IS
149: NEW_OUT_KEY INTEGER;
150: NEW_OUT_TIMESTAMP TIMESTAMP(9);
151: BEGIN
152: SELECT BLOGENTRY_ID_SEQ.NEXTVAL INTO NEW_OUT_KEY FROM DUAL;
153: OUT_KEY := NEW_OUT_KEY;
154: SELECT SYSDATE INTO NEW_OUT_TIMESTAMP FROM DUAL;
155: OUT_TIMESTAMP := NEW_OUT_TIMESTAMP;
156: INSERT INTO " + strUserName + ".BF_BLOG_ENTRY(ID, DOMAIN_ID, BLOG_ID,
157: CAPTION, COMMENTS, IMAGEURL, TARGETURL, CREATION_DATE, MODIFICATION_DATE)
158: VALUES (OUT_KEY, IN_DOMAIN_ID, IN_BLOG_ID, IN_CAPTION,
159: IN_COMMENTS, IN_IMAGEURL, IN_TARGETURL, OUT_TIMESTAMP, OUT_TIMESTAMP);
160: END;
161:
162:
163: CREATE OR REPLACE PROCEDURE UPDATE_BF_BLOGENTR
164: (
165: IN_CAPTION IN VARCHAR,
166: IN_COMMENTS IN VARCHAR,
167: IN_IMAGEURL IN VARCHAR,
168: IN_TARGETURL IN VARCHAR,
169: IN_ENTRY_ID IN INTEGER,
170: IN_DOMAIN_ID IN INTEGER,
171: IN_MODIFICATION_DATE IN TIMESTAMP,
172: OUT_TIMESTAMP OUT TIMESTAMP
173: )
174: IS
175: NEW_OUT_TIMESTAMP TIMESTAMP(9);
176: BEGIN
177: SELECT SYSDATE INTO NEW_OUT_TIMESTAMP FROM DUAL;
178: OUT_TIMESTAMP := NEW_OUT_TIMESTAMP;
179: UPDATE BF_BLOG_ENTRY SET CAPTION = IN_CAPTION, COMMENTS = IN_COMMENTS,
180: IMAGEURL = IN_IMAGEURL, TARGETURL= IN_TARGETURL,
181: MODIFICATION_DATE = OUT_TIMESTAMP
182: WHERE ID = IN_ENTRY_ID AND DOMAIN_ID = IN_DOMAIN_ID
183: AND MODIFICATION_DATE = IN_MODIFICATION_DATE;
184: END;
185: */
186:
187: // Constants ////////////////////////////////////////////////////////////////
188: /**
189: * Maximal length of blog comments.
190: * Restriction for VARCHAR type is max. 4000 characters for Oracle.
191: */
192: public static final int BLOG_COMMENTS_MAXLENGTH_ORACLE = 4000;
193:
194: /**
195: * Maximal length of blog entry comments.
196: * Restriction for VARCHAR type is max. 4000 characters for Oracle.
197: */
198: public static final int BLOGENTRY_COMMENTS_MAXLENGTH_ORACLE = 4000;
199:
200: // Cached values ////////////////////////////////////////////////////////////
201:
202: /**
203: * Logger for this class
204: */
205: private static Logger s_logger = Log
206: .getInstance(OracleBlogDatabaseSchema.class);
207:
208: // Constructors /////////////////////////////////////////////////////////////
209:
210: /**
211: * Static initializer
212: */
213: static {
214: // Setup maximal length of individual fields for Oracle database
215: Blog.setCommentsMaxLength(BLOG_COMMENTS_MAXLENGTH_ORACLE);
216: Entry.setCommentsMaxLength(BLOGENTRY_COMMENTS_MAXLENGTH_ORACLE);
217: }
218:
219: /**
220: * Default constructor.
221: *
222: * @throws OSSException - error occured.
223: */
224: public OracleBlogDatabaseSchema() throws OSSException {
225: super ();
226: }
227:
228: // Public methods ///////////////////////////////////////////////////////////
229:
230: /**
231: * {@inheritDoc}
232: */
233: public void create(Connection cntDBConnection, String strUserName)
234: throws SQLException {
235: Statement stmQuery = null;
236: try {
237: stmQuery = cntDBConnection.createStatement();
238:
239: if (stmQuery.execute("CREATE SEQUENCE BLOG_ID_SEQ "
240: + "INCREMENT BY 1 START WITH 1 NOCYCLE")) {
241: // Close any results
242: stmQuery.getMoreResults(Statement.CLOSE_ALL_RESULTS);
243: }
244: s_logger.log(Level.FINEST, "Sequence BLOG_ID_SEQ created.");
245:
246: if (stmQuery.execute("create table BF_BLOG" + NL + "(" + NL
247: + " ID INTEGER NOT NULL," + NL
248: + " DOMAIN_ID INTEGER NOT NULL," + NL
249: + " FOLDER VARCHAR(" + BLOG_FOLDER_MAXLENGTH
250: + ") NOT NULL," + NL + " CAPTION VARCHAR("
251: + BLOG_CAPTION_MAXLENGTH + ") NOT NULL," + NL
252: + " COMMENTS VARCHAR("
253: + BLOG_COMMENTS_MAXLENGTH_ORACLE + ") NOT NULL,"
254: + NL + " CREATION_DATE TIMESTAMP(9) NOT NULL,"
255: + NL
256: + " MODIFICATION_DATE TIMESTAMP(9) NOT NULL,"
257: + NL
258: + " CONSTRAINT BF_BLOG_PK PRIMARY KEY (ID),"
259: + NL
260: +
261: // " CONSTRAINT BF_BLOGDOM_FK FOREIGN KEY (DOMAIN_ID)" + NL +
262: // " REFERENCES BF_DOMAIN (ID) ON DELETE CASCADE," + NL +
263: " CONSTRAINT BF_BLOG_FLDR_UQ UNIQUE (FOLDER)"
264: + NL + ")")) {
265: // Close any results
266: stmQuery.getMoreResults(Statement.CLOSE_ALL_RESULTS);
267: }
268: s_logger.log(Level.FINEST, "Table BF_BLOG created.");
269:
270: ///////////////////////////////////////////////////////////////////////
271:
272: if (stmQuery
273: .execute("CREATE OR REPLACE PROCEDURE INSERT_BF_BLOG "
274: + NL
275: + "( "
276: + NL
277: + " IN_DOMAIN_ID IN INTEGER, "
278: + NL
279: + " IN_FOLDER IN VARCHAR, "
280: + NL
281: + " IN_CAPTION IN VARCHAR, "
282: + NL
283: + " IN_COMMENTS IN VARCHAR, "
284: + NL
285: + " OUT_KEY OUT INTEGER, "
286: + NL
287: + " OUT_TIMESTAMP OUT TIMESTAMP "
288: + NL
289: + ") "
290: + NL
291: + "IS "
292: + NL
293: + " NEW_OUT_KEY INTEGER; "
294: + NL
295: + " NEW_OUT_TIMESTAMP TIMESTAMP(9); "
296: + NL
297: + "BEGIN "
298: + NL
299: + " SELECT BLOG_ID_SEQ.NEXTVAL INTO NEW_OUT_KEY FROM DUAL;"
300: + NL
301: + " OUT_KEY := NEW_OUT_KEY;"
302: + NL
303: + " SELECT SYSDATE INTO NEW_OUT_TIMESTAMP FROM DUAL;"
304: + NL
305: + " OUT_TIMESTAMP := NEW_OUT_TIMESTAMP;"
306: + NL
307: + " INSERT INTO "
308: + strUserName
309: + ".BF_BLOG(ID, DOMAIN_ID, FOLDER, "
310: + NL
311: + " CAPTION, COMMENTS, CREATION_DATE, MODIFICATION_DATE) "
312: + NL
313: + " VALUES (OUT_KEY, IN_DOMAIN_ID, IN_FOLDER, IN_CAPTION, "
314: + NL
315: + " IN_COMMENTS, OUT_TIMESTAMP, OUT_TIMESTAMP); "
316: + NL + "END;")) {
317: // Close any results
318: stmQuery.getMoreResults(Statement.CLOSE_ALL_RESULTS);
319: }
320: s_logger.log(Level.FINEST,
321: "Procedure INSERT_BF_BLOG created.");
322:
323: ///////////////////////////////////////////////////////////////////////
324:
325: if (stmQuery
326: .execute("CREATE OR REPLACE PROCEDURE UPDATE_BF_BLOG "
327: + NL
328: + "( "
329: + NL
330: + " IN_FOLDER IN VARCHAR, "
331: + NL
332: + " IN_CAPTION IN VARCHAR, "
333: + NL
334: + " IN_COMMENTS IN VARCHAR, "
335: + NL
336: + " IN_BLOG_ID IN INTEGER, "
337: + NL
338: + " IN_DOMAIN_ID IN INTEGER, "
339: + NL
340: + " IN_MODIFICATION_DATE IN TIMESTAMP, "
341: + NL
342: + " OUT_TIMESTAMP OUT TIMESTAMP "
343: + NL
344: + ") "
345: + NL
346: + "IS "
347: + NL
348: + " NEW_OUT_TIMESTAMP TIMESTAMP(9); "
349: + NL
350: + "BEGIN "
351: + NL
352: + " SELECT SYSDATE INTO NEW_OUT_TIMESTAMP FROM DUAL; "
353: + " OUT_TIMESTAMP := NEW_OUT_TIMESTAMP; "
354: + NL
355: + " UPDATE "
356: + strUserName
357: + ".BF_BLOG SET FOLDER = IN_FOLDER, "
358: + NL
359: + " CAPTION = IN_CAPTION, COMMENTS = IN_COMMENTS, "
360: + NL
361: + " MODIFICATION_DATE = OUT_TIMESTAMP WHERE ID = IN_BLOG_ID "
362: + NL
363: + " AND DOMAIN_ID = IN_DOMAIN_ID "
364: + NL
365: + " AND MODIFICATION_DATE = IN_MODIFICATION_DATE; "
366: + NL + "END;")) {
367: // Close any results
368: stmQuery.getMoreResults(Statement.CLOSE_ALL_RESULTS);
369: }
370: s_logger.log(Level.FINEST,
371: "Procedure UPDATE_BF_BLOG created.");
372:
373: ///////////////////////////////////////////////////////////////////////
374:
375: if (stmQuery.execute("CREATE SEQUENCE BLOGENTRY_ID_SEQ "
376: + "INCREMENT BY 1 START WITH 1 NOCYCLE")) {
377: // Close any results
378: stmQuery.getMoreResults(Statement.CLOSE_ALL_RESULTS);
379: }
380: s_logger.log(Level.FINEST,
381: "Sequence BLOGENTRY_ID_SEQ created.");
382:
383: if (stmQuery.execute("create table BF_BLOG_ENTRY" + NL
384: + "(" + NL + " ID INTEGER NOT NULL," + NL
385: + " DOMAIN_ID INTEGER NOT NULL," + NL
386: + " BLOG_ID INTEGER NOT NULL," + NL
387: + " CAPTION VARCHAR("
388: + BLOGENTRY_CAPTION_MAXLENGTH + ") NOT NULL," + NL
389: + " COMMENTS VARCHAR("
390: + BLOGENTRY_COMMENTS_MAXLENGTH_ORACLE
391: + ") NOT NULL," + NL + " IMAGEURL VARCHAR("
392: + BLOGENTRY_IMAGEURL_MAXLENGTH
393: + ") NOT NULL,"
394: + NL
395: + " TARGETURL VARCHAR("
396: + BLOGENTRY_TARGETURL_MAXLENGTH
397: + ") NOT NULL,"
398: + NL
399: + " CREATION_DATE TIMESTAMP(9) NOT NULL,"
400: + NL
401: + " MODIFICATION_DATE TIMESTAMP(9) NOT NULL,"
402: + NL
403: + " CONSTRAINT BF_BLOGENTR_PK PRIMARY KEY (ID),"
404: + NL
405: +
406: // " CONSTRAINT BF_BLOGENTRDOM_FK FOREIGN KEY (DOMAIN_ID)" + NL +
407: // " REFERENCES BF_DOMAIN (ID) ON DELETE CASCADE," + NL +
408: " CONSTRAINT BF_BLOGENTR_FK FOREIGN KEY (BLOG_ID)"
409: + NL
410: + " REFERENCES BF_BLOG (ID) ON DELETE CASCADE"
411: + NL + ")")) {
412: // Close any results
413: stmQuery.getMoreResults(Statement.CLOSE_ALL_RESULTS);
414: }
415: s_logger.log(Level.FINEST, "Table BF_BLOG_ENTRY created.");
416:
417: ///////////////////////////////////////////////////////////////////////
418:
419: if (stmQuery
420: .execute("CREATE OR REPLACE PROCEDURE INSERT_BF_BLOGENTR"
421: + NL
422: + "("
423: + NL
424: + " IN_DOMAIN_ID IN INTEGER,"
425: + NL
426: + " IN_BLOG_ID IN INTEGER,"
427: + NL
428: + " IN_CAPTION IN VARCHAR,"
429: + NL
430: + " IN_COMMENTS IN VARCHAR,"
431: + NL
432: + " IN_IMAGEURL IN VARCHAR,"
433: + NL
434: + " IN_TARGETURL IN VARCHAR,"
435: + NL
436: + " OUT_KEY OUT INTEGER,"
437: + NL
438: + " OUT_TIMESTAMP OUT TIMESTAMP"
439: + NL
440: + ") "
441: + NL
442: + "IS "
443: + NL
444: + " NEW_OUT_KEY INTEGER; "
445: + NL
446: + " NEW_OUT_TIMESTAMP TIMESTAMP(9); "
447: + NL
448: + "BEGIN "
449: + NL
450: + " SELECT BLOGENTRY_ID_SEQ.NEXTVAL INTO NEW_OUT_KEY FROM DUAL;"
451: + NL
452: + " OUT_KEY := NEW_OUT_KEY;"
453: + NL
454: + " SELECT SYSDATE INTO NEW_OUT_TIMESTAMP FROM DUAL;"
455: + NL
456: + " OUT_TIMESTAMP := NEW_OUT_TIMESTAMP;"
457: + NL
458: + " INSERT INTO "
459: + strUserName
460: + ".BF_BLOG_ENTRY(ID, DOMAIN_ID, BLOG_ID, "
461: + NL
462: + " CAPTION, COMMENTS, IMAGEURL, TARGETURL, CREATION_DATE, MODIFICATION_DATE)"
463: + NL
464: + " VALUES (OUT_KEY, IN_DOMAIN_ID, IN_BLOG_ID, IN_CAPTION, "
465: + NL
466: + " IN_COMMENTS, IN_IMAGEURL, IN_TARGETURL, OUT_TIMESTAMP, OUT_TIMESTAMP);"
467: + NL + "END;")) {
468: // Close any results
469: stmQuery.getMoreResults(Statement.CLOSE_ALL_RESULTS);
470: }
471: s_logger.log(Level.FINEST,
472: "Table INSERT_BF_BLOGENTR created.");
473:
474: ///////////////////////////////////////////////////////////////////////
475:
476: if (stmQuery
477: .execute("CREATE OR REPLACE PROCEDURE UPDATE_BF_BLOGENTR"
478: + NL
479: + "("
480: + NL
481: + " IN_CAPTION IN VARCHAR,"
482: + NL
483: + " IN_COMMENTS IN VARCHAR,"
484: + NL
485: + " IN_IMAGEURL IN VARCHAR,"
486: + NL
487: + " IN_TARGETURL IN VARCHAR,"
488: + NL
489: + " IN_ENTRY_ID IN INTEGER,"
490: + NL
491: + " IN_DOMAIN_ID IN INTEGER,"
492: + NL
493: + " IN_MODIFICATION_DATE IN TIMESTAMP,"
494: + NL
495: + " OUT_TIMESTAMP OUT TIMESTAMP"
496: + NL
497: + ") "
498: + NL
499: + "IS "
500: + NL
501: + " NEW_OUT_TIMESTAMP TIMESTAMP(9); "
502: + NL
503: + "BEGIN "
504: + NL
505: + " SELECT SYSDATE INTO NEW_OUT_TIMESTAMP FROM DUAL; "
506: + " OUT_TIMESTAMP := NEW_OUT_TIMESTAMP; "
507: + NL
508: + " UPDATE "
509: + strUserName
510: + ".BF_BLOG_ENTRY SET CAPTION = IN_CAPTION,"
511: + NL
512: + " COMMENTS = IN_COMMENTS, IMAGEURL = IN_IMAGEURL, TARGETURL= IN_TARGETURL,"
513: + NL
514: + " MODIFICATION_DATE = OUT_TIMESTAMP WHERE ID = IN_ENTRY_ID "
515: + " AND DOMAIN_ID = IN_DOMAIN_ID "
516: + NL
517: + " AND MODIFICATION_DATE = IN_MODIFICATION_DATE;"
518: + NL + "END;")) {
519: // Close any results
520: stmQuery.getMoreResults(Statement.CLOSE_ALL_RESULTS);
521: }
522: s_logger.log(Level.FINEST,
523: "Table UPDATE_BF_BLOGENTR created.");
524: } catch (SQLException sqleExc) {
525: s_logger.log(Level.WARNING, "Failed to create schema "
526: + BLOG_SCHEMA_NAME, sqleExc);
527: throw sqleExc;
528: } finally {
529: DatabaseUtils.closeStatement(stmQuery);
530: }
531: }
532:
533: /**
534: * {@inheritDoc}
535: */
536: public String getInsertBlogAndFetchGeneratedValues()
537: throws OSSException {
538: return "{call INSERT_BF_BLOG (?, ?, ?, ?, ?, ?)}";
539: }
540:
541: /**
542: * {@inheritDoc}
543: */
544: public String getUpdateBlogAndFetchGeneratedValues()
545: throws OSSException {
546: return "{call UPDATE_BF_BLOG (?, ?, ?, ?, ?, ?, ?)}";
547: }
548:
549: /**
550: * {@inheritDoc}
551: */
552: public String getInsertBlog() throws OSSException {
553: StringBuffer buffer = new StringBuffer();
554:
555: // MySQL requires for AUTO_INCREMENT columns to specify ID and pass null as a value
556: buffer.append("INSERT INTO BF_BLOG(");
557: buffer.append(BLOG_COLUMNS);
558: buffer.append(") VALUES (BLOG_ID_SEQ.NEXTVAL, ?, ?, ?, ?, ");
559: buffer.append(DatabaseImpl.getInstance()
560: .getCurrentTimestampFunctionCall());
561: buffer.append(",");
562: buffer.append(DatabaseImpl.getInstance()
563: .getCurrentTimestampFunctionCall());
564: buffer.append(")");
565:
566: return buffer.toString();
567: }
568:
569: /**
570: * {@inheritDoc}
571: */
572: public String getInsertEntryAndFetchGeneratedValues()
573: throws OSSException {
574: return "{call INSERT_BF_BLOGENTR (?, ?, ?, ?, ?, ?, ?, ?)}";
575: }
576:
577: /**
578: * {@inheritDoc}
579: */
580: public String getUpdateEntryAndFetchGeneratedValues()
581: throws OSSException {
582: return "{call UPDATE_BF_BLOGENTR (?, ?, ?, ?, ?, ?, ?, ?)}";
583: }
584:
585: /**
586: * {@inheritDoc}
587: */
588: public String getInsertEntry() throws OSSException {
589: StringBuffer buffer = new StringBuffer();
590:
591: // MySQL requires for AUTO_INCREMENT columns to specify ID and pass null as a value
592: buffer.append("INSERT INTO BF_BLOG_ENTRY(");
593: buffer.append(ENTRY_COLUMNS);
594: buffer
595: .append(") VALUES (BLOGENTRY_ID_SEQ.NEXTVAL, ?, ?, ?, ?, ?, ?, ");
596: buffer.append(DatabaseImpl.getInstance()
597: .getCurrentTimestampFunctionCall());
598: buffer.append(",");
599: buffer.append(DatabaseImpl.getInstance()
600: .getCurrentTimestampFunctionCall());
601: buffer.append(")");
602:
603: return buffer.toString();
604: }
605: }
|