Example usage for javax.xml.stream.events Attribute getValue

List of usage examples for javax.xml.stream.events Attribute getValue

Introduction

In this page you can find the example usage for javax.xml.stream.events Attribute getValue.

Prototype

public String getValue();

Source Link

Document

Gets the normalized value of this attribute

Usage

From source file:edu.jhu.hlt.concrete.ingesters.webposts.WebPostIngester.java

@Override
public Communication fromCharacterBasedFile(final Path path) throws IngestException {
    if (!Files.exists(path))
        throw new IngestException("No file at: " + path.toString());

    AnalyticUUIDGeneratorFactory f = new AnalyticUUIDGeneratorFactory();
    AnalyticUUIDGenerator g = f.create();
    Communication c = new Communication();
    c.setUuid(g.next());//from  www .j av  a2  s .  c o  m
    c.setType(this.getKind());
    c.setMetadata(TooledMetadataConverter.convert(this));

    try {
        ExistingNonDirectoryFile ef = new ExistingNonDirectoryFile(path);
        c.setId(ef.getName().split("\\.")[0]);
    } catch (NoSuchFileException | NotFileException e) {
        // might throw if path is a directory.
        throw new IngestException(path.toString() + " is not a file, or is a directory.");
    }

    String content;
    try (InputStream is = Files.newInputStream(path);
            BufferedInputStream bin = new BufferedInputStream(is, 1024 * 8 * 8);) {
        content = IOUtils.toString(bin, StandardCharsets.UTF_8);
        c.setText(content);
    } catch (IOException e) {
        throw new IngestException(e);
    }

    try (InputStream is = Files.newInputStream(path);
            BufferedInputStream bin = new BufferedInputStream(is, 1024 * 8 * 8);
            BufferedReader reader = new BufferedReader(new InputStreamReader(bin, StandardCharsets.UTF_8));) {
        XMLEventReader rdr = null;
        try {
            rdr = inF.createXMLEventReader(reader);

            // Below method moves the reader
            // to the headline end element.
            Section headline = this.handleBeginning(rdr, content, c);
            headline.setUuid(g.next());
            c.addToSectionList(headline);
            TextSpan sts = headline.getTextSpan();
            LOGGER.debug("headline text: {}", c.getText().substring(sts.getStart(), sts.getEnding()));

            int sectNumber = 1;
            int subSect = 0;

            int currOff = -1;
            // Big amounts of characters.
            while (rdr.hasNext()) {
                XMLEvent nextEvent = rdr.nextEvent();
                currOff = nextEvent.getLocation().getCharacterOffset();

                // First: see if document is going to end.
                // If yes: exit.
                if (nextEvent.isEndDocument())
                    break;

                // region
                // enables ingestion of quotes inside a usenet webpost.
                // by Tongfei Chen
                if (nextEvent.isStartElement()
                        && nextEvent.asStartElement().getName().equals(QName.valueOf("QUOTE"))) {
                    Attribute attrQuote = nextEvent.asStartElement()
                            .getAttributeByName(QName.valueOf("PREVIOUSPOST"));
                    String quote = StringEscapeUtils.escapeXml(attrQuote.getValue());
                    int location = attrQuote.getLocation().getCharacterOffset()
                            + "<QUOTE PREVIOUSPOST=\"".length();
                    Section quoteSection = new Section(g.next(), "quote")
                            .setTextSpan(new TextSpan(location, location + quote.length()));
                    c.addToSectionList(quoteSection);
                }
                // endregion

                // Check if start element.
                if (nextEvent.isCharacters()) {
                    Characters chars = nextEvent.asCharacters();
                    if (!chars.isWhiteSpace()) {
                        String fpContent = chars.getData();
                        LOGGER.debug("Character offset: {}", currOff);
                        LOGGER.debug("Character based data: {}", fpContent);

                        SimpleImmutableEntry<Integer, Integer> pads = trimSpacing(fpContent);
                        final int tsb = currOff + pads.getKey();

                        final int tse = currOff + fpContent.replace("\"", "&quot;").replace("<", "&lt;")
                                .replace(">", "&gt;").length() - (pads.getValue());
                        // MAINTAIN CORRECT TEXT SPAN
                        // CANNOT USE StringEscapeUtils.escapeXml because it will escape "'", which
                        // is not escaped in the data
                        // @tongfei

                        LOGGER.debug("Section text: {}", content.substring(tsb, tse));
                        TextSpan ts = new TextSpan(tsb, tse);
                        String sk;
                        if (subSect == 0)
                            sk = "poster";
                        else if (subSect == 1)
                            sk = "postdate";
                        else
                            sk = "post";

                        Section s = new Section();
                        s.setKind(sk);
                        s.setTextSpan(ts);
                        s.setUuid(g.next());
                        List<Integer> intList = new ArrayList<>();
                        intList.add(sectNumber);
                        intList.add(subSect);
                        s.setNumberList(intList);
                        c.addToSectionList(s);

                        subSect++;
                    }
                } else if (nextEvent.isEndElement()) {
                    EndElement ee = nextEvent.asEndElement();
                    currOff = ee.getLocation().getCharacterOffset();
                    QName name = ee.getName();
                    String localName = name.getLocalPart();
                    LOGGER.debug("Hit end element: {}", localName);
                    if (localName.equalsIgnoreCase(POST_LOCAL_NAME)) {
                        LOGGER.debug("Switching to new post.");
                        sectNumber++;
                        subSect = 0;
                    } else if (localName.equalsIgnoreCase(TEXT_LOCAL_NAME)) {
                        // done with document.
                        break;
                    }
                }
            }

            return c;

        } catch (XMLStreamException | ConcreteException | StringIndexOutOfBoundsException
                | ClassCastException x) {
            throw new IngestException(x);
        } finally {
            if (rdr != null)
                try {
                    rdr.close();
                } catch (XMLStreamException e) {
                    // not likely.
                    LOGGER.info("Error closing XMLReader.", e);
                }
        }
    } catch (IOException e) {
        throw new IngestException(e);
    }
}

From source file:com.aionengine.gameserver.dataholders.loadingutils.XmlMerger.java

/**
 * Extract an attribute value from a <code>StartElement </code> event.
 *
 * @param element        Event object./* www . j  a va  2 s . c o  m*/
 * @param name           Attribute QName
 * @param def            Default value.
 * @param onErrorMessage On error message.
 * @return attribute value
 * @throws XMLStreamException if attribute is missing and there is no default value set.
 */
private String getAttributeValue(StartElement element, QName name, String def, String onErrorMessage)
        throws XMLStreamException {
    Attribute attribute = element.getAttributeByName(name);

    if (attribute == null) {
        if (def == null)
            throw new XMLStreamException(onErrorMessage, element.getLocation());

        return def;
    }

    return attribute.getValue();
}

From source file:com.aionemu.gameserver.dataholders.loadingutils.XmlMerger.java

/**
 * Extract an attribute value from a/*from w ww  . jav a  2 s .c o m*/
 * <code>StartElement </code> event.
 *
 * @param element        Event object.
 * @param name           Attribute QName
 * @param def            Default value.
 * @param onErrorMessage On error message.
 * @return attribute value
 * @throws XMLStreamException if attribute is missing and there is no
 *                            default value set.
 */
private String getAttributeValue(StartElement element, QName name, String def, String onErrorMessage)
        throws XMLStreamException {
    Attribute attribute = element.getAttributeByName(name);

    if (attribute == null) {
        if (def == null) {
            throw new XMLStreamException(onErrorMessage, element.getLocation());
        }

        return def;
    }

    return attribute.getValue();
}

From source file:edu.monash.merc.system.parser.xml.HPAWSXmlParser.java

public List<HPAEntryBean> parseHPAXml(String fileName, XMLInputFactory2 factory2) {
    xmlif2 = factory2;//from  w ww . ja va2 s.  c o m
    logger.info("Starting to parse " + fileName);
    List<HPAEntryBean> hpaEntryBeans = new ArrayList<HPAEntryBean>();
    XMLEventReader2 xmlEventReader = null;
    try {
        xmlEventReader = (XMLEventReader2) xmlif2.createXMLEventReader(new FileInputStream(fileName));

        QName entryQN = new QName(ELE_ENTRY);
        QName versionQN = new QName(ATTR_VERSION);
        QName urlQN = new QName(ATTR_URL);
        QName nameQN = new QName(ELE_NAME);
        QName identiferQN = new QName(ELE_IDENTIFIER);
        QName idQN = new QName(ATTR_ID);
        QName xrefQN = new QName(ELE_XREF);
        QName dbQN = new QName(ATTR_DB);
        QName tissueExpQN = new QName(ELE_TISSUE_EXPRESSION);
        QName typeQN = new QName(ATTR_TYPE);
        QName verificationQN = new QName(ELE_VERIFICATION);
        QName dataQN = new QName(ELE_DATA);
        QName tissueQN = new QName(ELE_TISSUE);
        QName statusQN = new QName(ATTR_STATUS);
        QName cellTypeQN = new QName(ELE_CELLTYPE);
        QName levelQN = new QName(ELE_LEVEL);
        QName antibodyQN = new QName(ELE_ANTIBODY);

        String version = null;
        String url = null;

        String geneName = null;
        String geneAccession = null;
        String dbNameForIdentifier = null;

        String xrefAc = null;
        String xrefDb = null;
        boolean tissueExpressionPresent = false;

        boolean antibodyPresent = false;

        String tissueStatus = null;
        String tissue = null;
        String cellType = null;
        String levelType = null;
        String level = null;

        String verificationType = null;
        String verification = null;

        HPAEntryBean hpaEntryBean = null;

        GeneBean geneBean = null;

        List<DbSourceAcEntryBean> dbSourceAcEntryBeans = new ArrayList<DbSourceAcEntryBean>();

        List<PEEvidenceBean> peAntiIHCNormEvidenceBeans = new ArrayList<PEEvidenceBean>();

        PEEvidenceBean antiIHCNormEvidenceBean = null;

        AccessionBean identifiedAcBean = null;

        while (xmlEventReader.hasNextEvent()) {
            //eventType = reader.next();
            XMLEvent event = xmlEventReader.nextEvent();
            if (event.isStartElement()) {
                StartElement element = event.asStartElement();

                //hpa entry
                if (element.getName().equals(entryQN)) {
                    //start to create a hpaEntryBean
                    hpaEntryBean = new HPAEntryBean();
                    //create a GeneBean
                    geneBean = new GeneBean();
                    //create a list of DbSourceAcEntryBean to store all DbSource and Ac
                    dbSourceAcEntryBeans = new ArrayList<DbSourceAcEntryBean>();
                    //create a list of PEEvidenceBean to store all antibody evidencs for the current gene
                    peAntiIHCNormEvidenceBeans = new ArrayList<PEEvidenceBean>();

                    //get the version attribute
                    Attribute versionAttr = element.getAttributeByName(versionQN);
                    if (versionAttr != null) {
                        version = versionAttr.getValue();
                    }
                    //get the url attribute
                    Attribute urlAttr = element.getAttributeByName(urlQN);
                    if (urlAttr != null) {
                        url = urlAttr.getValue();
                    }
                }

                //parse the gene name in the name element
                if (element.getName().equals(nameQN)) {
                    if (xmlEventReader.peek().isCharacters()) {
                        event = xmlEventReader.nextEvent();
                        Characters geneCharacters = event.asCharacters();
                        if (geneCharacters != null) {
                            geneName = geneCharacters.getData();
                        }
                    }
                }

                //parse the ensg accession and db in the identifier element
                if (element.getName().equals(identiferQN)) {
                    Attribute idAttr = element.getAttributeByName(idQN);
                    if (idAttr != null) {
                        geneAccession = idAttr.getValue();
                    }
                    Attribute dbAttr = element.getAttributeByName(dbQN);
                    if (dbAttr != null) {
                        dbNameForIdentifier = dbAttr.getValue();
                    }
                }

                //parse all db and accession pair in xref element
                if (element.getName().equals(xrefQN)) {
                    Attribute idAttr = element.getAttributeByName(idQN);
                    if (idAttr != null) {
                        xrefAc = idAttr.getValue();
                    }
                    Attribute dbAttr = element.getAttributeByName(dbQN);
                    if (dbAttr != null) {
                        xrefDb = dbAttr.getValue();
                    }
                }

                //parse tissueExpression
                if (element.getName().equals(tissueExpQN)) {
                    //we only focus on the tissueExpression element in the path /entry/tissueExpression
                    if (!antibodyPresent) {
                        //set the tissueExpression present flag into true;
                        tissueExpressionPresent = true;
                        //create a list of PEEvidenceBean to store the PEEvidence for antibody
                        peAntiIHCNormEvidenceBeans = new ArrayList<PEEvidenceBean>();
                    }
                }

                //parse the verification element to get reliability or validation value
                if (element.getName().equals(verificationQN)) {
                    //we only focus on the verification element in the path /entry/tissueExpression/verification
                    if (!antibodyPresent && tissueExpressionPresent) {
                        Attribute verifAttr = element.getAttributeByName(typeQN);
                        if (verifAttr != null) {
                            verificationType = element.getAttributeByName(typeQN).getValue();
                        }
                        if (xmlEventReader.peek().isCharacters()) {
                            event = xmlEventReader.nextEvent();
                            verification = event.asCharacters().getData();
                        }
                    }
                }
                //start of the data element
                if (element.getName().equals(dataQN)) {
                    //we only focus on the data element in the path /entry/tissueExpression/data
                    if (!antibodyPresent && tissueExpressionPresent) {
                        antiIHCNormEvidenceBean = new PEEvidenceBean();
                        TPBDataTypeBean dataTypeBean = createTPBDataTypeBeanForPEANTIIHCNORM();
                        antiIHCNormEvidenceBean.setTpbDataTypeBean(dataTypeBean);
                    }
                }

                //start of tissue
                if (element.getName().equals(tissueQN)) {
                    //we only focus on the tissue element in the path /entry/tissueExpression/data/tissue
                    if (!antibodyPresent && tissueExpressionPresent) {
                        Attribute tissueStatusAttr = element.getAttributeByName(statusQN);
                        if (tissueStatusAttr != null) {
                            tissueStatus = tissueStatusAttr.getValue();
                        }
                        if (xmlEventReader.peek().isCharacters()) {
                            event = xmlEventReader.nextEvent();
                            tissue = event.asCharacters().getData();
                        }
                    }
                }

                //start of cellType
                if (element.getName().equals(cellTypeQN)) {
                    //we only focus on the cellType element in the path /entry/tissueExpression/data/cellType
                    if (!antibodyPresent && tissueExpressionPresent) {
                        if (xmlEventReader.peek().isCharacters()) {
                            event = xmlEventReader.nextEvent();
                            cellType = event.asCharacters().getData();
                        }
                    }
                }

                //start of level
                if (element.getName().equals(levelQN)) {
                    //we only focus on the level element in the path /entry/tissueExpression/data/level
                    if (!antibodyPresent && tissueExpressionPresent) {
                        Attribute typeAttr = element.getAttributeByName(typeQN);
                        if (typeAttr != null) {
                            levelType = typeAttr.getValue();
                        }
                        if (xmlEventReader.peek().isCharacters()) {
                            event = xmlEventReader.nextEvent();
                            level = event.asCharacters().getData();
                        }
                    }
                }
                //start of antibody element
                if (element.getName().equals(antibodyQN)) {
                    //we have to setup antibodyPresent flag as true
                    antibodyPresent = true;
                }
            }

            //End of element
            if (event.isEndElement()) {
                EndElement endElement = event.asEndElement();
                //hpa entry end
                if (endElement.getName().equals(entryQN)) {
                    //set hpa version
                    hpaEntryBean.setHpaVersion(version);
                    //hpaEntryBean set gene bean
                    hpaEntryBean.setGeneBean(geneBean);
                    //create the primary dbsource bean
                    DBSourceBean primaryDbSourceBean = createPrimaryDBSourceBeanForHPA();

                    //set the primary DBSourceBean
                    hpaEntryBean.setPrimaryDbSourceBean(primaryDbSourceBean);

                    //set the identified accesion bean
                    hpaEntryBean.setIdentifiedAccessionBean(identifiedAcBean);

                    //set DbSourceAcEntryBean list
                    hpaEntryBean.setDbSourceAcEntryBeans(dbSourceAcEntryBeans);

                    //set all the PeAntiIHCBody evidences
                    if (peAntiIHCNormEvidenceBeans.size() == 0) {
                        peAntiIHCNormEvidenceBeans.add(createNonePEEvidence(url));
                    }

                    hpaEntryBean.setPeAntiIHCNormEvidencesBeans(peAntiIHCNormEvidenceBeans);

                    //add the current hpa entry bean into list
                    hpaEntryBeans.add(hpaEntryBean);
                    //reset version and url
                    version = null;
                    url = null;
                    identifiedAcBean = null;
                }

                //end of gene name, populate the gene name
                if (endElement.getName().equals(nameQN)) {
                    //set gene name
                    geneBean.setDisplayName(geneName);
                }

                //end of identifier, populating for gene accession, db and accessions if any
                if (endElement.getName().equals(identiferQN)) {
                    //set the gene accession
                    geneBean.setEnsgAccession(geneAccession);

                    identifiedAcBean = createIdentifiedAcBean(geneAccession, dbNameForIdentifier);
                    //create a DbSourceAcEntryBean based on the identifier element
                    DbSourceAcEntryBean dbSourceAcEntryBean = createDbSourceAcEntry(dbNameForIdentifier,
                            geneAccession);
                    //add this DbSourceAcEntryBean into list
                    dbSourceAcEntryBeans.add(dbSourceAcEntryBean);
                }

                //end of xref element.  populate for db and accessions if any
                if (endElement.getName().equals(xrefQN)) {
                    //create a DbSourceAcEntryBean based on the xref element
                    DbSourceAcEntryBean dbSourceAcEntryBean = createDbSourceAcEntry(xrefDb, xrefAc);
                    //add this DbSoureAcEntryBean into list
                    dbSourceAcEntryBeans.add(dbSourceAcEntryBean);
                    //set rest of db and accession values
                    xrefDb = null;
                    xrefAc = null;
                }
                //end of the tissueExpression
                if (endElement.getName().equals(tissueExpQN)) {
                    //we only focus on the tissueExpression element in the path /entry/tissueExpression
                    if (!antibodyPresent) {
                        //the tissueExpression is end. we have to reset tissueExpressionPresent,
                        //verificationType and verification values under the tissueExpression element level
                        //reset tissueExpression present flag into false
                        tissueExpressionPresent = false;
                        //reset verification type
                        verificationType = null;
                        //reset verification value
                        verification = null;
                    }
                }

                //end of data element
                if (endElement.getName().equals(dataQN)) {
                    //we only focus on the data element in the path /entry/tissueExpression/data
                    if (!antibodyPresent && tissueExpressionPresent) {
                        //we only consider the tissue status is normal one
                        if (StringUtils.endsWithIgnoreCase(tissueStatus, TISSUE_STATUS_NORMAL)) {
                            setAntiEvidence(antiIHCNormEvidenceBean, url, verification, tissue, cellType, level,
                                    levelType);
                            //add anti evidence
                            peAntiIHCNormEvidenceBeans.add(antiIHCNormEvidenceBean);
                        }
                        //the data element is end. we have to reset the tissueStatus, tissue, cellType and level values under the data element level
                        tissueStatus = null;
                        tissue = null;
                        cellType = null;
                        level = null;
                        levelType = null;
                    }
                }
                //end of antibody
                if (endElement.getName().equals(antibodyQN)) {
                    //we have to reset antibodyPresent flag as false
                    antibodyPresent = false;
                }
            }
            //End of XML document
            if (event.isEndDocument()) {
                // finished to parse the whole document;
                break;
            }
        }
    } catch (Exception ex) {
        logger.error(ex);
        throw new DMXMLParserException(ex);
    } finally {
        if (xmlEventReader != null) {
            try {
                xmlEventReader.close();
            } catch (Exception e) {
                //ignore whatever caught.
            }
        }
    }
    return hpaEntryBeans;
}

From source file:microsoft.exchange.webservices.data.core.EwsXmlReader.java

/**
 * Read attribute value from QName.//from   w w  w. j  a  v a2  s .  com
 *
 * @param qName QName of the attribute
 * @return Attribute Value
 * @throws Exception thrown if attribute value can not be read
 */
private String readAttributeValue(QName qName) throws Exception {
    if (this.presentEvent.isStartElement()) {
        StartElement startElement = this.presentEvent.asStartElement();
        Attribute attr = startElement.getAttributeByName(qName);
        if (null != attr) {
            return attr.getValue();
        } else {
            return null;
        }
    } else {
        String errMsg = String.format("Could not fetch attribute %s", qName.toString());
        throw new Exception(errMsg);
    }
}

From source file:edu.jhu.hlt.concrete.ingesters.bolt.BoltForumPostIngester.java

@Override
public Communication fromCharacterBasedFile(final Path path) throws IngestException {
    if (!Files.exists(path))
        throw new IngestException("No file at: " + path.toString());

    AnalyticUUIDGeneratorFactory f = new AnalyticUUIDGeneratorFactory();
    AnalyticUUIDGenerator gen = f.create();
    Communication c = new Communication();
    c.setUuid(gen.next());/*  w  w w .j  a  va 2  s  . c om*/
    c.setType(this.getKind());
    c.setMetadata(TooledMetadataConverter.convert(this));

    try {
        ExistingNonDirectoryFile ef = new ExistingNonDirectoryFile(path);
        c.setId(ef.getName().split("\\.")[0]);
    } catch (NoSuchFileException | NotFileException e) {
        // might throw if path is a directory.
        throw new IngestException(path.toString() + " is not a file, or is a directory.");
    }

    String content;
    try (InputStream is = Files.newInputStream(path);
            BufferedInputStream bin = new BufferedInputStream(is, 1024 * 8 * 8);) {
        content = IOUtils.toString(bin, StandardCharsets.UTF_8);
        c.setText(content);
    } catch (IOException e) {
        throw new IngestException(e);
    }

    try (InputStream is = Files.newInputStream(path);
            BufferedInputStream bin = new BufferedInputStream(is, 1024 * 8 * 8);
            BufferedReader reader = new BufferedReader(new InputStreamReader(bin, StandardCharsets.UTF_8));) {
        XMLEventReader rdr = null;
        try {
            rdr = inF.createXMLEventReader(reader);

            // Below method moves the reader
            // to the first post element.
            Section headline = handleHeadline(rdr, content);
            headline.setUuid(gen.next());
            c.addToSectionList(headline);
            int start = headline.getTextSpan().getStart();
            int ending = headline.getTextSpan().getEnding();
            if (ending < start)
                ending = start; // @tongfei: handle empty headlines
            String htxt = c.getText().substring(start, ending);
            LOGGER.debug("headline text: {}", htxt);

            // Section indices.
            int sectNumber = 1;
            int subSect = 0;

            // Move iterator to post start element.
            this.iterateToPosts(rdr);

            // Offset pointer.
            int currOff = -1;

            SectionFactory sf = new SectionFactory(gen);

            // First post element.
            while (rdr.hasNext()) {
                XMLEvent nextEvent = rdr.nextEvent();
                currOff = nextEvent.getLocation().getCharacterOffset();
                if (currOff > 0) {
                    int currOffPlus = currOff + 20;
                    int currOffLess = currOff - 20;
                    LOGGER.debug("Offset: {}", currOff);
                    if (currOffPlus < content.length())
                        LOGGER.debug("Surrounding text: {}", content.substring(currOffLess, currOffPlus));
                }

                // First: see if document is going to end.
                // If yes: exit.
                if (nextEvent.isEndDocument())
                    break;

                // XMLEvent peeker = rdr.peek();

                // Check if start element.
                if (nextEvent.isStartElement()) {
                    StartElement se = nextEvent.asStartElement();
                    QName name = se.getName();
                    final String localName = name.getLocalPart();
                    LOGGER.debug("Hit start element: {}", localName);

                    //region
                    // Add sections for authors and datetimes for each bolt post
                    // by Tongfei Chen
                    Attribute attrAuthor = se.getAttributeByName(QName.valueOf("author"));
                    Attribute attrDateTime = se.getAttributeByName(QName.valueOf("datetime"));

                    if (attrAuthor != null && attrDateTime != null) {

                        int loc = attrAuthor.getLocation().getCharacterOffset();

                        int sectAuthorBeginningOffset = loc + "<post author=\"".length();

                        Section sectAuthor = sf.fromTextSpan(new TextSpan(sectAuthorBeginningOffset,
                                sectAuthorBeginningOffset + attrAuthor.getValue().length()), "author");
                        c.addToSectionList(sectAuthor);

                        int sectDateTimeBeginningOffset = sectAuthorBeginningOffset
                                + attrAuthor.getValue().length() + " datetime=".length();

                        Section sectDateTime = sf.fromTextSpan(
                                new TextSpan(sectDateTimeBeginningOffset,
                                        sectDateTimeBeginningOffset + attrDateTime.getValue().length()),
                                "datetime");
                        c.addToSectionList(sectDateTime);
                    }
                    //endregion

                    // Move past quotes, images, and links.
                    if (localName.equals(QUOTE_LOCAL_NAME)) {
                        this.handleQuote(rdr);
                    } else if (localName.equals(IMG_LOCAL_NAME)) {
                        this.handleImg(rdr);
                    } else if (localName.equals(LINK_LOCAL_NAME)) {
                        this.handleLink(rdr);
                    }

                    // not a start element
                } else if (nextEvent.isCharacters()) {
                    Characters chars = nextEvent.asCharacters();
                    int coff = chars.getLocation().getCharacterOffset();
                    if (!chars.isWhiteSpace()) {
                        // content to be captured
                        String fpContent = chars.getData();
                        LOGGER.debug("Character offset: {}", coff);
                        LOGGER.debug("Character based data: {}", fpContent);
                        // LOGGER.debug("Character data via offset diff: {}", content.substring(coff - fpContent.length(), coff));

                        SimpleImmutableEntry<Integer, Integer> pads = trimSpacing(fpContent);
                        final int tsb = currOff + pads.getKey();
                        final int tse = currOff + fpContent.length() - pads.getValue();
                        final String subs = content.substring(tsb, tse);
                        if (subs.replaceAll("\\p{Zs}", "").replaceAll("\\n", "").isEmpty()) {
                            LOGGER.info("Found empty section: skipping.");
                            continue;
                        }

                        LOGGER.debug("Section text: {}", subs);
                        TextSpan ts = new TextSpan(tsb, tse);

                        Section s = sf.fromTextSpan(ts, "post");
                        List<Integer> intList = new ArrayList<>();
                        intList.add(sectNumber);
                        intList.add(subSect);
                        s.setNumberList(intList);
                        c.addToSectionList(s);

                        subSect++;
                    }
                } else if (nextEvent.isEndElement()) {
                    EndElement ee = nextEvent.asEndElement();
                    currOff = ee.getLocation().getCharacterOffset();
                    QName name = ee.getName();
                    String localName = name.getLocalPart();
                    LOGGER.debug("Hit end element: {}", localName);
                    if (localName.equalsIgnoreCase(POST_LOCAL_NAME)) {
                        sectNumber++;
                        subSect = 0;
                    }
                }
            }
            return c;
        } catch (XMLStreamException | ConcreteException | StringIndexOutOfBoundsException x) {
            throw new IngestException(x);
        } finally {
            if (rdr != null)
                try {
                    rdr.close();
                } catch (XMLStreamException e) {
                    // not likely.
                    LOGGER.info("Error closing XMLReader.", e);
                }
        }
    } catch (IOException e) {
        throw new IngestException(e);
    }
}

From source file:json_to_xml_1.java

public int execute(String args[]) throws ProgramTerminationException {
    this.getInfoMessages().clear();

    if (args.length < 2) {
        throw constructTermination("messageArgumentsMissing", null,
                getI10nString("messageArgumentsMissingUsage") + "\n\tjson_to_xml_1 "
                        + getI10nString("messageParameterList") + "\n");
    }/*  w ww.  j a  va  2s  .co m*/

    File resultInfoFile = new File(args[1]);

    try {
        resultInfoFile = resultInfoFile.getCanonicalFile();
    } catch (SecurityException ex) {
        throw constructTermination("messageResultInfoFileCantGetCanonicalPath", ex, null,
                resultInfoFile.getAbsolutePath());
    } catch (IOException ex) {
        throw constructTermination("messageResultInfoFileCantGetCanonicalPath", ex, null,
                resultInfoFile.getAbsolutePath());
    }

    if (resultInfoFile.exists() == true) {
        if (resultInfoFile.isFile() == true) {
            if (resultInfoFile.canWrite() != true) {
                throw constructTermination("messageResultInfoFileIsntWritable", null, null,
                        resultInfoFile.getAbsolutePath());
            }
        } else {
            throw constructTermination("messageResultInfoPathIsntAFile", null, null,
                    resultInfoFile.getAbsolutePath());
        }
    }

    json_to_xml_1.resultInfoFile = resultInfoFile;

    File jobFile = new File(args[0]);

    try {
        jobFile = jobFile.getCanonicalFile();
    } catch (SecurityException ex) {
        throw constructTermination("messageJobFileCantGetCanonicalPath", ex, null, jobFile.getAbsolutePath());
    } catch (IOException ex) {
        throw constructTermination("messageJobFileCantGetCanonicalPath", ex, null, jobFile.getAbsolutePath());
    }

    if (jobFile.exists() != true) {
        throw constructTermination("messageJobFileDoesntExist", null, null, jobFile.getAbsolutePath());
    }

    if (jobFile.isFile() != true) {
        throw constructTermination("messageJobPathIsntAFile", null, null, jobFile.getAbsolutePath());
    }

    if (jobFile.canRead() != true) {
        throw constructTermination("messageJobFileIsntReadable", null, null, jobFile.getAbsolutePath());
    }

    System.out.println("json_to_xml_1: " + getI10nStringFormatted("messageCallDetails",
            jobFile.getAbsolutePath(), resultInfoFile.getAbsolutePath()));

    File inputFile = null;
    File outputFile = null;

    try {
        XMLInputFactory inputFactory = XMLInputFactory.newInstance();
        InputStream in = new FileInputStream(jobFile);
        XMLEventReader eventReader = inputFactory.createXMLEventReader(in);

        while (eventReader.hasNext() == true) {
            XMLEvent event = eventReader.nextEvent();

            if (event.isStartElement() == true) {
                String tagName = event.asStartElement().getName().getLocalPart();

                if (tagName.equals("json-input-file") == true) {
                    StartElement inputFileElement = event.asStartElement();
                    Attribute pathAttribute = inputFileElement.getAttributeByName(new QName("path"));

                    if (pathAttribute == null) {
                        throw constructTermination("messageJobFileEntryIsMissingAnAttribute", null, null,
                                jobFile.getAbsolutePath(), tagName, "path");
                    }

                    String inputFilePath = pathAttribute.getValue();

                    if (inputFilePath.isEmpty() == true) {
                        throw constructTermination("messageJobFileAttributeValueIsEmpty", null, null,
                                jobFile.getAbsolutePath(), tagName, "path");
                    }

                    inputFile = new File(inputFilePath);

                    if (inputFile.isAbsolute() != true) {
                        inputFile = new File(
                                jobFile.getAbsoluteFile().getParent() + File.separator + inputFilePath);
                    }

                    try {
                        inputFile = inputFile.getCanonicalFile();
                    } catch (SecurityException ex) {
                        throw constructTermination("messageInputFileCantGetCanonicalPath", ex, null,
                                new File(inputFilePath).getAbsolutePath(), jobFile.getAbsolutePath());
                    } catch (IOException ex) {
                        throw constructTermination("messageInputFileCantGetCanonicalPath", ex, null,
                                new File(inputFilePath).getAbsolutePath(), jobFile.getAbsolutePath());
                    }

                    if (inputFile.exists() != true) {
                        throw constructTermination("messageInputFileDoesntExist", null, null,
                                inputFile.getAbsolutePath(), jobFile.getAbsolutePath());
                    }

                    if (inputFile.isFile() != true) {
                        throw constructTermination("messageInputPathIsntAFile", null, null,
                                inputFile.getAbsolutePath(), jobFile.getAbsolutePath());
                    }

                    if (inputFile.canRead() != true) {
                        throw constructTermination("messageInputFileIsntReadable", null, null,
                                inputFile.getAbsolutePath(), jobFile.getAbsolutePath());
                    }
                } else if (tagName.equals("xml-output-file") == true) {
                    StartElement outputFileElement = event.asStartElement();
                    Attribute pathAttribute = outputFileElement.getAttributeByName(new QName("path"));

                    if (pathAttribute == null) {
                        throw constructTermination("messageJobFileEntryIsMissingAnAttribute", null, null,
                                jobFile.getAbsolutePath(), tagName, "path");
                    }

                    String outputFilePath = pathAttribute.getValue();

                    if (outputFilePath.isEmpty() == true) {
                        throw constructTermination("messageJobFileAttributeValueIsEmpty", null, null,
                                jobFile.getAbsolutePath(), tagName, "path");
                    }

                    outputFile = new File(outputFilePath);

                    if (outputFile.isAbsolute() != true) {
                        outputFile = new File(
                                jobFile.getAbsoluteFile().getParent() + File.separator + outputFilePath);
                    }

                    try {
                        outputFile = outputFile.getCanonicalFile();
                    } catch (SecurityException ex) {
                        throw constructTermination("messageOutputFileCantGetCanonicalPath", ex, null,
                                new File(outputFilePath).getAbsolutePath(), jobFile.getAbsolutePath());
                    } catch (IOException ex) {
                        throw constructTermination("messageOutputFileCantGetCanonicalPath", ex, null,
                                new File(outputFilePath).getAbsolutePath(), jobFile.getAbsolutePath());
                    }

                    if (outputFile.exists() == true) {
                        if (outputFile.isFile() == true) {
                            if (outputFile.canWrite() != true) {
                                throw constructTermination("messageOutputFileIsntWritable", null, null,
                                        outputFile.getAbsolutePath());
                            }
                        } else {
                            throw constructTermination("messageOutputPathIsntAFile", null, null,
                                    outputFile.getAbsolutePath());
                        }
                    }
                }
            }
        }
    } catch (XMLStreamException ex) {
        throw constructTermination("messageJobFileErrorWhileReading", ex, null, jobFile.getAbsolutePath());
    } catch (SecurityException ex) {
        throw constructTermination("messageJobFileErrorWhileReading", ex, null, jobFile.getAbsolutePath());
    } catch (IOException ex) {
        throw constructTermination("messageJobFileErrorWhileReading", ex, null, jobFile.getAbsolutePath());
    }

    if (inputFile == null) {
        throw constructTermination("messageJobFileNoInputFile", null, null, jobFile.getAbsolutePath());
    }

    if (outputFile == null) {
        throw constructTermination("messageJobFileNoOutputFile", null, null, jobFile.getAbsolutePath());
    }

    StringBuilder stringBuilder = new StringBuilder();

    try {
        JSONObject json = new JSONObject(new JSONTokener(new BufferedReader(new FileReader(inputFile))));

        stringBuilder.append(XML.toString(json));
    } catch (Exception ex) {
        throw constructTermination("messageConversionError", ex, null, inputFile.getAbsolutePath());
    }

    try {
        BufferedWriter writer = new BufferedWriter(
                new OutputStreamWriter(new FileOutputStream(outputFile), "UTF-8"));

        writer.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
        writer.write(
                "<!-- This file was created by json_to_xml_1, which is free software licensed under the GNU Affero General Public License 3 or any later version (see https://github.com/publishing-systems/digital_publishing_workflow_tools/ and http://www.publishing-systems.org). -->\n");
        writer.write(stringBuilder.toString());

        writer.flush();
        writer.close();
    } catch (FileNotFoundException ex) {
        throw constructTermination("messageOutputFileWritingError", ex, null, outputFile.getAbsolutePath());
    } catch (UnsupportedEncodingException ex) {
        throw constructTermination("messageOutputFileWritingError", ex, null, outputFile.getAbsolutePath());
    } catch (IOException ex) {
        throw constructTermination("messageOutputFileWritingError", ex, null, outputFile.getAbsolutePath());
    }

    return 0;
}

From source file:com.msopentech.odatajclient.testservice.utils.XMLUtilities.java

public String getEdmTypeFromXML(final InputStream is, final String[] path) throws Exception {
    final XMLEventReader reader = getEventReader(is);

    final Attribute type = getPropertyStartTag(reader, path).getAttributeByName(new QName(TYPE));

    reader.close();//  w  ww . j a va  2s.  co m

    if (type == null) {
        throw new NotFoundException();
    }

    return type.getValue();
}

From source file:com.logiware.accounting.domain.EdiInvoice.java

private void setElementType(StartElement startElement) {
    if (isHeader) {
        if ("Applicationreference".equalsIgnoreCase(startElement.getName().toString())) {
            elementType = "Applicationreference";
            elements.add("Applicationreference");
        } else if ("Reference".equalsIgnoreCase(startElement.getName().toString())) {
            elementType = "Reference";
            elements.add("Reference");
        } else if ("Sender".equalsIgnoreCase(startElement.getName().toString())) {
            elementType = "Sender";
            elements.add("Sender");
        }/*  w  w  w . j  a v  a2s.co m*/
    } else if (isBody) {
        if (isInformation) {
            if ("Invoice".equalsIgnoreCase(startElement.getName().toString())) {
                elementType = "Invoice";
                elements.add("Invoice");
            } else if ("RelatedReferences".equalsIgnoreCase(startElement.getName().toString())) {
                elementType = "RelatedReferences";
                elements.add("RelatedReferences");
            } else if ("Parties".equalsIgnoreCase(startElement.getName().toString())) {
                Iterator attributes = startElement.getAttributes();
                if (attributes.hasNext()) {
                    Attribute attribute = (Attribute) (attributes.next());
                    if ("Qualifier".equals(attribute.getName().toString())) {
                        if ("BY".equals(attribute.getValue())) {
                            elementType = "Company";
                            elements.add("BY");
                        } else if ("SU".equals(attribute.getValue())) {
                            elementType = "Vendor";
                            elements.add("SU");
                        }
                    }
                }
            } else if ("PaymentTerms".equalsIgnoreCase(startElement.getName().toString())) {
                elementType = "PaymentTerms";
                elements.add("PaymentTerms");
            } else if ("ShipmentInformation".equalsIgnoreCase(startElement.getName().toString())) {
                elementType = "ShipmentInformation";
                elements.add("ShipmentInformation");
            }
        } else if (isDetails) {
            if ("Detail".equalsIgnoreCase(startElement.getName().toString())) {
                elementType = "Detail";
                elements.add("Detail");
            }
        } else if (isSummary) {
            if ("TotalMonetaryAmount".equalsIgnoreCase(startElement.getName().toString())) {
                elementType = "TotalMonetaryAmount";
                elements.add("TotalMonetaryAmount");
            } else if ("TotalMonetaryAmountGroupByVAT".equalsIgnoreCase(startElement.getName().toString())) {
                elementType = "TotalMonetaryAmountGroupByVAT";
                elements.add("TotalMonetaryAmountGroupByVAT");
            }
        }
    }
}

From source file:com.logiware.accounting.domain.EdiInvoice.java

private void setCharacterType(StartElement startElement) {
    if (isHeader) {
        if ("Sender".equals(elementType) && "Code".equalsIgnoreCase(startElement.getName().toString())) {
            characterType = "Code";
            elements.add("Code");
        }//from w ww  .j  av  a 2s.  co m
    } else if (isBody) {
        if (isInformation) {
            if ("Invoice".equals(elementType)) {
                characterType = startElement.getName().toString();
            } else if ("RelatedReferences".equalsIgnoreCase(elementType)) {
                if ("Reference".equalsIgnoreCase(startElement.getName().toString())) {
                    Iterator attributes = startElement.getAttributes();
                    if (attributes.hasNext()) {
                        Attribute attribute = (Attribute) (attributes.next());
                        if ("Qualifier".equals(attribute.getName().toString())) {
                            if ("EFR".equals(attribute.getValue())) {
                                characterType = "EFR";
                            } else if ("BLR".equals(attribute.getValue())) {
                                characterType = "BLR";
                            } else if ("CR".equals(attribute.getValue())) {
                                characterType = "CR";
                            } else if ("TID".equals(attribute.getValue())) {
                                characterType = "TID";
                            }
                        }
                    }
                }
            } else if ("Company".equalsIgnoreCase(elementType)) {
                if (!"NAD".equalsIgnoreCase(startElement.getName().toString())
                        && !"Location".equalsIgnoreCase(startElement.getName().toString())) {
                    characterType = startElement.getName().toString();
                }
            } else if ("Vendor".equalsIgnoreCase(elementType)) {
                if ("Bank".equalsIgnoreCase(startElement.getName().toString())) {
                    isBank = true;
                } else if (!"NAD".equalsIgnoreCase(startElement.getName().toString())
                        && !"Location".equalsIgnoreCase(startElement.getName().toString())) {
                    characterType = startElement.getName().toString();
                }
            } else if ("PaymentTerms".equalsIgnoreCase(elementType)) {
                characterType = startElement.getName().toString();
            } else if ("ShipmentInformation".equalsIgnoreCase(elementType)) {
                if (!"VoyageInformation".equalsIgnoreCase(startElement.getName().toString())
                        && !"Details".equalsIgnoreCase(startElement.getName().toString())
                        && !"Package".equalsIgnoreCase(startElement.getName().toString())) {
                    characterType = startElement.getName().toString();
                }
            }
        } else if (isDetails) {
            if ("Detail".equalsIgnoreCase(elementType)) {
                characterType = startElement.getName().toString();
            }
        } else if (isSummary) {
            if ("TotalMonetaryAmount".equalsIgnoreCase(elementType)) {
                if ("TotalVATIncl".equalsIgnoreCase(startElement.getName().toString())) {
                    characterType = "TotalVATIncl";
                }
            } else if ("TotalMonetaryAmountGroupByVAT".equalsIgnoreCase(elementType)) {
                if ("TotalVAT".equalsIgnoreCase(startElement.getName().toString())) {
                    characterType = "TotalVAT";
                } else if ("VATPercentage".equalsIgnoreCase(startElement.getName().toString())) {
                    characterType = "VATPercentage";
                }
            }
        }
    }
}