Example usage for javax.xml.transform TransformerFactory newTemplates

List of usage examples for javax.xml.transform TransformerFactory newTemplates

Introduction

In this page you can find the example usage for javax.xml.transform TransformerFactory newTemplates.

Prototype

public abstract Templates newTemplates(Source source) throws TransformerConfigurationException;

Source Link

Document

Process the Source into a Templates object, which is a a compiled representation of the source.

Usage

From source file:org.pentaho.di.job.entries.xslt.JobEntryXSLT.java

private boolean processOneXMLFile(String xmlfilename, String xslfilename, String outputfilename, Result result,
        Job parentJob) {/*from w  w w  .j a va  2 s. co m*/
    boolean retval = false;
    FileObject xmlfile = null;
    FileObject xslfile = null;
    FileObject outputfile = null;

    try {
        xmlfile = KettleVFS.getFileObject(xmlfilename, this);
        xslfile = KettleVFS.getFileObject(xslfilename, this);
        outputfile = KettleVFS.getFileObject(outputfilename, this);

        if (xmlfile.exists() && xslfile.exists()) {
            if (outputfile.exists() && iffileexists == 2) {
                // Output file exists
                // User want to fail
                logError(BaseMessages.getString(PKG, "JobEntryXSLT.OuputFileExists1.Label") + outputfilename
                        + BaseMessages.getString(PKG, "JobEntryXSLT.OuputFileExists2.Label"));
                return retval;

            } else if (outputfile.exists() && iffileexists == 1) {
                // Do nothing
                if (log.isDebug()) {
                    logDebug(BaseMessages.getString(PKG, "JobEntryXSLT.OuputFileExists1.Label") + outputfilename
                            + BaseMessages.getString(PKG, "JobEntryXSLT.OuputFileExists2.Label"));
                }
                retval = true;
                return retval;

            } else {
                if (outputfile.exists() && iffileexists == 0) {
                    // the output file exists and user want to create new one with unique name
                    // Format Date

                    // Try to clean filename (without wildcard)
                    String wildcard = outputfilename.substring(outputfilename.length() - 4,
                            outputfilename.length());
                    if (wildcard.substring(0, 1).equals(".")) {
                        // Find wildcard
                        outputfilename = outputfilename.substring(0, outputfilename.length() - 4) + "_"
                                + StringUtil.getFormattedDateTimeNow(true) + wildcard;
                    } else {
                        // did not find wildcard
                        outputfilename = outputfilename + "_" + StringUtil.getFormattedDateTimeNow(true);
                    }
                    if (log.isDebug()) {
                        logDebug(BaseMessages.getString(PKG, "JobEntryXSLT.OuputFileExists1.Label")
                                + outputfilename
                                + BaseMessages.getString(PKG, "JobEntryXSLT.OuputFileExists2.Label"));
                        logDebug(BaseMessages.getString(PKG, "JobEntryXSLT.OuputFileNameChange1.Label")
                                + outputfilename
                                + BaseMessages.getString(PKG, "JobEntryXSLT.OuputFileNameChange2.Label"));
                    }
                }

                // Create transformer factory
                TransformerFactory factory = TransformerFactory.newInstance();

                if (xsltfactory.equals(FACTORY_SAXON)) {
                    // Set the TransformerFactory to the SAXON implementation.
                    factory = new net.sf.saxon.TransformerFactoryImpl();
                }

                if (log.isDetailed()) {
                    log.logDetailed(BaseMessages.getString(PKG, "JobEntryXSL.Log.TransformerFactoryInfos"),
                            BaseMessages.getString(PKG, "JobEntryXSL.Log.TransformerFactory",
                                    factory.getClass().getName()));
                }

                InputStream xslInputStream = KettleVFS.getInputStream(xslfile);
                InputStream xmlInputStream = KettleVFS.getInputStream(xmlfile);
                OutputStream os = null;
                try {
                    // Use the factory to create a template containing the xsl file
                    Templates template = factory.newTemplates(new StreamSource(xslInputStream));

                    // Use the template to create a transformer
                    Transformer xformer = template.newTransformer();

                    if (log.isDetailed()) {
                        log.logDetailed(BaseMessages.getString(PKG, "JobEntryXSL.Log.TransformerClassInfos"),
                                BaseMessages.getString(PKG, "JobEntryXSL.Log.TransformerClass",
                                        xformer.getClass().getName()));
                    }

                    // Do we need to set output properties?
                    if (setOutputProperties) {
                        xformer.setOutputProperties(outputProperties);
                    }

                    // Do we need to pass parameters?
                    if (useParameters) {
                        for (int i = 0; i < nrParams; i++) {
                            xformer.setParameter(nameOfParams[i], valueOfParams[i]);
                        }
                    }

                    // Prepare the input and output files
                    Source source = new StreamSource(xmlInputStream);
                    os = KettleVFS.getOutputStream(outputfile, false);
                    StreamResult resultat = new StreamResult(os);

                    // Apply the xsl file to the source file and write the result to the output file
                    xformer.transform(source, resultat);

                    if (isAddFileToResult()) {
                        // Add output filename to output files
                        ResultFile resultFile = new ResultFile(ResultFile.FILE_TYPE_GENERAL,
                                KettleVFS.getFileObject(outputfilename, this), parentJob.getJobname(),
                                toString());
                        result.getResultFiles().put(resultFile.getFile().toString(), resultFile);
                    }

                    // Everything is OK
                    retval = true;
                } finally {
                    try {
                        xslInputStream.close();
                    } catch (IOException ignored) {
                        // ignore IO Exception on close
                    }
                    try {
                        xmlInputStream.close();
                    } catch (IOException ignored) {
                        // ignore IO Exception on close
                    }
                    try {
                        if (os != null) {
                            os.close();
                        }
                    } catch (IOException ignored) {
                        // ignore IO Exception on close
                    }
                }
            }
        } else {

            if (!xmlfile.exists()) {
                logError(BaseMessages.getString(PKG, "JobEntryXSLT.FileDoesNotExist1.Label") + xmlfilename
                        + BaseMessages.getString(PKG, "JobEntryXSLT.FileDoesNotExist2.Label"));
            }
            if (!xslfile.exists()) {
                logError(BaseMessages.getString(PKG, "JobEntryXSLT.FileDoesNotExist1.Label") + xmlfilename
                        + BaseMessages.getString(PKG, "JobEntryXSLT.FileDoesNotExist2.Label"));
            }
        }
    } catch (Exception e) {
        logError(BaseMessages.getString(PKG, "JobEntryXSLT.ErrorXLST.Label")
                + BaseMessages.getString(PKG, "JobEntryXSLT.ErrorXLSTXML1.Label") + xmlfilename
                + BaseMessages.getString(PKG, "JobEntryXSLT.ErrorXLSTXML2.Label")
                + BaseMessages.getString(PKG, "JobEntryXSLT.ErrorXLSTXSL1.Label") + xslfilename
                + BaseMessages.getString(PKG, "JobEntryXSLT.ErrorXLSTXSL2.Label") + e.getMessage());
    } finally {
        try {
            if (xmlfile != null) {
                xmlfile.close();
            }

            if (xslfile != null) {
                xslfile.close();
            }
            if (outputfile != null) {
                outputfile.close();
            }
        } catch (IOException e) {
            logError("Unable to close file", e);
        }
    }

    return retval;
}

From source file:org.portletbridge.portlet.DefaultTemplateFactory.java

/**
 * Creates compiled templates for a particular stylesheet for performance.
 * //from w w w  .j  av  a  2s  . c o m
 * @param systemId
 *            the stylesheet to compile
 * @return @throws
 *         ResourceException if the stylesheet could not be found.
 * @throws TransformerFactoryConfigurationError
 *             if there was a problem finding a suitable transformer
 *             factory.
 */
public Templates getTemplatesFromUrl(String systemId)
        throws ResourceException, TransformerFactoryConfigurationError {
    if (systemId == null) {
        throw new ResourceException("error.stylesheet");
    }
    Templates result = null;
    TransformerFactory factory = TransformerFactory.newInstance();
    try {
        // this means that the templatecache is going to be a mix
        // of md5 checksums and urls
        Templates templates = (Templates) templateCache.get(systemId);
        if (templates != null) {
            return templates;
        } else {
            URL resourceUrl = null;
            if (systemId.startsWith("classpath:")) {
                String substring = systemId.substring(10);
                resourceUrl = this.getClass().getResource(substring);
            } else {
                resourceUrl = new URL(systemId);
            }
            if (resourceUrl == null) {
                throw new ResourceException("error.stylesheet.notfound", systemId);
            }
            result = factory.newTemplates(new StreamSource(resourceUrl.toExternalForm()));
            templateCache.put(systemId, result);
        }
    } catch (TransformerConfigurationException e) {
        throw new ResourceException("error.transformer", e.getMessage(), e);
    } catch (MalformedURLException e) {
        throw new ResourceException("error.stylesheet.url", e.getMessage(), e);
    }
    return result;
}

From source file:org.portletbridge.portlet.DefaultTemplateFactory.java

/**
 * Creates compiled templates for a particular stylesheet for performance.
 * /*  w w  w .j  a v  a2s  .  c o m*/
 * @param stylesheet
 *            the stylesheet to compile
 * @return @throws
 *         ResourceException if the stylesheet could not be found.
 * @throws TransformerFactoryConfigurationError
 *             if there was a problem finding a suitable transformer
 *             factory.
 */
public Templates getTemplatesFromString(String stylesheet)
        throws ResourceException, TransformerFactoryConfigurationError {

    if (stylesheet == null || stylesheet.trim().length() == 0) {
        return defaultTemplate;
    }
    Templates result = null;
    TransformerFactory factory = TransformerFactory.newInstance();
    final Exception[] exceptionHolder = new Exception[1];
    factory.setErrorListener(new ErrorListener() {
        public void error(TransformerException exception) throws TransformerException {
            exceptionHolder[0] = exception;
        }

        public void fatalError(TransformerException exception) throws TransformerException {
            exceptionHolder[0] = exception;
        }

        public void warning(TransformerException exception) throws TransformerException {
            exceptionHolder[0] = exception;
        }
    });

    try {
        // caching but lots of object creation...
        MessageDigest messageDigest = MessageDigest.getInstance("MD5");
        messageDigest.update(stylesheet.getBytes());
        String key = new String(messageDigest.digest());
        Templates templates = (Templates) templateCache.get(key);
        if (templates != null) {
            result = templates;
        } else {
            result = factory
                    .newTemplates(new StreamSource(new StringReader(stylesheet), defaultTemplateSytemId));
            templateCache.put(key, result);
        }
    } catch (TransformerConfigurationException e) {
        exceptionHolder[0] = e;
    } catch (NoSuchAlgorithmException e) {
        exceptionHolder[0] = e;
    }
    if (exceptionHolder[0] != null) {
        throw new ResourceException("error.transformer", exceptionHolder[0].getMessage(), exceptionHolder[0]);
    }
    return result;
}

From source file:org.socialhistoryservices.api.oai.OAIRequestHandler.java

private void addStylesheet(String oai_home, String metadataPrefix) {

    final TransformerFactory tf = TransformerFactory.newInstance();
    try {//from   www  .  j  a  v a 2s  .  c o  m
        final String filename = oai_home + File.separatorChar + metadataPrefix + ".xsl";
        final File file = new File(filename);
        if (!file.exists()) {
            log.warn("Cannot find stylesheet " + filename + " for mapping solr index fields to the "
                    + metadataPrefix + " metadataPrefix.");
            return;
        }
        final Source xslSource = new StreamSource(file);
        xslSource.setSystemId(file.toURI().toURL().toString());
        final Templates templates = tf.newTemplates(xslSource);
        Utils.setParam(metadataPrefix, templates);
    } catch (TransformerConfigurationException e) {
        log.error(e);
    } catch (MalformedURLException e) {
        log.error(e);
    }
}

From source file:org.springframework.ws.server.endpoint.interceptor.PayloadTransformingInterceptor.java

public void afterPropertiesSet() throws Exception {
    if (requestXslt == null && responseXslt == null) {
        throw new IllegalArgumentException("Setting either 'requestXslt' or 'responseXslt' is required");
    }/*from w  ww . j  av  a  2  s  .  c  o m*/
    TransformerFactory transformerFactory = getTransformerFactory();
    XMLReader xmlReader = XMLReaderFactory.createXMLReader();
    xmlReader.setFeature("http://xml.org/sax/features/namespace-prefixes", true);
    if (requestXslt != null) {
        Assert.isTrue(requestXslt.exists(), "requestXslt \"" + requestXslt + "\" does not exit");
        if (logger.isInfoEnabled()) {
            logger.info("Transforming request using " + requestXslt);
        }
        Source requestSource = new ResourceSource(xmlReader, requestXslt);
        requestTemplates = transformerFactory.newTemplates(requestSource);
    }
    if (responseXslt != null) {
        Assert.isTrue(responseXslt.exists(), "responseXslt \"" + responseXslt + "\" does not exit");
        if (logger.isInfoEnabled()) {
            logger.info("Transforming response using " + responseXslt);
        }
        Source responseSource = new ResourceSource(xmlReader, responseXslt);
        responseTemplates = transformerFactory.newTemplates(responseSource);
    }
}

From source file:sdf_manager.ExporterSiteHTML.java

/**
 *
 * @return/*from   w  w  w.j a v  a 2 s.c  om*/
 */
public Document processDatabase() {
    OutputStream os = null;
    Session session = HibernateUtil.getSessionFactory().openSession();
    try {
        SDF_Util.getProperties();
        DocumentBuilderFactory dbfac = DocumentBuilderFactory.newInstance();
        DocumentBuilder docBuilder = dbfac.newDocumentBuilder();

        Iterator itrSites = this.sitecodes.iterator();
        int flush = 0;
        ExporterSiteHTML.log.info("Parsing sitecodes...");

        Document doc = docBuilder.newDocument();
        Element sdfs = doc.createElement("sdfs");
        doc.appendChild(sdfs);

        while (itrSites.hasNext()) {
            Element sdf = doc.createElement("sdf");
            Element siteIdentification = doc.createElement("siteIdentification");

            Site site = (Site) session.get(Site.class, (String) itrSites.next()); // results.get(i);

            siteIdentification.appendChild(doc.createElement("siteType"))
                    .appendChild(doc.createTextNode(fmt(site.getSiteType(), "siteType")));
            siteIdentification.appendChild(doc.createElement("siteCode"))
                    .appendChild(doc.createTextNode(fmt(site.getSiteCode().toUpperCase(), "siteCode")));
            ExporterSiteHTML.log.info("Parsing sitecode:::" + site.getSiteCode());
            siteIdentification.appendChild(doc.createElement("siteName"))
                    .appendChild(doc.createTextNode(fmt(site.getSiteName(), "siteName")));

            if (site.getSiteCompDate() != null) {
                siteIdentification.appendChild(doc.createElement("compilationDate"))
                        .appendChild(doc.createTextNode(
                                fmt(SDF_Util.getFormatDateToXML(site.getSiteCompDate()), "compilationDate")));
            }

            if (site.getSiteUpdateDate() != null) {
                siteIdentification.appendChild(doc.createElement("updateDate")).appendChild(doc.createTextNode(
                        fmt(SDF_Util.getFormatDateToXML(site.getSiteUpdateDate()), "updateDate")));
            }

            Resp resp = site.getResp();
            if (resp != null) {

                Element respNode = doc.createElement("respondent");
                respNode.appendChild(doc.createElement("name"))
                        .appendChild(doc.createTextNode(fmt(resp.getRespName(), "respName")));
                if (resp.getRespAddressArea() != null && !resp.getRespAddressArea().equals("")) {

                    Element addresElem = doc.createElement("address");

                    // THE NAME DOES NOT MATCH THEIR RESPECTIVES
                    addresElem.appendChild(doc.createElement("adminUnit"))
                            .appendChild(doc.createTextNode(fmt(resp.getRespAdminUnit(), "adminUnit")));
                    addresElem.appendChild(doc.createElement("thoroughfare"))
                            .appendChild(doc.createTextNode(fmt(resp.getRespLocatorName(), "locatorName")));
                    addresElem.appendChild(doc.createElement("locatorDesignator"))
                            .appendChild(doc.createTextNode(fmt(resp.getRespThoroughFare(), "thoroughfare")));
                    addresElem.appendChild(doc.createElement("postCode"))
                            .appendChild(doc.createTextNode(fmt(resp.getRespAddressArea(), "addressArea")));
                    addresElem.appendChild(doc.createElement("postName"))
                            .appendChild(doc.createTextNode(fmt(resp.getRespPostName(), "postName")));
                    addresElem.appendChild(doc.createElement("addressArea"))
                            .appendChild(doc.createTextNode(fmt(resp.getRespPostCode(), "postCode")));
                    addresElem.appendChild(doc.createElement("locatorName")).appendChild(
                            doc.createTextNode(fmt(resp.getRespLocatorDesig(), "locatorDesignator")));
                    respNode.appendChild(addresElem);

                } else {
                    Element addresElem = doc.createElement("address");
                    addresElem.appendChild(doc.createElement("addressArea"))
                            .appendChild(doc.createTextNode(fmt(resp.getRespAddress(), "addressArea")));
                    respNode.appendChild(addresElem);
                }

                respNode.appendChild(doc.createElement("email"))
                        .appendChild(doc.createTextNode(fmt(resp.getRespEmail(), "respEmail")));
                siteIdentification.appendChild(respNode);
            }

            if (SDF_ManagerApp.isEmeraldMode()) {
                XmlGenerationUtils.appendDateElement(site.getSiteProposedAsciDate(), siteIdentification,
                        "asciProposalDate", doc);
                if (site.getSiteProposedAsciDate() == null) {
                    XmlGenerationUtils.appendDateElement(XmlGenerationUtils.nullDate(), siteIdentification,
                            "asciProposalDate", doc);
                }
                XmlGenerationUtils.appendDateElement(site.getSiteConfirmedCandidateAsciDate(),
                        siteIdentification, "asciConfirmedCandidateDate", doc);
                XmlGenerationUtils.appendDateElement(site.getSiteConfirmedAsciDate(), siteIdentification,
                        "asciConfirmationDate", doc);
                XmlGenerationUtils.appendDateElement(site.getSiteDesignatedAsciDate(), siteIdentification,
                        "asciDesignationDate", doc);

                siteIdentification.appendChild(doc.createElement("asciLegalReference"))
                        .appendChild(doc.createTextNode(fmt(site.getSiteAsciLegalRef(), "asciLegalReference")));

            } else {

                if (site.getSiteSpaDate() != null) {
                    siteIdentification.appendChild(doc.createElement("spaClassificationDate")).appendChild(
                            doc.createTextNode(fmt(SDF_Util.getFormatDateToXML(site.getSiteSpaDate()),
                                    "spaClassificationDate")));
                } else {
                    siteIdentification.appendChild(doc.createElement("spaClassificationDate"))
                            .appendChild(doc.createTextNode(fmt("0000-00", "spaClassificationDate")));
                }

                siteIdentification.appendChild(doc.createElement("spaLegalReference"))
                        .appendChild(doc.createTextNode(fmt(site.getSiteSpaLegalRef(), "spaLegalReference")));

                if (site.getSiteSciPropDate() != null) {
                    siteIdentification.appendChild(doc.createElement("sciProposalDate")).appendChild(
                            doc.createTextNode(fmt(SDF_Util.getFormatDateToXML(site.getSiteSciPropDate()),
                                    "sciProposalDate")));
                }

                if (site.getSiteSciConfDate() != null) {
                    siteIdentification.appendChild(doc.createElement("sciConfirmationDate")).appendChild(
                            doc.createTextNode(fmt(SDF_Util.getFormatDateToXML(site.getSiteSciConfDate()),
                                    "sciConfirmationDate")));
                }

                if (site.getSiteSacDate() != null) {
                    siteIdentification.appendChild(doc.createElement("sacDesignationDate")).appendChild(
                            doc.createTextNode(fmt(SDF_Util.getFormatDateToXML(site.getSiteSacDate()),
                                    "sacDesignationDate")));
                }

                siteIdentification.appendChild(doc.createElement("sacLegalReference"))
                        .appendChild(doc.createTextNode(fmt(site.getSiteSacLegalRef(), "sacLegalReference")));

            }
            siteIdentification.appendChild(doc.createElement("explanations"))
                    .appendChild(doc.createTextNode(fmt(site.getSiteExplanations(), "explanations")));
            sdf.appendChild(siteIdentification);

            /**************LOCATION***************/

            Element location = doc.createElement("siteLocation");
            location.appendChild(doc.createElement("longitude"))
                    .appendChild(doc.createTextNode(fmt(site.getSiteLongitude(), "longitude")));
            location.appendChild(doc.createElement("latitude"))
                    .appendChild(doc.createTextNode(fmt(site.getSiteLatitude(), "latitude")));
            location.appendChild(doc.createElement("area"))
                    .appendChild(doc.createTextNode(fmt(site.getSiteArea(), "area")));
            location.appendChild(doc.createElement("marineAreaPercentage"))
                    .appendChild(doc.createTextNode(fmt(site.getSiteMarineArea(), "marineArea")));
            location.appendChild(doc.createElement("siteLength"))
                    .appendChild(doc.createTextNode(fmt(site.getSiteLength(), "siteLength")));

            /*regions*/
            Element regions = doc.createElement("adminRegions");
            Set siteRegions = site.getRegions();
            Iterator itr = siteRegions.iterator();
            while (itr.hasNext()) {
                Region r = (Region) itr.next();
                Element rElem = doc.createElement("region");
                rElem.appendChild(doc.createElement("code"))
                        .appendChild(doc.createTextNode(fmt(r.getRegionCode(), "regionCode")));
                //descomentado--> adaptar nuevo xml
                rElem.appendChild(doc.createElement("name"))
                        .appendChild(doc.createTextNode(fmt(r.getRegionName(), "regionName")));
                regions.appendChild(rElem);
            }
            //adaptacion al nuevo xml
            location.appendChild(regions);

            /*bioregions*/
            Element biogeoRegions = doc.createElement("biogeoRegions");
            Set siteBioRegions = site.getSiteBiogeos();
            if (!(siteBioRegions.isEmpty())) {
                Iterator itbr = siteBioRegions.iterator();
                while (itbr.hasNext()) {
                    SiteBiogeo s = (SiteBiogeo) itbr.next();
                    Element biogeoElement = doc.createElement("biogeoRegions");
                    Biogeo b = s.getBiogeo();
                    //this XMl doesn't need validate, so it's better to use bioregion name instead bioregion code
                    biogeoElement.appendChild(doc.createElement("code"))
                            .appendChild(doc.createTextNode(fmt(b.getBiogeoName(), "bioRegionCode")));
                    biogeoElement.appendChild(doc.createElement("percentage"))
                            .appendChild(doc.createTextNode(fmt(s.getBiogeoPercent(), "biogeoPercent")));
                    location.appendChild(biogeoElement);
                }

            }

            sdf.appendChild(location);

            /********ECOLOGICAL INFORMATION***********/
            //adptacion nuevo XML
            Element ecologicalInformation = doc.createElement("ecologicalInformation");

            /************HABITATS****************/
            Element habitatsTypes = doc.createElement("habitatTypes");

            Set siteHabs = site.getHabitats();
            itr = siteHabs.iterator();
            while (itr.hasNext()) {
                Habitat h = (Habitat) itr.next();
                Element hElem = doc.createElement("habitatType");
                hElem.appendChild(doc.createElement("code"))
                        .appendChild(doc.createTextNode(fmt(h.getHabitatCode(), "habitatCode")));
                hElem.appendChild(doc.createElement("priorityFormOfHabitatType")).appendChild(
                        doc.createTextNode(fmt(toBoolean(h.getHabitatPriority()), "habitatPriority")));
                hElem.appendChild(doc.createElement("nonPresenceInSite"))
                        .appendChild(doc.createTextNode(fmt(toBoolean(h.getHabitatNp()), "habitatNp")));
                hElem.appendChild(doc.createElement("coveredArea"))
                        .appendChild(doc.createTextNode(fmt(h.getHabitatCoverHa(), "habitatCover")));
                hElem.appendChild(doc.createElement("caves"))
                        .appendChild(doc.createTextNode(fmt(h.getHabitatCaves(), "habitatCaves")));

                hElem.appendChild(doc.createElement("observationDataQuality"))
                        .appendChild(doc.createTextNode(fmt(h.getHabitatDataQuality(), "habitatDataQuality")));
                hElem.appendChild(doc.createElement("representativity")).appendChild(
                        doc.createTextNode(fmt(h.getHabitatRepresentativity(), "habitatRepresentativity")));
                hElem.appendChild(doc.createElement("relativeSurface"))
                        .appendChild(doc.createTextNode(fmt(h.getHabitatRelativeSurface(), "relativeSurface")));
                hElem.appendChild(doc.createElement("conservation")).appendChild(
                        doc.createTextNode(fmt(h.getHabitatConservation(), "habitatConservation")));
                hElem.appendChild(doc.createElement("global"))
                        .appendChild(doc.createTextNode(fmt(h.getHabitatGlobal(), "habitatGlobal")));

                habitatsTypes.appendChild(hElem);

            }
            ecologicalInformation.appendChild(habitatsTypes);

            /************SPECIES****************/
            Element specieses = doc.createElement("species");
            Set siteSpecies = site.getSpecieses();
            itr = siteSpecies.iterator();
            while (itr.hasNext()) {

                Species s = (Species) itr.next();
                Element sElem = doc.createElement("speciesPopulation");
                sElem.appendChild(doc.createElement("speciesGroup"))
                        .appendChild(doc.createTextNode(fmt(s.getSpeciesGroup(), "speciesGroup")));
                sElem.appendChild(doc.createElement("speciesCode"))
                        .appendChild(doc.createTextNode(fmt(s.getSpeciesCode(), "speciesCode")));
                sElem.appendChild(doc.createElement("scientificName"))
                        .appendChild(doc.createTextNode(fmt(s.getSpeciesName(), "speciesName")));

                sElem.appendChild(doc.createElement("sensitiveInfo")).appendChild(
                        doc.createTextNode(fmt(toBoolean(s.getSpeciesSensitive()), "speciesSensitive")));
                sElem.appendChild(doc.createElement("nonPresenceInSite"))
                        .appendChild(doc.createTextNode(fmt(toBoolean(s.getSpeciesNp()), "speciesNP")));
                sElem.appendChild(doc.createElement("populationType"))
                        .appendChild(doc.createTextNode(fmtToLowerCase(s.getSpeciesType(), "speciesType")));

                Element popElem = doc.createElement("populationSize");
                popElem.appendChild(doc.createElement("lowerBound"))
                        .appendChild(doc.createTextNode(fmt(s.getSpeciesSizeMin(), "speciesSizeMin")));
                popElem.appendChild(doc.createElement("upperBound"))
                        .appendChild(doc.createTextNode(fmt(s.getSpeciesSizeMax(), "speciesSizeMax")));
                popElem.appendChild(doc.createElement("countingUnit"))
                        .appendChild(doc.createTextNode(fmt(s.getSpeciesUnit(), "speciesUnit")));
                sElem.appendChild(popElem);

                if (s.getSpeciesCategory() != null) {
                    if (!("").equals(s.getSpeciesCategory().toString())) {
                        sElem.appendChild(doc.createElement("abundanceCategory")).appendChild(
                                doc.createTextNode(fmtToUpperCase(s.getSpeciesCategory(), "speciesCategory")));
                    }
                }

                sElem.appendChild(doc.createElement("dataQuality"))
                        .appendChild(doc.createTextNode(fmt(s.getSpeciesDataQuality(), "speciesQuality")));
                // sElem.appendChild(doc.createElement("observationDataQuality")).appendChild(doc.createTextNode(fmt(s.getSpeciesDataQuality(), "speciesQuality")));
                sElem.appendChild(doc.createElement("population"))
                        .appendChild(doc.createTextNode(fmt(s.getSpeciesPopulation(), "speciesPopulation")));
                sElem.appendChild(doc.createElement("conservation")).appendChild(
                        doc.createTextNode(fmt(s.getSpeciesConservation(), "speciesConservation")));

                sElem.appendChild(doc.createElement("isolation"))
                        .appendChild(doc.createTextNode(fmt(s.getSpeciesIsolation(), "speciesIsolation")));
                sElem.appendChild(doc.createElement("global"))
                        .appendChild(doc.createTextNode(fmt(s.getSpeciesGlobal(), "speciesGlobal")));

                specieses.appendChild(sElem);
            }

            siteSpecies = site.getOtherSpecieses();
            itr = siteSpecies.iterator();
            while (itr.hasNext()) {

                OtherSpecies s = (OtherSpecies) itr.next();
                Element sElem = doc.createElement("speciesPopulation");

                sElem.appendChild(doc.createElement("speciesGroup"))
                        .appendChild(doc.createTextNode(fmt(s.getOtherSpeciesGroup(), "ospeciesGroup")));
                sElem.appendChild(doc.createElement("speciesCode"))
                        .appendChild(doc.createTextNode(fmt(s.getOtherSpeciesCode(), "ospeciesCode")));
                sElem.appendChild(doc.createElement("scientificName"))
                        .appendChild(doc.createTextNode(fmt(s.getOtherSpeciesName(), "ospeciesName")));
                sElem.appendChild(doc.createElement("sensitiveInfo")).appendChild(
                        doc.createTextNode(fmt(toBoolean(s.getOtherSpeciesSensitive()), "ospeciesSensitive")));

                if (s.getOtherSpeciesNp() != null) {
                    if (!(("").equals(s.getOtherSpeciesNp().toString()))) {
                        sElem.appendChild(doc.createElement("nonPresenceInSite")).appendChild(
                                doc.createTextNode(fmt(toBoolean(s.getOtherSpeciesNp()), "ospeciesNP")));
                    }
                }

                Element popElem = doc.createElement("populationSize");
                popElem.appendChild(doc.createElement("lowerBound"))
                        .appendChild(doc.createTextNode(fmt(s.getOtherSpeciesSizeMin(), "speciesSizeMin")));
                popElem.appendChild(doc.createElement("upperBound"))
                        .appendChild(doc.createTextNode(fmt(s.getOtherSpeciesSizeMax(), "speciesSizeMax")));
                popElem.appendChild(doc.createElement("countingUnit"))
                        .appendChild(doc.createTextNode(fmt(s.getOtherSpeciesUnit(), "speciesUnit")));
                sElem.appendChild(popElem);
                if (s.getOtherSpeciesCategory() != null) {
                    if (!(("").equals(s.getOtherSpeciesCategory().toString()))) {
                        sElem.appendChild(doc.createElement("abundanceCategory")).appendChild(
                                doc.createTextNode(fmt(s.getOtherSpeciesCategory(), "ospeciesCategory")));
                    }

                }

                //modificar porque es un tree primero es motivations y despues el nodo motivation (solo en el caso que haya motivations es other species en caso contrario
                //es species
                if (s.getOtherSpeciesMotivation() != null && !(("").equals(s.getOtherSpeciesMotivation()))) {
                    Element sElemMot = doc.createElement("motivations");

                    String strMotivation = s.getOtherSpeciesMotivation();
                    StringTokenizer st2 = new StringTokenizer(strMotivation, ",");

                    while (st2.hasMoreElements()) {
                        String mot = (String) st2.nextElement();
                        sElemMot.appendChild(doc.createElement("motivation"))
                                .appendChild(doc.createTextNode(fmt(mot, "ospeciesMotivation")));
                        sElem.appendChild(sElemMot);
                    }
                }

                specieses.appendChild(sElem);
            }
            ecologicalInformation.appendChild(specieses);

            sdf.appendChild(ecologicalInformation);

            /**************DESCRIPTION***********************/
            Element description = doc.createElement("siteDescription");
            Set classes = site.getHabitatClasses();
            itr = classes.iterator();

            while (itr.hasNext()) {
                HabitatClass h = (HabitatClass) itr.next();
                Element cElem = doc.createElement("habitatClass");
                cElem.appendChild(doc.createElement("code"))
                        .appendChild(doc.createTextNode(fmt(h.getHabitatClassCode(), "habitatClassCode")));
                cElem.appendChild(doc.createElement("coveragePercentage"))
                        .appendChild(doc.createTextNode(fmt(h.getHabitatClassCover(), "habitatClassCover")));
                description.appendChild(cElem);
            }

            description.appendChild(doc.createElement("otherSiteCharacteristics")).appendChild(
                    doc.createTextNode(fmt(site.getSiteCharacteristics(), "otherSiteCharacteristics")));
            description.appendChild(doc.createElement("qualityAndImportance"))
                    .appendChild(doc.createTextNode(fmt(site.getSiteQuality(), "qualityAndImportance")));
            Element impacts = doc.createElement("impacts");
            Set siteImpacts = site.getImpacts();
            itr = siteImpacts.iterator();

            while (itr.hasNext()) {

                Element iElem = doc.createElement("impact");
                Impact im = (Impact) itr.next();
                iElem.appendChild(doc.createElement("code"))
                        .appendChild(doc.createTextNode(fmt(im.getImpactCode(), "impactCode")));

                iElem.appendChild(doc.createElement("rank"))
                        .appendChild(doc.createTextNode(fmt(im.getImpactRank(), "impactRank")));

                if (im.getImpactPollutionCode() != null) {
                    if (!("").equals(im.getImpactPollutionCode().toString())) {
                        iElem.appendChild(doc.createElement("pollutionCode")).appendChild(
                                doc.createTextNode(fmt(im.getImpactPollutionCode(), "impactPollution")));
                    }

                }

                iElem.appendChild(doc.createElement("occurrence"))
                        .appendChild(doc.createTextNode(fmt(im.getImpactOccurrence(), "impactOccurrece")));

                String impacType = "";
                if (im.getImpactType() != null) {
                    if (("P").equals(im.getImpactType().toString())) {
                        impacType = "Positive";
                    } else {
                        impacType = "Negative";
                    }
                }
                iElem.appendChild(doc.createElement("natureOfImpact"))
                        .appendChild(doc.createTextNode(fmt(impacType, "natureOfImpact")));
                impacts.appendChild(iElem);
            }

            description.appendChild(impacts);

            Element ownership = doc.createElement("ownership");
            Set owners = site.getSiteOwnerships();
            itr = owners.iterator();
            while (itr.hasNext()) {
                SiteOwnership o = (SiteOwnership) itr.next();
                Ownership o2 = o.getOwnership();
                Element oElem = doc.createElement("ownershipPart");
                oElem.appendChild(doc.createElement("ownershiptype"))
                        .appendChild(doc.createTextNode(fmt(o2.getOwnershipCode(), "ownershipType")));
                oElem.appendChild(doc.createElement("percent"))
                        .appendChild(doc.createTextNode(fmt(o.getOwnershipPercent(), "ownershipPercent")));
                ownership.appendChild(oElem);
            }

            description.appendChild(ownership);

            Element documentation = doc.createElement("documentation");
            Doc docObj = site.getDoc();
            if (docObj != null) {

                documentation.appendChild(doc.createElement("description"))
                        .appendChild(doc.createTextNode(fmt(docObj.getDocDescription(), "docDescription")));
                Set docLinks = docObj.getDocLinks();
                itr = docLinks.iterator();
                Element links = doc.createElement("links");
                while (itr.hasNext()) {
                    DocLink docLink = (DocLink) itr.next();
                    links.appendChild(doc.createElement("link"))
                            .appendChild(doc.createTextNode(fmt(docLink.getDocLinkUrl(), "linkURL")));
                }
                documentation.appendChild(links);
                description.appendChild(documentation);
            }
            sdf.appendChild(description);

            /********PROTECTION**********/
            Element protection = doc.createElement("siteProtection");

            Element natDesigs = doc.createElement("nationalDesignations");
            Set dsigs = site.getNationalDtypes();
            itr = dsigs.iterator();
            while (itr.hasNext()) {
                NationalDtype dtype = (NationalDtype) itr.next();
                Element nElem = doc.createElement("nationalDesignation");
                nElem.appendChild(doc.createElement("designationCode"))
                        .appendChild(doc.createTextNode(fmt(dtype.getNationalDtypeCode(), "dtypecode")));
                nElem.appendChild(doc.createElement("cover"))
                        .appendChild(doc.createTextNode(fmt(dtype.getNationalDtypeCover(), "dtypecover")));
                natDesigs.appendChild(nElem);
            }
            protection.appendChild(natDesigs);

            Set rels = site.getSiteRelations();
            if (!rels.isEmpty()) {
                Element relations = doc.createElement("relations");
                Element nationalRelations = doc.createElement("nationalRelationships");
                Element internationalRelations = doc.createElement("internationalRelationships");

                itr = rels.iterator();
                while (itr.hasNext()) {

                    SiteRelation rel = (SiteRelation) itr.next();
                    Element rElem;
                    Character scope = rel.getSiteRelationScope();

                    if (("N").equals(scope.toString())) {
                        rElem = doc.createElement("nationalRelationship");
                        rElem.appendChild(doc.createElement("designationCode")).appendChild(
                                doc.createTextNode(fmt(rel.getSiteRelationCode(), "relationCode")));
                        nationalRelations.appendChild(rElem);
                    } else if (("I").equals(scope.toString())) {
                        rElem = doc.createElement("internationalRelationship");
                        rElem.appendChild(doc.createElement("convention")).appendChild(
                                doc.createTextNode(fmt(rel.getSiteRelationConvention(), "relationConvention")));
                        internationalRelations.appendChild(rElem);
                    } else {
                        //                            log("Relation type undefined, ignoring relation: " + scope.toString());
                        continue;
                    }
                    rElem.appendChild(doc.createElement("siteName")).appendChild(
                            doc.createTextNode(fmt(rel.getSiteRelationSitename(), "relationSite")));
                    rElem.appendChild(doc.createElement("type"))
                            .appendChild(doc.createTextNode(fmt(rel.getSiteRelationType(), "relationType")));
                    rElem.appendChild(doc.createElement("cover"))
                            .appendChild(doc.createTextNode(fmt(rel.getSiteRelationCover(), "relationCover")));
                }
                relations.appendChild(nationalRelations);
                relations.appendChild(internationalRelations);

                protection.appendChild(relations);
            }

            protection.appendChild(doc.createElement("siteDesignationAdditional"))
                    .appendChild(doc.createTextNode(fmt(site.getSiteDesignation(), "siteDesignation")));
            sdf.appendChild(protection);

            /******************MANAGEMENT************************/

            Element mgmtElem = doc.createElement("siteManagement");
            Mgmt mgmt = site.getMgmt();
            if (mgmt != null) {
                // Management Body
                Set bodies = mgmt.getMgmtBodies();
                itr = bodies.iterator();
                Element bodiesElem = doc.createElement("managementBodies");
                while (itr.hasNext()) {

                    MgmtBody bodyObj = (MgmtBody) itr.next();
                    Element bElem = doc.createElement("managementBody");
                    bElem.appendChild(doc.createElement("organisation"))
                            .appendChild(doc.createTextNode(fmt(bodyObj.getMgmtBodyOrg(), "mgmtBodyOrg")));
                    //if el campo addressunestructured esta vacio entonces addres es un tipo complejo (implementar) en caso contrario
                    if (bodyObj.getMgmtBodyAddressArea() != null
                            && !bodyObj.getMgmtBodyAddressArea().equals("")) {
                        Element addresElem = doc.createElement("address");

                        addresElem.appendChild(doc.createElement("adminUnit")).appendChild(
                                doc.createTextNode(fmt(bodyObj.getMgmtBodyAdminUnit(), "adminUnit") + "  "));
                        addresElem.appendChild(doc.createElement("locatorDesignator")).appendChild(doc
                                .createTextNode(fmt(bodyObj.getMgmtBodyThroughFare(), "thoroughfare") + "  "));
                        addresElem.appendChild(doc.createElement("locatorName")).appendChild(doc.createTextNode(
                                fmt(bodyObj.getMgmtBodyLocatorDesignator(), "locatorDesignator") + "  "));
                        addresElem.appendChild(doc.createElement("addressArea")).appendChild(
                                doc.createTextNode(fmt(bodyObj.getMgmtBodyPostCode(), "postCode") + "  "));
                        addresElem.appendChild(doc.createElement("postName")).appendChild(
                                doc.createTextNode(fmt(bodyObj.getMgmtBodyPostName(), "postName") + "  "));
                        addresElem.appendChild(doc.createElement("postCode")).appendChild(doc
                                .createTextNode(fmt(bodyObj.getMgmtBodyAddressArea(), "addressArea") + "  "));
                        addresElem.appendChild(doc.createElement("thoroughfare")).appendChild(doc
                                .createTextNode(fmt(bodyObj.getMgmtBodyLocatorName(), "locatorName") + "  "));

                        bElem.appendChild(addresElem);
                    } else {
                        Element addresElem = doc.createElement("address");
                        addresElem.appendChild(doc.createElement("addressArea")).appendChild(
                                doc.createTextNode(fmt(bodyObj.getMgmtBodyAddress(), "addressArea")));
                        bElem.appendChild(addresElem);
                    }

                    bElem.appendChild(doc.createElement("email"))
                            .appendChild(doc.createTextNode(fmt(bodyObj.getMgmtBodyEmail(), "mgmtBodyMail")));
                    bodiesElem.appendChild(bElem);
                }
                mgmtElem.appendChild(bodiesElem);

                // Management Plan

                Character status = mgmt.getMgmtStatus();
                Element mgmtExists = (Element) mgmtElem.appendChild(doc.createElement("exists"));
                if (status != null) {
                    mgmtExists
                            .appendChild(doc.createTextNode(fmt(Character.toUpperCase(status), "mgmtExists")));
                }
                Set plans = mgmt.getMgmtPlans();
                itr = plans.iterator();
                Element plansElem = doc.createElement("managementPlans");
                plansElem.appendChild(mgmtExists);
                while (itr.hasNext()) {
                    MgmtPlan planObj = (MgmtPlan) itr.next();
                    Element pElem = doc.createElement("managementPlan");
                    pElem.appendChild(doc.createElement("name"))
                            .appendChild(doc.createTextNode(fmt(planObj.getMgmtPlanName(), "mgmtPlanName")));
                    pElem.appendChild(doc.createElement("url"))
                            .appendChild(doc.createTextNode(fmt(planObj.getMgmtPlanUrl(), "mgmtPlanUrl")));
                    plansElem.appendChild(pElem);
                }
                mgmtElem.appendChild(plansElem);

                mgmtElem.appendChild(doc.createElement("conservationMeasures")).appendChild(
                        doc.createTextNode(fmt(mgmt.getMgmtConservMeasures(), "conservationMeasures")));
            }
            sdf.appendChild(mgmtElem);

            Map map = site.getMap();
            Element mapElem = doc.createElement("map");
            if (map != null) {
                mapElem.appendChild(doc.createElement("InspireID"))
                        .appendChild(doc.createTextNode(fmt(map.getMapInspire(), "mapInspireID")));

                Boolean bMap;
                if (map.getMapPdf() != null && map.getMapPdf().equals(Short.valueOf("1"))) {
                    bMap = true;
                } else {
                    bMap = false;
                }
                mapElem.appendChild(doc.createElement("pdfProvided"))
                        .appendChild(doc.createTextNode(fmt(bMap, "mapPDF")));
                mapElem.appendChild(doc.createElement("mapReference"))
                        .appendChild(doc.createTextNode(fmt(map.getMapReference(), "mapRef")));
            }
            sdf.appendChild(mapElem);

            if (flush++ % 100 == 0) {
                session.clear();
            }
            sdfs.appendChild(sdf);
        }

        //All the data is stored in the node instead of the document.
        Source source = new DOMSource(doc);

        // File file = new File(this.fileName);
        File file = new File("xsl" + File.separator + this.siteCode + ".html");

        Result result = new StreamResult(file.toURI().getPath());

        TransformerFactory tFactory = TransformerFactory.newInstance();
        String xslFileName = SDF_ManagerApp.isEmeraldMode() ? "EmeraldSiteXSL.xsl" : "SiteXSL.xsl";

        Source xsl = new StreamSource("." + File.separator + "xsl" + File.separator + xslFileName);
        Templates template = tFactory.newTemplates(xsl);
        Transformer transformer = template.newTransformer();
        transformer.setOutputProperty(OutputKeys.INDENT, "yes");
        //transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
        transformer.setOutputProperty(OutputKeys.CDATA_SECTION_ELEMENTS,
                "siteName name otherSiteCharacteristics"
                        + " qualityAndImportance selectiveBasis derogationJustification comments "
                        + "location licensedJustification licensingAuthority licenseValidFrom licenseValidUntil otherType "
                        + "method activity reason");

        transformer.transform(source, result);

        String pdfPath = new File("").getAbsolutePath() + File.separator + "xsl" + File.separator
                + this.siteCode + ".pdf";
        // File inputFile = new File(this.fileName);
        File inputFile = new File("xsl" + File.separator + this.siteCode + ".html");
        os = new FileOutputStream(new File(pdfPath));

        ITextRenderer renderer = new ITextRenderer();
        FontFactory.register("resources/fonts");

        renderer.setDocument(inputFile);
        renderer.layout();
        renderer.createPDF(os);

        Desktop desktop = null;
        // Before more Desktop API is used, first check
        // whether the API is supported by this particular
        // virtual machine (VM) on this particular host.
        if (Desktop.isDesktopSupported()) {
            desktop = Desktop.getDesktop();
            Desktop.getDesktop().open(file);
        }
        return null;
    } catch (TransformerConfigurationException e) {
        ExporterSiteHTML.log
                .error("A TransformerConfigurationException has occurred in processDatabase. Error Message:::"
                        + e.getMessage());
        return null;
    } catch (TransformerException e) {
        ExporterSiteHTML.log.error(
                "A TransformerException has occurred in processDatabase. Error Message:::" + e.getMessage());
        return null;
    } catch (FileNotFoundException e) {
        ExporterSiteHTML.log.error(
                "A FileNotFoundException has occurred in processDatabase. Error Message:::" + e.getMessage());
        return null;
    } catch (IOException e) {
        ExporterSiteHTML.log
                .error("An IOException has occurred in processDatabase. Error Message:::" + e.getMessage());
        return null;
    } catch (Exception e) {
        ExporterSiteHTML.log.error(
                "A general exception has occurred in processDatabase. Error Message:::" + e.getMessage());
        return null;
    } finally {
        IOUtils.closeQuietly(os);
        session.close();
    }

}

From source file:sdf_manager.GenerateSitePDF.java

/**
 *
 * @return/* w  w w  .  j  a va 2 s.c o m*/
 */
public Document processDatabase() {
    OutputStream os = null;
    Session session = HibernateUtil.getSessionFactory().openSession();
    try {
        DocumentBuilderFactory dbfac = DocumentBuilderFactory.newInstance();
        DocumentBuilder docBuilder = dbfac.newDocumentBuilder();
        Iterator itrSites = this.sitecodes.iterator();
        int flush = 0;

        Document doc = docBuilder.newDocument();
        Element sdfs = doc.createElement("sdfs");
        doc.appendChild(sdfs);

        while (itrSites.hasNext()) {
            Element sdf = doc.createElement("sdf");
            Element siteIdentification = doc.createElement("siteIdentification");

            Site site = (Site) session.get(Site.class, (String) itrSites.next()); // results.get(i);

            siteIdentification.appendChild(doc.createElement("siteType"))
                    .appendChild(doc.createTextNode(fmt(site.getSiteType(), "siteType")));
            siteIdentification.appendChild(doc.createElement("siteCode"))
                    .appendChild(doc.createTextNode(fmt(site.getSiteCode(), "siteCode")));
            GenerateSitePDF.log.info("Parsing sitecode:::" + site.getSiteCode());
            siteIdentification.appendChild(doc.createElement("siteName"))
                    .appendChild(doc.createTextNode(fmt(site.getSiteName(), "siteName")));

            if (site.getSiteCompDate() != null && !(("").equals(site.getSiteCompDate()))) {
                siteIdentification.appendChild(doc.createElement("compilationDate"))
                        .appendChild(doc.createTextNode(
                                fmt(SDF_Util.getFormatDateToXML(site.getSiteCompDate()), "compilationDate")));
            }

            if (site.getSiteUpdateDate() != null && !(("").equals(site.getSiteUpdateDate()))) {
                siteIdentification.appendChild(doc.createElement("updateDate")).appendChild(doc.createTextNode(
                        fmt(SDF_Util.getFormatDateToXML(site.getSiteUpdateDate()), "updateDate")));
            }

            Resp resp = site.getResp();
            if (resp != null) {
                Element respNode = doc.createElement("respondent");
                respNode.appendChild(doc.createElement("name"))
                        .appendChild(doc.createTextNode(fmt(resp.getRespName(), "respName")));

                if (resp.getRespAddressArea() != null && !resp.getRespAddressArea().equals("")) {
                    Element addresElem = doc.createElement("address");

                    addresElem.appendChild(doc.createElement("adminUnit"))
                            .appendChild(doc.createTextNode(fmt(resp.getRespAdminUnit(), "adminUnit")));
                    addresElem.appendChild(doc.createElement("thoroughfare"))
                            .appendChild(doc.createTextNode(fmt(resp.getRespLocatorName(), "locatorName")));
                    addresElem.appendChild(doc.createElement("locatorDesignator"))
                            .appendChild(doc.createTextNode(fmt(resp.getRespThoroughFare(), "thoroughfare")));
                    addresElem.appendChild(doc.createElement("postCode"))
                            .appendChild(doc.createTextNode(fmt(resp.getRespAddressArea(), "addressArea")));
                    addresElem.appendChild(doc.createElement("postName"))
                            .appendChild(doc.createTextNode(fmt(resp.getRespPostName(), "postName")));
                    addresElem.appendChild(doc.createElement("addressArea"))
                            .appendChild(doc.createTextNode(fmt(resp.getRespPostCode(), "postCode")));
                    addresElem.appendChild(doc.createElement("locatorName")).appendChild(
                            doc.createTextNode(fmt(resp.getRespLocatorDesig(), "locatorDesignator")));
                    respNode.appendChild(addresElem);
                } else {
                    Element addresElem = doc.createElement("address");
                    addresElem.appendChild(doc.createElement("addressArea"))
                            .appendChild(doc.createTextNode(fmt(resp.getRespAddress(), "addressArea")));
                    respNode.appendChild(addresElem);
                    // respNode.appendChild(doc.createElement("addressUnstructured")).appendChild(doc.createTextNode(fmt(resp.getRespAddress(), "respAddress")));
                }

                respNode.appendChild(doc.createElement("email"))
                        .appendChild(doc.createTextNode(fmt(resp.getRespEmail(), "respEmail")));
                siteIdentification.appendChild(respNode);
            }

            if (SDF_ManagerApp.isEmeraldMode()) {
                XmlGenerationUtils.appendDateElement(site.getSiteProposedAsciDate(), siteIdentification,
                        "asciProposalDate", doc);
                if (site.getSiteProposedAsciDate() == null) {
                    XmlGenerationUtils.appendDateElement(XmlGenerationUtils.nullDate(), siteIdentification,
                            "asciProposalDate", doc);
                }
                XmlGenerationUtils.appendDateElement(site.getSiteConfirmedCandidateAsciDate(),
                        siteIdentification, "asciConfirmedCandidateDate", doc);
                XmlGenerationUtils.appendDateElement(site.getSiteConfirmedAsciDate(), siteIdentification,
                        "asciConfirmationDate", doc);
                XmlGenerationUtils.appendDateElement(site.getSiteDesignatedAsciDate(), siteIdentification,
                        "asciDesignationDate", doc);

                siteIdentification.appendChild(doc.createElement("asciLegalReference"))
                        .appendChild(doc.createTextNode(fmt(site.getSiteAsciLegalRef(), "asciLegalReference")));

            } else {
                if (site.getSiteSpaDate() != null) {
                    siteIdentification.appendChild(doc.createElement("spaClassificationDate")).appendChild(
                            doc.createTextNode(fmt(SDF_Util.getFormatDateToXML(site.getSiteSpaDate()),
                                    "spaClassificationDate")));
                } else {
                    siteIdentification.appendChild(doc.createElement("spaClassificationDate"))
                            .appendChild(doc.createTextNode(fmt("0000-00", "spaClassificationDate")));
                }

                siteIdentification.appendChild(doc.createElement("spaLegalReference"))
                        .appendChild(doc.createTextNode(fmt(site.getSiteSpaLegalRef(), "spaLegalReference")));

                if (site.getSiteSciPropDate() != null) {
                    siteIdentification.appendChild(doc.createElement("sciProposalDate")).appendChild(
                            doc.createTextNode(fmt(SDF_Util.getFormatDateToXML(site.getSiteSciPropDate()),
                                    "sciProposalDate")));
                }

                if (site.getSiteSciConfDate() != null) {
                    siteIdentification.appendChild(doc.createElement("sciConfirmationDate")).appendChild(
                            doc.createTextNode(fmt(SDF_Util.getFormatDateToXML(site.getSiteSciConfDate()),
                                    "sciConfirmationDate")));
                }

                if (site.getSiteSacDate() != null) {
                    siteIdentification.appendChild(doc.createElement("sacDesignationDate")).appendChild(
                            doc.createTextNode(fmt(SDF_Util.getFormatDateToXML(site.getSiteSacDate()),
                                    "sacDesignationDate")));
                }

                siteIdentification.appendChild(doc.createElement("sacLegalReference"))
                        .appendChild(doc.createTextNode(fmt(site.getSiteSacLegalRef(), "sacLegalReference")));
            }
            siteIdentification.appendChild(doc.createElement("explanations"))
                    .appendChild(doc.createTextNode(fmt(site.getSiteExplanations(), "explanations")));
            sdf.appendChild(siteIdentification);

            /**************LOCATION***************/
            Element location = doc.createElement("siteLocation");
            location.appendChild(doc.createElement("longitude"))
                    .appendChild(doc.createTextNode(fmt(site.getSiteLongitude(), "longitude")));
            location.appendChild(doc.createElement("latitude"))
                    .appendChild(doc.createTextNode(fmt(site.getSiteLatitude(), "latitude")));
            location.appendChild(doc.createElement("area"))
                    .appendChild(doc.createTextNode(fmt(site.getSiteArea(), "area")));
            location.appendChild(doc.createElement("marineAreaPercentage"))
                    .appendChild(doc.createTextNode(fmt(site.getSiteMarineArea(), "marineArea")));
            location.appendChild(doc.createElement("siteLength"))
                    .appendChild(doc.createTextNode(fmt(site.getSiteLength(), "siteLength")));

            /*regions*/
            Element regions = doc.createElement("adminRegions");
            Set siteRegions = site.getRegions();
            Iterator itr = siteRegions.iterator();
            while (itr.hasNext()) {
                Region r = (Region) itr.next();
                Element rElem = doc.createElement("region");
                rElem.appendChild(doc.createElement("code"))
                        .appendChild(doc.createTextNode(fmt(r.getRegionCode(), "regionCode")));
                //descomentado--> adaptar nuevo xml
                rElem.appendChild(doc.createElement("name"))
                        .appendChild(doc.createTextNode(fmt(r.getRegionName(), "regionName")));
                regions.appendChild(rElem);
            }
            //adaptacion al nuevo xml
            location.appendChild(regions);

            /*bioregions*/
            Element biogeoRegions = doc.createElement("biogeoRegions");
            Set siteBioRegions = site.getSiteBiogeos();
            if (!(siteBioRegions.isEmpty())) {
                Iterator itbr = siteBioRegions.iterator();
                while (itbr.hasNext()) {
                    SiteBiogeo s = (SiteBiogeo) itbr.next();

                    Element biogeoElement = doc.createElement("biogeoRegions");
                    Biogeo b = s.getBiogeo();
                    //this XMl doesn't need validate, so it's better to use bioregion name instead bioregion code
                    biogeoElement.appendChild(doc.createElement("code"))
                            .appendChild(doc.createTextNode(fmt(b.getBiogeoName(), "bioRegionCode")));
                    biogeoElement.appendChild(doc.createElement("percentage"))
                            .appendChild(doc.createTextNode(fmt(s.getBiogeoPercent(), "biogeoPercent")));
                    location.appendChild(biogeoElement);
                }
            }

            sdf.appendChild(location);

            /********ECOLOGICAL INFORMATION***********/
            //adptacion nuevo XML
            Element ecologicalInformation = doc.createElement("ecologicalInformation");

            /************HABITATS****************/
            Element habitatsTypes = doc.createElement("habitatTypes");

            Set siteHabs = site.getHabitats();
            itr = siteHabs.iterator();
            while (itr.hasNext()) {
                Habitat h = (Habitat) itr.next();
                Element hElem = doc.createElement("habitatType");
                hElem.appendChild(doc.createElement("code"))
                        .appendChild(doc.createTextNode(fmt(h.getHabitatCode(), "habitatCode")));
                hElem.appendChild(doc.createElement("priorityFormOfHabitatType")).appendChild(
                        doc.createTextNode(fmt(toBoolean(h.getHabitatPriority()), "habitatPriority")));
                hElem.appendChild(doc.createElement("nonPresenceInSite"))
                        .appendChild(doc.createTextNode(fmt(toBoolean(h.getHabitatNp()), "habitatNp")));
                hElem.appendChild(doc.createElement("coveredArea"))
                        .appendChild(doc.createTextNode(fmt(h.getHabitatCoverHa(), "habitatCover")));
                hElem.appendChild(doc.createElement("caves"))
                        .appendChild(doc.createTextNode(fmt(h.getHabitatCaves(), "habitatCaves")));

                hElem.appendChild(doc.createElement("observationDataQuality"))
                        .appendChild(doc.createTextNode(fmt(h.getHabitatDataQuality(), "habitatDataQuality")));
                hElem.appendChild(doc.createElement("representativity")).appendChild(
                        doc.createTextNode(fmt(h.getHabitatRepresentativity(), "habitatRepresentativity")));
                hElem.appendChild(doc.createElement("relativeSurface"))
                        .appendChild(doc.createTextNode(fmt(h.getHabitatRelativeSurface(), "relativeSurface")));
                hElem.appendChild(doc.createElement("conservation")).appendChild(
                        doc.createTextNode(fmt(h.getHabitatConservation(), "habitatConservation")));
                hElem.appendChild(doc.createElement("global"))
                        .appendChild(doc.createTextNode(fmt(h.getHabitatGlobal(), "habitatGlobal")));

                habitatsTypes.appendChild(hElem);
            }
            ecologicalInformation.appendChild(habitatsTypes);

            /************SPECIES****************/
            Element specieses = doc.createElement("species");
            Set siteSpecies = site.getSpecieses();
            itr = siteSpecies.iterator();
            while (itr.hasNext()) {
                Species s = (Species) itr.next();
                Element sElem = doc.createElement("speciesPopulation");
                sElem.appendChild(doc.createElement("speciesGroup"))
                        .appendChild(doc.createTextNode(fmt(s.getSpeciesGroup(), "speciesGroup")));
                sElem.appendChild(doc.createElement("speciesCode"))
                        .appendChild(doc.createTextNode(fmt(s.getSpeciesCode(), "speciesCode")));
                sElem.appendChild(doc.createElement("scientificName"))
                        .appendChild(doc.createTextNode(fmt(s.getSpeciesName(), "speciesName")));

                sElem.appendChild(doc.createElement("sensitiveInfo")).appendChild(
                        doc.createTextNode(fmt(toBoolean(s.getSpeciesSensitive()), "speciesSensitive")));
                sElem.appendChild(doc.createElement("nonPresenceInSite"))
                        .appendChild(doc.createTextNode(fmt(toBoolean(s.getSpeciesNp()), "speciesNP")));
                sElem.appendChild(doc.createElement("populationType"))
                        .appendChild(doc.createTextNode(fmtToLowerCase(s.getSpeciesType(), "speciesType")));

                Element popElem = doc.createElement("populationSize");
                popElem.appendChild(doc.createElement("lowerBound"))
                        .appendChild(doc.createTextNode(fmt(s.getSpeciesSizeMin(), "speciesSizeMin")));
                popElem.appendChild(doc.createElement("upperBound"))
                        .appendChild(doc.createTextNode(fmt(s.getSpeciesSizeMax(), "speciesSizeMax")));
                popElem.appendChild(doc.createElement("countingUnit"))
                        .appendChild(doc.createTextNode(fmt(s.getSpeciesUnit(), "speciesUnit")));
                sElem.appendChild(popElem);

                if (s.getSpeciesCategory() != null) {
                    if (!("").equals(s.getSpeciesCategory().toString())) {
                        sElem.appendChild(doc.createElement("abundanceCategory")).appendChild(
                                doc.createTextNode(fmtToUpperCase(s.getSpeciesCategory(), "speciesCategory")));
                    }
                }

                sElem.appendChild(doc.createElement("dataQuality"))
                        .appendChild(doc.createTextNode(fmt(s.getSpeciesDataQuality(), "speciesQuality")));
                // sElem.appendChild(doc.createElement("observationDataQuality")).appendChild(doc.createTextNode(fmt(s.getSpeciesDataQuality(), "speciesQuality")));
                sElem.appendChild(doc.createElement("population"))
                        .appendChild(doc.createTextNode(fmt(s.getSpeciesPopulation(), "speciesPopulation")));
                sElem.appendChild(doc.createElement("conservation")).appendChild(
                        doc.createTextNode(fmt(s.getSpeciesConservation(), "speciesConservation")));

                sElem.appendChild(doc.createElement("isolation"))
                        .appendChild(doc.createTextNode(fmt(s.getSpeciesIsolation(), "speciesIsolation")));
                sElem.appendChild(doc.createElement("global"))
                        .appendChild(doc.createTextNode(fmt(s.getSpeciesGlobal(), "speciesGlobal")));

                specieses.appendChild(sElem);
            }

            siteSpecies = site.getOtherSpecieses();
            itr = siteSpecies.iterator();
            while (itr.hasNext()) {
                OtherSpecies s = (OtherSpecies) itr.next();
                Element sElem = doc.createElement("speciesPopulation");

                sElem.appendChild(doc.createElement("speciesGroup"))
                        .appendChild(doc.createTextNode(fmt(s.getOtherSpeciesGroup(), "ospeciesGroup")));
                sElem.appendChild(doc.createElement("speciesCode"))
                        .appendChild(doc.createTextNode(fmt(s.getOtherSpeciesCode(), "ospeciesCode")));
                sElem.appendChild(doc.createElement("scientificName"))
                        .appendChild(doc.createTextNode(fmt(s.getOtherSpeciesName(), "ospeciesName")));
                sElem.appendChild(doc.createElement("sensitiveInfo")).appendChild(
                        doc.createTextNode(fmt(toBoolean(s.getOtherSpeciesSensitive()), "ospeciesSensitive")));

                if (s.getOtherSpeciesNp() != null) {
                    if (!("").equals(s.getOtherSpeciesNp().toString())) {
                        sElem.appendChild(doc.createElement("nonPresenceInSite")).appendChild(
                                doc.createTextNode(fmt(toBoolean(s.getOtherSpeciesNp()), "ospeciesNP")));
                    }
                }

                Element popElem = doc.createElement("populationSize");
                popElem.appendChild(doc.createElement("lowerBound"))
                        .appendChild(doc.createTextNode(fmt(s.getOtherSpeciesSizeMin(), "speciesSizeMin")));
                popElem.appendChild(doc.createElement("upperBound"))
                        .appendChild(doc.createTextNode(fmt(s.getOtherSpeciesSizeMax(), "speciesSizeMax")));
                popElem.appendChild(doc.createElement("countingUnit"))
                        .appendChild(doc.createTextNode(fmt(s.getOtherSpeciesUnit(), "speciesUnit")));
                sElem.appendChild(popElem);
                if (s.getOtherSpeciesCategory() != null) {
                    if (!("").equals(s.getOtherSpeciesCategory().toString())) {
                        sElem.appendChild(doc.createElement("abundanceCategory")).appendChild(
                                doc.createTextNode(fmt(s.getOtherSpeciesCategory(), "ospeciesCategory")));
                    }
                }

                //modificar porque es un tree primero es motivations y despues el nodo motivation (solo en el caso que haya motivations es other species en caso contrario
                //es species
                if (s.getOtherSpeciesMotivation() != null && !(("").equals(s.getOtherSpeciesMotivation()))) {
                    Element sElemMot = doc.createElement("motivations");

                    String strMotivation = s.getOtherSpeciesMotivation();
                    StringTokenizer st2 = new StringTokenizer(strMotivation, ",");

                    while (st2.hasMoreElements()) {
                        String mot = (String) st2.nextElement();
                        sElemMot.appendChild(doc.createElement("motivation"))
                                .appendChild(doc.createTextNode(fmt(mot, "ospeciesMotivation")));
                        sElem.appendChild(sElemMot);
                    }
                }

                specieses.appendChild(sElem);
            }

            ecologicalInformation.appendChild(specieses);

            sdf.appendChild(ecologicalInformation);

            /**************DESCRIPTION***********************/
            Element description = doc.createElement("siteDescription");
            Set classes = site.getHabitatClasses();
            itr = classes.iterator();
            while (itr.hasNext()) {
                HabitatClass h = (HabitatClass) itr.next();
                Element cElem = doc.createElement("habitatClass");
                cElem.appendChild(doc.createElement("code"))
                        .appendChild(doc.createTextNode(fmt(h.getHabitatClassCode(), "habitatClassCode")));
                cElem.appendChild(doc.createElement("coveragePercentage"))
                        .appendChild(doc.createTextNode(fmt(h.getHabitatClassCover(), "habitatClassCover")));
                description.appendChild(cElem);
            }
            description.appendChild(doc.createElement("otherSiteCharacteristics")).appendChild(
                    doc.createTextNode(fmt(site.getSiteCharacteristics(), "otherSiteCharacteristics")));
            description.appendChild(doc.createElement("qualityAndImportance"))
                    .appendChild(doc.createTextNode(fmt(site.getSiteQuality(), "qualityAndImportance")));
            Element impacts = doc.createElement("impacts");
            Set siteImpacts = site.getImpacts();
            itr = siteImpacts.iterator();
            while (itr.hasNext()) {
                Element iElem = doc.createElement("impact");
                Impact im = (Impact) itr.next();
                iElem.appendChild(doc.createElement("code"))
                        .appendChild(doc.createTextNode(fmt(im.getImpactCode(), "impactCode")));

                iElem.appendChild(doc.createElement("rank"))
                        .appendChild(doc.createTextNode(fmt(im.getImpactRank(), "impactRank")));

                if (im.getImpactPollutionCode() != null) {
                    if (!("").equals(im.getImpactPollutionCode().toString())) {
                        iElem.appendChild(doc.createElement("pollutionCode")).appendChild(
                                doc.createTextNode(fmt(im.getImpactPollutionCode(), "impactPollution")));
                    }
                }

                iElem.appendChild(doc.createElement("occurrence"))
                        .appendChild(doc.createTextNode(fmt(im.getImpactOccurrence(), "impactOccurrece")));

                String impacType = "";
                if (im.getImpactType() != null) {
                    if (("P").equals(im.getImpactType().toString())) {
                        impacType = "Positive";
                    } else {
                        impacType = "Negative";
                    }
                }

                iElem.appendChild(doc.createElement("natureOfImpact"))
                        .appendChild(doc.createTextNode(fmt(impacType, "natureOfImpact")));
                impacts.appendChild(iElem);
            }

            description.appendChild(impacts);

            Element ownership = doc.createElement("ownership");
            Set owners = site.getSiteOwnerships();
            itr = owners.iterator();
            while (itr.hasNext()) {
                SiteOwnership o = (SiteOwnership) itr.next();
                Ownership o2 = o.getOwnership();
                Element oElem = doc.createElement("ownershipPart");
                //oElem.appendChild(doc.createElement("ownershiptype")).appendChild(doc.createTextNode(fmt(o2.getOwnershipType(), "ownershipType")));
                oElem.appendChild(doc.createElement("ownershiptype"))
                        .appendChild(doc.createTextNode(fmt(o2.getOwnershipCode(), "ownershipType")));
                oElem.appendChild(doc.createElement("percent"))
                        .appendChild(doc.createTextNode(fmt(o.getOwnershipPercent(), "ownershipPercent")));
                ownership.appendChild(oElem);
            }

            description.appendChild(ownership);

            Element documentation = doc.createElement("documentation");
            Doc docObj = site.getDoc();
            if (docObj != null) {
                documentation.appendChild(doc.createElement("description"))
                        .appendChild(doc.createTextNode(fmt(docObj.getDocDescription(), "docDescription")));
                Set docLinks = docObj.getDocLinks();
                itr = docLinks.iterator();
                Element links = doc.createElement("links");
                while (itr.hasNext()) {
                    DocLink docLink = (DocLink) itr.next();
                    links.appendChild(doc.createElement("link"))
                            .appendChild(doc.createTextNode(fmt(docLink.getDocLinkUrl(), "linkURL")));
                }
                documentation.appendChild(links);
                description.appendChild(documentation);
            }
            sdf.appendChild(description);

            /********PROTECTION**********/
            Element protection = doc.createElement("siteProtection");

            Element natDesigs = doc.createElement("nationalDesignations");
            Set dsigs = site.getNationalDtypes();
            itr = dsigs.iterator();
            while (itr.hasNext()) {
                NationalDtype dtype = (NationalDtype) itr.next();
                Element nElem = doc.createElement("nationalDesignation");
                nElem.appendChild(doc.createElement("designationCode"))
                        .appendChild(doc.createTextNode(fmt(dtype.getNationalDtypeCode(), "dtypecode")));
                nElem.appendChild(doc.createElement("cover"))
                        .appendChild(doc.createTextNode(fmt(dtype.getNationalDtypeCover(), "dtypecover")));
                natDesigs.appendChild(nElem);
            }
            protection.appendChild(natDesigs);

            Set rels = site.getSiteRelations();
            if (!rels.isEmpty()) {
                Element relations = doc.createElement("relations");
                Element nationalRelations = doc.createElement("nationalRelationships");
                Element internationalRelations = doc.createElement("internationalRelationships");

                itr = rels.iterator();
                while (itr.hasNext()) {
                    SiteRelation rel = (SiteRelation) itr.next();
                    Element rElem;
                    Character scope = rel.getSiteRelationScope();
                    if (Character.toLowerCase(scope) == 'n') {
                        rElem = doc.createElement("nationalRelationship");
                        rElem.appendChild(doc.createElement("designationCode")).appendChild(
                                doc.createTextNode(fmt(rel.getSiteRelationCode(), "relationCode")));
                        nationalRelations.appendChild(rElem);
                    } else if (Character.toLowerCase(scope) == 'i') {
                        rElem = doc.createElement("internationalRelationship");
                        rElem.appendChild(doc.createElement("convention")).appendChild(
                                doc.createTextNode(fmt(rel.getSiteRelationConvention(), "relationConvention")));
                        internationalRelations.appendChild(rElem);
                    } else {
                        //                            log("Relation type undefined, ignoring relation: " + scope.toString());
                        continue;
                    }
                    rElem.appendChild(doc.createElement("siteName")).appendChild(
                            doc.createTextNode(fmt(rel.getSiteRelationSitename(), "relationSite")));
                    rElem.appendChild(doc.createElement("type"))
                            .appendChild(doc.createTextNode(fmt(rel.getSiteRelationType(), "relationType")));
                    rElem.appendChild(doc.createElement("cover"))
                            .appendChild(doc.createTextNode(fmt(rel.getSiteRelationCover(), "relationCover")));
                }
                relations.appendChild(nationalRelations);
                relations.appendChild(internationalRelations);

                protection.appendChild(relations);
            }

            protection.appendChild(doc.createElement("siteDesignationAdditional"))
                    .appendChild(doc.createTextNode(fmt(site.getSiteDesignation(), "siteDesignation")));
            sdf.appendChild(protection);

            /******************MANAGEMENT************************/
            Element mgmtElem = doc.createElement("siteManagement");
            Mgmt mgmt = site.getMgmt();
            if (mgmt != null) {
                /***Mangement Body**/
                Set bodies = mgmt.getMgmtBodies();
                itr = bodies.iterator();
                Element bodiesElem = doc.createElement("managementBodies");
                while (itr.hasNext()) {
                    MgmtBody bodyObj = (MgmtBody) itr.next();
                    Element bElem = doc.createElement("managementBody");
                    bElem.appendChild(doc.createElement("organisation"))
                            .appendChild(doc.createTextNode(fmt(bodyObj.getMgmtBodyOrg(), "mgmtBodyOrg")));
                    //if el campo addressunestructured esta vacio entonces addres es un tipo complejo (implementar) en caso contrario
                    //if (resp.getRespAddressArea() != null && !!resp.getRespAddressArea().equals("")) {
                    if (bodyObj.getMgmtBodyAddressArea() != null
                            && !bodyObj.getMgmtBodyAddressArea().equals("")) {
                        Element addresElem = doc.createElement("address");

                        addresElem.appendChild(doc.createElement("adminUnit")).appendChild(
                                doc.createTextNode(fmt(bodyObj.getMgmtBodyAdminUnit(), "adminUnit") + "  "));
                        addresElem.appendChild(doc.createElement("locatorDesignator")).appendChild(doc
                                .createTextNode(fmt(bodyObj.getMgmtBodyThroughFare(), "thoroughfare") + "  "));
                        addresElem.appendChild(doc.createElement("locatorName")).appendChild(doc.createTextNode(
                                fmt(bodyObj.getMgmtBodyLocatorDesignator(), "locatorDesignator") + "  "));
                        addresElem.appendChild(doc.createElement("addressArea")).appendChild(
                                doc.createTextNode(fmt(bodyObj.getMgmtBodyPostCode(), "postCode") + "  "));
                        addresElem.appendChild(doc.createElement("postName")).appendChild(
                                doc.createTextNode(fmt(bodyObj.getMgmtBodyPostName(), "postName") + "  "));
                        addresElem.appendChild(doc.createElement("postCode")).appendChild(doc
                                .createTextNode(fmt(bodyObj.getMgmtBodyAddressArea(), "addressArea") + "  "));
                        addresElem.appendChild(doc.createElement("thoroughfare")).appendChild(doc
                                .createTextNode(fmt(bodyObj.getMgmtBodyLocatorName(), "locatorName") + "  "));
                        bElem.appendChild(addresElem);

                    } else {
                        Element addresElem = doc.createElement("address");
                        addresElem.appendChild(doc.createElement("addressArea")).appendChild(
                                doc.createTextNode(fmt(bodyObj.getMgmtBodyAddress(), "addressArea")));
                        bElem.appendChild(addresElem);
                    }

                    bElem.appendChild(doc.createElement("email"))
                            .appendChild(doc.createTextNode(fmt(bodyObj.getMgmtBodyEmail(), "mgmtBodyMail")));
                    bodiesElem.appendChild(bElem);
                }
                mgmtElem.appendChild(bodiesElem);

                /***Mangement Plan**/
                Character status = mgmt.getMgmtStatus();
                Element mgmtExists = (Element) mgmtElem.appendChild(doc.createElement("exists"));
                if (status != null) {
                    mgmtExists
                            .appendChild(doc.createTextNode(fmt(Character.toUpperCase(status), "mgmtExists")));
                }
                Set plans = mgmt.getMgmtPlans();
                itr = plans.iterator();
                Element plansElem = doc.createElement("managementPlans");
                plansElem.appendChild(mgmtExists);
                while (itr.hasNext()) {
                    MgmtPlan planObj = (MgmtPlan) itr.next();
                    Element pElem = doc.createElement("managementPlan");
                    pElem.appendChild(doc.createElement("name"))
                            .appendChild(doc.createTextNode(fmt(planObj.getMgmtPlanName(), "mgmtPlanName")));
                    pElem.appendChild(doc.createElement("url"))
                            .appendChild(doc.createTextNode(fmt(planObj.getMgmtPlanUrl(), "mgmtPlanUrl")));
                    plansElem.appendChild(pElem);
                }
                mgmtElem.appendChild(plansElem);

                mgmtElem.appendChild(doc.createElement("conservationMeasures")).appendChild(
                        doc.createTextNode(fmt(mgmt.getMgmtConservMeasures(), "conservationMeasures")));
            }
            sdf.appendChild(mgmtElem);

            Map map = site.getMap();
            Element mapElem = doc.createElement("map");
            if (map != null) {
                mapElem.appendChild(doc.createElement("InspireID"))
                        .appendChild(doc.createTextNode(fmt(map.getMapInspire(), "mapInspireID")));

                Boolean bMap;
                if (map.getMapPdf() != null && map.getMapPdf().equals(Short.valueOf("1"))) {
                    bMap = true;
                } else {
                    bMap = false;
                }

                mapElem.appendChild(doc.createElement("pdfProvided"))
                        .appendChild(doc.createTextNode(fmt(bMap, "mapPDF")));
                mapElem.appendChild(doc.createElement("mapReference"))
                        .appendChild(doc.createTextNode(fmt(map.getMapReference(), "mapRef")));
            }
            sdf.appendChild(mapElem);

            if (flush++ % 100 == 0) {
                session.clear();
            }
            sdfs.appendChild(sdf);
        }

        //All the data is stored in the node instead of the document.
        Source source = new DOMSource(doc);

        File file = new File(new File("").getAbsolutePath() + File.separator + "xsl" + File.separator + "Site_"
                + this.siteCode + ".html");
        Result result = new StreamResult(file.toURI().getPath());

        TransformerFactory tFactory = TransformerFactory.newInstance();
        Source xsl;
        if (SDF_ManagerApp.isEmeraldMode()) {
            xsl = new StreamSource(new File("").getAbsolutePath() + File.separator + "xsl" + File.separator
                    + "EmeraldSiteXSL.xsl");
        } else {
            xsl = new StreamSource(
                    new File("").getAbsolutePath() + File.separator + "xsl" + File.separator + "SiteXSL.xsl");
        }

        Templates template = tFactory.newTemplates(xsl);
        Transformer transformer = template.newTransformer();
        transformer.setOutputProperty(OutputKeys.INDENT, "yes");
        transformer.setOutputProperty(OutputKeys.CDATA_SECTION_ELEMENTS,
                "siteName name otherSiteCharacteristics"
                        + " qualityAndImportance selectiveBasis derogationJustification comments "
                        + "location licensedJustification licensingAuthority licenseValidFrom licenseValidUntil otherType "
                        + "method activity reason");

        transformer.transform(source, result);
        String pdfPath = this.filePath + "\\Site_" + this.siteCode + ".pdf";

        os = new FileOutputStream(new File(pdfPath));

        ITextRenderer renderer = new ITextRenderer();
        FontFactory.registerDirectory("resources/fonts");

        renderer.setDocument(file);
        renderer.layout();
        renderer.createPDF(os);

        return null;
    } catch (TransformerConfigurationException e) {
        //e.printStackTrace();
        GenerateSitePDF.log
                .error("A TransformerConfigurationException has occurred in processDatabase. Error Message:::"
                        + e.getMessage());
        return null;
    } catch (TransformerException e) {
        //e.printStackTrace();
        GenerateSitePDF.log.error(
                "A TransformerException has occurred in processDatabase. Error Message:::" + e.getMessage());
        return null;
    } catch (FileNotFoundException e) {
        GenerateSitePDF.log.error(
                "A FileNotFoundException has occurred in processDatabase. Error Message:::" + e.getMessage());
        //e.printStackTrace();
        return null;
    } catch (IOException e) {
        GenerateSitePDF.log
                .error("An IOException has occurred in processDatabase. Error Message:::" + e.getMessage());
        //e.printStackTrace();
        return null;
    } catch (Exception e) {
        //e.printStackTrace();
        GenerateSitePDF.log.error(
                "A general exception has occurred in processDatabase. Error Message:::" + e.getMessage());
        return null;
    } finally {
        IOUtils.closeQuietly(os);
        session.close();
    }

}

From source file:servlet.PdfServlet1.java

/**
 * Processes requests for both HTTP/*  w w  w  .j a v a  2  s . c om*/
 * <code>GET</code> and
 * <code>POST</code> methods.
 *
 * @param request servlet request
 * @param response servlet response
 * @throws ServletException if a servlet-specific error occurs
 * @throws IOException if an I/O error occurs
 */
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    MyQuery mq = new MyQuery();

    ServletContext webApp = this.getServletContext();

    try {
        TransformerFactory tFactory = TransformerFactory.newInstance();

        FopFactory fopFactory = FopFactory.newInstance();

        //Setup a buffer to obtain the content length
        ByteArrayOutputStream out = new ByteArrayOutputStream();

        Templates templates = tFactory.newTemplates(new StreamSource(webApp.getRealPath(XSLT_PATH)));
        // Create a transformer
        Transformer transformer = templates.newTransformer();

        // Get concrete implementation
        DocumentBuilderFactory dFactory = DocumentBuilderFactory.newInstance();
        // Need a parser that support namespaces
        dFactory.setNamespaceAware(true);
        // Create the parser
        DocumentBuilder parser = dFactory.newDocumentBuilder();
        // Parse the XML document
        InputSource is = new InputSource(new StringReader(mq.getStarsBis()));
        // Parse the XML document

        Document doc = parser.parse(is);

        //Setup FOP
        Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, out);

        //Make sure the XSL transformation's result is piped through to FOP
        Result res = new SAXResult(fop.getDefaultHandler());

        //Setup input
        Source src = new DOMSource(doc);

        //Start the transformation and rendering process
        transformer.transform(src, res);

        //Prepare response
        response.setContentType("application/pdf");
        response.setContentLength(out.size());

        //Send content to Browser
        response.getOutputStream().write(out.toByteArray());
        response.getOutputStream().flush();
    } catch (Exception ex) {
        throw new ServletException(ex);
    }
}

From source file:servlet.PdfServlet2.java

/**
 * Processes requests for both HTTP/* ww  w  . ja v a  2  s.c  o  m*/
 * <code>GET</code> and
 * <code>POST</code> methods.
 *
 * @param request servlet request
 * @param response servlet response
 * @throws ServletException if a servlet-specific error occurs
 * @throws IOException if an I/O error occurs
 */
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    MyQuery mq = new MyQuery();

    ServletContext webApp = this.getServletContext();

    try {
        TransformerFactory tFactory = TransformerFactory.newInstance();

        FopFactory fopFactory = FopFactory.newInstance();

        //Setup a buffer to obtain the content length
        ByteArrayOutputStream out = new ByteArrayOutputStream();

        Templates templates = tFactory.newTemplates(new StreamSource(webApp.getRealPath(XSLT_PATH)));
        // Create a transformer
        Transformer transformer = templates.newTransformer();

        // Get concrete implementation
        DocumentBuilderFactory dFactory = DocumentBuilderFactory.newInstance();
        // Need a parser that support namespaces
        dFactory.setNamespaceAware(true);
        // Create the parser
        DocumentBuilder parser = dFactory.newDocumentBuilder();
        // Parse the XML document
        InputSource is = new InputSource(new StringReader(mq.getPayments()));
        // Parse the XML document

        Document doc = parser.parse(is);

        //Setup FOP
        Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, out);

        //Make sure the XSL transformation's result is piped through to FOP
        Result res = new SAXResult(fop.getDefaultHandler());

        //Setup input
        Source src = new DOMSource(doc);

        //Start the transformation and rendering process
        transformer.transform(src, res);

        //Prepare response
        response.setContentType("application/pdf");
        response.setContentLength(out.size());

        //Send content to Browser
        response.getOutputStream().write(out.toByteArray());
        response.getOutputStream().flush();
    } catch (Exception ex) {
        throw new ServletException(ex);
    }
}

From source file:Servlet.ServletFOP.java

/**
 * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
 * methods.//from   w ww.jav a  2  s  . c  om
 *
 * @param request servlet request
 * @param response servlet response
 * @throws ServletException if a servlet-specific error occurs
 * @throws IOException if an I/O error occurs
 */
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {

    ServletContext webApp = this.getServletContext();

    try {

        TransformerFactory tFactory = TransformerFactory.newInstance();

        FopFactory fopFactory = FopFactory.newInstance();

        //Setup a buffer to obtain the content length
        ByteArrayOutputStream out = new ByteArrayOutputStream();

        Templates templates = tFactory.newTemplates(new StreamSource(webApp.getRealPath(XSLT_PATH)));
        // Create a transformer
        Transformer transformer = templates.newTransformer();

        // Get concrete implementation
        DocumentBuilderFactory dFactory = DocumentBuilderFactory.newInstance();
        // Need a parser that support namespaces
        dFactory.setNamespaceAware(true);
        // Create the parser
        DocumentBuilder parser = dFactory.newDocumentBuilder();

        InputSource is = new InputSource(new StringReader(new Query().chartFOP()));
        // Parse the XML document
        Document doc = parser.parse(is);

        //Setup FOP
        Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, out);

        //Make sure the XSL transformation's result is piped through to FOP
        Result res = new SAXResult(fop.getDefaultHandler());

        //Setup input
        Source src = new DOMSource(doc);

        //Start the transformation and rendering process
        transformer.transform(src, res);

        //Prepare response
        response.setContentType("application/pdf");
        response.setContentLength(out.size());

        //Send content to Browser
        response.getOutputStream().write(out.toByteArray());
        response.getOutputStream().flush();
    } catch (Exception ex) {
        throw new ServletException(ex);
    }
}