/* * Copyright 2005 Werner Guttmann * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.castor.persist; import org.exolab.castor.persist.ClassMolder; /** * Holding structure for information about an entity class instance. * * This contains amongst others ... * <ul> * <li>the suggested class</li> * <li>the actually loaded class (if expansion took place)</li> * <li>the field values (in form of an object array) of the entity</li> * </ul> * * @author <a href="mailto:werner DOT guttmann AT gmx DOT net">Werner Guttmann</a> * @version $Revision$ $Date$ * @since 0.9.9 */ public final class ProposedEntity { //-------------------------------------------------------------------------- /** The fields of the object in question. */ private Object[] _fields = null; /** The object. */ private Object _entity = null; /** True if the proposed class has been expanded. */ private boolean _isExpanded = false; /** The proposed class. */ private Class _proposedEntityClass = null; /** The actualClass. */ private Class _actualEntityClass = null; /** The actual ClassMolder. */ private ClassMolder _actualClassMolder = null; //-------------------------------------------------------------------------- /** * Creates an default instance. */ public ProposedEntity() { } public ProposedEntity(final ClassMolder actualClassMolder) { setActualClassMolder(actualClassMolder); } /** * Creates an instance of this class based upon the values passed in. * * @param proposedEntity The entity instance to be copied. */ public ProposedEntity(final ProposedEntity proposedEntity) { setFields(proposedEntity.getFields()); setProposedEntityClass(proposedEntity.getProposedEntityClass()); setActualClassMolder(proposedEntity.getActualClassMolder()); } /** * Initialize field values to the specified number. * * @param numberOfFields Number of the field values to be created. */ public void initializeFields(final int numberOfFields) { _fields = new Object[numberOfFields]; } /** * Returns the fields of the object in question. * * @return Returns the fields. */ public Object[] getFields() { return _fields; } /** * Returns the specified field value of the object in question. * @param index Index of the field to be returned. * @return Returns the specified field value. */ public Object getField(final int index) { return _fields[index]; } /** * Indicates whether the fields are set, i.e. not null. * @return True if fields are set, i.e. not null(. */ public boolean isFieldsSet() { return (_fields != null); } /** * Indicates the number of field values set for this entity. * @return Number of field values set. */ public int getNumberOfFields() { return _fields.length; } /** * Sets the fields of the object in question. * * @param fields The fields to set. */ public void setFields(final Object[] fields) { _fields = fields; } /** * Sets the specified field of the object in question. * * @param field The field value to set. * @param index Specifies which field to set. */ public void setField(final Object field, final int index) { _fields[index] = field; } /** * Returns the object. * * @return The object. */ public Object getEntity() { return _entity; } /** * Sets the object. * * @param entity The object to set. */ public void setEntity(final Object entity) { _entity = entity; } /** * True if the proposed class has been expanded. * * @return <code>true</code> if class is expanded, <code>false</code> otherwise. */ public boolean isExpanded() { return _isExpanded; } /** * Set to true if the proposed class has been expanded. * * @param isExpanded The isExpanded to set. */ public void setExpanded(final boolean isExpanded) { _isExpanded = isExpanded; } /** * Returns the proposed Class instance. * * @return The proposedClass. */ public Class getProposedEntityClass() { return _proposedEntityClass; } /** * Sets the proposed Class instance. * * @param proposedClass The proposedClass to set. */ public void setProposedEntityClass(final Class proposedClass) { _proposedEntityClass = proposedClass; } /** * Returns the actual Class instance. * * @return The actualClass. */ public Class getActualEntityClass() { return _actualEntityClass; } /** * Sets the actual Class instance. * * @param actualClass The actualClass to set. */ public void setActualEntityClass(final Class actualClass) { _actualEntityClass = actualClass; } /** * Returns the ClassMolder associated with the actual object. * * @return The actual ClassMolder. */ public ClassMolder getActualClassMolder() { return _actualClassMolder; } /** * Sets the ClassMolder associated with the actual object. * * @param actualClassMolder The ClassMolder associated with the actual object. */ public void setActualClassMolder(final ClassMolder actualClassMolder) { _actualClassMolder = actualClassMolder; } /** * {@inheritDoc} * @see java.lang.Object#toString() */ public String toString() { StringBuffer buffer = new StringBuffer(); buffer.append("<"); buffer.append("proposedEntityClass=" + _proposedEntityClass); buffer.append("; actualEntityClass=" + _actualEntityClass); buffer.append("; entity=" + _entity); buffer.append("; actual classmolder=" + _actualClassMolder + "; "); if (_fields != null) { for (int i = 0; i < _fields.length; i++) { buffer.append("fields[" + i + "]='" + _fields[i] + "':"); } } buffer.append(">"); return buffer.toString(); } //-------------------------------------------------------------------------- }