Example usage for org.xml.sax.helpers AttributesImpl addAttribute

List of usage examples for org.xml.sax.helpers AttributesImpl addAttribute

Introduction

In this page you can find the example usage for org.xml.sax.helpers AttributesImpl addAttribute.

Prototype

public void addAttribute(String uri, String localName, String qName, String type, String value) 

Source Link

Document

Add an attribute to the end of the list.

Usage

From source file:edu.mayo.informatics.lexgrid.convert.directConversions.hl7.HL7MapToLexGrid.java

void loadMetaData(CodingScheme csclass, String connectionString, String driver) {

    messages_.info("Loading individual coding scheme metadata");
    Connection c = null;/*from   w w w.  j a v a  2  s.c  o  m*/

    // create the filename of the metadata file to be created
    String filename = loaderPrefs.getXMLMetadataFilePath() + "/"
            + PreferenceLoaderConstants.META_HL7_METADATA_FILE_NAME;

    FileOutputStream fos;
    try {
        fos = new FileOutputStream(filename);

        OutputFormat of = new OutputFormat("XML", "ISO-8859-1", true);
        of.setIndent(1);
        of.setIndenting(true);
        XMLSerializer serializer = new XMLSerializer(fos, of);

        // SAX2.0 ContentHandler.
        ContentHandler hd = serializer.asContentHandler();
        hd.startDocument();

        // Element attributes.
        AttributesImpl atts = new AttributesImpl();

        // CODINGSCHEMES tag.
        hd.startElement("", "", "codingSchemes", atts);

        String defaultLanguage = "en";
        String isNative = "0";
        String codeSystemId;
        String codeSystemType;
        String codeSystemName;
        String fullName;
        String description;
        String releaseId;
        String copyrightNotice;
        Integer approximateNumberofConcepts;

        try {
            c = DBUtility.connectToDatabase(accessConnectionString, driver, null, null);

            PreparedStatement getCodingSchemeMetaData = c
                    .prepareStatement("SELECT b.codeSystemid, b.codeSystemType, b.codeSystemName, "
                            + "b.fullName, b.description, b.releaseId, b.copyrightNotice "
                            + "FROM VCS_code_system AS b");
            ResultSet codingSchemeMetaData = getCodingSchemeMetaData.executeQuery();

            PreparedStatement getCodingSchemeConceptCount = c
                    .prepareStatement("SELECT VCS_concept_code_xref.codeSystemId2, "
                            + "COUNT (VCS_concept_code_xref.codeSystemId2) as conceptcount "
                            + "FROM VCS_concept_code_xref " + "GROUP BY VCS_concept_code_xref.codeSystemId2;");

            ResultSet codingSchemeConceptCount = getCodingSchemeConceptCount.executeQuery();

            Hashtable<String, Integer> conceptCountList = new Hashtable<String, Integer>();

            while (codingSchemeConceptCount.next()) {

                String codingSchemeId = codingSchemeConceptCount.getString("codeSystemId2");
                String codingSchemeCount = codingSchemeConceptCount.getString("conceptcount");

                conceptCountList.put(new String(codingSchemeId), new Integer(codingSchemeCount));
            }

            codingSchemeConceptCount.close();

            int codeSchemeCounter = 0;

            while (codingSchemeMetaData.next()) {
                codeSystemId = codingSchemeMetaData.getString("codeSystemid");
                if (codeSystemId == null) {
                    codeSystemId = SQLTableConstants.TBLCOLVAL_MISSING;
                }

                codeSystemType = codingSchemeMetaData.getString("codeSystemType");
                if (codeSystemType == null) {
                    codeSystemType = SQLTableConstants.TBLCOLVAL_MISSING;
                }

                codeSystemName = codingSchemeMetaData.getString("codeSystemName");
                if (codeSystemName == null) {
                    codeSystemName = SQLTableConstants.TBLCOLVAL_MISSING;
                }

                fullName = codingSchemeMetaData.getString("fullName");
                if (fullName == null) {
                    fullName = SQLTableConstants.TBLCOLVAL_MISSING;
                }

                description = codingSchemeMetaData.getString("description");
                if (description == null) {
                    description = SQLTableConstants.TBLCOLVAL_MISSING;
                }
                // The description contains HTML tags. We try to remove
                // them.
                else {
                    int begin = description.lastIndexOf("<p>");
                    int end = description.lastIndexOf("</p>");
                    if (begin > -1) {
                        if (begin + 3 < end)
                            description = description.substring(begin + 3, end);
                    }
                }

                releaseId = codingSchemeMetaData.getString("releaseId");
                if (releaseId == null) {
                    releaseId = SQLTableConstants.TBLCOLVAL_MISSING;
                }

                copyrightNotice = codingSchemeMetaData.getString("copyrightNotice");
                if (copyrightNotice == null) {
                    copyrightNotice = SQLTableConstants.TBLCOLVAL_MISSING;
                }

                approximateNumberofConcepts = ((Integer) conceptCountList.get(codeSystemId));
                if (approximateNumberofConcepts == null) {
                    approximateNumberofConcepts = new Integer(0);
                }

                // Begin codingScheme element
                atts.clear();
                atts.addAttribute("", "", SQLTableConstants.TBLCOL_CODINGSCHEMENAME, "CDATA", codeSystemName);
                // May want to change to _fullName
                atts.addAttribute("", "", SQLTableConstants.TBLCOL_FORMALNAME, "CDATA", fullName);
                atts.addAttribute("", "", SQLTableConstants.TBLCOL_CODINGSCHEMEURI, "CDATA", codeSystemId);
                atts.addAttribute("", "", SQLTableConstants.TBLCOL_DEFAULTLANGUAGE, "CDATA", defaultLanguage);
                atts.addAttribute("", "", SQLTableConstants.TBLCOL_REPRESENTSVERSION, "CDATA", releaseId);
                atts.addAttribute("", "", SQLTableConstants.TBLCOL_ISNATIVE, "CDATA", isNative);
                atts.addAttribute("", "", SQLTableConstants.TBLCOL_APPROXNUMCONCEPTS, "CDATA",
                        approximateNumberofConcepts.toString());
                hd.startElement("", "", SQLTableConstants.TBLCOL_CODINGSCHEME, atts);

                // localname
                atts.clear();
                hd.startElement("", "", "localName", atts);
                hd.characters(codeSystemName.toCharArray(), 0, codeSystemName.length());
                hd.endElement("", "", SQLTableConstants.TBLCOLVAL_LOCALNAME);

                // entityDescription
                atts.clear();
                hd.startElement("", "", SQLTableConstants.TBLCOL_ENTITYDESCRIPTION, atts);
                hd.characters(description.toCharArray(), 0, description.length());
                hd.endElement("", "", SQLTableConstants.TBLCOL_ENTITYDESCRIPTION);

                // copyright
                atts.clear();
                hd.startElement("", "", SQLTableConstants.TBLCOL_COPYRIGHT, atts);
                hd.characters(copyrightNotice.toCharArray(), 0, copyrightNotice.length());
                hd.endElement("", "", SQLTableConstants.TBLCOL_COPYRIGHT);

                // May need to include as Property
                // // CodingScheme
                // atts.clear();
                // hd.startElement("","","CodingScheme",atts);
                // hd.characters(_codeSystemType.toCharArray(),0,_codeSystemType.length());
                // hd.endElement("","","CodingScheme");

                // End codingScheme element
                hd.endElement("", "", SQLTableConstants.TBLCOL_CODINGSCHEME);

                codeSchemeCounter++;

            } // End while there are result rows to process

            getCodingSchemeConceptCount.close();

            hd.endElement("", "", "codingSchemes");
            hd.endDocument();
            fos.close();

        } catch (Exception e) {
            messages_.error("Failed while preparing HL7 Code System MetaData.", e);
            e.printStackTrace();
        } finally {
            try {
                c.close();
            } catch (SQLException e) {
                messages_.debug("An error occurred while closing the MS Access connection: " + e.getMessage());
                e.printStackTrace();
            }
        }

    } catch (FileNotFoundException fnfe) {
        messages_.debug("Loader Preferences file was not found, file: " + filename);
        fnfe.printStackTrace();
    } catch (IOException ioe) {
        messages_.debug("IOException, file: " + filename);
        ioe.printStackTrace();
    } catch (SAXException saxe) {
        messages_.debug("SAXException, file: " + filename);
        saxe.printStackTrace();
    }

}

From source file:net.tirasa.hct.cocoon.sax.HippoItemXMLDumper.java

public void startQueryResult(final HCTQueryResult result, final HippoItem base)
        throws SAXException, RepositoryException {

    final AttributesImpl attrs = new AttributesImpl();
    attrs.addAttribute(NS_EMPTY, Attribute.SIZE.getName(), Attribute.SIZE.getName(), XSD_LONG,
            String.valueOf(result.getUuids().size()));
    attrs.addAttribute(NS_EMPTY, Attribute.PAGE.getName(), Attribute.PAGE.getName(), XSD_LONG,
            String.valueOf(result.getPage()));
    attrs.addAttribute(NS_EMPTY, Attribute.TOTAL_PAGES.getName(), Attribute.TOTAL_PAGES.getName(), XSD_LONG,
            String.valueOf(result.getTotalPages()));

    saxConsumer.startElement(NS_HCT, Element.QUERY_RESULT.getName(),
            PREFIX_HCT + ":" + Element.QUERY_RESULT.getName(), attrs);

    saxConsumer.startElement(NS_HCT, Element.BASE.getName(), PREFIX_HCT + ":" + Element.BASE.getName(),
            EMPTY_ATTRS);//  w ww . j  av a  2s  .  c o m
    if (base != null) {
        if (base instanceof HCTTaxonomyCategoryBean) {
            startTaxonomy((HCTTaxonomyCategoryBean) base, result.getLocale());
            endTaxonomy();
        } else {
            startHippoItem(base, base.getPath());
            endHippoItem(base);
        }
    }
    saxConsumer.endElement(NS_HCT, Element.BASE.getName(), PREFIX_HCT + ":" + Element.BASE.getName());
}

From source file:net.tirasa.hct.cocoon.sax.HippoItemXMLDumper.java

public <T extends HippoItem> void startHippoItem(final T item, final String path)
        throws SAXException, RepositoryException {

    final Element elem = item instanceof HippoDocument ? Element.DOCUMENT : Element.FOLDER;

    final String localeString = item instanceof HippoDocument ? ((HippoDocument) item).getLocaleString()
            : item instanceof HippoFolder ? ((HippoFolder) item).getLocaleString() : "";

    AttributesImpl attrs = new AttributesImpl();
    attrs.addAttribute(NS_EMPTY, Attribute.NAME.getName(), Attribute.NAME.getName(), XSD_STRING,
            item.getName());/*  www. j  a va 2s.com*/
    attrs.addAttribute(NS_EMPTY, Attribute.TYPE.getName(), Attribute.TYPE.getName(), XSD_STRING,
            item.getNode().getPrimaryNodeType().getName());
    attrs.addAttribute(NS_EMPTY, Attribute.PATH.getName(), Attribute.PATH.getName(), XSD_STRING, path);
    attrs.addAttribute(NS_EMPTY, Attribute.LOC_NAME.getName(), Attribute.LOC_NAME.getName(), XSD_STRING,
            item.getLocalizedName());
    attrs.addAttribute(NS_EMPTY, Attribute.LOCALE.getName(), Attribute.LOCALE.getName(), XSD_STRING,
            localeString);

    // 0. the item
    saxConsumer.startElement(NS_HCT, elem.getName(), PREFIX_HCT + ":" + elem.getName(), attrs);

    // 1. translations
    saxConsumer.startElement(NS_HCT, Element.TRANSLATIONS.getName(),
            PREFIX_HCT + ":" + Element.TRANSLATIONS.getName(), EMPTY_ATTRS);
    for (String locale : item.getAvailableTranslations().getAvailableLocales()) {
        if (!localeString.equals(locale)) {
            attrs = new AttributesImpl();
            attrs.addAttribute(NS_EMPTY, Attribute.LOCALE.getName(), Attribute.LOCALE.getName(), XSD_STRING,
                    locale);
            attrs.addAttribute(NS_EMPTY, Attribute.PATH.getName(), Attribute.PATH.getName(), XSD_STRING,
                    item.getAvailableTranslations().getTranslation(locale).getCanonicalBean().getPath());
            attrs.addAttribute(NS_EMPTY, Attribute.NAME.getName(), Attribute.NAME.getName(), XSD_STRING,
                    item.getAvailableTranslations().getTranslation(locale).getCanonicalBean().getName());
            attrs.addAttribute(NS_EMPTY, Attribute.LOC_NAME.getName(), Attribute.LOC_NAME.getName(), XSD_STRING,
                    item.getAvailableTranslations().getTranslation(locale).getCanonicalBean()
                            .getLocalizedName());

            saxConsumer.startElement(NS_HCT, Element.TRANSLATION.getName(),
                    PREFIX_HCT + ":" + Element.TRANSLATION.getName(), attrs);

            if (item instanceof HippoDocument) {
                attrs = new AttributesImpl();
                attrs.addAttribute(NS_EMPTY, Attribute.NAME.getName(), Attribute.NAME.getName(), XSD_STRING,
                        "hippo:availability");
                saxConsumer.startElement(NS_HCT, Element.FIELD.getName(),
                        PREFIX_HCT + ":" + Element.FIELD.getName(), attrs);

                for (String value : (String[]) item.getAvailableTranslations().getTranslation(locale)
                        .getProperty("hippo:availability")) {

                    saxConsumer.startElement(NS_HCT, Element.VALUE.getName(),
                            PREFIX_HCT + ":" + Element.VALUE.getName(), EMPTY_ATTRS);
                    saxConsumer.characters(value.toCharArray(), 0, value.length());
                    saxConsumer.endElement(NS_HCT, Element.VALUE.getName(),
                            PREFIX_HCT + ":" + Element.VALUE.getName());
                }

                saxConsumer.endElement(NS_HCT, Element.FIELD.getName(),
                        PREFIX_HCT + ":" + Element.FIELD.getName());
            }

            saxConsumer.endElement(NS_HCT, Element.TRANSLATION.getName(),
                    PREFIX_HCT + ":" + Element.TRANSLATION.getName());
        }
    }
    saxConsumer.endElement(NS_HCT, Element.TRANSLATIONS.getName(),
            PREFIX_HCT + ":" + Element.TRANSLATIONS.getName());
}

From source file:net.tirasa.hct.cocoon.sax.HippoItemXMLDumper.java

public void startHippoCompound(final HippoDocument compound) throws SAXException, RepositoryException {

    final AttributesImpl attrs = new AttributesImpl();
    attrs.addAttribute(NS_EMPTY, Attribute.NAME.getName(), Attribute.NAME.getName(), XSD_STRING,
            compound.getName());/*from www . jav a  2 s .c  o  m*/
    attrs.addAttribute(NS_EMPTY, Attribute.TYPE.getName(), Attribute.TYPE.getName(), XSD_STRING,
            compound.getNode().getPrimaryNodeType().getName());
    attrs.addAttribute(NS_EMPTY, Attribute.PATH.getName(), Attribute.PATH.getName(), XSD_STRING,
            compound.getPath());

    saxConsumer.startElement(NS_HCT, Element.COMPOUND.getName(), PREFIX_HCT + ":" + Element.COMPOUND.getName(),
            attrs);
}

From source file:net.tirasa.hct.cocoon.sax.HippoItemXMLDumper.java

public void dumpAssets(final List<HippoAsset> assets, final String elementName, final boolean wrap,
        final String dateFormat, final Locale locale) throws SAXException {

    if (wrap) {/* w  ww .  j a  v a2 s.c  o m*/
        saxConsumer.startElement(NS_HCT, Element.ASSETS.getName(), PREFIX_HCT + ":" + Element.ASSETS.getName(),
                EMPTY_ATTRS);
    }

    final SimpleDateFormat sdf = new SimpleDateFormat(dateFormat, locale);
    for (HippoAsset asset : assets) {
        final AttributesImpl attrs = new AttributesImpl();
        attrs.addAttribute(NS_EMPTY, Attribute.NAME.getName(), Attribute.NAME.getName(), XSD_STRING,
                asset.getName());
        if (asset.getParentBean().getChildBeans("hippo:translation") != null
                && !asset.getParentBean().getChildBeans("hippo:translation").isEmpty()) {
            attrs.addAttribute(NS_EMPTY, Attribute.LOC_NAME.getName(), Attribute.LOC_NAME.getName(), XSD_STRING,
                    ((HippoItem) asset.getParentBean().getChildBeans("hippo:translation").get(0))
                            .getProperty("hippo:message", asset.getName()).toString());
        } else {
            attrs.addAttribute(NS_EMPTY, Attribute.LOC_NAME.getName(), Attribute.LOC_NAME.getName(), XSD_STRING,
                    asset.getName());
        }
        attrs.addAttribute(NS_EMPTY, Attribute.PATH.getName(), Attribute.PATH.getName(), XSD_STRING,
                asset.getPath());
        attrs.addAttribute(NS_EMPTY, Attribute.MIMETYPE.getName(), Attribute.MIMETYPE.getName(), XSD_STRING,
                asset.getAsset().getMimeType());
        attrs.addAttribute(NS_EMPTY, Attribute.SIZE_KB.getName(), Attribute.SIZE_KB.getName(), XSD_INT,
                String.valueOf(asset.getAsset().getLengthKB()));
        attrs.addAttribute(NS_EMPTY, Attribute.LAST_MOD.getName(), Attribute.LAST_MOD.getName(), XSD_DATETIME,
                sdf.format(asset.getAsset().getLastModified().getTime()));

        saxConsumer.startElement(NS_HCT, elementName, PREFIX_HCT + ":" + elementName, attrs);
        saxConsumer.endElement(NS_HCT, elementName, PREFIX_HCT + ":" + elementName);
    }

    if (wrap) {
        saxConsumer.endElement(NS_HCT, Element.ASSETS.getName(), PREFIX_HCT + ":" + Element.ASSETS.getName());
    }
}

From source file:net.tirasa.hct.cocoon.sax.HippoItemXMLDumper.java

public void dumpImages(final List<HippoGalleryImageSet> images, final String elementName, final boolean wrap)
        throws SAXException, ObjectBeanManagerException {

    if (wrap) {//from  ww w  . j av  a2  s  .  c  o m
        saxConsumer.startElement(NS_HCT, Element.IMAGES.getName(), PREFIX_HCT + ":" + Element.IMAGES.getName(),
                EMPTY_ATTRS);
    }

    for (HippoGalleryImageSet img : images) {
        final AttributesImpl attrs = new AttributesImpl();
        attrs.addAttribute(NS_EMPTY, Attribute.PATH.getName(), Attribute.PATH.getName(), XSD_STRING,
                img.getPath());
        attrs.addAttribute(NS_EMPTY, Attribute.NAME.getName(), Attribute.NAME.getName(), XSD_STRING,
                img.getName());
        if (StringUtils.isNotBlank(img.getDescription())) {
            attrs.addAttribute(NS_EMPTY, Attribute.DESC.getName(), Attribute.DESC.getName(), XSD_STRING,
                    img.getDescription());
        }
        attrs.addAttribute(NS_EMPTY, Attribute.HEIGHT.getName(), Attribute.HEIGHT.getName(), XSD_INT,
                String.valueOf(img.getOriginal().getHeight()));
        attrs.addAttribute(NS_EMPTY, Attribute.WIDTH.getName(), Attribute.WIDTH.getName(), XSD_INT,
                String.valueOf(img.getOriginal().getWidth()));

        saxConsumer.startElement(NS_HCT, elementName, PREFIX_HCT + ":" + elementName, attrs);
        saxConsumer.endElement(NS_HCT, elementName, PREFIX_HCT + ":" + elementName);
    }

    if (wrap) {
        saxConsumer.endElement(NS_HCT, Element.IMAGES.getName(), PREFIX_HCT + ":" + Element.IMAGES.getName());
    }
}

From source file:net.tirasa.hct.cocoon.sax.HippoItemXMLDumper.java

public void dumpRelatedDocs(final List<HippoDocument> relDocs, final String elementName, final boolean wrap)
        throws SAXException, ObjectBeanManagerException {

    if (wrap) {/*www.j  a  v a2 s. c om*/
        saxConsumer.startElement(NS_HCT, Element.RELATED_DOCS.getName(),
                PREFIX_HCT + ":" + Element.RELATED_DOCS.getName(), EMPTY_ATTRS);
    }

    AttributesImpl attrs;
    for (HippoDocument relDoc : relDocs) {
        attrs = new AttributesImpl();
        attrs.addAttribute(NS_EMPTY, Attribute.NAME.getName(), Attribute.NAME.getName(), XSD_STRING,
                relDoc.getName());
        attrs.addAttribute(NS_EMPTY, Attribute.PATH.getName(), Attribute.PATH.getName(), XSD_STRING,
                relDoc.getPath());
        attrs.addAttribute(NS_EMPTY, Attribute.LOC_NAME.getName(), Attribute.LOC_NAME.getName(), XSD_STRING,
                relDoc.getLocalizedName());
        attrs.addAttribute(NS_EMPTY, Attribute.LOCALE.getName(), Attribute.LOCALE.getName(), XSD_STRING,
                relDoc.getLocalizedName());

        saxConsumer.startElement(NS_HCT, elementName, PREFIX_HCT + ":" + elementName, attrs);
        saxConsumer.endElement(NS_HCT, elementName, PREFIX_HCT + ":" + elementName);
    }

    if (wrap) {
        saxConsumer.endElement(NS_HCT, Element.RELATED_DOCS.getName(),
                PREFIX_HCT + ":" + Element.RELATED_DOCS.getName());
    }
}

From source file:net.tirasa.hct.cocoon.sax.HippoItemXMLDumper.java

public void dumpTags(final TagCollection tags) throws SAXException {
    saxConsumer.startElement(NS_HCT, Element.TAGS.getName(), PREFIX_HCT + ":" + Element.TAGS.getName(),
            EMPTY_ATTRS);/* w  w w . j  a  v a  2s .  c  om*/

    for (Tag tag : tags.values()) {
        final AttributesImpl attrs = new AttributesImpl();
        attrs.addAttribute(NS_EMPTY, Attribute.SCORE.getName(), Attribute.SCORE.getName(), XSD_DOUBLE,
                String.valueOf(tag.getScore()));

        saxConsumer.startElement(NS_HCT, Element.TAG.getName(), PREFIX_HCT + ":" + Element.TAG.getName(),
                attrs);
        saxConsumer.characters(tag.getName().toCharArray(), 0, tag.getName().length());
        saxConsumer.endElement(NS_HCT, Element.TAG.getName(), PREFIX_HCT + ":" + Element.TAG.getName());
    }

    saxConsumer.endElement(NS_HCT, Element.TAGS.getName(), PREFIX_HCT + ":" + Element.TAGS.getName());
}

From source file:net.tirasa.hct.cocoon.sax.HippoItemXMLDumper.java

public void startTaxonomy(final HCTTaxonomyCategoryBean taxonomy, final Locale locale) throws SAXException {
    final AttributesImpl attrs = new AttributesImpl();
    attrs.addAttribute(NS_EMPTY, Attribute.NAME.getName(), Attribute.NAME.getName(), XSD_STRING,
            taxonomy.getKey());/*from w w  w .  jav a  2s .co m*/
    attrs.addAttribute(NS_EMPTY, Attribute.LOC_NAME.getName(), Attribute.LOC_NAME.getName(), XSD_STRING,
            taxonomy.getLocalizedName(locale.getLanguage()));
    attrs.addAttribute(NS_EMPTY, Attribute.ORDER.getName(), Attribute.ORDER.getName(), XSD_STRING,
            taxonomy.getOrder(locale.getLanguage()));
    attrs.addAttribute(NS_EMPTY, Attribute.PATH.getName(), Attribute.PATH.getName(), XSD_STRING,
            taxonomy.getPath());

    saxConsumer.startElement(NS_HCT, Element.TAXONOMY.getName(), PREFIX_HCT + ":" + Element.TAXONOMY.getName(),
            attrs);
}

From source file:net.tirasa.hct.cocoon.sax.HippoItemXMLDumper.java

public void dumpField(final Entry<String, Object> entry, final String dateFormat, final Locale locale)
        throws SAXException {

    final AttributesImpl attrs = new AttributesImpl();
    attrs.addAttribute(NS_EMPTY, Attribute.NAME.getName(), Attribute.NAME.getName(), XSD_STRING,
            entry.getKey());//from ww w  .j  a  va  2  s . c om
    saxConsumer.startElement(NS_HCT, Element.FIELD.getName(), PREFIX_HCT + ":" + Element.FIELD.getName(),
            attrs);

    if (entry.getValue() instanceof String) {
        saxConsumer.startElement(NS_HCT, Element.VALUE.getName(), PREFIX_HCT + ":" + Element.VALUE.getName(),
                EMPTY_ATTRS);
        saxConsumer.characters(((String) entry.getValue()).toCharArray(), 0,
                ((String) entry.getValue()).length());
        saxConsumer.endElement(NS_HCT, Element.VALUE.getName(), PREFIX_HCT + ":" + Element.VALUE.getName());
    } else if (entry.getValue() instanceof Boolean) {
        saxConsumer.startElement(NS_HCT, Element.VALUE.getName(), PREFIX_HCT + ":" + Element.VALUE.getName(),
                EMPTY_ATTRS);
        saxConsumer.characters(((Boolean) entry.getValue()).toString().toCharArray(), 0,
                ((Boolean) entry.getValue()).toString().length());
        saxConsumer.endElement(NS_HCT, Element.VALUE.getName(), PREFIX_HCT + ":" + Element.VALUE.getName());
    } else if (entry.getValue() instanceof GregorianCalendar) {
        final SimpleDateFormat sdf = new SimpleDateFormat(dateFormat, locale);
        final String date = sdf.format(((GregorianCalendar) entry.getValue()).getTime());

        saxConsumer.startElement(NS_HCT, Element.VALUE.getName(), PREFIX_HCT + ":" + Element.VALUE.getName(),
                EMPTY_ATTRS);
        saxConsumer.characters(date.toCharArray(), 0, date.length());
        saxConsumer.endElement(NS_HCT, Element.VALUE.getName(), PREFIX_HCT + ":" + Element.VALUE.getName());
    } else if (entry.getValue() instanceof String[]) {
        for (int i = 0; i < ((String[]) entry.getValue()).length; i++) {
            saxConsumer.startElement(NS_HCT, Element.VALUE.getName(),
                    PREFIX_HCT + ":" + Element.VALUE.getName(), EMPTY_ATTRS);
            saxConsumer.characters(((String[]) entry.getValue())[i].toCharArray(), 0,
                    ((String[]) entry.getValue())[i].length());
            saxConsumer.endElement(NS_HCT, Element.VALUE.getName(), PREFIX_HCT + ":" + Element.VALUE.getName());
        }
    }

    saxConsumer.endElement(NS_HCT, Element.FIELD.getName(), PREFIX_HCT + ":" + Element.FIELD.getName());
}