
org.hibernate.collection.PersistentElementHolder Maven / Gradle / Ivy
//$Id: PersistentElementHolder.java 10086 2006-07-05 18:17:27Z [email protected] $
package org.hibernate.collection;
import java.io.Serializable;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Element;
import org.hibernate.AssertionFailure;
import org.hibernate.HibernateException;
import org.hibernate.loader.CollectionAliases;
import org.hibernate.engine.SessionImplementor;
import org.hibernate.persister.collection.CollectionPersister;
import org.hibernate.type.Type;
import org.hibernate.util.CollectionHelper;
/**
* A persistent wrapper for an XML element
*
* @author Gavin King
*/
public class PersistentElementHolder extends AbstractPersistentCollection {
protected Element element;
public PersistentElementHolder(SessionImplementor session, Element element) {
super(session);
this.element = element;
setInitialized();
}
public Serializable getSnapshot(CollectionPersister persister)
throws HibernateException {
final Type elementType = persister.getElementType();
List elements = element.elements( persister.getElementNodeName() );
ArrayList snapshot = new ArrayList( elements.size() );
for ( int i=0; i= elements.size() ) {
result.add(old);
}
else {
Element elem = (Element) elements.get(i);
Object object = elementType.fromXMLNode( elem, persister.getFactory() );
if ( elementType.isDirty( old, object, getSession() ) ) result.add(old);
}
}
return result.iterator();
}
public boolean needsInserting(Object entry, int i, Type elementType)
throws HibernateException {
ArrayList snapshot = (ArrayList) getSnapshot();
return i>=snapshot.size() || elementType.isDirty( snapshot.get(i), entry, getSession() );
}
public boolean needsUpdating(Object entry, int i, Type elementType)
throws HibernateException {
return false;
}
public Object getIndex(Object entry, int i, CollectionPersister persister) {
throw new UnsupportedOperationException();
}
public Object getElement(Object entry) {
return entry;
}
public Object getSnapshotElement(Object entry, int i) {
throw new UnsupportedOperationException();
}
public boolean entryExists(Object entry, int i) {
return entry!=null;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy