package gov.nih.ncgc.bard.capextract.handler; import gov.nih.ncgc.bard.capextract.CAPConstants; import gov.nih.ncgc.bard.capextract.CapResourceHandlerRegistry; import gov.nih.ncgc.bard.capextract.ICapResourceHandler; import gov.nih.ncgc.bard.capextract.jaxb.Link; import gov.nih.ncgc.bard.capextract.jaxb.Project; import gov.nih.ncgc.bard.capextract.jaxb.Projects; import java.io.IOException; import java.math.BigInteger; /** * A one line summary. * * @author Rajarshi Guha */ public class ProjectsHandler extends CapResourceHandler implements ICapResourceHandler { public ProjectsHandler() { 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.PROJECTS) return CAPConstants.CAP_EXTRACT_LOAD_STATUS_FAILED; log.info("Processing " + resource); // get the Projects object here Projects projects = getResponse(url, resource); // map CAP project IDs to BARD project IDs !!! done by hand in excel !!! // load project annotations ProjectHandler ph = (ProjectHandler) CapResourceHandlerRegistry.getInstance().getHandler(CAPConstants.CapResource.PROJECT); for (Link projLink : projects.getLink()) { CAPConstants.CapResource res = CAPConstants.getResource(projLink.getType()); if (res == CAPConstants.CapResource.PROJECT && ph != null) { Project project = (Project) ph.poll(projLink.getHref(), res).get(0); if (project == null) { log.warn("null response for "+projLink.getHref()); continue; } String readyToXtract = project.getReadyForExtraction(); String title = project.getProjectName(); BigInteger pid = project.getProjectId(); // log.info("\taurl = [" + readyToXtract + "] for " + title + " pid " + pid); int loadStatus = CAPConstants.CAP_EXTRACT_LOAD_STATUS_COMPLETE; if (readyToXtract.equals("Ready")) { //start setExtractionStatus(CAPConstants.CAP_STATUS_STARTED, projLink.getHref(), CAPConstants.CapResource.PROJECT); //process loadStatus = ph.process(project, projLink.getHref(), res); //mark complete if(loadStatus == CAPConstants.CAP_EXTRACT_LOAD_STATUS_COMPLETE) { setExtractionStatus(CAPConstants.CAP_STATUS_COMPLETE, projLink.getHref(), CAPConstants.CapResource.PROJECT); } else if (loadStatus == CAPConstants.CAP_EXTRACT_LOAD_STATUS_FAILED) { setExtractionStatus(CAPConstants.CAP_STATUS_FAILED, projLink.getHref(), CAPConstants.CapResource.PROJECT); } } } } return CAPConstants.CAP_EXTRACT_LOAD_STATUS_COMPLETE; } }