X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=source%2Fmircoders%2Fstorage%2FDatabaseContentToMedia.java;h=11a2b357449314d057a4a661987db1a6cf553673;hb=d06e23e638f2538f263af76bd32da6b140f20ac6;hp=5e037b1f9aa29c07eef88cd7772d3fb166bb4766;hpb=e4ce853bb4545f7f3a944372300ce842aba11115;p=mir.git diff --git a/source/mircoders/storage/DatabaseContentToMedia.java b/source/mircoders/storage/DatabaseContentToMedia.java index 5e037b1f..11a2b357 100755 --- a/source/mircoders/storage/DatabaseContentToMedia.java +++ b/source/mircoders/storage/DatabaseContentToMedia.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2001, 2002 The Mir-coders group + * Copyright (C) 2001, 2002 The Mir-coders group * * This file is part of Mir. * @@ -18,514 +18,252 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * In addition, as a special exception, The Mir-coders gives permission to link - * the code of this program with the com.oreilly.servlet library, any library - * licensed under the Apache Software License, The Sun (tm) Java Advanced - * Imaging library (JAI), The Sun JIMI library (or with modified versions of - * the above that use the same license as the above), and distribute linked - * combinations including the two. You must obey the GNU General Public - * License in all respects for all of the code used other than the above - * mentioned libraries. If you modify this file, you may extend this exception - * to your version of the file, but you are not obligated to do so. If you do - * not wish to do so, delete this exception statement from your version. + * the code of this program with any library licensed under the Apache Software License, + * The Sun (tm) Java Advanced Imaging library (JAI), The Sun JIMI library + * (or with modified versions of the above that use the same license as the above), + * and distribute linked combinations including the two. You must obey the + * GNU General Public License in all respects for all of the code used other than + * the above mentioned libraries. If you modify this file, you may extend this + * exception to your version of the file, but you are not obligated to do so. + * If you do not wish to do so, delete this exception statement from your version. */ package mircoders.storage; -import java.lang.*; -import java.sql.*; -import java.io.*; -import java.util.*; +import java.sql.Connection; +import java.sql.Statement; +import java.util.ArrayList; -import freemarker.template.*; - -import mir.storage.*; -import mir.entity.*; -import mir.misc.*; - -import mircoders.entity.*; +import mir.entity.EntityList; +import mir.log.LoggerWrapper; +import mir.storage.Database; +import mir.storage.DatabaseFailure; +import mircoders.entity.EntityUploadedMedia; /** * implements abstract DB connection to the content_x_media SQL table * * @author RK, mir-coders group - * @version $Id: DatabaseContentToMedia.java,v 1.11 2002/12/06 08:08:44 mh Exp $ + * @version $Id: DatabaseContentToMedia.java,v 1.19.2.10 2005/03/26 11:26:28 zapata Exp $ * */ -public class DatabaseContentToMedia extends Database implements StorageObject{ +public class DatabaseContentToMedia extends Database { private static DatabaseContentToMedia instance; - // the following *has* to be sychronized cause this static method - // could get preemted and we could end up with 2 instances of DatabaseFoo. - // see the "Singletons with needles and thread" article at JavaWorld -mh - public synchronized static DatabaseContentToMedia getInstance() - throws StorageObjectException { + public synchronized static DatabaseContentToMedia getInstance() { if (instance == null) { instance = new DatabaseContentToMedia(); - instance.myselfDatabase = instance; } return instance; } - private DatabaseContentToMedia() - throws StorageObjectException { - + private DatabaseContentToMedia() { super(); - this.hasTimestamp = false; - this.theTable="content_x_media"; - try { this.theEntityClass = Class.forName("mir.entity.GenericEntity"); } - catch (Exception e) { throw new StorageObjectException(e.toString()); } - } - - /** - * get all the media-files belonging to a content entity - * - */ - public EntityList getMedia(EntityContent content) - throws StorageObjectException { - EntityList returnList=null; - if (content != null) { - // get all to_topic from media_x_topic - String id = content.getId(); - //this is not supported by mysql - String subselect = "id in (select media_id from " + theTable + " where content_id=" + id+")"; - - try { - // media should stay in uploaded order. this is especially important - // for photo stories which require a specific chronologic order. - // this is why we have the the second parameter "id" - returnList = DatabaseMedia.getInstance().selectByWhereClause(subselect,"id",-1); - } catch (Exception e) { - theLog.printDebugInfo("-- get media failed " + e.toString()); - throw new StorageObjectException("-- get media failed " + e.toString()); - } - } - return returnList; - } - - public boolean hasMedia(EntityContent content) - throws StorageObjectException { - String wc = "content_id="+content.getId(); - if( content != null) { - try { - if(selectByWhereClause(wc,-1).size() == 0) - return false; - else - return true; - } catch (Exception e) { - theLog.printError("-- hasMedia failed " + e.toString()); - throw new StorageObjectException("-- hasMedia failed " + e.toString()); - } - } else { - theLog.printError("-- hasMedia failed: content is NULL"); - throw new StorageObjectException("-- hasMedia failed: content is NULL"); - } - } - - - - - /** - * get all the audio belonging to a content entity - * - */ - public EntityList getAudio(EntityContent content) - throws StorageObjectException { - EntityList returnList=null; - if (content != null) { - // get all to_topic from media_x_topic - String id = content.getId(); - //this is not supported by mysql - String subselect = "id in (select media_id from " + theTable + " where content_id=" + id+")"; - - try { - // media should stay in uploaded order. this is especially important - // for photo stories which require a specific chronologic order. - // this is why we have the the second parameter "id" - returnList = DatabaseAudio.getInstance().selectByWhereClause(subselect,"id",-1); - } catch (Exception e) { - theLog.printDebugInfo("-- get audio failed " + e.toString()); - throw new StorageObjectException("-- get audio failed " + e.toString()); - } - } - return returnList; - } - - /** - * get all the video belonging to a content entity - * - */ - public EntityList getVideo(EntityContent content) - throws StorageObjectException { - EntityList returnList=null; - if (content != null) { - // get all to_topic from media_x_topic - String id = content.getId(); - //this is not supported by mysql - String subselect = "id in (select media_id from " + theTable + " where content_id=" + id+")"; - - try { - // media should stay in uploaded order. this is especially important - // for photo stories which require a specific chronologic order. - // this is why we have the the second parameter "id" - returnList = DatabaseVideo.getInstance().selectByWhereClause(subselect,"id",-1); - } catch (Exception e) { - theLog.printDebugInfo("-- get video failed " + e.toString()); - throw new StorageObjectException("-- get video failed " + e.toString()); - } - } - return returnList; - } - - /** - * get all the images belonging to a content entity - * - */ - public EntityList getImages(EntityContent content) - throws StorageObjectException { - EntityList returnList=null; - if (content != null) { - // get all to_topic from media_x_topic - String id = content.getId(); - //this is not supported by mysql - String subselect = "id in (select media_id from " + theTable + " where content_id=" + id+")"; - - try { - // media should stay in uploaded order. this is especially important - // for photo stories which require a specific chronologic order. - // this is why we have the the second parameter "id" - returnList = DatabaseImages.getInstance().selectByWhereClause(subselect,"id",-1); - } catch (Exception e) { - theLog.printDebugInfo("-- get images failed " + e.toString()); - throw new StorageObjectException("-- get images failed " + e.toString()); - } - } - return returnList; - } - - - /** - * get all the uploaded/other Media belonging to a content entity - * - */ - public EntityList getOther(EntityContent content) - throws StorageObjectException - { - /** @todo this should only fetch published media / rk */ - - EntityList returnList=null; - if (content != null) { - // get all to_topic from media_x_topic - String id = content.getId(); - //this is not supported by mysql - String subselect = "id in (select media_id from " + theTable + - " where content_id=" + id+")"; - - try { - // media should stay in uploaded order. this is especially important - // for photo stories which require a specific chronologic order. - // this is why we have the the second parameter "id" - returnList = DatabaseOther.getInstance().selectByWhereClause(subselect, - "id"); - } catch (Exception e) { - e.printStackTrace(); - theLog.printDebugInfo("-- get Other failed " + e.toString()); - throw new StorageObjectException("-- get Other failed " - + e.toString()); - } - } - return returnList; - } - /** - * get all the uploaded/other Media belonging to a content entity - * - */ - public EntityList getUploadedMedia(EntityContent content) - throws StorageObjectException - { - /** @todo this should only fetch published media / rk */ - - EntityList returnList=null; - if (content != null) { - // get all to_topic from media_x_topic - String id = content.getId(); - //this is not supported by mysql - String subselect = "id in (select media_id from " + theTable + - " where content_id=" + id+")"; - - try { - returnList = DatabaseUploadedMedia.getInstance().selectByWhereClause(subselect, - "id"); - } catch (Exception e) { - e.printStackTrace(); - theLog.printDebugInfo("-- get uploadedMedia failed " + e.toString()); - throw new StorageObjectException("-- get uploadedMedia failed " - + e.toString()); - } - } - return returnList; + logger = new LoggerWrapper("Database.ContentToMedia"); + mainTable = "content_x_media"; + entityClass = mir.entity.GenericEntity.class; } - - public void setMedia(String contentId, String[] mediaId) - throws StorageObjectException { - if (contentId == null){ - return; - } - if (mediaId==null || mediaId[0]==null) { - return; - } - //first delete all row with content_id=contentId - String sql = "delete from "+ theTable +" where content_id=" + contentId; - - Connection con=null;Statement stmt=null; - try { - con = getPooledCon(); - // should be a preparedStatement because is faster - stmt = con.createStatement(); - ResultSet rs = executeSql(stmt,sql); - } catch (Exception e) { - theLog.printDebugInfo("-- set media failed -- delete"); - throw new StorageObjectException("-- set media failed -- delete"+e.toString()); - } finally { - freeConnection(con,stmt); - } - - //now insert - //first delete all row with content_id=contentId - for (int i=0;i