1 21 22 package org.opensubsystems.blog.persist.db.sapdb; 23 24 import java.sql.Connection ; 25 import java.sql.SQLException ; 26 import java.sql.Statement ; 27 import java.util.logging.Level ; 28 import java.util.logging.Logger ; 29 30 import org.opensubsystems.blog.data.Blog; 31 import org.opensubsystems.blog.data.Entry; 32 import org.opensubsystems.blog.persist.db.BlogDatabaseSchema; 33 import org.opensubsystems.core.error.OSSException; 34 import org.opensubsystems.core.util.DatabaseUtils; 35 import org.opensubsystems.core.util.Log; 36 37 46 public class SapDBBlogDatabaseSchema extends BlogDatabaseSchema 47 { 48 174 175 177 190 public static final int BLOG_COMMENTS_MAXLENGTH_SAPDB = 6900; 191 192 205 public static final int BLOGENTRY_COMMENTS_MAXLENGTH_SAPDB = 4900; 206 207 209 212 private static Logger s_logger = Log.getInstance(SapDBBlogDatabaseSchema.class); 213 214 216 219 static 220 { 221 Blog.setCommentsMaxLength(BLOG_COMMENTS_MAXLENGTH_SAPDB); 223 Entry.setCommentsMaxLength(BLOGENTRY_COMMENTS_MAXLENGTH_SAPDB); 224 } 225 226 231 public SapDBBlogDatabaseSchema( 232 ) throws OSSException 233 { 234 super(); 235 } 236 237 239 242 public void create( 243 Connection cntDBConnection, 244 String strUserName 245 ) throws SQLException 246 { 247 Statement stmQuery = null; 248 try 249 { 250 stmQuery = cntDBConnection.createStatement(); 251 252 if (stmQuery.execute( 253 "create table BF_BLOG" + NL + 254 "(" + NL + 255 " ID SERIAL," + NL + 256 " DOMAIN_ID INTEGER NOT NULL," + NL + 257 " FOLDER VARCHAR(" + BLOG_FOLDER_MAXLENGTH + ") NOT NULL," + NL + 258 " CAPTION VARCHAR(" + BLOG_CAPTION_MAXLENGTH + ") NOT NULL," + NL + 259 " COMMENTS VARCHAR(" + BLOG_COMMENTS_MAXLENGTH_SAPDB + ") NOT NULL," + NL + 260 " CREATION_DATE TIMESTAMP NOT NULL," + NL + 261 " MODIFICATION_DATE TIMESTAMP NOT NULL," + NL + 262 " CONSTRAINT BF_BLOG_PK PRIMARY KEY (ID)," + NL + 263 " CONSTRAINT BF_BLOG_FLDR_UQ UNIQUE (FOLDER)" + NL + 266 ")")) 267 { 268 stmQuery.getMoreResults(Statement.CLOSE_ALL_RESULTS); 270 } 271 s_logger.log(Level.FINEST, "Table BF_BLOG created."); 272 273 275 if (stmQuery.execute( 276 "CREATE DBPROCEDURE INSERT_BF_BLOG " + NL + 277 "( " + NL + 278 " IN IN_DOMAIN_ID INTEGER, " + NL + 279 " IN IN_FOLDER VARCHAR(" + BLOG_FOLDER_MAXLENGTH + "), " + NL + 280 " IN IN_CAPTION VARCHAR(" + BLOG_CAPTION_MAXLENGTH + "), " + NL + 281 " IN IN_COMMENTS VARCHAR(" + BLOG_COMMENTS_MAXLENGTH_SAPDB + "), " + NL + 282 " OUT OUT_KEY INTEGER, " + NL + 283 " OUT OUT_TIMESTAMP TIMESTAMP " + NL + 284 ") " + NL + 285 "AS " + NL + 286 "TRY " + NL + 287 " SET OUT_TIMESTAMP = now(); " + NL + 288 " INSERT INTO " + strUserName + ".BF_BLOG(DOMAIN_ID, FOLDER, " + NL + 289 " CAPTION, COMMENTS, CREATION_DATE, MODIFICATION_DATE) " + NL + 290 " VALUES (:IN_DOMAIN_ID, :IN_FOLDER, :IN_CAPTION, " + NL + 291 " :IN_COMMENTS, :OUT_TIMESTAMP, :OUT_TIMESTAMP); " + NL + 292 " SET OUT_KEY = " + strUserName + ".BF_BLOG.CURRVAL;" + NL + 293 "CATCH" + NL + 294 " IF $RC <> 0 THEN STOP ($RC, $ERRMSG);")) 295 { 296 stmQuery.getMoreResults(Statement.CLOSE_ALL_RESULTS); 298 } 299 s_logger.log(Level.FINEST, "Procedure INSERT_BF_BLOG created."); 300 301 303 if (stmQuery.execute( 304 "CREATE DBPROCEDURE UPDATE_BF_BLOG " + NL + 305 "( " + NL + 306 " IN IN_FOLDER VARCHAR(" + BLOG_FOLDER_MAXLENGTH + "), " + NL + 307 " IN IN_CAPTION VARCHAR(" + BLOG_CAPTION_MAXLENGTH + "), " + NL + 308 " IN IN_COMMENTS VARCHAR(" + BLOG_COMMENTS_MAXLENGTH_SAPDB + "), " + NL + 309 " IN IN_BLOG_ID INTEGER, " + NL + 310 " IN IN_DOMAIN_ID INTEGER, " + NL + 311 " IN IN_MODIFICATION_DATE TIMESTAMP, " + NL + 312 " OUT OUT_TIMESTAMP TIMESTAMP " + NL + 313 ") " + NL + 314 "AS " + NL + 315 "TRY " + NL + 316 " SET OUT_TIMESTAMP = now(); " + NL + 317 " UPDATE " + strUserName + ".BF_BLOG SET FOLDER = :IN_FOLDER, " + NL + 318 " CAPTION = :IN_CAPTION, COMMENTS = :IN_COMMENTS, " + NL + 319 " MODIFICATION_DATE = :OUT_TIMESTAMP WHERE ID = :IN_BLOG_ID " + NL + 320 " AND DOMAIN_ID = :IN_DOMAIN_ID " + NL + 321 " AND MODIFICATION_DATE = :IN_MODIFICATION_DATE; " + NL + 322 "CATCH" + NL + 323 " IF $RC <> 0 THEN STOP ($RC, $ERRMSG);")) 324 { 325 stmQuery.getMoreResults(Statement.CLOSE_ALL_RESULTS); 327 } 328 s_logger.log(Level.FINEST, "Procedure UPDATE_BF_BLOG created."); 329 330 332 if (stmQuery.execute( 333 "create table BF_BLOG_ENTRY" + NL + 334 "(" + NL + 335 " ID SERIAL," + NL + 336 " DOMAIN_ID INTEGER NOT NULL," + NL + 337 " BLOG_ID INTEGER NOT NULL," + NL + 338 " CAPTION VARCHAR(" + BLOGENTRY_CAPTION_MAXLENGTH + ") NOT NULL," + NL + 339 " COMMENTS VARCHAR(" + BLOGENTRY_COMMENTS_MAXLENGTH_SAPDB + ") NOT NULL," + NL + 340 " IMAGEURL VARCHAR(" + BLOGENTRY_IMAGEURL_MAXLENGTH + ") NOT NULL," + NL + 341 " TARGETURL VARCHAR(" + BLOGENTRY_TARGETURL_MAXLENGTH + ") NOT NULL," + NL + 342 " CREATION_DATE TIMESTAMP NOT NULL," + NL + 343 " MODIFICATION_DATE TIMESTAMP NOT NULL," + NL + 344 " CONSTRAINT BF_BLOGENTR_PK PRIMARY KEY (ID)," + NL + 345 " CONSTRAINT BF_BLOGENTR_FK FOREIGN KEY (BLOG_ID)" + NL + 348 " REFERENCES BF_BLOG (ID) ON DELETE CASCADE" + NL + 349 ")")) 350 { 351 stmQuery.getMoreResults(Statement.CLOSE_ALL_RESULTS); 353 } 354 s_logger.log(Level.FINEST, "Table BF_BLOG_ENTRY created."); 355 356 358 if (stmQuery.execute( 359 "CREATE DBPROCEDURE INSERT_BF_BLOGENTR" + NL + 360 "(" + NL + 361 " IN IN_DOMAIN_ID INTEGER," + NL + 362 " IN IN_BLOG_ID INTEGER," + NL + 363 " IN IN_CAPTION VARCHAR(" + BLOGENTRY_CAPTION_MAXLENGTH + ")," + NL + 364 " IN IN_COMMENTS VARCHAR(" + BLOGENTRY_COMMENTS_MAXLENGTH_SAPDB + ")," + NL + 365 " IN IN_IMAGEURL VARCHAR(" + BLOGENTRY_IMAGEURL_MAXLENGTH + ")," + NL + 366 " IN IN_TARGETURL VARCHAR(" + BLOGENTRY_TARGETURL_MAXLENGTH + ")," + NL + 367 " OUT OUT_KEY INTEGER," + NL + 368 " OUT OUT_TIMESTAMP TIMESTAMP" + NL + 369 ") " + NL + 370 "AS " + NL + 371 "TRY " + NL + 372 " SET OUT_TIMESTAMP = now(); " + NL + 373 " INSERT INTO " + strUserName + ".BF_BLOG_ENTRY(DOMAIN_ID, BLOG_ID, " + NL + 374 " CAPTION, COMMENTS, IMAGEURL, TARGETURL, CREATION_DATE, MODIFICATION_DATE)" + NL + 375 " VALUES (:IN_DOMAIN_ID, :IN_BLOG_ID, :IN_CAPTION, " + NL + 376 " :IN_COMMENTS, :IN_IMAGEURL, :IN_TARGETURL, :OUT_TIMESTAMP, " + 377 " :OUT_TIMESTAMP);" + NL + 378 " SET OUT_KEY = " + strUserName + ".BF_BLOG_ENTRY.CURRVAL;" + NL + 379 "CATCH" + NL + 380 " IF $RC <> 0 THEN STOP ($RC, $ERRMSG);")) 381 { 382 stmQuery.getMoreResults(Statement.CLOSE_ALL_RESULTS); 384 } 385 s_logger.log(Level.FINEST, "Table INSERT_BF_BLOGENTR created."); 386 387 389 if (stmQuery.execute( 390 "CREATE DBPROCEDURE UPDATE_BF_BLOGENTR" + NL + 391 "(" + NL + 392 " IN IN_CAPTION VARCHAR(" + BLOGENTRY_CAPTION_MAXLENGTH + ")," + NL + 393 " IN IN_COMMENTS VARCHAR(" + BLOGENTRY_COMMENTS_MAXLENGTH_SAPDB + ")," + NL + 394 " IN IN_IMAGEURL VARCHAR(" + BLOGENTRY_IMAGEURL_MAXLENGTH + ")," + NL + 395 " IN IN_TARGETURL VARCHAR(" + BLOGENTRY_TARGETURL_MAXLENGTH + ")," + NL + 396 " IN IN_ENTRY_ID INTEGER," + NL + 397 " IN IN_DOMAIN_ID INTEGER," + NL + 398 " IN IN_MODIFICATION_DATE TIMESTAMP," + NL + 399 " OUT OUT_TIMESTAMP TIMESTAMP" + NL + 400 ") " + NL + 401 "AS " + NL + 402 "TRY " + NL + 403 " SET OUT_TIMESTAMP = now(); " + NL + 404 " UPDATE " + strUserName + ".BF_BLOG_ENTRY SET CAPTION = :IN_CAPTION," + NL + 405 " COMMENTS = :IN_COMMENTS, IMAGEURL = :IN_IMAGEURL, " + NL + 406 " TARGETURL = :IN_TARGETURL," + NL + 407 " MODIFICATION_DATE = :OUT_TIMESTAMP WHERE ID = :IN_ENTRY_ID " + 408 " AND DOMAIN_ID = :IN_DOMAIN_ID " + NL + 409 " AND MODIFICATION_DATE = :IN_MODIFICATION_DATE;" + NL + 410 "CATCH" + NL + 411 " IF $RC <> 0 THEN STOP ($RC, $ERRMSG);")) 412 { 413 stmQuery.getMoreResults(Statement.CLOSE_ALL_RESULTS); 415 } 416 s_logger.log(Level.FINEST, "Table UPDATE_BF_BLOGENTR created."); 417 } 418 catch (SQLException sqleExc) 419 { 420 s_logger.log(Level.WARNING, 421 "Failed to create schema " + BLOG_SCHEMA_NAME, sqleExc); 422 throw sqleExc; 423 } 424 finally 425 { 426 DatabaseUtils.closeStatement(stmQuery); 427 } 428 } 429 430 433 public String getInsertBlogAndFetchGeneratedValues( 434 ) throws OSSException 435 { 436 return "call INSERT_BF_BLOG (?, ?, ?, ?, ?, ?)"; 437 } 438 439 442 public String getUpdateBlogAndFetchGeneratedValues( 443 ) throws OSSException 444 { 445 return "call UPDATE_BF_BLOG (?, ?, ?, ?, ?, ?, ?)"; 446 } 447 448 451 public String getInsertEntryAndFetchGeneratedValues( 452 ) throws OSSException 453 { 454 return "call INSERT_BF_BLOGENTR (?, ?, ?, ?, ?, ?, ?, ?)"; 455 } 456 457 460 public String getUpdateEntryAndFetchGeneratedValues( 461 ) throws OSSException 462 { 463 return "call UPDATE_BF_BLOGENTR (?, ?, ?, ?, ?, ?, ?, ?)"; 464 } 465 } 466 | Popular Tags |