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

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

Introduction

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

Prototype

public void addBeanPropertySetter(String pattern, String propertyName) 

Source Link

Document

Add a "bean property setter" rule for the specified parameters.

Usage

From source file:eu.scape_project.planning.services.pa.PreservationActionRegistryFactory.java

static public List<PreservationActionRegistryDefinition> getAvailableRegistries()
        throws PlanningServiceException {
    ArrayList<PreservationActionRegistryDefinition> allRegistries = new ArrayList<PreservationActionRegistryDefinition>();

    String configFile = "data/services/PreservationActionRegistries.xml";
    InputStream config = Thread.currentThread().getContextClassLoader().getResourceAsStream(configFile);

    if (config == null) {
        throw new PlanningServiceException("Config file not found: " + configFile);
    }/*w ww.java 2  s . c o m*/

    Digester digester = new Digester();
    digester.setValidating(false);
    digester.setErrorHandler(new StrictErrorHandler());

    digester.push(allRegistries);
    digester.addObjectCreate("*/registry", PreservationActionRegistryDefinition.class);
    digester.addBeanPropertySetter("*/registry/shortname", "shortname");
    digester.addBeanPropertySetter("*/registry/logo", "logo");
    digester.addBeanPropertySetter("*/registry/url", "url");
    digester.addBeanPropertySetter("*/registry/type", "type");
    digester.addBeanPropertySetter("*/registry/active", "active");
    digester.addSetNext("*/registry", "add");

    try {
        digester.setUseContextClassLoader(true);
        digester.parse(config);
    } catch (Exception e) {
        throw new PlanningServiceException(e);
    }
    return allRegistries;
}

From source file:com.dreikraft.axbo.sound.SoundPackageUtil.java

/**
 * Reads meta information from package-info.xml (as stream)
 *
 * @param packageInfoXmlStream the package-info.xml FileInputStream
 * @return the sound package info read from the stream
 * @throws com.dreikraft.infactory.sound.SoundPackageException encapsulates
 * all low level (IO) exceptions/*  ww  w .j  av  a 2 s  .  c  o  m*/
 */
public static SoundPackage readPackageInfo(InputStream packageInfoXmlStream) throws SoundPackageException {
    Digester digester = new Digester();
    digester.setValidating(false);
    digester.setRules(new ExtendedBaseRules());

    digester.addObjectCreate(SoundPackageNodes.axboSounds.toString(), SoundPackage.class);
    digester.addBeanPropertySetter(SoundPackageNodes.axboSounds + SL + SoundPackageNodes.packageName, "name");
    digester.addBeanPropertySetter(SoundPackageNodes.axboSounds + SL + SoundPackageNodes.creator, "creator");
    digester.addBeanPropertySetter(SoundPackageNodes.axboSounds + SL + SoundPackageNodes.creationDate,
            "creationDate");
    digester.addBeanPropertySetter(SoundPackageNodes.axboSounds + SL + SoundPackageNodes.security + SL
            + SoundPackageNodes.serialNumber, "serialNumber");
    digester.addBeanPropertySetter(
            SoundPackageNodes.axboSounds + SL + SoundPackageNodes.security + SL + SoundPackageNodes.enforced,
            "securityEnforced");

    digester.addObjectCreate(SoundPackageNodes.axboSounds + SL + SoundPackageNodes.sounds, ArrayList.class);
    digester.addSetNext(SoundPackageNodes.axboSounds + SL + SoundPackageNodes.sounds, "setSounds");

    digester.addObjectCreate(
            SoundPackageNodes.axboSounds + SL + SoundPackageNodes.sounds + SL + SoundPackageNodes.sound,
            Sound.class);
    digester.addSetNext(
            SoundPackageNodes.axboSounds + SL + SoundPackageNodes.sounds + SL + SoundPackageNodes.sound, "add");
    digester.addSetProperties(
            SoundPackageNodes.axboSounds + SL + SoundPackageNodes.sounds + SL + SoundPackageNodes.sound, "id",
            "id");
    digester.addBeanPropertySetter(SoundPackageNodes.axboSounds + SL + SoundPackageNodes.sounds + SL
            + SoundPackageNodes.sound + SL + SoundPackageNodes.displayName, "name");

    digester.addObjectCreate(SoundPackageNodes.axboSounds + SL + SoundPackageNodes.sounds + SL
            + SoundPackageNodes.sound + SL + SoundPackageNodes.axboFile, SoundFile.class);
    digester.addSetNext(SoundPackageNodes.axboSounds + SL + SoundPackageNodes.sounds + SL
            + SoundPackageNodes.sound + SL + SoundPackageNodes.axboFile, "setAxboFile");
    digester.addBeanPropertySetter(SoundPackageNodes.axboSounds + SL + SoundPackageNodes.sounds + SL
            + SoundPackageNodes.sound + SL + SoundPackageNodes.axboFile + SL + SoundPackageNodes.path);
    digester.addBeanPropertySetter(SoundPackageNodes.axboSounds + SL + SoundPackageNodes.sounds + SL
            + SoundPackageNodes.sound + SL + SoundPackageNodes.axboFile + SL + SoundPackageNodes.type);

    try {
        SoundPackage soundPackage = (SoundPackage) digester.parse(packageInfoXmlStream);
        return soundPackage;
    } catch (Exception ex) {
        throw new SoundPackageException(ex);
    }
}

From source file:main.java.com.omicronlab.avro.PhoneticXmlLoader.java

public Data getData() throws IOException, SAXException {
    Digester digester = new Digester();
    digester.setValidating(false);/*from   www  . jav  a2s .co m*/

    digester.addObjectCreate("data", Data.class);
    digester.addBeanPropertySetter("data/classes/vowel", "vowel");
    digester.addBeanPropertySetter("data/classes/consonant", "consonant");
    digester.addBeanPropertySetter("data/classes/punctuation", "punctuation");
    digester.addBeanPropertySetter("data/classes/casesensitive", "casesensitive");

    digester.addObjectCreate("data/patterns/pattern", Pattern.class);
    digester.addBeanPropertySetter("data/patterns/pattern/find", "find");
    digester.addBeanPropertySetter("data/patterns/pattern/replace", "replace");

    digester.addObjectCreate("data/patterns/pattern/rules/rule", Rule.class);
    digester.addBeanPropertySetter("data/patterns/pattern/rules/rule/replace", "replace");

    digester.addObjectCreate("data/patterns/pattern/rules/rule/find/match", Match.class);
    digester.addBeanPropertySetter("data/patterns/pattern/rules/rule/find/match", "value");
    digester.addSetProperties("data/patterns/pattern/rules/rule/find/match", "type", "type");
    digester.addSetProperties("data/patterns/pattern/rules/rule/find/match", "scope", "scope");

    digester.addSetNext("data/patterns/pattern/rules/rule/find/match", "addMatch");

    digester.addSetNext("data/patterns/pattern/rules/rule", "addRule");

    digester.addSetNext("data/patterns/pattern", "addPattern");

    Data data = (Data) digester.parse(this.url);
    return data;
}

From source file:com.smartapps.avro.PhoneticXmlLoader.java

public Data getData() throws IOException, SAXException {
    Digester digester = new Digester();
    digester.setValidating(false);//from  w  w w . j  a  v a2s  . c  o m

    digester.addObjectCreate("data", Data.class);
    digester.addBeanPropertySetter("data/classes/vowel", "vowel");
    digester.addBeanPropertySetter("data/classes/consonant", "consonant");
    digester.addBeanPropertySetter("data/classes/punctuation", "punctuation");
    digester.addBeanPropertySetter("data/classes/casesensitive", "casesensitive");

    digester.addObjectCreate("data/patterns/pattern", Pattern.class);
    digester.addBeanPropertySetter("data/patterns/pattern/find", "find");
    digester.addBeanPropertySetter("data/patterns/pattern/replace", "replace");

    digester.addObjectCreate("data/patterns/pattern/rules/rule", Rule.class);
    digester.addBeanPropertySetter("data/patterns/pattern/rules/rule/replace", "replace");

    digester.addObjectCreate("data/patterns/pattern/rules/rule/find/match", Match.class);
    digester.addBeanPropertySetter("data/patterns/pattern/rules/rule/find/match", "value");
    digester.addSetProperties("data/patterns/pattern/rules/rule/find/match", "type", "type");
    digester.addSetProperties("data/patterns/pattern/rules/rule/find/match", "scope", "scope");

    digester.addSetNext("data/patterns/pattern/rules/rule/find/match", "addMatch");

    digester.addSetNext("data/patterns/pattern/rules/rule", "addRule");

    digester.addSetNext("data/patterns/pattern", "addPattern");

    // Data data = (Data) digester.parse(this.url);
    //      InputStreamReader isr = new InputStreamReader(is, "UTF-8");
    Data data = (Data) digester.parse(is);
    return data;
}

From source file:eu.scape_project.planning.xml.PlanParser.java

/**
 * This method adds rules for name, properties, scales, modes and mappings
 * only! Rules for importing measured values of alternatives are defined
 * seperately in importProjects()! (Refactored to its own method by Kevin)
 * //  w  ww.  j  a  v a 2s.c om
 * @param digester
 *            the digester
 */
private static void addTreeParsingRulesToDigester(final Digester digester) {
    digester.addObjectCreate("*/plan/tree", ObjectiveTree.class);
    digester.addSetProperties("*/plan/tree");
    digester.addSetNext("*/plan/tree", "setTree");

    digester.addObjectCreate("*/node/node", Node.class);
    digester.addSetProperties("*/node/node");
    digester.addSetNext("*/node/node", "addChild");

    digester.addCallMethod("*/node/description", "setDescription", 0);

    digester.addObjectCreate("*/plan/tree/node", Node.class);
    digester.addSetProperties("*/plan/tree/node");
    digester.addSetNext("*/plan/tree/node", "setRoot");

    digester.addObjectCreate("*/leaf", Leaf.class);
    digester.addSetProperties("*/leaf");
    digester.addSetNext("*/leaf", "addChild");
    digester.addFactoryCreate("*/leaf/aggregationMode", SampleAggregationModeFactory.class);
    digester.addSetNext("*/leaf/aggregationMode", "setAggregationMode");

    digester.addCallMethod("*/leaf/description", "setDescription", 0);

    PlanParser.addMeasureRules(digester, "*/measure");

    /*
     * for each scale-type a set of rules
     */
    PlanParser.addCreateScale(digester, BooleanScale.class);
    PlanParser.addCreateScale(digester, FloatRangeScale.class);
    PlanParser.addCreateScale(digester, FloatScale.class);
    PlanParser.addCreateScale(digester, IntegerScale.class);
    PlanParser.addCreateScale(digester, IntRangeScale.class);
    PlanParser.addCreateScale(digester, OrdinalScale.class);
    PlanParser.addCreateScale(digester, PositiveFloatScale.class);
    PlanParser.addCreateScale(digester, PositiveIntegerScale.class);
    PlanParser.addCreateScale(digester, YanScale.class);
    PlanParser.addCreateScale(digester, FreeStringScale.class);

    /*
     * for each transformer type a set of rules
     */
    digester.addObjectCreate("*/leaf/numericTransformer", NumericTransformer.class);
    digester.addSetProperties("*/leaf/numericTransformer");
    digester.addFactoryCreate("*/leaf/numericTransformer/mode", TransformationModeFactory.class);
    digester.addSetNext("*/leaf/numericTransformer/mode", "setMode");
    digester.addBeanPropertySetter("*/leaf/numericTransformer/thresholds/threshold1", "threshold1");
    digester.addBeanPropertySetter("*/leaf/numericTransformer/thresholds/threshold2", "threshold2");
    digester.addBeanPropertySetter("*/leaf/numericTransformer/thresholds/threshold3", "threshold3");
    digester.addBeanPropertySetter("*/leaf/numericTransformer/thresholds/threshold4", "threshold4");
    digester.addBeanPropertySetter("*/leaf/numericTransformer/thresholds/threshold5", "threshold5");
    digester.addSetNext("*/leaf/numericTransformer", "setTransformer");

    // digester.addObjectCreate("*/numericTransformer/thresholds",
    // LinkedHashMap.class);
    // digester.addSetNext("*/numericTransformer/thresholds",
    // "setThresholds");
    // digester.addFactoryCreate("*/thresholds/threshold",
    // NumericTransformerThresholdFactory.class);

    digester.addObjectCreate("*/leaf/ordinalTransformer", OrdinalTransformer.class);
    digester.addSetProperties("*/leaf/ordinalTransformer");
    digester.addSetNext("*/leaf/ordinalTransformer", "setTransformer");

    digester.addObjectCreate("*/ordinalTransformer/mappings", LinkedHashMap.class);
    digester.addSetNext("*/ordinalTransformer/mappings", "setMapping");
    digester.addFactoryCreate("*/mappings/mapping", OrdinalTransformerMappingFactory.class);

    digester.addRule("*/mappings/mapping", new CallMethodRule(1, "put", 2)); // method
                                                                             // with
                                                                             // two
                                                                             // params
    digester.addCallParam("*/mappings/mapping", 0, "ordinal"); // use
                                                               // attribute
                                                               // "ordinal"
                                                               // as first
                                                               // argument
    digester.addCallParam("*/mappings/mapping", 1, true); // and the object
                                                          // on the stack as
                                                          // second
}

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//from w  w  w  .  java2s  .  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 w  w .j  av a2 s.  com*/
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 to extract the keywords./*  w  w w. j av a 2  s . c  om*/
 *
 * @param digester to add the rules to
 */
private static void addKeywordRules(Digester digester) {
    digester.addObjectCreate("eml/dataset/keywordSet", KeywordSet.class);
    digester.addCallMethod("eml/dataset/keywordSet/keyword", "add", 1);
    digester.addCallParam("eml/dataset/keywordSet/keyword", 0);
    digester.addBeanPropertySetter("eml/dataset/keywordSet/keywordThesaurus", "keywordThesaurus");
    digester.addSetNext("eml/dataset/keywordSet", "addKeywordSet"); // add the
    // KeywordSet
    // to the
    // list in
    // EML
}

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

/**
 * Adds rules to get the geographic coverage.
 *
 * @param digester to add the rules to/* w w  w.j  a  va2  s . com*/
 */
private static void addGeographicCoverageRules(Digester digester) {
    digester.addObjectCreate("eml/dataset/coverage/geographicCoverage", GeospatialCoverage.class);
    digester.addBeanPropertySetter("eml/dataset/coverage/geographicCoverage/geographicDescription",
            "description");
    digester.addObjectCreate("eml/dataset/coverage/geographicCoverage/boundingCoordinates", BBox.class);
    digester.addBeanPropertySetter(
            "eml/dataset/coverage/geographicCoverage/boundingCoordinates/westBoundingCoordinate", "minX");
    digester.addBeanPropertySetter(
            "eml/dataset/coverage/geographicCoverage/boundingCoordinates/eastBoundingCoordinate", "maxX");
    digester.addBeanPropertySetter(
            "eml/dataset/coverage/geographicCoverage/boundingCoordinates/northBoundingCoordinate", "maxY");
    digester.addBeanPropertySetter(
            "eml/dataset/coverage/geographicCoverage/boundingCoordinates/southBoundingCoordinate", "minY");
    digester.addSetNext("eml/dataset/coverage/geographicCoverage/boundingCoordinates",
            "setBoundingCoordinates"); // add
    // the BBox to the GeospatialCoverage
    digester.addSetNext("eml/dataset/coverage/geographicCoverage", "addGeospatialCoverage"); // add the
    // GeospatialCoverage to the list in
    // EML
}

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

/**
 * Adds rules to extract the taxonomic coverage.
 *
 * @param digester to add the rules to/* w  ww.  j a va 2  s  . c  o m*/
 */
private static void addTaxonomicCoverageRules(Digester digester) {
    digester.addObjectCreate("eml/dataset/coverage/taxonomicCoverage", TaxonomicCoverage.class);
    digester.addBeanPropertySetter("eml/dataset/coverage/taxonomicCoverage/generalTaxonomicCoverage",
            "description");
    digester.addObjectCreate("eml/dataset/coverage/taxonomicCoverage/taxonomicClassification",
            TaxonKeyword.class);
    digester.addBeanPropertySetter(
            "eml/dataset/coverage/taxonomicCoverage/taxonomicClassification/taxonRankName", "rank");
    digester.addBeanPropertySetter(
            "eml/dataset/coverage/taxonomicCoverage/taxonomicClassification/taxonRankValue", "scientificName");
    digester.addBeanPropertySetter("eml/dataset/coverage/taxonomicCoverage/taxonomicClassification/commonName",
            "commonName");
    digester.addSetNext("eml/dataset/coverage/taxonomicCoverage/taxonomicClassification", "addTaxonKeyword"); // adds the TaxonKeyword part of the
    // TaxonomicCoverage
    digester.addSetNext("eml/dataset/coverage/taxonomicCoverage", "addTaxonomicCoverage"); // add the TaxonomicCoverage to the list in EML
}