⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 persistentclass.java

📁 一个Java持久层类库
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
		}		return property;	}	private Property getProperty(String propertyName, Iterator iterator) throws MappingException {		while ( iterator.hasNext() ) {			Property prop = (Property) iterator.next();			if ( prop.getName().equals( StringHelper.root(propertyName) ) ) {				return prop;			}		}		throw new MappingException( "property [" + propertyName + "] not found on entity [" + getEntityName() + "]" );	}	public Property getProperty(String propertyName) throws MappingException {		Iterator iter = getPropertyClosureIterator();		Property identifierProperty = getIdentifierProperty();		if ( identifierProperty != null				&& identifierProperty.getName().equals( StringHelper.root(propertyName) )				) {			return identifierProperty;		}		else {			return getProperty( propertyName, iter );		}	}	abstract public int getOptimisticLockMode();	public void setOptimisticLockMode(int optimisticLockMode) {		this.optimisticLockMode = optimisticLockMode;	}	public void validate(Mapping mapping) throws MappingException {		Iterator iter = getPropertyIterator();		while ( iter.hasNext() ) {			Property prop = (Property) iter.next();			if ( !prop.isValid(mapping) ) {				throw new MappingException(						"property mapping has wrong number of columns: " +						StringHelper.qualify( getEntityName(), prop.getName() ) +						" type: " +						prop.getType().getName()					);			}		}		checkPropertyDuplication();		checkColumnDuplication();	}		private void checkPropertyDuplication() throws MappingException {		HashSet names = new HashSet();		Iterator iter = getPropertyIterator();		while ( iter.hasNext() ) {			Property prop = (Property) iter.next();			if ( !names.add( prop.getName() ) ) {				throw new MappingException( "Duplicate property mapping of " + prop.getName() + " found in " + getEntityName());			}		}	}	public boolean isDiscriminatorValueNotNull() {		return NOT_NULL_DISCRIMINATOR_MAPPING.equals( getDiscriminatorValue() );	}	public boolean isDiscriminatorValueNull() {		return NULL_DISCRIMINATOR_MAPPING.equals( getDiscriminatorValue() );	}	public java.util.Map getMetaAttributes() {		return metaAttributes;	}	public void setMetaAttributes(java.util.Map metas) {		this.metaAttributes = metas;	}	public MetaAttribute getMetaAttribute(String name) {		return metaAttributes==null?null:(MetaAttribute) metaAttributes.get(name);	}	public String toString() {		return getClass().getName() + '(' + getEntityName() + ')';	}		public Iterator getJoinIterator() {		return joins.iterator();	}	public Iterator getJoinClosureIterator() {		return joins.iterator();	}	public void addJoin(Join join) {		joins.add(join);		join.setPersistentClass(this);	}	public int getJoinClosureSpan() {		return joins.size();	}	public int getPropertyClosureSpan() {		int span = properties.size();		for ( int i=0; i<joins.size(); i++ ) {			Join join = (Join) joins.get(i);			span += join.getPropertySpan();		}		return span;	}	public int getJoinNumber(Property prop) {		int result=1;		Iterator iter = getSubclassJoinClosureIterator();		while ( iter.hasNext() ) {			Join join = (Join) iter.next();			if ( join.containsProperty(prop) ) return result;			result++;		}		return 0;	}	/**	 * Build an iterator over the properties defined on this class.  The returned	 * iterator only accounts for "normal" properties (i.e. non-identifier	 * properties).	 * <p/>	 * Differs from {@link #getUnjoinedPropertyIterator} in that the iterator	 * we return here will include properties defined as part of a join.	 *	 * @return An iterator over the "normal" properties.	 */	public Iterator getPropertyIterator() {		ArrayList iterators = new ArrayList();		iterators.add( properties.iterator() );		for ( int i = 0; i < joins.size(); i++ ) {			Join join = ( Join ) joins.get( i );			iterators.add( join.getPropertyIterator() );		}		return new JoinedIterator( iterators );	}	/**	 * Build an iterator over the properties defined on this class <b>which	 * are not defined as part of a join</b>.  As with {@link #getPropertyIterator},	 * the returned iterator only accounts for non-identifier properties.	 *	 * @return An iterator over the non-joined "normal" properties.	 */	public Iterator getUnjoinedPropertyIterator() {		return properties.iterator();	}	public void setCustomSQLInsert(String customSQLInsert, boolean callable, ExecuteUpdateResultCheckStyle checkStyle) {		this.customSQLInsert = customSQLInsert;		this.customInsertCallable = callable;		this.insertCheckStyle = checkStyle;	}	public String getCustomSQLInsert() {		return customSQLInsert;	}	public boolean isCustomInsertCallable() {		return customInsertCallable;	}	public ExecuteUpdateResultCheckStyle getCustomSQLInsertCheckStyle() {		return insertCheckStyle;	}	public void setCustomSQLUpdate(String customSQLUpdate, boolean callable, ExecuteUpdateResultCheckStyle checkStyle) {		this.customSQLUpdate = customSQLUpdate;		this.customUpdateCallable = callable;		this.updateCheckStyle = checkStyle;	}	public String getCustomSQLUpdate() {		return customSQLUpdate;	}	public boolean isCustomUpdateCallable() {		return customUpdateCallable;	}	public ExecuteUpdateResultCheckStyle getCustomSQLUpdateCheckStyle() {		return updateCheckStyle;	}	public void setCustomSQLDelete(String customSQLDelete, boolean callable, ExecuteUpdateResultCheckStyle checkStyle) {		this.customSQLDelete = customSQLDelete;		this.customDeleteCallable = callable;		this.deleteCheckStyle = checkStyle;	}	public String getCustomSQLDelete() {		return customSQLDelete;	}	public boolean isCustomDeleteCallable() {		return customDeleteCallable;	}	public ExecuteUpdateResultCheckStyle getCustomSQLDeleteCheckStyle() {		return deleteCheckStyle;	}	public void addFilter(String name, String condition) {		filters.put(name, condition);	}	public java.util.Map getFilterMap() {		return filters;	}	public boolean isForceDiscriminator() {		return false;	}	public abstract boolean isJoinedSubclass();	public String getLoaderName() {		return loaderName;	}	public void setLoaderName(String loaderName) {		this.loaderName = loaderName==null ? null : loaderName.intern();	}	public abstract java.util.Set getSynchronizedTables();		public void addSynchronizedTable(String table) {		synchronizedTables.add(table);	}	public Boolean isAbstract() {		return isAbstract;	}	public void setAbstract(Boolean isAbstract) {		this.isAbstract = isAbstract;	}	protected void checkColumnDuplication(Set distinctColumns, Iterator columns) 	throws MappingException {		while ( columns.hasNext() ) {			Selectable columnOrFormula = (Selectable) columns.next();			if ( !columnOrFormula.isFormula() ) {				Column col = (Column) columnOrFormula;				if ( !distinctColumns.add( col.getName() ) ) {					throw new MappingException( 							"Repeated column in mapping for entity: " +							getEntityName() +							" column: " +							col.getName() + 							" (should be mapped with insert=\"false\" update=\"false\")"						);				}			}		}	}		protected void checkPropertyColumnDuplication(Set distinctColumns, Iterator properties) 	throws MappingException {		while ( properties.hasNext() ) {			Property prop = (Property) properties.next();			if ( prop.getValue() instanceof Component ) { //TODO: remove use of instanceof!				Component component = (Component) prop.getValue();				checkPropertyColumnDuplication( distinctColumns, component.getPropertyIterator() );			}			else {				if ( prop.isUpdateable() || prop.isInsertable() ) {					checkColumnDuplication( distinctColumns, prop.getColumnIterator() );				}			}		}	}		protected Iterator getNonDuplicatedPropertyIterator() {		return getUnjoinedPropertyIterator();	}		protected Iterator getDiscriminatorColumnIterator() {		return EmptyIterator.INSTANCE;	}		protected void checkColumnDuplication() {		HashSet cols = new HashSet();		if (getIdentifierMapper() == null ) {			//an identifier mapper => getKey will be included in the getNonDuplicatedPropertyIterator()			//and checked later, so it needs to be excluded			checkColumnDuplication( cols, getKey().getColumnIterator() );		}		checkColumnDuplication( cols, getDiscriminatorColumnIterator() );		checkPropertyColumnDuplication( cols, getNonDuplicatedPropertyIterator() );		Iterator iter = getJoinIterator();		while ( iter.hasNext() ) {			cols.clear();			Join join = (Join) iter.next();			checkColumnDuplication( cols, join.getKey().getColumnIterator() );			checkPropertyColumnDuplication( cols, join.getPropertyIterator() );		}	}		public abstract Object accept(PersistentClassVisitor mv);		public String getNodeName() {		return nodeName;	}		public void setNodeName(String nodeName) {		this.nodeName = nodeName;	}		public boolean hasPojoRepresentation() {		return getClassName()!=null;	}	public boolean hasDom4jRepresentation() {		return getNodeName()!=null;	}	public boolean hasSubselectLoadableCollections() {		return hasSubselectLoadableCollections;	}		public void setSubselectLoadableCollections(boolean hasSubselectCollections) {		this.hasSubselectLoadableCollections = hasSubselectCollections;	}	public void prepareTemporaryTables(Mapping mapping, Dialect dialect) {		if ( dialect.supportsTemporaryTables() ) {			temporaryIdTableName = dialect.generateTemporaryTableName( getTable().getName() );			Table table = new Table();			table.setName( temporaryIdTableName );			Iterator itr = getTable().getPrimaryKey().getColumnIterator();			while( itr.hasNext() ) {				Column column = (Column) itr.next();				table.addColumn( (Column) column.clone()  );			}			temporaryIdTableDDL = table.sqlTemporaryTableCreateString( dialect, mapping );		}	}	public String getTemporaryIdTableName() {		return temporaryIdTableName;	}	public String getTemporaryIdTableDDL() {		return temporaryIdTableDDL;	}	public Component getIdentifierMapper() {		return identifierMapper;	}	public boolean hasIdentifierMapper() {		return identifierMapper != null;	}	public void setIdentifierMapper(Component handle) {		this.identifierMapper = handle;	}	public void addTuplizer(EntityMode entityMode, String implClassName) {		if ( tuplizerImpls == null ) {			tuplizerImpls = new HashMap();		}		tuplizerImpls.put( entityMode, implClassName );	}	public String getTuplizerImplClassName(EntityMode mode) {		if ( tuplizerImpls == null ) return null;		return ( String ) tuplizerImpls.get( mode );	}	public java.util.Map getTuplizerMap() {		if ( tuplizerImpls == null ) {			return null;		}		return java.util.Collections.unmodifiableMap( tuplizerImpls );	}	public boolean hasNaturalId() {		Iterator props = getRootClass().getPropertyIterator();		while ( props.hasNext() ) {			if ( ( (Property) props.next() ).isNaturalIdentifier() ) {				return true;			}		}		return false;	}	public abstract boolean isLazyPropertiesCacheable();}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -