Example usage for org.xml.sax ContentHandler endElement

List of usage examples for org.xml.sax ContentHandler endElement

Introduction

In this page you can find the example usage for org.xml.sax ContentHandler endElement.

Prototype

public void endElement(String uri, String localName, String qName) throws SAXException;

Source Link

Document

Receive notification of the end of an element.

Usage

From source file:com.mirth.connect.plugins.datatypes.hl7v2.ER7Reader.java

private void handleComponent(ContentHandler contentHandler, String subcomponentSeparator, String segmentId,
        int fieldId, int componentId, String component) throws SAXException {
    if (handleSubcomponents && !subcomponentSeparator.isEmpty()
            && (component.indexOf(subcomponentSeparator) > -1)) {
        contentHandler.startElement("", segmentId + "." + fieldId + "." + componentId, "", null);
        // check if we have subcomponents, if so add them
        StringTokenizer subcomponentTokenizer = new StringTokenizer(component, subcomponentSeparator, true);
        handleSubcomponents(contentHandler, subcomponentSeparator, segmentId, fieldId, componentId, 1,
                subcomponentTokenizer);/*w  ww  .j a v  a2  s. co  m*/
        contentHandler.endElement("", segmentId + "." + fieldId + "." + componentId, null);
    } else {
        logger.trace("handling component: " + component);
        // the naming is SEG.<field#>.<component#>
        contentHandler.startElement("", segmentId + "." + fieldId + "." + componentId, "", null);
        contentHandler.characters(component.toCharArray(), 0, component.length());
        contentHandler.endElement("", segmentId + "." + fieldId + "." + componentId, "");
    }
}

From source file:com.mirth.connect.plugins.datatypes.hl7v2.ER7Reader.java

private void handleSubcomponents(ContentHandler contentHandler, String subcomponentSeparator, String segmentId,
        int fieldId, int componentId, int subcomponentId, StringTokenizer subcomponentTokenizer)
        throws SAXException {
    boolean atLastSubcomponent = true;

    while (subcomponentTokenizer.hasMoreTokens()) {
        String subcomponent = subcomponentTokenizer.nextToken();

        if (subcomponent.equals(subcomponentSeparator)) {
            if (atLastSubcomponent) {
                contentHandler.startElement("",
                        segmentId + "." + fieldId + "." + componentId + "." + subcomponentId, "", null);
                contentHandler.characters(EMPTY_CHAR_ARRAY, 0, 0);
                contentHandler.endElement("",
                        segmentId + "." + fieldId + "." + componentId + "." + subcomponentId, "");
            }/*w ww .  j  a v a 2s . c  o m*/

            subcomponentId++;
            atLastSubcomponent = true;
        } else {
            logger.trace("handling subcomponent: " + subcomponentId);
            atLastSubcomponent = false;
            // the naming is SEG.<field#>.<component#>.<subcomponent#>
            contentHandler.startElement("",
                    segmentId + "." + fieldId + "." + componentId + "." + subcomponentId, "", null);
            contentHandler.characters(subcomponent.toCharArray(), 0, subcomponent.length());
            contentHandler.endElement("", segmentId + "." + fieldId + "." + componentId + "." + subcomponentId,
                    "");
        }
    }

    if (atLastSubcomponent) {
        contentHandler.startElement("", segmentId + "." + fieldId + "." + componentId + "." + subcomponentId,
                "", null);
        contentHandler.characters(EMPTY_CHAR_ARRAY, 0, 0);
        contentHandler.endElement("", segmentId + "." + fieldId + "." + componentId + "." + subcomponentId, "");
    }
}

From source file:org.syncope.core.report.UserReportlet.java

@Override
@Transactional(readOnly = true)//  ww w .  j a  v  a  2  s  .  c o  m
public void extract(final ContentHandler handler) throws SAXException, ReportException {

    if (getConf() == null || !(getConf() instanceof UserReportletConf)) {
        throw new ReportException(new IllegalArgumentException(
                "Expected " + UserReportletConf.class.getName() + ", got " + getConf()));
    }

    UserReportletConf conf = (UserReportletConf) getConf();

    AttributesImpl atts = new AttributesImpl();
    atts.addAttribute("", "", ATTR_NAME, XSD_STRING, getConf().getName());
    atts.addAttribute("", "", ATTR_CLASS, XSD_STRING, getClass().getName());
    handler.startElement("", "", ELEMENT_REPORTLET, atts);

    for (int i = 1; i <= (count(conf) / PAGE_SIZE) + 1; i++) {
        doExtract(handler, conf, getPagedUsers(conf, i));
    }

    handler.endElement("", "", ELEMENT_REPORTLET);
}

From source file:com.mirth.connect.plugins.datatypes.hl7v2.ER7Reader.java

private void handleFieldRepetitions(ContentHandler contentHandler, String componentSeparator,
        String repetitionSeparator, String subcomponentSeparator, String segmentId, int fieldId, String field)
        throws SAXException {
    StringTokenizer fieldRepetitionTokenizer = new StringTokenizer(field, repetitionSeparator, true);
    boolean atLastRepetition = true;

    while (fieldRepetitionTokenizer.hasMoreTokens()) {
        field = fieldRepetitionTokenizer.nextToken();

        if (field.equals(repetitionSeparator)) {
            // check for ~~
            if (atLastRepetition) {
                contentHandler.startElement("", segmentId + "." + fieldId, "", null);
                contentHandler.characters(EMPTY_CHAR_ARRAY, 0, 0);
                contentHandler.endElement("", segmentId + "." + fieldId, "");
            }/* ww  w.  j  a v  a2  s. c o m*/

            atLastRepetition = true;
        } else {
            logger.trace("handling repetition: " + field);
            atLastRepetition = false;
            handleField(contentHandler, componentSeparator, subcomponentSeparator, segmentId, fieldId, field);
        }
    }

    if (atLastRepetition) {
        contentHandler.startElement("", segmentId + "." + fieldId, "", null);
        contentHandler.characters(EMPTY_CHAR_ARRAY, 0, 0);
        contentHandler.endElement("", segmentId + "." + fieldId, "");
    }
}

From source file:net.ontopia.topicmaps.db2tm.RelationMapping.java

protected void outputField(Field field, ContentHandler dh) throws SAXException {
    AttributesImpl atts = new AttributesImpl();
    if (field.getFieldType() == Field.TYPE_SUBJECT_LOCATOR) {
        addAttribute(atts, "column", "CDATA", field.getColumn());
        dh.startElement("", "", "subject-locator", atts);
        char[] c = field.getPattern().toCharArray();
        dh.characters(c, 0, c.length);//  ww w .j  a v a2s . c om
        dh.endElement("", "", "subject-locator");
        atts.clear();
    } else if (field.getFieldType() == Field.TYPE_SUBJECT_IDENTIFIER) {
        addAttribute(atts, "column", "CDATA", field.getColumn());
        dh.startElement("", "", "subject-identifier", atts);
        char[] c = field.getPattern().toCharArray();
        dh.characters(c, 0, c.length);
        dh.endElement("", "", "subject-identifier");
        atts.clear();
    } else if (field.getFieldType() == Field.TYPE_ITEM_IDENTIFIER) {
        addAttribute(atts, "column", "CDATA", field.getColumn());
        dh.startElement("", "", "item-identifier", atts);
        char[] c = field.getPattern().toCharArray();
        dh.characters(c, 0, c.length);
        dh.endElement("", "", "item-identifier");
        atts.clear();
    } else if (field.getFieldType() == Field.TYPE_OCCURRENCE) {
        addAttribute(atts, "column", "CDATA", field.getColumn());
        addAttribute(atts, "type", "CDATA", field.getType());
        addAttribute(atts, "scope", "CDATA", field.getScope());
        addAttribute(atts, "datatype", "CDATA", field.getDatatype());
        dh.startElement("", "", "occurrence", atts);
        dh.endElement("", "", "occurrence");
        atts.clear();
    } else if (field.getFieldType() == Field.TYPE_TOPIC_NAME) {
        addAttribute(atts, "column", "CDATA", field.getColumn());
        addAttribute(atts, "type", "CDATA", field.getType());
        addAttribute(atts, "scope", "CDATA", field.getScope());
        dh.startElement("", "", "topic-name", atts);
        dh.endElement("", "", "topic-name");
        atts.clear();
    } else if (field.getFieldType() == Field.TYPE_PLAYER) {
        addAttribute(atts, "rtype", "CDATA", field.getRoleType());
        addAttribute(atts, "atype", "CDATA", field.getAssociationType());
        addAttribute(atts, "scope", "CDATA", field.getScope());

        dh.startElement("", "", "player", atts);
        atts.clear();

        for (Field orole : field.getOtherRoleFields()) {
            addAttribute(atts, "rtype", "CDATA", orole.getRoleType());
            addAttribute(atts, "player", "CDATA", orole.getPlayer());
            dh.startElement("", "", "other", atts);
            dh.endElement("", "", "other");
            atts.clear();
        }

        dh.endElement("", "", "player");
        atts.clear();
    } else if (field.getFieldType() == Field.TYPE_ASSOCIATION_ROLE) {
        addAttribute(atts, "type", "CDATA", field.getRoleType());
        addAttribute(atts, "player", "CDATA", field.getPlayer());
        dh.startElement("", "", "role", atts);
        dh.endElement("", "", "role");
        atts.clear();
    } else
        throw new OntopiaRuntimeException("Unknown field type: " + field.getType());
}

From source file:com.mirth.connect.plugins.datatypes.hl7v2.ER7Reader.java

private void handleFieldOrRepetitions(ContentHandler contentHandler, String fieldSeparator,
        String componentSeparator, String subcomponentSeparator, String repetitionSeparator,
        String escapeCharacter, String segmentId, StringTokenizer fieldTokenizer) throws SAXException {
    int fieldId = 0;
    boolean atLastField = false;

    while (fieldTokenizer.hasMoreTokens()) {
        boolean enteredHeader = false;

        /*/*from  w w  w . j  a va  2s  . c o m*/
         * Go through each element and add as new child under the segment
         * element
         */
        String field = fieldTokenizer.nextToken();

        // the naming is SEG.<field#>
        if (field.equals(fieldSeparator)) {
            if (atLastField) {
                contentHandler.startElement("", segmentId + "." + fieldId, "", null);
                contentHandler.endElement("", segmentId + "." + fieldId, "");
            }

            fieldId++;
            atLastField = true;
        } else {
            logger.trace("handling field or repetition: " + field);
            atLastField = false;

            // batch support
            if (segmentId.equals("MSH") || segmentId.equals("FHS") || segmentId.equals("BHS")) {
                enteredHeader = true;
            }

            if (enteredHeader && (fieldId == 1)) {
                contentHandler.startElement("", segmentId + "." + fieldId, "", null);
                contentHandler.characters(fieldSeparator.toCharArray(), 0, 1);
                contentHandler.endElement("", segmentId + "." + (fieldId), null);
                fieldId++;
                contentHandler.startElement("", segmentId + "." + fieldId, "", null);

                char[] specialCharacters;
                if (!subcomponentSeparator.isEmpty()) {
                    specialCharacters = new char[] { componentSeparator.charAt(0),
                            repetitionSeparator.charAt(0), escapeCharacter.charAt(0),
                            subcomponentSeparator.charAt(0) };
                } else if (!escapeCharacter.isEmpty()) {
                    specialCharacters = new char[] { componentSeparator.charAt(0),
                            repetitionSeparator.charAt(0), escapeCharacter.charAt(0), };
                } else {
                    specialCharacters = new char[] { componentSeparator.charAt(0),
                            repetitionSeparator.charAt(0), };
                }

                contentHandler.characters(specialCharacters, 0, specialCharacters.length);
                contentHandler.endElement("", segmentId + "." + (fieldId), null);
            } else if (enteredHeader && (fieldId == 2)) {
                // do nothing
            } else {
                if (handleRepetitions) {
                    handleFieldRepetitions(contentHandler, componentSeparator, repetitionSeparator,
                            subcomponentSeparator, segmentId, fieldId, field);
                } else {
                    handleField(contentHandler, componentSeparator, subcomponentSeparator, segmentId, fieldId,
                            field);
                }
            }
        }
    }

    if (atLastField) {
        contentHandler.startElement("", segmentId + "." + fieldId, "", null);
        contentHandler.endElement("", segmentId + "." + fieldId, "");
    }
}

From source file:net.ontopia.topicmaps.db2tm.RelationMapping.java

protected void outputEntities(Relation rel, ContentHandler dh) throws SAXException {
    AttributesImpl atts = new AttributesImpl();

    for (Entity entity : rel.getEntities()) {
        if (entity.getEntityType() == Entity.TYPE_TOPIC) {
            // <topic>
            if (entity.getId() != null)
                addAttribute(atts, "id", "CDATA", entity.getId());
            addAttribute(atts, "type", "CDATA", entity.getAssociationType());
            dh.startElement("", "", "topic", atts);
            atts.clear();//from w  ww. ja  v  a  2  s  .c o  m

            outputFields(entity, dh);

            // </topic>
            dh.endElement("", "", "topic");

        } else if (entity.getEntityType() == Entity.TYPE_ASSOCIATION) {

            // <association>
            if (entity.getId() != null)
                addAttribute(atts, "id", "CDATA", entity.getId());
            addAttribute(atts, "type", "CDATA", entity.getAssociationType());
            addAttribute(atts, "scope", "CDATA", entity.getScope());

            dh.startElement("", "", "association", atts);
            atts.clear();

            outputFields(entity, dh);

            // </association>
            dh.endElement("", "", "association");
        }
    }
}

From source file:org.syncope.core.report.UserReportlet.java

private void doExtractAttributes(final ContentHandler handler, final AbstractAttributableTO attributableTO,
        final Collection<String> attrs, final Collection<String> derAttrs, final Collection<String> virAttrs)
        throws SAXException {

    AttributesImpl atts = new AttributesImpl();
    if (!attrs.isEmpty()) {
        Map<String, AttributeTO> attrMap = attributableTO.getAttributeMap();

        handler.startElement("", "", "attributes", null);
        for (String attrName : attrs) {
            atts.clear();//from  w w w.  ja v  a2 s. c  o m

            atts.addAttribute("", "", ATTR_NAME, XSD_STRING, attrName);
            handler.startElement("", "", "attribute", atts);

            if (attrMap.containsKey(attrName)) {
                for (String value : attrMap.get(attrName).getValues()) {
                    handler.startElement("", "", "value", null);
                    handler.characters(value.toCharArray(), 0, value.length());
                    handler.endElement("", "", "value");
                }
            } else {
                LOG.debug("{} not found for {}[{}]", new Object[] { attrName,
                        attributableTO.getClass().getSimpleName(), attributableTO.getId() });
            }

            handler.endElement("", "", "attribute");
        }
        handler.endElement("", "", "attributes");
    }

    if (!derAttrs.isEmpty()) {
        Map<String, AttributeTO> derAttrMap = attributableTO.getDerivedAttributeMap();

        handler.startElement("", "", "derivedAttributes", null);
        for (String attrName : derAttrs) {
            atts.clear();

            atts.addAttribute("", "", ATTR_NAME, XSD_STRING, attrName);
            handler.startElement("", "", "derivedAttribute", atts);

            if (derAttrMap.containsKey(attrName)) {
                for (String value : derAttrMap.get(attrName).getValues()) {
                    handler.startElement("", "", "value", null);
                    handler.characters(value.toCharArray(), 0, value.length());
                    handler.endElement("", "", "value");
                }
            } else {
                LOG.debug("{} not found for {}[{}]", new Object[] { attrName,
                        attributableTO.getClass().getSimpleName(), attributableTO.getId() });
            }

            handler.endElement("", "", "derivedAttribute");
        }
        handler.endElement("", "", "derivedAttributes");
    }

    if (!virAttrs.isEmpty()) {
        Map<String, AttributeTO> virAttrMap = attributableTO.getVirtualAttributeMap();

        handler.startElement("", "", "virtualAttributes", null);
        for (String attrName : virAttrs) {
            atts.clear();

            atts.addAttribute("", "", ATTR_NAME, XSD_STRING, attrName);
            handler.startElement("", "", "virtualAttribute", atts);

            if (virAttrMap.containsKey(attrName)) {
                for (String value : virAttrMap.get(attrName).getValues()) {
                    handler.startElement("", "", "value", null);
                    handler.characters(value.toCharArray(), 0, value.length());
                    handler.endElement("", "", "value");
                }
            } else {
                LOG.debug("{} not found for {}[{}]", new Object[] { attrName,
                        attributableTO.getClass().getSimpleName(), attributableTO.getId() });
            }

            handler.endElement("", "", "virtualAttribute");
        }
        handler.endElement("", "", "virtualAttributes");
    }
}

From source file:com.mirth.connect.model.converters.NCPDPReader.java

private String parseHeader(String message, ContentHandler contentHandler) throws SAXException {
    String headerElementName = StringUtils.EMPTY;

    /*/*from  w  ww. j a v  a 2 s  .c  o m*/
     * The first segment is always the Transaction header so we will process
     * it seperately.
     */
    if (message.indexOf(segmentDelimeter) != -1) {
        String header = message.substring(0, message.indexOf(segmentDelimeter));

        // handle a request (requests have a longer header than responses)
        if (header.length() > 40) {
            String transactionName = NCPDPReference.getInstance().getTransactionName(header.substring(8, 10));
            version = header.substring(6, 8);
            headerElementName = "NCPDP_" + version + "_" + transactionName + "_Request";

            contentHandler.startElement("", headerElementName, "", null);
            contentHandler.startElement("", "TransactionHeaderRequest", "", null);
            contentHandler.startElement("", "BinNumber", "", null);
            contentHandler.characters(header.toCharArray(), 0, 6);
            contentHandler.endElement("", "BinNumber", "");
            contentHandler.startElement("", "VersionReleaseNumber", "", null);
            contentHandler.characters(header.toCharArray(), 6, 2);
            contentHandler.endElement("", "VersionReleaseNumber", "");
            contentHandler.startElement("", "TransactionCode", "", null);
            contentHandler.characters(header.toCharArray(), 8, 2);
            contentHandler.endElement("", "TransactionCode", "");
            contentHandler.startElement("", "ProcessorControlNumber", "", null);
            contentHandler.characters(header.toCharArray(), 10, 10);
            contentHandler.endElement("", "ProcessorControlNumber", "");
            contentHandler.startElement("", "TransactionCount", "", null);
            contentHandler.characters(header.toCharArray(), 20, 1);
            contentHandler.endElement("", "TransactionCount", "");
            contentHandler.startElement("", "ServiceProviderIdQualifier", "", null);
            contentHandler.characters(header.toCharArray(), 21, 2);
            contentHandler.endElement("", "ServiceProviderIdQualifier", "");
            contentHandler.startElement("", "ServiceProviderId", "", null);
            contentHandler.characters(header.toCharArray(), 23, 15);
            contentHandler.endElement("", "ServiceProviderId", "");
            contentHandler.startElement("", "DateOfService", "", null);
            contentHandler.characters(header.toCharArray(), 38, 8);
            contentHandler.endElement("", "DateOfService", "");
            contentHandler.startElement("", "SoftwareVendorCertificationId", "", null);
            contentHandler.characters(header.toCharArray(), 46, 10);
            contentHandler.endElement("", "SoftwareVendorCertificationId", "");
            contentHandler.endElement("", "TransactionHeaderRequest", "");
        } else { // handle a response
            String transaction = NCPDPReference.getInstance().getTransactionName(header.substring(2, 4));
            version = header.substring(0, 2);
            headerElementName = "NCPDP_" + version + "_" + transaction + "_Response";

            contentHandler.startElement("", headerElementName, "", null);
            contentHandler.startElement("", "TransactionHeaderResponse", "", null);
            contentHandler.startElement("", "VersionReleaseNumber", "", null);
            contentHandler.characters(header.toCharArray(), 0, 2);
            contentHandler.endElement("", "VersionReleaseNumber", "");
            contentHandler.startElement("", "TransactionCode", "", null);
            contentHandler.characters(header.toCharArray(), 2, 2);
            contentHandler.endElement("", "TransactionCode", "");
            contentHandler.startElement("", "TransactionCount", "", null);
            contentHandler.characters(header.toCharArray(), 4, 1);
            contentHandler.endElement("", "TransactionCount", "");
            contentHandler.startElement("", "HeaderResponseStatus", "", null);
            contentHandler.characters(header.toCharArray(), 5, 1);
            contentHandler.endElement("", "HeaderResponseStatus", "");
            contentHandler.startElement("", "ServiceProviderIdQualifier", "", null);
            contentHandler.characters(header.toCharArray(), 6, 2);
            contentHandler.endElement("", "ServiceProviderIdQualifier", "");
            contentHandler.startElement("", "ServiceProviderId", "", null);
            contentHandler.characters(header.toCharArray(), 8, 15);
            contentHandler.endElement("", "ServiceProviderId", "");
            contentHandler.startElement("", "DateOfService", "", null);
            contentHandler.characters(header.toCharArray(), 23, 8);
            contentHandler.endElement("", "DateOfService", "");
            contentHandler.endElement("", "TransactionHeaderResponse", "");
        }
    }

    return headerElementName;
}

From source file:CSVXMLReader.java

/**
 * Parse a CSV file. SAX events are delivered to the ContentHandler
 * that was registered via <code>setContentHandler</code>.
 *
 * @param input the comma separated values file to parse.
 *///from   www .  ja va  2s . c  o  m
public void parse(InputSource input) throws IOException, SAXException {
    // if no handler is registered to receive events, don't bother
    // to parse the CSV file
    ContentHandler ch = getContentHandler();
    if (ch == null) {
        return;
    }

    // convert the InputSource into a BufferedReader
    BufferedReader br = null;
    if (input.getCharacterStream() != null) {
        br = new BufferedReader(input.getCharacterStream());
    } else if (input.getByteStream() != null) {
        br = new BufferedReader(new InputStreamReader(input.getByteStream()));
    } else if (input.getSystemId() != null) {
        java.net.URL url = new URL(input.getSystemId());
        br = new BufferedReader(new InputStreamReader(url.openStream()));
    } else {
        throw new SAXException("Invalid InputSource object");
    }

    ch.startDocument();

    // emit <csvFile>
    ch.startElement("", "", "csvFile", EMPTY_ATTR);

    // read each line of the file until EOF is reached
    String curLine = null;
    while ((curLine = br.readLine()) != null) {
        curLine = curLine.trim();
        if (curLine.length() > 0) {
            // create the <line> element
            ch.startElement("", "", "line", EMPTY_ATTR);
            // output data from this line
            parseLine(curLine, ch);
            // close the </line> element
            ch.endElement("", "", "line");
        }
    }

    // emit </csvFile>
    ch.endElement("", "", "csvFile");
    ch.endDocument();
}