@Override public Collection getOrphans(Serializable snapshot, String entityName) throws HibernateException { final Map sn = (Map) snapshot; return getOrphans( sn.values(), values, entityName, getSession() ); }
@Override public void preInsert(CollectionPersister persister) throws HibernateException { final Iterator itr = values.iterator(); int i = 0; while ( itr.hasNext() ) { final Object entry = itr.next(); final Integer loc = i++; if ( !identifiers.containsKey( loc ) ) { //TODO: native ids final Serializable id = persister.getIdentifierGenerator().generate( getSession(), entry ); identifiers.put( loc, id ); } } }
@Override public Serializable disassemble(CollectionPersister persister) throws HibernateException { final Serializable[] result = new Serializable[ values.size() * 2 ]; int i = 0; for ( int j=0; j< values.size(); j++ ) { final Object value = values.get( j ); result[i++] = persister.getIdentifierType().disassemble( identifiers.get( j ), getSession(), null ); result[i++] = persister.getElementType().disassemble( value, getSession(), null ); } return result; }
@Override public boolean needsUpdating(Object entry, int i, Type elemType) throws HibernateException { if ( entry == null ) { return false; } final Map snap = (Map) getSnapshot(); final Object id = identifiers.get( i ); if ( id == null ) { return false; } final Object old = snap.get( id ); return old != null && elemType.isDirty( old, entry, getSession() ); }
@Override public Object readFrom( ResultSet rs, CollectionPersister persister, CollectionAliases descriptor, Object owner) throws HibernateException, SQLException { final Object element = persister.readElement( rs, owner, descriptor.getSuffixedElementAliases(), getSession() ); final Object old = identifiers.put( values.size(), persister.readIdentifier( rs, descriptor.getSuffixedIdentifierAlias(), getSession() ) ); if ( old == null ) { //maintain correct duplication if loaded in a cartesian product values.add( element ); } return element; }
@Override public boolean equalsSnapshot(CollectionPersister persister) throws HibernateException { final Type elementType = persister.getElementType(); final Map snap = (Map) getSnapshot(); if ( snap.size()!= values.size() ) { return false; } for ( int i=0; i<values.size(); i++ ) { final Object value = values.get( i ); final Object id = identifiers.get( i ); if ( id == null ) { return false; } final Object old = snap.get( id ); if ( elementType.isDirty( old, value, getSession() ) ) { return false; } } return true; }
@Override public void initializeFromCache(CollectionPersister persister, Serializable disassembled, Object owner) throws HibernateException { final Serializable[] array = (Serializable[]) disassembled; final int size = array.length; beforeInitialize( persister, size ); for ( int i = 0; i < size; i+=2 ) { identifiers.put( (i/2), persister.getIdentifierType().assemble( array[i], getSession(), owner ) ); values.add( persister.getElementType().assemble( array[i+1], getSession(), owner ) ); } }
@Override public Collection getOrphans(Serializable snapshot, String entityName) throws HibernateException { final Map sn = (Map) snapshot; return getOrphans( sn.values(), values, entityName, getSession() ); }
public Collection getOrphans(Serializable snapshot, String entityName) throws HibernateException { Map sn = (Map) snapshot; return getOrphans( sn.values(), values, entityName, getSession() ); }
public void preInsert(CollectionPersister persister) throws HibernateException { Iterator iter = values.iterator(); int i=0; while ( iter.hasNext() ) { Object entry = iter.next(); Integer loc = i++; if ( !identifiers.containsKey(loc) ) { //TODO: native ids Serializable id = persister.getIdentifierGenerator().generate( getSession(), entry ); identifiers.put(loc, id); } } }
public void preInsert(CollectionPersister persister) throws HibernateException { Iterator iter = values.iterator(); int i=0; while ( iter.hasNext() ) { Object entry = iter.next(); Integer loc = i++; if ( !identifiers.containsKey(loc) ) { //TODO: native ids Serializable id = persister.getIdentifierGenerator().generate( getSession(), entry ); identifiers.put(loc, id); } } }
public Serializable disassemble(CollectionPersister persister) throws HibernateException { Serializable[] result = new Serializable[ values.size() * 2 ]; int i=0; for (int j=0; j< values.size(); j++) { Object value = values.get(j); result[i++] = persister.getIdentifierType().disassemble( identifiers.get( j ), getSession(), null ); result[i++] = persister.getElementType().disassemble( value, getSession(), null ); } return result; }
public Serializable disassemble(CollectionPersister persister) throws HibernateException { Serializable[] result = new Serializable[ values.size() * 2 ]; int i=0; for (int j=0; j< values.size(); j++) { Object value = values.get(j); result[i++] = persister.getIdentifierType().disassemble( identifiers.get( j ), getSession(), null ); result[i++] = persister.getElementType().disassemble( value, getSession(), null ); } return result; }
public boolean equalsSnapshot(CollectionPersister persister) throws HibernateException { Type elementType = persister.getElementType(); Map snap = (Map) getSnapshot(); if ( snap.size()!= values.size() ) return false; for ( int i=0; i<values.size(); i++ ) { Object value = values.get(i); Object id = identifiers.get( i ); if (id==null) return false; Object old = snap.get(id); if ( elementType.isDirty( old, value, getSession() ) ) return false; } return true; }
public boolean equalsSnapshot(CollectionPersister persister) throws HibernateException { Type elementType = persister.getElementType(); Map snap = (Map) getSnapshot(); if ( snap.size()!= values.size() ) return false; for ( int i=0; i<values.size(); i++ ) { Object value = values.get(i); Object id = identifiers.get( i ); if (id==null) return false; Object old = snap.get(id); if ( elementType.isDirty( old, value, getSession() ) ) return false; } return true; }
public boolean needsUpdating(Object entry, int i, Type elemType) throws HibernateException { if (entry==null) return false; Map snap = (Map) getSnapshot(); Object id = identifiers.get( i ); if (id==null) return false; Object old = snap.get(id); return old!=null && elemType.isDirty( old, entry, getSession() ); }
public boolean needsUpdating(Object entry, int i, Type elemType) throws HibernateException { if (entry==null) return false; Map snap = (Map) getSnapshot(); Object id = identifiers.get( i ); if (id==null) return false; Object old = snap.get(id); return old!=null && elemType.isDirty( old, entry, getSession() ); }
@Override public void preInsert(PersistentCollectionDescriptor descriptor) throws HibernateException { final Iterator itr = values.iterator(); int i = 0; while ( itr.hasNext() ) { final Object entry = itr.next(); final Integer loc = i++; if ( !identifiers.containsKey( loc ) ) { //TODO: native ids final Object id = descriptor.getIdDescriptor().getGenerator().generate( getSession(), entry ); identifiers.put( loc, id ); } } }
@Override public boolean needsUpdating(Object entry, int i) throws HibernateException { if ( entry == null ) { return false; } final Map snap = (Map) getSnapshot(); final Object id = identifiers.get( i ); if ( id == null ) { return false; } final Object old = snap.get( id ); return old != null && getCollectionDescriptor().isDirty( old, entry, getSession() ); }
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+=2 ) { identifiers.put( (i/2), persister.getIdentifierType().assemble( array[i], getSession(), owner ) ); values.add( persister.getElementType().assemble( array[i+1], getSession(), owner ) ); } }