1 21 22 package org.opensubsystems.blog.persist.db.sybase; 23 24 import java.sql.Connection ; 25 import java.sql.PreparedStatement ; 26 import java.sql.SQLException ; 27 import java.sql.Statement ; 28 import java.util.logging.Level ; 29 import java.util.logging.Logger ; 30 31 import org.opensubsystems.blog.data.Blog; 32 import org.opensubsystems.blog.data.Entry; 33 import org.opensubsystems.blog.persist.db.BlogDatabaseSchema; 34 import org.opensubsystems.core.data.DataConstant; 35 import org.opensubsystems.core.error.OSSException; 36 import org.opensubsystems.core.util.CallContext; 37 import org.opensubsystems.core.util.DatabaseUtils; 38 import org.opensubsystems.core.util.Log; 39 40 49 public class SybaseBlogDatabaseSchema extends BlogDatabaseSchema 50 { 51 164 165 167 171 public static final int BLOG_COMMENTS_MAXLENGTH_SYBASE = 8000; 172 173 177 public static final int BLOGENTRY_COMMENTS_MAXLENGTH_SYBASE = 8000; 178 179 181 184 private static Logger s_logger = Log.getInstance(SybaseBlogDatabaseSchema.class); 185 186 188 191 static 192 { 193 Blog.setCommentsMaxLength(BLOG_COMMENTS_MAXLENGTH_SYBASE); 195 Entry.setCommentsMaxLength(BLOGENTRY_COMMENTS_MAXLENGTH_SYBASE); 196 } 197 198 203 public SybaseBlogDatabaseSchema( 204 ) throws OSSException 205 { 206 super(); 207 } 208 209 211 214 public void create( 215 Connection cntDBConnection, 216 String strUserName 217 ) throws SQLException 218 { 219 Statement stmQuery = null; 220 try 221 { 222 stmQuery = cntDBConnection.createStatement(); 223 224 if (stmQuery.execute( 225 "create table BF_BLOG" + NL + 226 "(" + NL + 227 " ID NUMERIC(10, 0) IDENTITY NOT NULL," + NL + 228 " DOMAIN_ID NUMERIC(10, 0) NOT NULL," + NL + 229 " FOLDER VARCHAR(" + BLOG_FOLDER_MAXLENGTH + ") NOT NULL," + NL + 230 " CAPTION VARCHAR(" + BLOG_CAPTION_MAXLENGTH + ") NOT NULL," + NL + 231 " COMMENTS VARCHAR(" + BLOG_COMMENTS_MAXLENGTH_SYBASE + ") NOT NULL," + NL + 232 " CREATION_DATE DATETIME NOT NULL," + NL + 233 " MODIFICATION_DATE DATETIME NOT NULL," + NL + 234 " CONSTRAINT BF_BLOG_PK PRIMARY KEY (ID)," + NL + 235 " CONSTRAINT BF_BLOG_FLDR_UQ UNIQUE (FOLDER)" + NL + 238 ")")) 239 { 240 stmQuery.getMoreResults(Statement.CLOSE_ALL_RESULTS); 242 } 243 s_logger.log(Level.FINEST, "Table BF_BLOG created."); 244 245 247 if (stmQuery.execute( 248 "CREATE PROCEDURE INSERT_BF_BLOG " + NL + 249 " @IN_DOMAIN_ID NUMERIC(10, 0), " + NL + 250 " @IN_FOLDER VARCHAR(" + BLOG_FOLDER_MAXLENGTH + "), " + NL + 251 " @IN_CAPTION VARCHAR(" + BLOG_CAPTION_MAXLENGTH + "), " + NL + 252 " @IN_COMMENTS VARCHAR(" + BLOG_COMMENTS_MAXLENGTH_SYBASE + "), " + NL + 253 " @OUT_KEY INTEGER OUTPUT, " + NL + 254 " @OUT_TIMESTAMP DATETIME OUTPUT " + NL + 255 "AS " + NL + 256 " SET @OUT_TIMESTAMP = GETDATE() " + NL + 257 " INSERT INTO " + strUserName + ".BF_BLOG(DOMAIN_ID, FOLDER, " + NL + 258 " CAPTION, COMMENTS, CREATION_DATE, MODIFICATION_DATE) " + NL + 259 " VALUES (@IN_DOMAIN_ID, @IN_FOLDER, @IN_CAPTION, " + NL + 260 " @IN_COMMENTS, @OUT_TIMESTAMP, @OUT_TIMESTAMP) " + NL + 261 " SET @OUT_KEY = @@IDENTITY" + NL + 262 "RETURN")) 263 { 264 stmQuery.getMoreResults(Statement.CLOSE_ALL_RESULTS); 266 } 267 s_logger.log(Level.FINEST, "Procedure INSERT_BF_BLOG created."); 268 269 271 if (stmQuery.execute( 272 "CREATE PROCEDURE UPDATE_BF_BLOG " + NL + 273 " @IN_FOLDER VARCHAR(" + BLOG_FOLDER_MAXLENGTH + "), " + NL + 274 " @IN_CAPTION VARCHAR(" + BLOG_CAPTION_MAXLENGTH + "), " + NL + 275 " @IN_COMMENTS VARCHAR(" + BLOG_COMMENTS_MAXLENGTH_SYBASE + "), " + NL + 276 " @IN_BLOG_ID NUMERIC(10, 0), " + NL + 277 " @IN_DOMAIN_ID NUMERIC(10, 0), " + NL + 278 " @IN_MODIFICATION_DATE DATETIME, " + NL + 279 " @OUT_TIMESTAMP DATETIME OUTPUT " + NL + 280 "AS " + NL + 281 " SET @OUT_TIMESTAMP = GETDATE()" + NL + 282 " UPDATE " + strUserName + ".BF_BLOG SET FOLDER = @IN_FOLDER, " + NL + 283 " CAPTION = @IN_CAPTION, COMMENTS = @IN_COMMENTS, " + NL + 284 " MODIFICATION_DATE = @OUT_TIMESTAMP WHERE ID = @IN_BLOG_ID " + NL + 285 " AND DOMAIN_ID = @IN_DOMAIN_ID " + NL + 286 " AND MODIFICATION_DATE = @IN_MODIFICATION_DATE " + NL + 287 "RETURN")) 288 { 289 stmQuery.getMoreResults(Statement.CLOSE_ALL_RESULTS); 291 } 292 s_logger.log(Level.FINEST, "Procedure UPDATE_BF_BLOG created."); 293 294 296 if (stmQuery.execute( 297 "create table BF_BLOG_ENTRY" + NL + 298 "(" + NL + 299 " ID NUMERIC(10, 0) IDENTITY NOT NULL," + NL + 300 " DOMAIN_ID NUMERIC(10, 0) NOT NULL," + NL + 301 " BLOG_ID NUMERIC(10, 0) NOT NULL," + NL + 302 " CAPTION VARCHAR(" + BLOGENTRY_CAPTION_MAXLENGTH + ") NOT NULL," + NL + 303 " COMMENTS VARCHAR(" + BLOGENTRY_COMMENTS_MAXLENGTH_SYBASE + ") NOT NULL," + NL + 304 " IMAGEURL VARCHAR(" + BLOGENTRY_IMAGEURL_MAXLENGTH + ") NOT NULL," + NL + 305 " TARGETURL VARCHAR(" + BLOGENTRY_TARGETURL_MAXLENGTH + ") NOT NULL," + NL + 306 " CREATION_DATE DATETIME NOT NULL," + NL + 307 " MODIFICATION_DATE DATETIME NOT NULL," + NL + 308 " CONSTRAINT BF_BLOGENTR_PK PRIMARY KEY (ID)," + NL + 309 " CONSTRAINT BF_BLOGENTR_FK FOREIGN KEY (BLOG_ID)" + NL + 312 " REFERENCES BF_BLOG (ID)" + NL + 313 ")")) 314 { 315 stmQuery.getMoreResults(Statement.CLOSE_ALL_RESULTS); 317 } 318 s_logger.log(Level.FINEST, "Table BF_BLOG_ENTRY created."); 319 320 322 if (stmQuery.execute( 323 "CREATE PROCEDURE INSERT_BF_BLOGENTR" + NL + 324 " @IN_DOMAIN_ID NUMERIC(10, 0)," + NL + 325 " @IN_BLOG_ID NUMERIC(10, 0)," + NL + 326 " @IN_CAPTION VARCHAR(" + BLOGENTRY_CAPTION_MAXLENGTH + ")," + NL + 327 " @IN_COMMENTS VARCHAR(" + BLOGENTRY_COMMENTS_MAXLENGTH_SYBASE + ")," + NL + 328 " @IN_IMAGEURL VARCHAR(" + BLOGENTRY_IMAGEURL_MAXLENGTH + ")," + NL + 329 " @IN_TARGETURL VARCHAR(" + BLOGENTRY_TARGETURL_MAXLENGTH + ")," + NL + 330 " @OUT_KEY INTEGER OUTPUT," + NL + 331 " @OUT_TIMESTAMP DATETIME OUTPUT " + NL + 332 "AS" + NL + 333 " SET @OUT_TIMESTAMP = GETDATE() " + NL + 334 " INSERT INTO " + strUserName + ".BF_BLOG_ENTRY(DOMAIN_ID, BLOG_ID, " + NL + 335 " CAPTION, COMMENTS, IMAGEURL, TARGETURL, CREATION_DATE, MODIFICATION_DATE)" + NL + 336 " VALUES (@IN_DOMAIN_ID, @IN_BLOG_ID, @IN_CAPTION, @IN_COMMENTS, " + NL + 337 " @IN_IMAGEURL, @IN_TARGETURL, @OUT_TIMESTAMP, @OUT_TIMESTAMP)" + NL + 338 " SET @OUT_KEY = @@IDENTITY" + NL + 339 "RETURN")) 340 { 341 stmQuery.getMoreResults(Statement.CLOSE_ALL_RESULTS); 343 } 344 s_logger.log(Level.FINEST, "Table INSERT_BF_BLOGENTR created."); 345 346 348 if (stmQuery.execute( 349 "CREATE PROCEDURE UPDATE_BF_BLOGENTR" + NL + 350 " @IN_CAPTION VARCHAR(" + BLOGENTRY_CAPTION_MAXLENGTH + ")," + NL + 351 " @IN_COMMENTS VARCHAR(" + BLOGENTRY_COMMENTS_MAXLENGTH_SYBASE + ")," + NL + 352 " @IN_IMAGEURL VARCHAR(" + BLOGENTRY_IMAGEURL_MAXLENGTH + ")," + NL + 353 " @IN_TARGETURL VARCHAR(" + BLOGENTRY_TARGETURL_MAXLENGTH + ")," + NL + 354 " @IN_ENTRY_ID NUMERIC(10, 0)," + NL + 355 " @IN_DOMAIN_ID NUMERIC(10, 0)," + NL + 356 " @IN_MODIFICATION_DATE DATETIME," + NL + 357 " @OUT_TIMESTAMP DATETIME OUTPUT " + NL + 358 "AS " + NL + 359 " SET @OUT_TIMESTAMP = GETDATE()" + NL + 360 " UPDATE " + strUserName + ".BF_BLOG_ENTRY SET CAPTION = @IN_CAPTION," + NL + 361 " COMMENTS = @IN_COMMENTS, IMAGEURL = @IN_IMAGEURL," + NL + 362 " TARGETURL= @IN_TARGETURL, MODIFICATION_DATE = @OUT_TIMESTAMP " + NL + 363 " WHERE ID = @IN_ENTRY_ID AND DOMAIN_ID = @IN_DOMAIN_ID " + NL + 364 " AND MODIFICATION_DATE = @IN_MODIFICATION_DATE" + NL + 365 "RETURN")) 366 { 367 stmQuery.getMoreResults(Statement.CLOSE_ALL_RESULTS); 369 } 370 s_logger.log(Level.FINEST, "Table UPDATE_BF_BLOGENTR created."); 371 } 372 catch (SQLException sqleExc) 373 { 374 s_logger.log(Level.WARNING, 375 "Failed to create schema " + BLOG_SCHEMA_NAME, sqleExc); 376 throw sqleExc; 377 } 378 finally 379 { 380 DatabaseUtils.closeStatement(stmQuery); 381 } 382 } 383 384 387 public String getInsertBlogAndFetchGeneratedValues( 388 ) throws OSSException 389 { 390 return "{call INSERT_BF_BLOG (?, ?, ?, ?, ?, ?)}"; 391 } 392 393 396 public String getUpdateBlogAndFetchGeneratedValues( 397 ) throws OSSException 398 { 399 return "{call UPDATE_BF_BLOG ?, ?, ?, ?, ?, ?, ?)}"; 400 } 401 402 405 public String getInsertEntryAndFetchGeneratedValues( 406 ) throws OSSException 407 { 408 return "{call INSERT_BF_BLOGENTR ?, ?, ?, ?, ?, ?, ?, ?)}"; 409 } 410 411 414 public String getUpdateEntryAndFetchGeneratedValues( 415 ) throws OSSException 416 { 417 return "{call UPDATE_BF_BLOGENTR ?, ?, ?, ?, ?, ?, ?, ?)}"; 418 } 419 420 423 public int deleteRelatedData( 424 Connection dbConnection, 425 int iDataType, 426 int iId 427 ) throws OSSException, SQLException 428 { 429 PreparedStatement pstmDelete = null; 430 int iDeleted = 0; 431 432 if (iDataType == DataConstant.BLOG_DATA_TYPE) 433 { 434 try 435 { 436 pstmDelete = dbConnection.prepareStatement( 438 "delete from BF_BLOG_ENTRY where DOMAIN_ID = ? and BLOG_ID = ?"); 439 pstmDelete.setInt(1, CallContext.getInstance().getCurrentDomainId()); 440 pstmDelete.setInt(2, iId); 441 iDeleted = pstmDelete.executeUpdate(); 442 } 443 finally 444 { 445 DatabaseUtils.closeStatement(pstmDelete); 446 } 447 } 448 449 return iDeleted; 450 } 451 } 452 | Popular Tags |