package org.genedb.web.mvc.model; import org.gmod.schema.mapped.FeatureCvTerm; import org.gmod.schema.mapped.FeatureCvTermDbXRef; import org.gmod.schema.mapped.FeatureCvTermProp; import org.gmod.schema.mapped.Pub; import java.io.Serializable; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Map; import com.google.common.collect.Multimap; import com.google.common.collect.Multimaps; import com.thoughtworks.xstream.annotations.XStreamAlias; @XStreamAlias("ontology_term") public class FeatureCvTermDTO implements Serializable { private static final long serialVersionUID = -2231825983085114418L; private String typeName; private String typeAccession; private List<String> pubs; private String withFrom; private List<DbXRefDTO> dbXRefDtoList; private Multimap<String, String> props = Multimaps.newArrayListMultimap(); private long count; public FeatureCvTermDTO(FeatureCvTerm fct) { for (FeatureCvTermProp fctProp : fct.getFeatureCvTermProps()) { props.put(fctProp.getType().getName(), fctProp.getValue()); } typeName = fct.getCvTerm().getName(); typeAccession = fct.getCvTerm().getDbXRef().getAccession(); // TODO Double check logic with original page pubs = new ArrayList<String>(); for (Pub pub : fct.getPubs()) { pubs.add(pub.getUniqueName()); } if (fct.getPub() != null) { withFrom = fct.getPub().getUniqueName(); } dbXRefDtoList = new ArrayList<DbXRefDTO>(); for (FeatureCvTermDbXRef featureCvTermDbXRef : fct.getFeatureCvTermDbXRefs()) { dbXRefDtoList.add(new DbXRefDTO(featureCvTermDbXRef.getDbXRef())); } } public String getTypeName() { return typeName; } public String getTypeAccession() { return typeAccession; } public List<String> getPubs() { return pubs; } public String getWithFrom() { return withFrom; } public List<DbXRefDTO> getDbXRefDtoList() { return dbXRefDtoList; } public Map<String, Collection<String>> getProps() { return props.asMap(); } public long getCount() { return count; } public void setCount(long count) { this.count = count; } }