001: /*
002: * Copyright (c) 2006 - 2007 OpenSubsystems s.r.o. Slovak Republic. All rights reserved.
003: *
004: * Project: OpenChronicle
005: *
006: * $Id: SapDBBlogDatabaseSchema.java,v 1.3 2007/02/20 02:13:20 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.sapdb;
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.util.DatabaseUtils;
035: import org.opensubsystems.core.util.Log;
036:
037: /**
038: * Database specific operations related to persistence of blogs and their
039: * entries. This class encapsulate functionality specific for SapDB.
040: *
041: * @version $Id: SapDBBlogDatabaseSchema.java,v 1.3 2007/02/20 02:13:20 bastafidli Exp $
042: * @author Julian Legeny
043: * @code.reviewer Miro Halas
044: * @code.reviewed 1.4 2006/07/21 00:54:57 jlegeny
045: */
046: public class SapDBBlogDatabaseSchema extends BlogDatabaseSchema {
047: /*
048: Use autogenerated numbers for IDs using sequence
049: Name all constraints to easily identify them later.
050:
051: CREATE TABLE BF_BLOG
052: (
053: ID SERIAL,
054: DOMAIN_ID INTEGER NOT NULL,
055: FOLDER VARCHAR(50) NOT NULL,
056: CAPTION VARCHAR(1024) NOT NULL,
057: COMMENTS VARCHAR(8000) NOT NULL,
058: CREATION_DATE TIMESTAMP NOT NULL,
059: MODIFICATION_DATE TIMESTAMP NOT NULL,
060: CONSTRAINT BF_BLOG_PK PRIMARY KEY (ID),
061: CONSTRAINT BF_BLOG_FLDR_UQ UNIQUE (FOLDER)
062: // CONSTRAINT BF_BLOGDOM_FK FOREIGN KEY (DOMAIN_ID)
063: // REFERENCES BF_DOMAIN (ID) ON DELETE CASCADE
064: )
065:
066:
067: CREATE DBPROCEDURE INSERT_BF_BLOG
068: (
069: IN IN_DOMAIN_ID INTEGER,
070: IN IN_FOLDER VARCHAR(50),
071: IN IN_CAPTION VARCHAR(1024),
072: IN IN_COMMENTS VARCHAR(8000),
073: OUT OUT_KEY INTEGER,
074: OUT OUT_TIMESTAMP TIMESTAMP
075: )
076: AS
077: TRY
078: SET OUT_TIMESTAMP = now();
079: INSERT INTO " + strUserName + ".BF_BLOG(DOMAIN_ID, FOLDER,
080: CAPTION, COMMENTS, CREATION_DATE, MODIFICATION_DATE)
081: VALUES (:IN_DOMAIN_ID, :IN_FOLDER, :IN_CAPTION,
082: :IN_COMMENTS, :OUT_TIMESTAMP, :OUT_TIMESTAMP);
083: SET OUT_KEY = " + strUserName + ".BF_BLOG.CURRVAL;
084: CATCH
085: IF $RC <> 0 THEN STOP ($RC, $ERRMSG);
086:
087:
088: CREATE DBPROCEDURE UPDATE_BF_BLOG
089: (
090: IN IN_FOLDER VARCHAR(50),
091: IN IN_CAPTION VARCHAR(1024),
092: IN IN_COMMENTS VARCHAR(8000),
093: IN IN_BLOG_ID INTEGER,
094: IN IN_DOMAIN_ID INTEGER,
095: IN IN_MODIFICATION_DATE TIMESTAMP,
096: OUT OUT_TIMESTAMP TIMESTAMP
097: )
098: AS
099: TRY
100: SET OUT_TIMESTAMP = now();
101: UPDATE " + strUserName + ".BF_BLOG SET FOLDER = :IN_FOLDER, CAPTION = :IN_CAPTION,
102: COMMENTS = :IN_COMMENTS, MODIFICATION_DATE = :OUT_TIMESTAMP
103: WHERE ID = :IN_BLOG_ID AND DOMAIN_ID = :IN_DOMAIN_ID
104: AND MODIFICATION_DATE = :IN_MODIFICATION_DATE;
105: CATCH
106: IF $RC <> 0 THEN STOP ($RC, $ERRMSG);
107:
108:
109: CREATE TABLE BF_BLOG_ENTRY
110: (
111: ID SERIAL,
112: DOMAIN_ID INTEGER NOT NULL,
113: BLOG_ID INTEGER NOT NULL,
114: CAPTION VARCHAR(1024) NOT NULL,
115: COMMENTS VARCHAR(8000) NOT NULL,
116: IMAGEURL VARCHAR(1024) NOT NULL,
117: TARGETURL VARCHAR(1024) NOT NULL,
118: CREATION_DATE TIMESTAMP NOT NULL,
119: MODIFICATION_DATE TIMESTAMP NOT NULL,
120: CONSTRAINT BF_BLOGENTR_PK PRIMARY KEY (ID),
121: CONSTRAINT BF_BLOGENTR_FK FOREIGN KEY (BLOG_ID)
122: REFERENCES BF_BLOG (ID) ON DELETE CASCADE
123: // CONSTRAINT BF_BLOGENTRDOM_FK FOREIGN KEY (DOMAIN_ID)
124: // REFERENCES BF_DOMAIN (ID) ON DELETE CASCADE
125: )
126:
127:
128: CREATE DBPROCEDURE INSERT_BF_BLOGENTR
129: (
130: IN IN_DOMAIN_ID INTEGER,
131: IN IN_BLOG_ID INTEGER,
132: IN IN_CAPTION VARCHAR(1024),
133: IN IN_COMMENTS VARCHAR(8000),
134: IN IN_IMAGEURL VARCHAR(1024),
135: IN IN_TARGETURL VARCHAR(1024),
136: OUT OUT_KEY INTEGER,
137: OUT OUT_TIMESTAMP TIMESTAMP
138: )
139: AS
140: TRY
141: SET OUT_TIMESTAMP = now();
142: INSERT INTO " + strUserName + ".BF_BLOG_ENTRY(DOMAIN_ID, BLOG_ID,
143: CAPTION, COMMENTS, IMAGEURL, TARGETURL, CREATION_DATE, MODIFICATION_DATE)
144: VALUES (:IN_DOMAIN_ID, :IN_BLOG_ID, :IN_CAPTION,
145: :IN_COMMENTS, :IN_IMAGEURL, :IN_TARGETURL, :OUT_TIMESTAMP, :OUT_TIMESTAMP);
146: SET OUT_KEY = " + strUserName + ".BF_BLOG_ENTRY.CURRVAL;
147: CATCH
148: IF $RC <> 0 THEN STOP ($RC, $ERRMSG);
149:
150:
151: CREATE DBPROCEDURE UPDATE_BF_BLOGENTR
152: (
153: IN IN_CAPTION VARCHAR(1024),
154: IN IN_COMMENTS VARCHAR(8000),
155: IN IN_IMAGEURL VARCHAR(1024),
156: IN IN_TARGETURL VARCHAR(1024),
157: IN IN_ENTRY_ID INTEGER,
158: IN IN_DOMAIN_ID INTEGER,
159: IN IN_MODIFICATION_DATE TIMESTAMP,
160: OUT OUT_TIMESTAMP TIMESTAMP
161: )
162: AS
163: TRY
164: SET OUT_TIMESTAMP = now();
165: UPDATE " + strUserName + ".BF_BLOG_ENTRY SET CAPTION = :IN_CAPTION,
166: COMMENTS = :IN_COMMENTS, IMAGEURL = :IN_IMAGEURL,
167: TARGETURL= :IN_TARGETURL, MODIFICATION_DATE = :OUT_TIMESTAMP
168: WHERE ID = :IN_ENTRY_ID AND DOMAIN_ID = :IN_DOMAIN_ID
169: AND MODIFICATION_DATE = :IN_MODIFICATION_DATE;
170: CATCH
171: IF $RC <> 0 THEN STOP ($RC, $ERRMSG);
172: */
173:
174: // Constants ////////////////////////////////////////////////////////////////
175: /**
176: * Maximal length of blog comments.
177: * Restriction for VARCHAR type is max. 8000 characters for SapDB/MaxDB.
178: * There are also next restrictions for columns:
179: * 1. The total length of the output columns cannot exceed 8084 bytes.
180: * 2. The total length of the output columns, together with the columns
181: * specified in the ORDER or GROUP clause, cannot exceed 8084 bytes.
182: * 3. The total length of the output columns, together with the correlated
183: * columns and columns of predicates that contain a subquery, cannot
184: * exceed 4048 bytes in an SQL statement with correlated subqueries.
185: * read more at:
186: * http://dev.mysql.com/doc/maxdb/en/be/9970fc050e11d2a96c00a0c9449261/content.htm
187: */
188: public static final int BLOG_COMMENTS_MAXLENGTH_SAPDB = 6900;
189:
190: /**
191: * Maximal length of blog entry comments.
192: * Restriction for VARCHAR type is max. 8000 characters for SapDB/MaxDB.
193: * There are also next restrictions for columns:
194: * 1. The total length of the output columns cannot exceed 8084 bytes.
195: * 2. The total length of the output columns, together with the columns
196: * specified in the ORDER or GROUP clause, cannot exceed 8084 bytes.
197: * 3. The total length of the output columns, together with the correlated
198: * columns and columns of predicates that contain a subquery, cannot
199: * exceed 4048 bytes in an SQL statement with correlated subqueries.
200: * read more at:
201: * http://dev.mysql.com/doc/maxdb/en/be/9970fc050e11d2a96c00a0c9449261/content.htm
202: */
203: public static final int BLOGENTRY_COMMENTS_MAXLENGTH_SAPDB = 4900;
204:
205: // Cached values ////////////////////////////////////////////////////////////
206:
207: /**
208: * Logger for this class
209: */
210: private static Logger s_logger = Log
211: .getInstance(SapDBBlogDatabaseSchema.class);
212:
213: // Constructors /////////////////////////////////////////////////////////////
214:
215: /**
216: * Static initializer
217: */
218: static {
219: // Setup maximal length of individual fields for Sap DB database
220: Blog.setCommentsMaxLength(BLOG_COMMENTS_MAXLENGTH_SAPDB);
221: Entry.setCommentsMaxLength(BLOGENTRY_COMMENTS_MAXLENGTH_SAPDB);
222: }
223:
224: /**
225: * Default constructor.
226: *
227: * @throws OSSException - error occured.
228: */
229: public SapDBBlogDatabaseSchema() throws OSSException {
230: super ();
231: }
232:
233: // Public methods ///////////////////////////////////////////////////////////
234:
235: /**
236: * {@inheritDoc}
237: */
238: public void create(Connection cntDBConnection, String strUserName)
239: throws SQLException {
240: Statement stmQuery = null;
241: try {
242: stmQuery = cntDBConnection.createStatement();
243:
244: if (stmQuery.execute("create table BF_BLOG" + NL + "(" + NL
245: + " ID SERIAL," + NL
246: + " DOMAIN_ID INTEGER NOT NULL," + NL
247: + " FOLDER VARCHAR(" + BLOG_FOLDER_MAXLENGTH
248: + ") NOT NULL," + NL + " CAPTION VARCHAR("
249: + BLOG_CAPTION_MAXLENGTH + ") NOT NULL," + NL
250: + " COMMENTS VARCHAR("
251: + BLOG_COMMENTS_MAXLENGTH_SAPDB + ") NOT NULL,"
252: + NL + " CREATION_DATE TIMESTAMP NOT NULL," + NL
253: + " MODIFICATION_DATE TIMESTAMP NOT NULL,"
254: + NL
255: + " CONSTRAINT BF_BLOG_PK PRIMARY KEY (ID),"
256: + NL
257: +
258: // " CONSTRAINT BF_BLOGDOM_FK FOREIGN KEY (DOMAIN_ID)" + NL +
259: // " REFERENCES BF_DOMAIN (ID) ON DELETE CASCADE," + NL +
260: " CONSTRAINT BF_BLOG_FLDR_UQ UNIQUE (FOLDER)"
261: + NL + ")")) {
262: // Close any results
263: stmQuery.getMoreResults(Statement.CLOSE_ALL_RESULTS);
264: }
265: s_logger.log(Level.FINEST, "Table BF_BLOG created.");
266:
267: ///////////////////////////////////////////////////////////////////////
268:
269: if (stmQuery
270: .execute("CREATE DBPROCEDURE INSERT_BF_BLOG "
271: + NL
272: + "( "
273: + NL
274: + " IN IN_DOMAIN_ID INTEGER, "
275: + NL
276: + " IN IN_FOLDER VARCHAR("
277: + BLOG_FOLDER_MAXLENGTH
278: + "), "
279: + NL
280: + " IN IN_CAPTION VARCHAR("
281: + BLOG_CAPTION_MAXLENGTH
282: + "), "
283: + NL
284: + " IN IN_COMMENTS VARCHAR("
285: + BLOG_COMMENTS_MAXLENGTH_SAPDB
286: + "), "
287: + NL
288: + " OUT OUT_KEY INTEGER, "
289: + NL
290: + " OUT OUT_TIMESTAMP TIMESTAMP "
291: + NL
292: + ") "
293: + NL
294: + "AS "
295: + NL
296: + "TRY "
297: + NL
298: + " SET OUT_TIMESTAMP = now(); "
299: + NL
300: + " INSERT INTO "
301: + strUserName
302: + ".BF_BLOG(DOMAIN_ID, FOLDER, "
303: + NL
304: + " CAPTION, COMMENTS, CREATION_DATE, MODIFICATION_DATE) "
305: + NL
306: + " VALUES (:IN_DOMAIN_ID, :IN_FOLDER, :IN_CAPTION, "
307: + NL
308: + " :IN_COMMENTS, :OUT_TIMESTAMP, :OUT_TIMESTAMP); "
309: + NL
310: + " SET OUT_KEY = "
311: + strUserName
312: + ".BF_BLOG.CURRVAL;"
313: + NL
314: + "CATCH"
315: + NL
316: + " IF $RC <> 0 THEN STOP ($RC, $ERRMSG);")) {
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 DBPROCEDURE UPDATE_BF_BLOG "
327: + NL
328: + "( "
329: + NL
330: + " IN IN_FOLDER VARCHAR("
331: + BLOG_FOLDER_MAXLENGTH
332: + "), "
333: + NL
334: + " IN IN_CAPTION VARCHAR("
335: + BLOG_CAPTION_MAXLENGTH
336: + "), "
337: + NL
338: + " IN IN_COMMENTS VARCHAR("
339: + BLOG_COMMENTS_MAXLENGTH_SAPDB
340: + "), "
341: + NL
342: + " IN IN_BLOG_ID INTEGER, "
343: + NL
344: + " IN IN_DOMAIN_ID INTEGER, "
345: + NL
346: + " IN IN_MODIFICATION_DATE TIMESTAMP, "
347: + NL
348: + " OUT OUT_TIMESTAMP TIMESTAMP "
349: + NL
350: + ") "
351: + NL
352: + "AS "
353: + NL
354: + "TRY "
355: + NL
356: + " SET OUT_TIMESTAMP = now(); "
357: + NL
358: + " UPDATE "
359: + strUserName
360: + ".BF_BLOG SET FOLDER = :IN_FOLDER, "
361: + NL
362: + " CAPTION = :IN_CAPTION, COMMENTS = :IN_COMMENTS, "
363: + NL
364: + " MODIFICATION_DATE = :OUT_TIMESTAMP WHERE ID = :IN_BLOG_ID "
365: + NL
366: + " AND DOMAIN_ID = :IN_DOMAIN_ID "
367: + NL
368: + " AND MODIFICATION_DATE = :IN_MODIFICATION_DATE; "
369: + NL
370: + "CATCH"
371: + NL
372: + " IF $RC <> 0 THEN STOP ($RC, $ERRMSG);")) {
373: // Close any results
374: stmQuery.getMoreResults(Statement.CLOSE_ALL_RESULTS);
375: }
376: s_logger.log(Level.FINEST,
377: "Procedure UPDATE_BF_BLOG created.");
378:
379: ///////////////////////////////////////////////////////////////////////
380:
381: if (stmQuery.execute("create table BF_BLOG_ENTRY" + NL
382: + "(" + NL + " ID SERIAL," + NL
383: + " DOMAIN_ID INTEGER NOT NULL," + NL
384: + " BLOG_ID INTEGER NOT NULL," + NL
385: + " CAPTION VARCHAR("
386: + BLOGENTRY_CAPTION_MAXLENGTH + ") NOT NULL," + NL
387: + " COMMENTS VARCHAR("
388: + BLOGENTRY_COMMENTS_MAXLENGTH_SAPDB
389: + ") NOT NULL," + NL + " IMAGEURL VARCHAR("
390: + BLOGENTRY_IMAGEURL_MAXLENGTH + ") NOT NULL,"
391: + NL
392: + " TARGETURL VARCHAR("
393: + BLOGENTRY_TARGETURL_MAXLENGTH
394: + ") NOT NULL,"
395: + NL
396: + " CREATION_DATE TIMESTAMP NOT NULL,"
397: + NL
398: + " MODIFICATION_DATE TIMESTAMP NOT NULL,"
399: + NL
400: + " CONSTRAINT BF_BLOGENTR_PK PRIMARY KEY (ID),"
401: + NL
402: +
403: // " CONSTRAINT BF_BLOGENTRDOM_FK FOREIGN KEY (DOMAIN_ID)" + NL +
404: // " REFERENCES BF_DOMAIN (ID) ON DELETE CASCADE," + NL +
405: " CONSTRAINT BF_BLOGENTR_FK FOREIGN KEY (BLOG_ID)"
406: + NL
407: + " REFERENCES BF_BLOG (ID) ON DELETE CASCADE"
408: + NL + ")")) {
409: // Close any results
410: stmQuery.getMoreResults(Statement.CLOSE_ALL_RESULTS);
411: }
412: s_logger.log(Level.FINEST, "Table BF_BLOG_ENTRY created.");
413:
414: ///////////////////////////////////////////////////////////////////////
415:
416: if (stmQuery
417: .execute("CREATE DBPROCEDURE INSERT_BF_BLOGENTR"
418: + NL
419: + "("
420: + NL
421: + " IN IN_DOMAIN_ID INTEGER,"
422: + NL
423: + " IN IN_BLOG_ID INTEGER,"
424: + NL
425: + " IN IN_CAPTION VARCHAR("
426: + BLOGENTRY_CAPTION_MAXLENGTH
427: + "),"
428: + NL
429: + " IN IN_COMMENTS VARCHAR("
430: + BLOGENTRY_COMMENTS_MAXLENGTH_SAPDB
431: + "),"
432: + NL
433: + " IN IN_IMAGEURL VARCHAR("
434: + BLOGENTRY_IMAGEURL_MAXLENGTH
435: + "),"
436: + NL
437: + " IN IN_TARGETURL VARCHAR("
438: + BLOGENTRY_TARGETURL_MAXLENGTH
439: + "),"
440: + NL
441: + " OUT OUT_KEY INTEGER,"
442: + NL
443: + " OUT OUT_TIMESTAMP TIMESTAMP"
444: + NL
445: + ") "
446: + NL
447: + "AS "
448: + NL
449: + "TRY "
450: + NL
451: + " SET OUT_TIMESTAMP = now(); "
452: + NL
453: + " INSERT INTO "
454: + strUserName
455: + ".BF_BLOG_ENTRY(DOMAIN_ID, BLOG_ID, "
456: + NL
457: + " CAPTION, COMMENTS, IMAGEURL, TARGETURL, CREATION_DATE, MODIFICATION_DATE)"
458: + NL
459: + " VALUES (:IN_DOMAIN_ID, :IN_BLOG_ID, :IN_CAPTION, "
460: + NL
461: + " :IN_COMMENTS, :IN_IMAGEURL, :IN_TARGETURL, :OUT_TIMESTAMP, "
462: + " :OUT_TIMESTAMP);"
463: + NL
464: + " SET OUT_KEY = "
465: + strUserName
466: + ".BF_BLOG_ENTRY.CURRVAL;"
467: + NL
468: + "CATCH"
469: + NL
470: + " IF $RC <> 0 THEN STOP ($RC, $ERRMSG);")) {
471: // Close any results
472: stmQuery.getMoreResults(Statement.CLOSE_ALL_RESULTS);
473: }
474: s_logger.log(Level.FINEST,
475: "Table INSERT_BF_BLOGENTR created.");
476:
477: ///////////////////////////////////////////////////////////////////////
478:
479: if (stmQuery
480: .execute("CREATE DBPROCEDURE UPDATE_BF_BLOGENTR"
481: + NL
482: + "("
483: + NL
484: + " IN IN_CAPTION VARCHAR("
485: + BLOGENTRY_CAPTION_MAXLENGTH
486: + "),"
487: + NL
488: + " IN IN_COMMENTS VARCHAR("
489: + BLOGENTRY_COMMENTS_MAXLENGTH_SAPDB
490: + "),"
491: + NL
492: + " IN IN_IMAGEURL VARCHAR("
493: + BLOGENTRY_IMAGEURL_MAXLENGTH
494: + "),"
495: + NL
496: + " IN IN_TARGETURL VARCHAR("
497: + BLOGENTRY_TARGETURL_MAXLENGTH
498: + "),"
499: + NL
500: + " IN IN_ENTRY_ID INTEGER,"
501: + NL
502: + " IN IN_DOMAIN_ID INTEGER,"
503: + NL
504: + " IN IN_MODIFICATION_DATE TIMESTAMP,"
505: + NL
506: + " OUT OUT_TIMESTAMP TIMESTAMP"
507: + NL
508: + ") "
509: + NL
510: + "AS "
511: + NL
512: + "TRY "
513: + NL
514: + " SET OUT_TIMESTAMP = now(); "
515: + NL
516: + " UPDATE "
517: + strUserName
518: + ".BF_BLOG_ENTRY SET CAPTION = :IN_CAPTION,"
519: + NL
520: + " COMMENTS = :IN_COMMENTS, IMAGEURL = :IN_IMAGEURL, "
521: + NL
522: + " TARGETURL = :IN_TARGETURL,"
523: + NL
524: + " MODIFICATION_DATE = :OUT_TIMESTAMP WHERE ID = :IN_ENTRY_ID "
525: + " AND DOMAIN_ID = :IN_DOMAIN_ID "
526: + NL
527: + " AND MODIFICATION_DATE = :IN_MODIFICATION_DATE;"
528: + NL
529: + "CATCH"
530: + NL
531: + " IF $RC <> 0 THEN STOP ($RC, $ERRMSG);")) {
532: // Close any results
533: stmQuery.getMoreResults(Statement.CLOSE_ALL_RESULTS);
534: }
535: s_logger.log(Level.FINEST,
536: "Table UPDATE_BF_BLOGENTR created.");
537: } catch (SQLException sqleExc) {
538: s_logger.log(Level.WARNING, "Failed to create schema "
539: + BLOG_SCHEMA_NAME, sqleExc);
540: throw sqleExc;
541: } finally {
542: DatabaseUtils.closeStatement(stmQuery);
543: }
544: }
545:
546: /**
547: * {@inheritDoc}
548: */
549: public String getInsertBlogAndFetchGeneratedValues()
550: throws OSSException {
551: return "call INSERT_BF_BLOG (?, ?, ?, ?, ?, ?)";
552: }
553:
554: /**
555: * {@inheritDoc}
556: */
557: public String getUpdateBlogAndFetchGeneratedValues()
558: throws OSSException {
559: return "call UPDATE_BF_BLOG (?, ?, ?, ?, ?, ?, ?)";
560: }
561:
562: /**
563: * {@inheritDoc}
564: */
565: public String getInsertEntryAndFetchGeneratedValues()
566: throws OSSException {
567: return "call INSERT_BF_BLOGENTR (?, ?, ?, ?, ?, ?, ?, ?)";
568: }
569:
570: /**
571: * {@inheritDoc}
572: */
573: public String getUpdateEntryAndFetchGeneratedValues()
574: throws OSSException {
575: return "call UPDATE_BF_BLOGENTR (?, ?, ?, ?, ?, ?, ?, ?)";
576: }
577: }
|