package gov.nih.ncgc.bard.capextract.resultextract; import java.util.ArrayList; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude.Include; /** * This class is used to format the bard experiment data response JSON * * @author braistedjc * */ public class BardExptDataResponse { public enum ResponseClass { SP, CR_SER, UNCLASS, MULTCONC, CR_NO_SER, UNDEF; } @JsonIgnore private Integer responseType; private String responseClass; //experiment ids private Long bardExptId; private Long capExptId; //assay ids private Long bardAssayId; private Long capAssayId; //substance and compound ids private Long sid; private Long cid; //These are used to collect these values for fast retrieval private Double potency; @JsonIgnore private Double score; @JsonIgnore private Integer outcome; //conc unit for experiment @JsonInclude(Include.NON_NULL) private Double exptScreeningConc; @JsonInclude(Include.NON_NULL) private String exptConcUnit; //Result sets for priority and other root elements, project ids private ArrayList <BardResultType> priorityElements; private ArrayList <BardResultType> rootElements; private ArrayList <ProjectIdPair> projects; /** * Default constructor */ public BardExptDataResponse() { responseType = new Integer(ResponseClass.UNCLASS.ordinal()); priorityElements = new ArrayList<BardResultType>(); rootElements = new ArrayList<BardResultType>(); projects = new ArrayList<ProjectIdPair>(); } /** * Adds a priority element * @param resultType a priority result type */ public void addPriorityElement(BardResultType resultType) { priorityElements.add(resultType); } /** * Adds a root element * @param resultType a root result type */ public void addRootElement(BardResultType resultType) { rootElements.add(resultType); } public ArrayList<BardResultType> getPriorityElements() { return priorityElements; } public void setPriorityElements(ArrayList<BardResultType> priorityElements) { this.priorityElements = priorityElements; } public ArrayList<BardResultType> getRootElements() { return rootElements; } public void setRootElements(ArrayList<BardResultType> rootElements) { this.rootElements = rootElements; } public Long getBardExptId() { return bardExptId; } public void setBardExptId(Long bardExptId) { this.bardExptId = bardExptId; } public Long getCapExptId() { return capExptId; } public void setCapExptId(Long capExptId) { this.capExptId = capExptId; } public Long getBardAssayId() { return bardAssayId; } public void setBardAssayId(Long bardAssayId) { this.bardAssayId = bardAssayId; } public Long getCapAssayId() { return capAssayId; } public void setCapAssayId(Long capAssayId) { this.capAssayId = capAssayId; } public Long getSid() { return sid; } public void setSid(Long sid) { this.sid = sid; } public Long getCid() { return cid; } public void setCid(Long cid) { this.cid = cid; } public Integer getResponseType() { return responseType; } /** * Sets the response class. 0-SP, 1-CR_SER, 2-UNCLASS, 3-MULTCONC, 4-CR_NO_SER * @param responseType */ public void setResponseType(Integer responseType) { ResponseClass [] types = ResponseClass.values(); this.responseClass = types[responseType].name(); this.responseType = responseType; } public String getResponseClass() { return responseClass; } public void setResponseClass(String responseClass) { this.responseClass = responseClass; } public ArrayList<ProjectIdPair> getProjects() { return projects; } public void setProjects(ArrayList<ProjectIdPair> projects) { this.projects = projects; } public Double getPotency() { return potency; } public void setPotency(Double potency) { this.potency = potency; } public Double getScore() { return score; } public void setScore(Double score) { this.score = score; } public Integer getOutcome() { return outcome; } public void setOutcome(Integer outcome) { this.outcome = outcome; } public Double getExptScreeningConc() { return exptScreeningConc; } public void setExptScreeningConc(Double exptScreeningConc) { this.exptScreeningConc = exptScreeningConc; } public String getExptConcUnit() { return exptConcUnit; } public void setExptConcUnit(String exptConcUnit) { this.exptConcUnit = exptConcUnit; } public void addProjectPair(Long bardProjId, Long capProjId) { ProjectIdPair pp = new ProjectIdPair(); pp.setBardProjId(bardProjId); pp.setCapProjId(capProjId); this.projects.add(pp); } /** * holds a bard id and an external project id (specifically cap project, for now) * * @author braistedjc */ //Note on reconstructing from JSON, it Jackson ObjectMapper required that the inner class be //declared as 'static'. If the class was external I think it would be fine. //I need to find out why this is the case. public static class ProjectIdPair { private Long bardProjId; private Long capProjId; public ProjectIdPair() { } public ProjectIdPair(Long bardProjId, Long capProjId) { this.bardProjId = bardProjId; this.capProjId = capProjId; } public ProjectIdPair(long bardProjId, long capProjId) { this.bardProjId = bardProjId; this.capProjId = capProjId; } public ProjectIdPair(String bardProjId, String capProjId) { this.bardProjId = Long.parseLong(bardProjId); this.capProjId = Long.parseLong(capProjId); } public ProjectIdPair(int bardProjId, int capProjId) { this.bardProjId = Long.valueOf(bardProjId); this.capProjId = Long.valueOf(capProjId); } public Long getBardProjId() { return bardProjId; } public void setBardProjId(Long bardProjId) { this.bardProjId = bardProjId; } public Long getCapProjId() { return capProjId; } public void setCapProjId(Long capProjId) { this.capProjId = capProjId; } } }