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; import org.xml.sax.SAXException; import java.io.IOException; import java.time.LocalDateTime; /** * Created by Chenguang He(gaoyike@gmail.com) on 2016/12/1. */ @Service public class BillXMLBillTextProcessor extends AbstractDataProcessor implements SobiProcessor { private static final Logger logger = LoggerFactory.getLogger(BillXMLBillTextProcessor.class); @Autowired private XmlHelper xmlHelper; public BillXMLBillTextProcessor() { } @Override public void init() { initBase(); } @Override public SobiFragmentType getSupportedType() { return SobiFragmentType.BILLTEXT; } @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("billtext_html",doc); final int sessionYear = xmlHelper.getInteger("@sessyr",billTextNode); final String senhse = xmlHelper.getString("@senhse",billTextNode).replaceAll("\n","");; final String senno = xmlHelper.getString("@senno",billTextNode).replaceAll("\n","");; final String senamd = xmlHelper.getString("@senamd",billTextNode).replaceAll("\n","");; final String asmhse = xmlHelper.getString("@asmhse",billTextNode).replaceAll("\n","");; final String asmno = xmlHelper.getString("@asmno",billTextNode).replaceAll("\n","");; final String asmamd = xmlHelper.getString("@asmamd",billTextNode).replaceAll("\n","");; final String action = xmlHelper.getString("@action",billTextNode).replaceAll("\n","");; //todo wait for LDBC for explaination of action final String billText = billTextNode.getTextContent().replaceAll("\n","");; final Version version = Version.of(senamd.isEmpty() ? asmamd:senamd); final Bill baseBill = getOrCreateBaseBill(sobiFragment.getPublishedDateTime(), new BillId(senhse.isEmpty() ? asmhse+asmno : senhse+senno, new SessionYear(sessionYear),version) ,sobiFragment); baseBill.getAmendment(version).setFullText(billText); billIngestCache.set(baseBill.getBaseBillId(), baseBill, sobiFragment); System.out.println("abc"); } catch (Exception e) { e.printStackTrace(); } } @Override public void postProcess() { flushBillUpdates(); } }