📄 genericvalue.java
字号:
/*
* $Id: GenericValue.java,v 1.4 2003/12/05 20:09:55 ajzeneski Exp $
*
* Copyright (c) 2001 The Open For Business Project - www.ofbiz.org
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT
* OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
* THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package org.ofbiz.entity;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.List;
import java.util.Map;
import org.ofbiz.base.util.UtilValidate;
import org.ofbiz.entity.model.ModelEntity;
import org.ofbiz.entity.util.EntityUtil;
/**
* Generic Entity Value Object - Handles persisntence for any defined entity.
*
*@author <a href="mailto:jonesde@ofbiz.org">David E. Jones</a>
*@author Eric Pabst
*@version $Revision: 1.4 $
*@since 1.0
*/
public class GenericValue extends GenericEntity {
/** Hashtable to cache various related entity collections */
public transient Map relatedCache = null;
/** Hashtable to cache various related cardinality one entity collections */
public transient Map relatedOneCache = null;
/** This Map will contain the original field values from the database iff
* this GenericValue came from the database. If it was made manually it will
* no have this Map, ie it will be null to not take up memory.
*/
protected Map originalDbValues = null;
/** Creates new GenericValue */
public GenericValue(ModelEntity modelEntity) {
super(modelEntity);
}
/** Creates new GenericValue from existing Map */
public GenericValue(ModelEntity modelEntity, Map fields) {
super(modelEntity, fields);
}
/** Creates new GenericValue from existing GenericValue */
public GenericValue(GenericValue value) {
super(value);
}
/** Creates new GenericValue from existing GenericValue */
public GenericValue(GenericPK primaryKey) {
super(primaryKey);
}
public void synchronizedWithDatasource() {
super.synchronizedWithDatasource();
this.copyOriginalDbValues();
}
public GenericValue create() throws GenericEntityException {
return this.getDelegator().create(this);
}
public void store() throws GenericEntityException {
this.getDelegator().store(this);
}
public void remove() throws GenericEntityException {
this.getDelegator().removeValue(this);
}
public void refresh() throws GenericEntityException {
this.getDelegator().refresh(this);
}
public boolean originalDbValuesAvailable() {
return this.originalDbValues != null ? true : false;
}
public Object getOriginalDbValue(String name) {
if (getModelEntity().getField(name) == null) {
throw new IllegalArgumentException("[GenericEntity.get] \"" + name + "\" is not a field of " + entityName);
}
return originalDbValues.get(name);
}
/** This should only be called by the Entity Engine once a GenericValue has
* been read from the database so that we have a copy of the original field
* values from the Db.
*/
public void copyOriginalDbValues() {
this.originalDbValues = new HashMap(this.fields);
}
/** Get the named Related Entity for the GenericValue from the persistent store
*@param relationName String containing the relation name which is the combination of relation.title and relation.rel-entity-name as specified in the entity XML definition file
*@return List of GenericValue instances as specified in the relation definition
*/
public List getRelated(String relationName) throws GenericEntityException {
return this.getDelegator().getRelated(relationName, this);
}
/** Get the named Related Entity for the GenericValue from the persistent store
*@param relationName String containing the relation name which is the combination of relation.title and relation.rel-entity-name as specified in the entity XML definition file
* @param orderBy The fields of the named entity to order the query by; may be null;
* optionally add a " ASC" for ascending or " DESC" for descending
*@return List of GenericValue instances as specified in the relation definition
*/
public List getRelated(String relationName, List orderBy) throws GenericEntityException {
return this.getDelegator().getRelated(relationName, null, orderBy, this);
}
/** Get the named Related Entity for the GenericValue from the persistent store
*@param relationName String containing the relation name which is the combination of relation.title and relation.rel-entity-name as specified in the entity XML definition file
* @param byAndFields the fields that must equal in order to keep; may be null
* @param orderBy The fields of the named entity to order the query by; may be null;
* optionally add a " ASC" for ascending or " DESC" for descending
*@return List of GenericValue instances as specified in the relation definition
*/
public List getRelated(String relationName, Map byAndFields, List orderBy) throws GenericEntityException {
return this.getDelegator().getRelated(relationName, byAndFields, orderBy, this);
}
/** Get the named Related Entity for the GenericValue from the persistent
* store, looking first in the global generic cache (for the moment this isn't true, is same as EmbeddedCache variant)
*@param relationName String containing the relation name which is the combination of relation.title and relation.rel-entity-name as specified in the entity XML definition file
*@return List of GenericValue instances as specified in the relation definition
*/
public List getRelatedCache(String relationName) throws GenericEntityException {
return this.getDelegator().getRelatedCache(relationName, this);
}
/**
* Get the named Related Entity for the GenericValue from the persistent store across another Relation.
* Helps to get related Values in a multi-to-multi relationship.
* @param relationNameOne String containing the relation name which is the
* combination of relation.title and relation.rel-entity-name as
* specified in the entity XML definition file, for first relation
* @param relationNameTwo String containing the relation name for second relation
* @param orderBy The fields of the named entity to order the query by; may be null;
* optionally add a " ASC" for ascending or " DESC" for descending
* @return List of GenericValue instances as specified in the relation definition
*/
public List getRelatedMulti(String relationNameOne, String relationNameTwo, List orderBy) throws GenericEntityException {
return this.getDelegator().getMultiRelation(this, relationNameOne, relationNameTwo, orderBy);
}
/**
* Get the named Related Entity for the GenericValue from the persistent store across another Relation.
* Helps to get related Values in a multi-to-multi relationship.
* @param relationNameOne String containing the relation name which is the
* combination of relation.title and relation.rel-entity-name as
* specified in the entity XML definition file, for first relation
* @param relationNameTwo String containing the relation name for second relation
* @return List of GenericValue instances as specified in the relation definition
*/
public List getRelatedMulti(String relationNameOne, String relationNameTwo) throws GenericEntityException {
return this.getDelegator().getMultiRelation(this, relationNameOne, relationNameTwo, null);
}
/** Get the named Related Entity for the GenericValue from the persistent
* store, looking first in the global generic cache (for the moment this isn't true, is same as EmbeddedCache variant)
*@param relationName String containing the relation name which is the combination of relation.title and relation.rel-entity-name as specified in the entity XML definition file
* @param byAndFields the fields that must equal in order to keep; may be null
* @param orderBy The fields of the named entity to order the query by; may be null;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -