package org.genedb.crawl.model;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import org.codehaus.jackson.map.annotate.JsonDeserialize;
import org.codehaus.jackson.map.annotate.JsonSerialize;
import org.genedb.crawl.json.JsonDateDeserializer;
import org.genedb.crawl.json.JsonDateSerializer;
public class Feature implements Serializable {
private static final long serialVersionUID = 5345245255772822999L;
@XmlAttribute
public String uniqueName;
@XmlAttribute(required=false)
public String name;
@XmlAttribute(required=false)
public String residues;
@XmlElement(required=false)
public List<String> genes;
@XmlAttribute(required=false)
public Integer feature_id;
@XmlAttribute(required=false)
public Integer organism_id;
@XmlElement(name="synonym", required=false)
@XmlElementWrapper(name="synonyms")
public List<Synonym> synonyms;
@XmlElement(name="coordinate", required=false)
@XmlElementWrapper(name="coordinates")
public List<Coordinates> coordinates;
@XmlElement(name="property", required=false)
@XmlElementWrapper(name="properties")
public List<Property> properties;
@XmlElement(name="pub", required=false)
@XmlElementWrapper(name="pubs")
public List<Pub> pubs;
@XmlElement(name="dbxref", required=false)
@XmlElementWrapper(name="dbxrefs")
public List<Dbxref> dbxrefs;
@XmlElement(name="domain", required=false)
@XmlElementWrapper(name="domains")
public List<LocatedFeature> domains;
@XmlElement(name="change", required=false)
@XmlElementWrapper(name="changes")
public List<Change> changes;
@XmlElement(required=false)
@JsonSerialize(using=JsonDateSerializer.class)
@JsonDeserialize(using=JsonDateDeserializer.class)
public Date timelastmodified;
@XmlElement(required=false)
@JsonSerialize(using=JsonDateSerializer.class)
@JsonDeserialize(using=JsonDateDeserializer.class)
public Date timeaccessioned;
@XmlElement(required=false)
public boolean isObsolete;
public void addDbxref(Dbxref dbxref) {
if (dbxrefs == null) {
dbxrefs = new ArrayList<Dbxref>();
}
dbxrefs.add(dbxref);
}
@XmlElement(name="term", required=false, type=Cvterm.class)
@XmlElementWrapper(name="terms")
public List<Cvterm> terms;
public void addTerm(Cvterm term) {
if (terms == null) {
terms = new ArrayList<Cvterm>();
}
terms.add(term);
}
@XmlElement(required=false)
public Cvterm type;
@XmlElement(name="relationship", required=false)
@XmlElementWrapper(name="relationships")
public List<FeatureRelationship> relationships;
@XmlElement(name="parents")
public List<Feature> parents;
@XmlElement(name="children")
public List<Feature> children;
@XmlElement
public Cvterm relationshipType;
@XmlElement(required=false)
public Organism organism;
@XmlElement(name="orthologue", required=false)
@XmlElementWrapper(name="orthologues")
public List<Orthologue> orthologues;
@XmlElement(name="analysisFeature", required=false)
public AnalysisFeature analysisFeature;
public void addProduct(String product) {
if (products == null) {
products = new ArrayList<String>();
}
products.add(product);
}
@XmlElement(name="product", required=false)
@XmlElementWrapper(name="products")
public List<String> products = new ArrayList<String>();
@XmlElement(required=false)
public String relationship;
@XmlElement(required=false)
public Integer count;
}