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

📄 map.java

📁 通过系统把几乎所有与人力资源相关的数据统一管理
💻 JAVA
字号:
//$Id: Map.java,v 1.17.2.11 2004/02/04 01:44:42 oneovthafew Exp $package net.sf.hibernate.collection;import java.util.HashMap;import java.io.Serializable;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.Collection;import java.util.Iterator;import org.odmg.DMap;import net.sf.hibernate.HibernateException;import net.sf.hibernate.engine.SessionImplementor;import net.sf.hibernate.util.LinkedHashCollectionHelper;import net.sf.hibernate.type.Type;/** * A persistent wrapper for a <tt>java.util.Map</tt>. Underlying collection * is a <tt>HashMap</tt>. *  * @see java.util.HashMap * @author Gavin King */public class Map extends PersistentCollection implements java.util.Map, DMap {		java.util.Map map;		protected Serializable snapshot(CollectionPersister persister) throws HibernateException {		HashMap clonedMap = new HashMap( map.size() );		Iterator iter = map.entrySet().iterator();		while ( iter.hasNext() ) {			java.util.Map.Entry e = (java.util.Map.Entry) iter.next();			clonedMap.put( e.getKey(), persister.getElementType().deepCopy( e.getValue() ) );		}		return clonedMap;	}		public Collection getOrphans(Serializable snapshot) throws HibernateException {		java.util.Map sn = (java.util.Map) snapshot;		return PersistentCollection.getOrphans( sn.values(), map.values(), getSession() );	}		public boolean equalsSnapshot(Type elementType) throws HibernateException {		java.util.Map xmap = (java.util.Map) getSnapshot();		if ( xmap.size()!=this.map.size() ) return false;		Iterator iter = map.entrySet().iterator();		while ( iter.hasNext() ) {			java.util.Map.Entry entry = (java.util.Map.Entry) iter.next();			if ( elementType.isDirty( entry.getValue(), xmap.get( entry.getKey() ), getSession() ) ) return false;		}		return true;	}		public boolean isWrapper(Object collection) {		return map==collection;	}	public Map(SessionImplementor session) {		super(session);	}		public Map() {} //needed for SOAP libraries, etc	public void beforeInitialize(CollectionPersister persister) {		this.map = persister.hasOrdering() ? 			LinkedHashCollectionHelper.createLinkedHashMap() : 			new HashMap();	}		public Map(SessionImplementor session, java.util.Map map) {		super(session);		this.map = map;		setInitialized();		setDirectlyAccessible(true);	}		/**	 * @see java.util.Map#size()	 */	public int size() {		read();		return map.size();	}		/**	 * @see java.util.Map#isEmpty()	 */	public boolean isEmpty() {		read();		return map.isEmpty();	}		/**	 * @see java.util.Map#containsKey(Object)	 */	public boolean containsKey(Object key) {		read();		return map.containsKey(key);	}		/**	 * @see java.util.Map#containsValue(Object)	 */	public boolean containsValue(Object value) {		read();		return map.containsValue(value) ;	}		/**	 * @see java.util.Map#get(Object)	 */	public Object get(Object key) {		read();		return map.get(key);	}		/**	 * @see java.util.Map#put(Object, Object)	 */	public Object put(Object key, Object value) {		write();		return map.put(key, value);	}		/**	 * @see java.util.Map#remove(Object)	 */	public Object remove(Object key) {		write();		return map.remove(key);	}		/**	 * @see java.util.Map#putAll(java.util.Map puts)	 */	public void putAll(java.util.Map puts) {		if ( puts.size()>0 ) {			write();			map.putAll(puts);		}	}		/**	 * @see java.util.Map#clear()	 */	public void clear() {		write();		map.clear();	}		/**	 * @see java.util.Map#keySet()	 */	public java.util.Set keySet() {		read();		return new SetProxy( map.keySet() );	}		/**	 * @see java.util.Map#values()	 */	public Collection values() {		read();		return new SetProxy( map.values() );	}		/**	 * @see java.util.Map#entrySet()	 */	public java.util.Set entrySet() {		read();		return new EntrySetProxy( map.entrySet() );	}	public boolean empty() {		return map.isEmpty();	}		public String toString() {		read();		return map.toString();	}	/**	 * @see PersistentCollection#writeTo(PreparedStatement, CollectionPersister, Object, int, boolean)	 */	public void writeTo(PreparedStatement st, CollectionPersister persister, Object entry, int i, boolean writeOrder)	throws HibernateException, SQLException {		java.util.Map.Entry e = (java.util.Map.Entry) entry;		persister.writeElement( st, e.getValue(), writeOrder, getSession() );		persister.writeIndex( st, e.getKey(), writeOrder, getSession() );	}		/**	 * @see PersistentCollection#readFrom(ResultSet, CollectionPersister, Object)	 */	public Object readFrom(ResultSet rs, CollectionPersister persister, Object owner) throws HibernateException, SQLException {		Object element = persister.readElement( rs, owner, getSession() );		Object index = persister.readIndex( rs, getSession() );		map.put(index, element);		return element;	}		/**	 * @see PersistentCollection#entries()	 */	public Iterator entries() {		return map.entrySet().iterator();	}		/** a wrapper for Map.Entry sets */	class EntrySetProxy implements java.util.Set {		private final java.util.Set set;		EntrySetProxy(java.util.Set set) {			this.set=set;		}		public boolean add(Object entry) {			//write(); -- doesn't			return set.add(entry);		}		public boolean addAll(Collection entries) {			//write(); -- doesn't			return set.addAll(entries);		}		public void clear() {			write();			set.clear();		}		public boolean contains(Object entry) {			return set.contains(entry);		}		public boolean containsAll(Collection entries) {			return set.containsAll(entries);		}		public boolean isEmpty() {			return set.isEmpty();		}		public Iterator iterator() {			return new EntryIteratorProxy( set.iterator() );		}		public boolean remove(Object entry) {			write();			return set.remove(entry);		}		public boolean removeAll(Collection entries) {			write();			return set.removeAll(entries);		}		public boolean retainAll(Collection entries) {			write();			return set.retainAll(entries);		}		public int size() {			return set.size();		}		// amazingly, these two will work because AbstractCollection		// uses iterator() to fill the array		public Object[] toArray() {			return set.toArray();		}		public Object[] toArray(Object[] array) {			return set.toArray(array);		}	}	final class EntryIteratorProxy implements Iterator {		private final Iterator iter;		EntryIteratorProxy(Iterator iter) {			this.iter=iter;		}		public boolean hasNext() {			return iter.hasNext();		}		public Object next() {			return new MapEntryProxy( (java.util.Map.Entry) iter.next() );		}		public void remove() {			write();			iter.remove();		}	}		final class MapEntryProxy implements java.util.Map.Entry {		private final java.util.Map.Entry me;		MapEntryProxy( java.util.Map.Entry me ) {			this.me = me;		}		public Object getKey() { return me.getKey(); }		public Object getValue() { return me.getValue(); }		public boolean equals(Object o) { return me.equals(o); }		public int hashCode() { return me.hashCode(); }		// finally, what it's all about...		public Object setValue(Object value) {			write();			return me.setValue(value);		}	}		public void initializeFromCache(CollectionPersister persister, Serializable disassembled, Object owner) 	throws HibernateException {		beforeInitialize(persister);		Serializable[] array = (Serializable[]) disassembled;		for (int i=0; i<array.length; i+=2 ) map.put(			persister.getIndexType().assemble( array[i], getSession(), owner ),			persister.getElementType().assemble( array[i+1], getSession(), owner )		);		setInitialized();	}		public Serializable disassemble(CollectionPersister persister) throws HibernateException {				Serializable[] result = new Serializable[ map.size() * 2 ];		Iterator iter = map.entrySet().iterator();		int i=0;		while ( iter.hasNext() ) {			java.util.Map.Entry e = (java.util.Map.Entry) iter.next();			result[i++] = persister.getIndexType().disassemble( e.getKey(), getSession() );			result[i++] = persister.getElementType().disassemble( e.getValue(), getSession() );		}		return result;			}		public Iterator getDeletes(Type elemType) throws HibernateException {		java.util.List deletes = new ArrayList();		Iterator iter = ( (java.util.Map) getSnapshot() ).entrySet().iterator();		while ( iter.hasNext() ) {			java.util.Map.Entry e = (java.util.Map.Entry) iter.next();			Object key = e.getKey();			if ( e.getValue()!=null && map.get(key)==null ) deletes.add(key);		}		return deletes.iterator();	}		public boolean needsInserting(Object entry, int i, Type elemType) throws HibernateException {		final java.util.Map sn = (java.util.Map) getSnapshot();		java.util.Map.Entry e = (java.util.Map.Entry) entry;		return e.getValue()!=null && sn.get( e.getKey() )==null;	}		public boolean needsUpdating(Object entry, int i, Type elemType) throws HibernateException {		final java.util.Map sn = (java.util.Map) getSnapshot();		java.util.Map.Entry e = (java.util.Map.Entry) entry;		Object snValue = sn.get( e.getKey() );		return e.getValue()!=null && 			snValue!=null && 			elemType.isDirty( snValue, e.getValue(), getSession() );	}			public Object getIndex(Object entry, int i) {		return ( (java.util.Map.Entry) entry ).getKey();	}		public boolean equals(Object other) {		read();		return map.equals(other);	}		public int hashCode() {		read();		return map.hashCode();	}		/**	 * @see net.sf.hibernate.collection.PersistentCollection#entryExists(java.lang.Object, int)	 */	public boolean entryExists(Object entry, int i) {		return ( (Map.Entry) entry ).getValue()!=null;	}}

⌨️ 快捷键说明

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