| MediaEntityBean.java |
/*
* JBoss, the OpenSource J2EE webOS
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
package org.jboss.media.entity;
import java.util.Collection;
import java.util.Vector;
import javax.ejb.CreateException;
import javax.ejb.EntityBean;
import javax.ejb.EntityContext;
import javax.ejb.RemoveException;
import javax.emb.MediaEntityLocal;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import org.jboss.ejb.plugins.keygenerator.KeyGenerator;
import org.jboss.ejb.plugins.keygenerator.KeyGeneratorFactory;
import org.jboss.logging.Logger;
/**
* Media Entity Bean implementation based on Entity Beans.
*
* <p>It extends the abstract <code>MediaEntity</code> class, and only
* declares CMP/CMR methods and implements <code>ejbCreate()</code>.
*
* @version <tt>$Revision: 1.7 $</tt>
* @author <a href="mailto:ricardoarguello@users.sourceforge.net">Ricardo Argüello</a>
*
* @ejb.bean name="MediaEntity"
* local-jndi-name="ejb/media/MediaEntity"
* view-type="local"
* reentrant="true"
* type="CMP"
* cmp-version="2.x"
* primkey-field="managedIdentity"
*
* @ejb.interface generate="false" local-class="javax.emb.MediaEntityLocal" *
* @ejb.home generate="false" local-class="javax.emb.MediaEntityLocalHome"
* @ejb.transaction type="Required"
* @ejb.util generate="false"
*
* @ejb.finder signature="java.util.Collection findByPartialDescription(java.lang.String partialDescription)"
* query="SELECT DISTINCT OBJECT(mediaEntity) FROM MediaEntity AS mediaEntity WHERE LOCATE(?1, mediaEntity.managedDescription) > -1"
*
* @ejb.finder signature="java.util.Collection findByPartialLocation(java.lang.String partialLocation)"
* query="SELECT DISTINCT OBJECT(mediaEntity) FROM MediaEntity AS mediaEntity WHERE LOCATE(?1, mediaEntity.managedLocation) > -1"
*
* @ejb.persistence table-name="JBOSS_MEDIA_ENTITY_BEANS"
*
* @jboss.create-table "true"
* @jboss.remove-table "false"
*/
public abstract class MediaEntityBean extends MediaEntity implements EntityBean
{
public static final String MEDIA_ENTITY_JNDI = "ejb/media/MediaEntity";
private EntityContext entityContext;
/** Logger. */
private Logger log = Logger.getLogger(MediaEntityBean.class);
/** KeyGenerator Factory JNDI. */
private static final String KEY_GENERATOR_JNDI = "UUIDKeyGeneratorFactory";
// Container Managed Persistance (CMP): ------------------------------------
/**
* @ejb.pk-field
* @ejb.persistence column-name="IDENTITY"
*/
public abstract String getManagedIdentity();
public abstract void setManagedIdentity(String identity);
/**
* @ejb.persistence column-name="CONTENT"
*/
public abstract byte[] getManagedContent();
public abstract void setManagedContent(byte[] content);
/**
* @ejb.persistence column-name="LOCATION"
*/
public abstract String getManagedLocation();
public abstract void setManagedLocation(String location);
/**
* @ejb.persistence column-name="DESCRIPTION"
*/
public abstract String getManagedDescription();
public abstract void setManagedDescription(String description);
/**
* @ejb.persistence column-name="NAME"
*/
public abstract String getManagedName();
public abstract void setManagedName(String name);
/**
* @ejb.persistence column-name="MIME_TYPE"
*/
public abstract String getManagedMimeType();
public abstract void setManagedMimeType(String mimeType);
/**
* @ejb.persistence column-name="LAST_MODIFIED"
*/
public abstract long getManagedLastModified();
public abstract void setManagedLastModified(long lastModified);
/**
* @ejb.persistence column-name="LISTENERS"
*/
public abstract Vector getManagedListeners();
public abstract void setManagedListeners(Vector listeners);
// Container Managed Relationships (CMR): ----------------------------------
/**
* @ejb.relation name="Media-ProxyMedia"
* role-name="media-has-proxy-media"
* target-ejb="MediaEntity"
* target-multiple="no"
* target-role-name="proxy-media-has-media"
*
* @jboss.relation related-pk-field="managedIdentity"
* fk-column="proxy_identity_fk"
*/
public abstract MediaEntityLocal getManagedProxy();
public abstract void setManagedProxy(MediaEntityLocal proxy);
/**
* @ejb.relation name="PreviousMediaVersion-NextMediaVersion"
* role-name="previous-media-version-has-next-media-version"
*
* @jboss.relation related-pk-field="managedIdentity"
* fk-column="previous_identity_fk"
*/
public abstract MediaEntityLocal getManagedPreviousVersion();
public abstract void setManagedPreviousVersion(MediaEntityLocal previousVersion);
/**
* @ejb.relation name="PreviousMediaVersion-NextMediaVersion"
* role-name="next-media-version-has-previous-media-version"
*
* @jboss.relation related-pk-field="managedIdentity"
* fk-column="child_identity_fk"
*/
public abstract MediaEntityLocal getManagedNextVersion();
public abstract void setManagedNextVersion(MediaEntityLocal nextVersion);
/**
* @ejb.relation name="MediaParent-MediaChild"
* role-name="media-parent-has-media-child"
*
* @jboss.relation related-pk-field="managedIdentity"
* fk-column="parent_identity_fk"
*/
public abstract Collection getManagedParents();
public abstract void setManagedParents(Collection parents);
/**
* @ejb.relation name="MediaParent-MediaChild"
* role-name="media-child-has-media-parent"
*
* @jboss.relation related-pk-field="managedIdentity"
* fk-column="child_identity_fk"
*/
public abstract Collection getManagedChildren();
public abstract void setManagedChildren(Collection children);
/**
* @ejb.relation name="Media-MetaData"
* role-name="media-has-metadatas"
*
* @jboss.relation related-pk-field="managedIdentity"
* fk-column="metadata_identity_fk"
*/
public abstract Collection getManagedMetaDatas();
public abstract void setManagedMetaDatas(Collection metadatas);
// javax.emb.MediaEntityLocalHome interface: -------------------------------
/**
* @see javax.emb.MediaEntityLocalHome#create()
*/
public String ejbCreate() throws CreateException
{
String identity = generateIdentity();
setManagedIdentity(identity);
updateLastModified();
return null;
}
/**
* @see javax.emb.MediaEntityLocalHome#create()
*/
public void ejbPostCreate() throws CreateException
{
}
// javax.ejb.EntityBean interface: -----------------------------------------
public void ejbActivate()
{
}
public void ejbPassivate()
{
}
public void ejbRemove() throws RemoveException
{
}
public void ejbLoad()
{
}
public void ejbStore()
{
}
public void setEntityContext(EntityContext entityContext)
{
this.entityContext = entityContext;
}
public void unsetEntityContext()
{
entityContext = null;
}
// Private: ----------------------------------------------------------------
/**
* Create the identity (primary key) of this bean using a UUID key
* generator.
*
* @return a String containing the primary key.
* @throws CreateException if an error accours when generating the primary
* key.
*/
private String generateIdentity() throws CreateException
{
KeyGenerator keyGenerator = null;
try
{
KeyGeneratorFactory keyGeneratorFactory =
(KeyGeneratorFactory) new InitialContext().lookup(
KEY_GENERATOR_JNDI);
keyGenerator = keyGeneratorFactory.getKeyGenerator();
String key = (String) keyGenerator.generateKey();
if (log.isDebugEnabled())
{
log.debug("Generated identity: " + key);
}
return key;
}
catch (NamingException e)
{
throw new CreateException(
"Error: can't find key generator factory: "
+ KEY_GENERATOR_JNDI
+ "; "
+ e.getMessage());
}
catch (Exception e)
{
throw new CreateException(
"Error: can't create key generator instance; key generator factory: "
+ KEY_GENERATOR_JNDI
+ "; "
+ e.getMessage());
}
}
}| MediaEntityBean.java |