/* * StreamableMapping.java * * Created on 7 October 2006, 16:58 * * To change this template, choose Tools | Template Manager * and open the template in the editor. */ package au.org.kaizen.jdo; import javax.jdo.JDOFatalException; import org.apache.log4j.Logger; import org.jpox.ClassLoaderResolver; import org.jpox.metadata.AbstractPropertyMetaData; import org.jpox.store.DatastoreAdapter; import org.jpox.store.DatastoreContainerObject; import org.jpox.store.expression.LogicSetExpression; import org.jpox.store.expression.QueryExpression; import org.jpox.store.expression.ScalarExpression; import org.jpox.store.mapping.SingleFieldMapping; /** * Represents the class mapping for the StreamableObjet class * @author swhitehead */ public class StreamableMapping extends SingleFieldMapping { private Logger logger; /** * Constructor for a mapping used by a Query. * @param dba Datastore Adapter * @param type Type of the field */ public StreamableMapping(DatastoreAdapter dba, String type) { super(dba, type); } /** * Constructor for a mapping used by a datastore representation. * @param dba Datastore Adapter * @param fmd AbstractPropertyMetaData for the field being mapped * @param datastoreContainer Table containing the mapped object */ public StreamableMapping(DatastoreAdapter dba, AbstractPropertyMetaData fmd, DatastoreContainerObject datastoreContainer) { super(dba, fmd, datastoreContainer); } /** * Constructor for a mapping used by a datastore representation. * @param clr Classloader resolver * @param dba Datastore Adapter * @param fmd AbstractPropertyMetaData for the field being mapped * @param datastoreContainer Table containing the mapped object */ public StreamableMapping(DatastoreAdapter dba, AbstractPropertyMetaData fmd, DatastoreContainerObject datastoreContainer, ClassLoaderResolver clr) { super(dba, fmd, datastoreContainer); } /** * Convient method for obtaining the logger for this class * @return A logger suitable for logging */ protected Logger getLogger() { if (logger == null) { logger = Logger.getLogger(StreamableMapping.class); } return logger; } /** * Returns the Java class type represented by this mapping * @return Returns StreamableObject.class */ public Class getJavaType() { return StreamableObject.class; } /** * Returns a sample StreamableObject * @param classLoaderResolver ClassLoaderResolver * @return A new instance of StreamableObject */ public Object getSampleValue(ClassLoaderResolver classLoaderResolver) { return new StreamableObject(null); } /** * Overwritten to throw an error. It is not possible to include a streamable * object in a query * @param qExpr QueryExpression * @param literal Object literal * @return Returns nothing - throws Fatal Exception */ public ScalarExpression newLiteral(QueryExpression qExpr, Object literal) { throw new JDOFatalException(getJavaType().getName()+" is not supported in queries."); } /** * Overwritten to throw an error. It is not possible to include a streamable * object in a query * @param qExpr QueryExpression * @param expr LogicalSetExpression * @return Returns nothing - throws Fatal Exception */ public ScalarExpression newScalarExpression(QueryExpression qExpr, LogicSetExpression expr) { throw new JDOFatalException(getJavaType().getName()+" is not supported in queries."); } }