package gov.nysenate.openleg.processor.bill; import gov.nysenate.openleg.model.base.SessionYear; import gov.nysenate.openleg.model.base.Version; import gov.nysenate.openleg.model.bill.Bill; import gov.nysenate.openleg.model.bill.BillId; import gov.nysenate.openleg.model.sobi.SobiFragment; import gov.nysenate.openleg.model.sobi.SobiFragmentType; import gov.nysenate.openleg.processor.base.AbstractDataProcessor; import gov.nysenate.openleg.processor.sobi.SobiProcessor; import gov.nysenate.openleg.util.XmlHelper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.w3c.dom.Document; import org.w3c.dom.Node; /** * Created by Chenguang He(gaoyike@gmail.com) on 2016/12/1. */ @Service public class BillXMLBillDigestProcessor extends AbstractDataProcessor implements SobiProcessor { private static final Logger logger = LoggerFactory.getLogger(BillXMLBillDigestProcessor.class); @Autowired private XmlHelper xmlHelper; public BillXMLBillDigestProcessor() { } @Override public SobiFragmentType getSupportedType() { return SobiFragmentType.LDSUMM; } @Override public void process(SobiFragment sobiFragment) { try { logger.info("XML Processing " + sobiFragment.getFragmentId()); final Document doc = xmlHelper.parse(sobiFragment.getText()); final Node billTextNode = xmlHelper.getNode("digestsummary",doc); final int sessionYear = xmlHelper.getInteger("@sessyr",billTextNode); final String billhse = xmlHelper.getString("@billhse",billTextNode); final String billno = xmlHelper.getString("@billno",billTextNode); final String action = xmlHelper.getString("@action",billTextNode); //todo wait for LDBC explaination of action final String summary = xmlHelper.getNode("digestsummary/summary",doc).getTextContent(); final String amd = "";//todo wait for LDBC explaination final Version version = Version.of(amd); final Bill baseBill = getOrCreateBaseBill(sobiFragment.getPublishedDateTime(), new BillId(billhse+billno, new SessionYear(sessionYear),version) ,sobiFragment); baseBill.setSummary(summary); /** * add previous bills */ int totalNumsOfPreBills = xmlHelper.getNodeList("digestsummary/oldbill/oldyear",doc).getLength(); for (int i = 1; i <= totalNumsOfPreBills; i++) { int sess = xmlHelper.getInteger("digestsummary/oldbill/oldyear["+i+"]",doc); String oldhse = xmlHelper.getString("digestsummary/oldbill/oldhse["+i+"]",doc).replaceAll("\n",""); String oldno = xmlHelper.getString("digestsummary/oldbill/oldno["+i+"]",doc).replaceAll("\n","");; String oldamd = xmlHelper.getString("digestsummary/oldbill/oldamd["+i+"]",doc).replaceAll("\n","");; baseBill.addDirectPreviousVersion(new BillId(oldhse+oldno, SessionYear.of(sess),Version.of(oldamd))); } billIngestCache.set(baseBill.getBaseBillId(), baseBill, sobiFragment); System.out.println("abc"); } catch (Exception e) { e.printStackTrace(); } } @Override public void postProcess() { flushBillUpdates(); } @Override public void init() { initBase(); } }