public Collection getOrphans(Serializable snapshot, String entityName) throws HibernateException { List sn = (List) snapshot; return getOrphans( sn, bag, entityName, getSession() ); }
public Object getSnapshotElement(Object entry, int i) { java.util.List sn = (java.util.List) getSnapshot(); return sn.get(i); }
/** * @see java.util.List#get(int) */ public Object get(int i) { read(); return bag.get(i); }
/** * @see java.util.Collection#addAll(Collection) */ public boolean addAll(Collection c) { if ( c.size()==0 ) return false; if ( !queueAddAll(c) ) { write(); return bag.addAll(c); } else { return c.size()>0; } }
public boolean equalsSnapshot(CollectionPersister persister) throws HibernateException { Type elementType = persister.getElementType(); EntityMode entityMode = getSession().getEntityMode(); java.util.List sn = (java.util.List) getSnapshot(); if ( sn.size()!=bag.size() ) return false; Iterator iter = bag.iterator(); while ( iter.hasNext() ) { Object elt = iter.next(); final boolean unequal = countOccurrences(elt, bag, elementType, entityMode) != countOccurrences(elt, sn, elementType, entityMode); if ( unequal ) return false; } return true; }
public boolean needsInserting(Object entry, int i, Type elemType) throws HibernateException { //if ( !persister.isOneToMany() ) throw new AssertionFailure("Not implemented for Bags"); List sn = (List) getSnapshot(); final EntityMode entityMode = getSession().getEntityMode(); if ( sn.size()>i && elemType.isSame( sn.get(i), entry, entityMode ) ) { //a shortcut if its location didn't change! return false; } else { //search for it //note that this code is incorrect for other than one-to-many Iterator olditer = sn.iterator(); while ( olditer.hasNext() ) { Object old = olditer.next(); if ( elemType.isSame( old, entry, entityMode ) ) return false; } return true; } }
/** * @see java.util.List#set(int, Object) */ public Object set(int i, Object o) { write(); return bag.set(i, o); }
public void initializeFromCache(CollectionPersister persister, Serializable disassembled, Object owner) throws HibernateException { Serializable[] array = (Serializable[]) disassembled; int size = array.length; beforeInitialize( persister, size ); for ( int i = 0; i < size; i++ ) { Object element = persister.getElementType().assemble( array[i], getSession(), owner ); if ( element!=null ) { bag.add( element ); } } }
public PersistentBag(SessionImplementor session, Collection coll) { super(session); if (coll instanceof List) { bag = (List) coll; } else { bag = new ArrayList(); Iterator iter = coll.iterator(); while ( iter.hasNext() ) { bag.add( iter.next() ); } } setInitialized(); setDirectlyAccessible(true); }
/** * @see java.util.Collection#add(Object) */ public boolean add(Object object) { if ( !isOperationQueueEnabled() ) { write(); return bag.add(object); } else { queueOperation( new SimpleAdd(object) ); return true; } }
public Serializable disassemble(CollectionPersister persister) throws HibernateException { int length = bag.size(); Serializable[] result = new Serializable[length]; for ( int i=0; i<length; i++ ) { result[i] = persister.getElementType().disassemble( bag.get(i), getSession(), null ); } return result; }
public PersistentCollection instantiate(SessionImplementor session, CollectionPersister persister, Serializable key) throws HibernateException { if ( session.getEntityMode()==EntityMode.DOM4J ) { return new PersistentElementHolder(session, persister, key); } else { return new PersistentBag(session); } }
public boolean equalsSnapshot(CollectionPersister persister) throws HibernateException { Type elementType = persister.getElementType(); EntityMode entityMode = getSession().getEntityMode(); List sn = (List) getSnapshot(); if ( sn.size()!=bag.size() ) return false; Iterator iter = bag.iterator(); while ( iter.hasNext() ) { Object elt = iter.next(); final boolean unequal = countOccurrences(elt, bag, elementType, entityMode) != countOccurrences(elt, sn, elementType, entityMode); if ( unequal ) return false; } return true; }
public boolean needsInserting(Object entry, int i, Type elemType) throws HibernateException { //if ( !persister.isOneToMany() ) throw new AssertionFailure("Not implemented for Bags"); java.util.List sn = (java.util.List) getSnapshot(); final EntityMode entityMode = getSession().getEntityMode(); if ( sn.size()>i && elemType.isSame( sn.get(i), entry, entityMode ) ) { //a shortcut if its location didn't change! return false; } else { //search for it //note that this code is incorrect for other than one-to-many Iterator olditer = sn.iterator(); while ( olditer.hasNext() ) { Object old = olditer.next(); if ( elemType.isSame( old, entry, entityMode ) ) return false; } return true; } }
/** * @see java.util.List#remove(int) */ public Object remove(int i) { write(); return bag.remove(i); }
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++ ) { Object element = persister.getElementType().assemble( array[i], getSession(), owner ); if ( element!=null ) bag.add( element ); } }
public PersistentBag(SessionImplementor session, java.util.Collection coll) { super(session); if (coll instanceof java.util.List) { bag = (java.util.List) coll; } else { bag = new ArrayList(); Iterator iter = coll.iterator(); while ( iter.hasNext() ) { bag.add( iter.next() ); } } setInitialized(); setDirectlyAccessible(true); }
public Serializable disassemble(CollectionPersister persister) throws HibernateException { int length = bag.size(); Serializable[] result = new Serializable[length]; for ( int i=0; i<length; i++ ) { result[i] = persister.getElementType().disassemble( bag.get(i), getSession(), null ); } return result; }
public PersistentCollection wrap(SessionImplementor session, Object collection) { if ( session.getEntityMode()==EntityMode.DOM4J ) { return new PersistentElementHolder( session, (Element) collection ); } else { return new PersistentBag( session, (Collection) collection ); } }