Example usage for org.apache.commons.digester3 Digester addCallParam

List of usage examples for org.apache.commons.digester3 Digester addCallParam

Introduction

In this page you can find the example usage for org.apache.commons.digester3 Digester addCallParam.

Prototype

public void addCallParam(String pattern, int paramIndex, int stackIndex) 

Source Link

Document

Add a "call parameter" rule that sets a parameter from the stack.

Usage

From source file:org.esupportail.monitor.web.tools.Config.java

/**
 * Lit le fichier de configuration//from   w w w .j a va2 s  .c om
 */
private void parseConfigFile() {
    Digester dig = new Digester();
    dig.push(this);

    dig.addCallMethod("config/server", "addServer", 2);
    dig.addCallParam("config/server", 0, "name");
    dig.addCallParam("config/server", 1, "url");

    URL resourceURL = Config.class.getResource(configFile);
    if (resourceURL != null) {
        try {
            // On parse le fichier dont le chemin est pass en paramtre
            dig.parse(new InputSource(resourceURL.toExternalForm()));
        } catch (IOException e) {
            logger.error("Config::parseConfig() : Impossible d'ouvrir le fichier de config \n" + e);
        } catch (SAXException e) {
            logger.error("Config::parseConfig() : SAXException :\n" + e);
        } catch (Exception e) {
            logger.error("Config::parseConfig() : Exception :\n" + e);
        }
    } else {
        logger.error("Config::parseConfig() : Le fichier de configuration est introuvable");
    }
}

From source file:org.esupportail.monitor.web.tools.InfosCollector.java

/**
 * Rcupre les informations d'un serveur distant
 * @param s L'objet  remplit/*  w w w  .ja  v a2 s .c o m*/
 * @return status vrai si tout se passe bien, faux sinon
 */
public static boolean fetch(ServerInfo s, boolean users) {

    Digester dig = new Digester();
    dig.push(s);

    dig.addObjectCreate("runtimeinfo/memory", MemoryInfo.class);
    dig.addSetProperties("runtimeinfo/memory");
    dig.addSetNext("runtimeinfo/memory", "setMemory");

    dig.addObjectCreate("runtimeinfo/sessions", SessionInfo.class);
    dig.addSetProperties("runtimeinfo/sessions");
    dig.addSetNext("runtimeinfo/sessions", "setSession");

    dig.addCallMethod("runtimeinfo/users/user", "addUser", 1);
    dig.addCallParam("runtimeinfo/users/user", 0, "uid");

    URL ressourceUrl = null;
    try {
        if (users) {
            ressourceUrl = new URL(s.getUrl() + "?xml=full");
        } else {
            ressourceUrl = new URL(s.getUrl() + "?xml");
        }
    } catch (MalformedURLException e) {
        //  logger.error(e);
        System.out.print(e + "\n");
        return false;
    }
    if (ressourceUrl != null) {
        try {
            // On parse le fichier dont le chemin est pass en paramtre
            dig.parse(new InputSource(ressourceUrl.toExternalForm()));

        } catch (IOException e) {
            //logger.error("InfosCollector::fetch() : Impossible d'ouvrir l'URL \n" + e);
            System.out.print("InfosCollector::fetch() : Impossible d'ouvrir l'URL \n" + e);
            return false;
        } catch (SAXException e) {
            //logger.error("InfosCollector::fetch() : SAXException :\n" + e);
            System.out.print("InfosCollector::fetch() : SAXException :\n" + e);
            return false;
        } catch (Exception e) {
            //logger.error("InfosCollector::fetch() : Exception :\n" + e);
            System.out.print("InfosCollector::fetch() : Exception :\n" + e);
            return false;
        }
    } else {
        //logger.error("InfosCollector::fetch() : L'URL est introuvable");
        System.out.print("InfosCollector::fetch() : L'URL est introuvable");
        return false;
    }
    return true;
}

From source file:org.gbif.metadata.eml.EmlFactory.java

/**
 * Uses rule based parsing to read the EML XML and build the EML model.
 * Note the following: - Metadata provider rules are omitted on the assumption that the provider is the same as the
 * creator - Contact rules are omitted on the assumption that contacts are covered by the creator and associated
 * parties - Publisher rules are omitted on the assumption the publisher is covered by the creator and associated
 * parties/* w  w  w  .  ja v a2s  .co m*/
 *
 * @param xml To read. Note this will be closed before returning
 *
 * @return The EML populated
 *
 * @throws IOException  If the Stream cannot be read from
 * @throws SAXException If the XML is not well formed
 */
public static Eml build(InputStream xml) throws IOException, SAXException, ParserConfigurationException {
    Digester digester = new Digester();
    digester.setNamespaceAware(true);

    // push the EML object onto the stack
    Eml eml = new Eml();
    digester.push(eml);

    // add the rules

    // language as xml:lang attribute
    digester.addCallMethod("eml", "setMetadataLanguage", 1);
    digester.addCallParam("eml", 0, "xml:lang");
    // guid as packageId attribute
    digester.addCallMethod("eml", "setPackageId", 1);
    digester.addCallParam("eml", 0, "packageId");

    // alternative ids
    digester.addCallMethod("eml/dataset/alternateIdentifier", "addAlternateIdentifier", 1);
    digester.addCallParam("eml/dataset/alternateIdentifier", 0);

    // title together with language
    digester.addCallMethod("eml/dataset/title", "setTitle", 2);
    digester.addCallParam("eml/dataset/title", 0);
    digester.addCallParam("eml/dataset/title", 1, "xml:lang");

    digester.addBeanPropertySetter("eml/dataset/language", "language");

    // descriptions, broken into multiple paragraphs
    digester.addCallMethod("eml/dataset/abstract/para", "addDescriptionPara", 1);
    digester.addCallParam("eml/dataset/abstract/para", 0);

    digester.addBeanPropertySetter("eml/dataset/additionalInfo/para", "additionalInfo");
    digester.addRule("eml/dataset/intellectualRights/para", new NodeCreateRule(Node.ELEMENT_NODE));
    digester.addSetNext("eml/dataset/intellectualRights/para", "parseIntellectualRights");
    digester.addCallMethod("eml/dataset/methods/methodStep/description/para", "addMethodStep", 1);
    digester.addCallParam("eml/dataset/methods/methodStep/description/para", 0);
    digester.addBeanPropertySetter("eml/dataset/methods/sampling/studyExtent/description/para", "studyExtent");
    digester.addBeanPropertySetter("eml/dataset/methods/sampling/samplingDescription/para",
            "sampleDescription");
    digester.addBeanPropertySetter("eml/dataset/methods/qualityControl/description/para", "qualityControl");
    digester.addBeanPropertySetter("eml/dataset/distribution/online/url", "distributionUrl");
    digester.addBeanPropertySetter("eml/dataset/purpose/para", "purpose");
    digester.addBeanPropertySetter("eml/dataset/maintenance/description/para", "updateFrequencyDescription");
    digester.addCallMethod("eml/dataset/maintenance/maintenanceUpdateFrequency", "setUpdateFrequency", 1);
    digester.addCallParam("eml/dataset/maintenance/maintenanceUpdateFrequency", 0);
    digester.addCallMethod("eml/additionalMetadata/metadata/gbif/citation", "setCitation", 2);
    digester.addCallParam("eml/additionalMetadata/metadata/gbif/citation", 0);
    digester.addCallParam("eml/additionalMetadata/metadata/gbif/citation", 1, "identifier");
    digester.addCallMethod("eml/additionalMetadata/metadata/gbif/specimenPreservationMethod",
            "addSpecimenPreservationMethod", 1);
    digester.addCallParam("eml/additionalMetadata/metadata/gbif/specimenPreservationMethod", 0);
    digester.addBeanPropertySetter("eml/additionalMetadata/metadata/gbif/resourceLogoUrl", "logoUrl");
    digester.addBeanPropertySetter("eml/additionalMetadata/metadata/gbif/hierarchyLevel", "hierarchyLevel");
    digester.addCallMethod("eml/dataset/pubDate", "setPubDateAsString", 1);
    digester.addCallParam("eml/dataset/pubDate", 0);

    digester.addCallMethod("eml/additionalMetadata/metadata/gbif/dateStamp", "setDateStamp", 1);
    digester.addCallParam("eml/additionalMetadata/metadata/gbif/dateStamp", 0);

    addAgentRules(digester, "eml/dataset/creator", "addCreator");
    addAgentRules(digester, "eml/dataset/metadataProvider", "addMetadataProvider");
    addAgentRules(digester, "eml/dataset/contact", "addContact");
    addAgentRules(digester, "eml/dataset/associatedParty", "addAssociatedParty");
    addKeywordRules(digester);
    addBibliographicCitations(digester);
    addGeographicCoverageRules(digester);
    addTemporalCoverageRules(digester);
    addLivingTimePeriodRules(digester);
    addFormationPeriodRules(digester);
    addTaxonomicCoverageRules(digester);
    addProjectRules(digester);
    addCollectionRules(digester);
    addPhysicalDataRules(digester);
    addJGTICuratorialIUnit(digester);

    // now parse and return the EML
    try {
        digester.parse(xml);
    } finally {
        xml.close();
    }

    return eml;
}

From source file:org.gbif.metadata.eml.EmlFactory.java

/**
 * This is a reusable set of rules to build Agents and their Addresses, and add the Agent to the predecessor object
 * on the Stack Note that we are ignoring the userId as there have been no requests for the IPT to support this.
 *
 * @param digester     to add the rules to
 * @param prefix       The XPath prefix to prepend for extracting the Agent information
 * @param parentMethod Of the previous stack object to call and add the Agent to
 *///from  w  ww  . j a v  a 2  s.co  m
private static void addAgentRules(Digester digester, String prefix, String parentMethod) {
    digester.addObjectCreate(prefix, Agent.class);
    digester.addBeanPropertySetter(prefix + "/individualName/givenName", "firstName");
    digester.addBeanPropertySetter(prefix + "/individualName/surName", "lastName");
    digester.addBeanPropertySetter(prefix + "/organizationName", "organisation");
    digester.addBeanPropertySetter(prefix + "/positionName", "position");
    digester.addBeanPropertySetter(prefix + "/phone", "phone");
    digester.addBeanPropertySetter(prefix + "/electronicMailAddress", "email");
    digester.addBeanPropertySetter(prefix + "/onlineUrl", "homepage");

    digester.addBeanPropertySetter(prefix + "/role", "role");

    digester.addObjectCreate(prefix + "/address", Address.class);
    digester.addBeanPropertySetter(prefix + "/address/city", "city");
    digester.addBeanPropertySetter(prefix + "/address/administrativeArea", "province");
    digester.addBeanPropertySetter(prefix + "/address/postalCode", "postalCode");
    digester.addBeanPropertySetter(prefix + "/address/country", "country");
    digester.addBeanPropertySetter(prefix + "/address/deliveryPoint", "address");
    digester.addSetNext(prefix + "/address", "setAddress"); // called on </address> to set on parent Agent

    digester.addObjectCreate(prefix + "/userId", UserId.class);
    digester.addCallMethod(prefix + "/userId", "setDirectory", 1);
    digester.addCallParam(prefix + "/userId", 0, "directory");
    digester.addBeanPropertySetter(prefix + "/userId", "identifier");
    digester.addSetNext(prefix + "/userId", "addUserId"); // called on </userId> to set on parent Agent

    digester.addSetNext(prefix, parentMethod); // method called on parent object which is the previous stack object
}

From source file:org.gbif.metadata.eml.EmlFactory.java

/**
 * Add rules for parsing the project details.
 *
 * @param digester to add the rules to/*w ww .j  av a  2 s.  c om*/
 */
private static void addProjectRules(Digester digester) {
    digester.addObjectCreate("eml/dataset/project", Project.class);
    digester.addCallMethod("eml/dataset/project", "setIdentifier", 1);
    digester.addCallParam("eml/dataset/project", 0, "id");
    digester.addBeanPropertySetter("eml/dataset/project/title", "title");
    addAgentRules(digester, "eml/dataset/project/personnel", "addProjectPersonnel");
    digester.addBeanPropertySetter("eml/dataset/project/abstract/para", "description");
    digester.addBeanPropertySetter("eml/dataset/project/funding/para", "funding");
    addStudyAreaDescriptionRules(digester);
    digester.addBeanPropertySetter("eml/dataset/project/designDescription/description/para",
            "designDescription");
    digester.addSetNext("eml/dataset/project", "setProject");
}

From source file:org.gbif.metadata.eml.EmlFactory.java

/**
 * Adds rules for the study area description: <studyAreaDescription> <descriptor name="generic"
 * citableClassificationSystem="false"> <descriptorValue>Turkish Mountains</descriptorValue> </descriptor>
 * </studyAreaDescription>/*from  w  ww  .  j  a v  a 2  s.c o  m*/
 *
 * @param digester To add the rules to
 */
private static void addStudyAreaDescriptionRules(Digester digester) {
    digester.addObjectCreate("eml/dataset/project/studyAreaDescription", StudyAreaDescription.class);

    // get the descriptor@name attribute and set it
    digester.addCallMethod("eml/dataset/project/studyAreaDescription/descriptor", "setName", 1);
    digester.addCallParam("eml/dataset/project/studyAreaDescription/descriptor", 0, "name");

    // get the descriptor@citableClassificationSystem and set it
    digester.addCallMethod("eml/dataset/project/studyAreaDescription/descriptor",
            "setCitableClassificationSystem", 1);
    digester.addCallParam("eml/dataset/project/studyAreaDescription/descriptor", 0,
            "citableClassificationSystem");

    // set the value of the StudyAreaDescription
    digester.addBeanPropertySetter("eml/dataset/project/studyAreaDescription/descriptor/descriptorValue",
            "descriptorValue");

    // add the StudyAreaDescription to the project
    digester.addSetNext("eml/dataset/project/studyAreaDescription", "setStudyAreaDescription");
}