001package org.biopax.paxtools.impl.level3; 002 003import org.apache.commons.logging.Log; 004import org.apache.commons.logging.LogFactory; 005import org.biopax.paxtools.model.level3.Provenance; 006import org.biopax.paxtools.model.level3.Xref; 007import org.hibernate.annotations.Cache; 008import org.hibernate.annotations.CacheConcurrencyStrategy; 009import org.hibernate.annotations.Proxy; 010import org.hibernate.annotations.DynamicInsert; 011import org.hibernate.annotations.DynamicUpdate; 012import org.hibernate.search.annotations.Indexed; 013 014import javax.persistence.Entity; 015import javax.persistence.Transient; 016 017import java.util.Comparator; 018import java.util.TreeSet; 019 020@Entity 021@Proxy(proxyClass= Provenance.class) 022@Indexed 023@DynamicUpdate @DynamicInsert 024@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) 025public class ProvenanceImpl extends NamedImpl implements Provenance 026{ 027 private final static Log LOG = LogFactory.getLog(ProvenanceImpl.class); 028 029 public ProvenanceImpl() { 030 } 031 032 @Transient 033 public Class<? extends Provenance> getModelInterface() 034 { 035 return Provenance.class; 036 } 037 038 /* 039 * (non-Javadoc) 040 * @see org.biopax.paxtools.impl.BioPAXElementImpl#toString() 041 * 042 * TODO this probably makes inconsistent strings (on different systems); fix, if it matters.... 043 * 044 */ 045 @Override public String toString() 046 { 047 try { 048 StringBuilder s = new StringBuilder(); 049 050 for (String name : new TreeSet<String>(this.getName())) 051 s.append(name).append(";"); 052 053 if (!getXref().isEmpty()) 054 { 055 TreeSet<Xref> xrefs = new TreeSet<Xref>(new Comparator<Xref>() { 056 @Override 057 public int compare(Xref o1, Xref o2) { 058 return o1.toString().compareTo(o2.toString()); 059 } 060 }); 061 xrefs.addAll(getXref()); 062 063 s.append(" ("); 064 for (Xref anXref : xrefs) 065 s.append(anXref).append(";"); 066 s.append(")"); 067 } 068 069 return s.toString(); 070 071 } catch (Exception e) { 072 // possible issues - when in a persistent context (e.g., lazy 073 // collections init...) 074 LOG.warn("toString: ", e); 075 return getRDFId(); 076 } 077 } 078}