package gov.nih.ncgc.bard.capextract.handler;
import gov.nih.ncgc.bard.capextract.CAPConstants;
import gov.nih.ncgc.bard.capextract.ICapResourceHandler;
import gov.nih.ncgc.bard.capextract.jaxb.Link;
import gov.nih.ncgc.bard.capextract.jaxb.Result;
import gov.nih.ncgc.bard.capextract.jaxb.Result.ResultHierarchies;
import gov.nih.ncgc.bard.capextract.jaxb.Result.ResultHierarchies.ResultHierarchy;
import gov.nih.ncgc.bard.capextract.jaxb.ResultContextItems;
import gov.nih.ncgc.bard.capextract.jaxb.ResultContextItems.ResultContextItem;
import java.io.IOException;
/**
* Process CAP <code>Experiment</code> elements.
* <p/>
* Currently, the class focuses on getting the lookup from PubChem AID to CAP Experiment and Assay IDs.
*
* @author Rajarshi Guha
*/
public class ResultHandler extends CapResourceHandler implements ICapResourceHandler {
public ResultHandler() {
super();
}
/**
* Process a CAP entity that is located at some URL.
*
* @param url The URL from which to retrieve the entity fron
* @param resource The CAP resource that is meant to be processed. An implementing class
* can choose to proceed or not based on this parameter.
*/
public int process(String url, CAPConstants.CapResource resource) throws IOException {
if (resource != CAPConstants.CapResource.RESULT) return CAPConstants.CAP_EXTRACT_LOAD_STATUS_FAILED;
//log.info("Processing " + resource);
// get the result object here
Result result = getResponse(url, resource);
result.getStatus();
result.getReadyForExtraction();
result.getValueDisplay();
result.getQualifier();
result.getValueNum();
result.getValueMax();
result.getValueMin();
if (result.getResultType() != null) {
result.getResultType().getLabel();
if (result.getResultType().getLink() != null) {
result.getResultType().getLink().getType();
result.getResultType().getLink().getHref();
}
}
String sid = result.getSubstance().getSid();
String resultid = null;
String experimentid = null;
for (Link link: result.getLink()) {
if (link.getType().equals(CAPConstants.CapResource.RESULT.getMimeType()))
resultid = link.getHref().substring(link.getHref().lastIndexOf('/')+1);
if (link.getType().equals(CAPConstants.CapResource.EXPERIMENT.getMimeType()))
experimentid = link.getHref().substring(link.getHref().lastIndexOf('/')+1);
}
if (sid == null || experimentid == null || resultid == null)
log.error("IDs for result are null: "+sid+";"+experimentid+";"+resultid);
ResultContextItems rcis = result.getResultContextItems();
if (rcis != null) {
for (ResultContextItem rci: rcis.getResultContextItem()) {
rci.getResultContextItemId();
rci.getParentGroup();
rci.getExtValueId();
rci.getValueDisplay();
rci.getQualifier();
rci.getValueNum();
rci.getValueMin();
rci.getValueMax();
rci.getAttribute().getLabel();
rci.getAttribute().getLink().getType();
rci.getAttribute().getLink().getHref();
}
}
ResultHierarchies rhs = result.getResultHierarchies();
String rhString = "";
if (rhs != null) {
for (ResultHierarchy rh: rhs.getResultHierarchy()) {
rh.getParentResultId();
rh.getHierarchyType();
rhString += rh.getParentResultId()+":"+rh.getHierarchyType()+" ";
}
}
log.info(rhString);
return CAPConstants.CAP_EXTRACT_LOAD_STATUS_COMPLETE;
}
}