1 package org.hibernate.type; 3 4 import java.io.Serializable ; 5 import java.util.Comparator ; 6 import java.util.TreeSet ; 7 8 import org.dom4j.Element; 9 import org.hibernate.EntityMode; 10 import org.hibernate.collection.PersistentCollection; 11 import org.hibernate.collection.PersistentElementHolder; 12 import org.hibernate.collection.PersistentSortedSet; 13 import org.hibernate.engine.SessionImplementor; 14 import org.hibernate.persister.collection.CollectionPersister; 15 16 public class SortedSetType extends SetType { 17 18 private final Comparator comparator; 19 20 public SortedSetType(String role, String propertyRef, Comparator comparator, boolean isEmbeddedInXML) { 21 super(role, propertyRef, isEmbeddedInXML); 22 this.comparator = comparator; 23 } 24 25 public PersistentCollection instantiate(SessionImplementor session, CollectionPersister persister, Serializable key) { 26 if ( session.getEntityMode()==EntityMode.DOM4J ) { 27 return new PersistentElementHolder(session, persister, key); 28 } 29 else { 30 PersistentSortedSet set = new PersistentSortedSet(session); 31 set.setComparator(comparator); 32 return set; 33 } 34 } 35 36 public Class getReturnedClass() { 37 return java.util.SortedSet .class; 38 } 39 40 public Object instantiate(Object original) { 41 return new TreeSet (comparator); 42 } 43 44 public PersistentCollection wrap(SessionImplementor session, Object collection) { 45 if ( session.getEntityMode()==EntityMode.DOM4J ) { 46 return new PersistentElementHolder( session, (Element) collection ); 47 } 48 else { 49 return new PersistentSortedSet( session, (java.util.SortedSet ) collection ); 50 } 51 } 52 } 53 54 55 56 57 58 59 | Popular Tags |