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

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

Introduction

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

Prototype

public <T> void push(T object) 

Source Link

Document

Push a new object onto the top of the object stack.

Usage

From source file:org.apache.commons.digester3.examples.xmlrules.addressbook.Main.java

/**
 * Main method : entry point for running this example program.
 * <p>/*ww  w  .j  av  a 2s . com*/
 * Usage: java Example example.xml
 */
public static void main(String[] args) throws Exception {
    if (args.length != 2) {
        usage();
        System.exit(-1);
    }

    final String rulesfileName = args[0];
    String datafileName = args[1];

    // Create a Digester instance which has been initialised with
    // rules loaded from the specified file.
    Digester d = newLoader(new FromXmlRulesModule() {

        @Override
        protected void loadRules() {
            loadXMLRules(rulesfileName);
        }

    }).newDigester();

    // Prime the digester stack with an object for rules to
    // operate on. Note that it is quite common for "this"
    // to be the object pushed.
    AddressBook book = new AddressBook();
    d.push(book);

    // Process the input file.
    try {
        File srcfile = new java.io.File(datafileName);
        d.parse(srcfile);
    } catch (IOException ioe) {
        System.out.println("Error reading input file:" + ioe.getMessage());
        System.exit(-1);
    } catch (SAXException se) {
        System.out.println("Error parsing input file:" + se.getMessage());
        System.exit(-1);
    }

    // Print out all the contents of the address book, as loaded from
    // the input file.
    book.print();
}

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

/**
 * Lit le fichier de configuration/*  ww w.  ja  v  a 2  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/*from   ww w . j a  v a  2  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/*from  w  ww .  jav a 2  s  .c  om*/
 *
 * @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:spring.travel.site.services.news.NewsDigester.java

public List<NewsItem> from(InputStream is) throws IOException {
    try {//from w ww.  j av a 2  s.  com
        Digester digester = new Digester();
        digester.setValidating(false);

        digester.push(new ArrayList<NewsItemDigestible>());

        digester.addObjectCreate("rss/channel/item", NewsItemDigestible.class.getName());
        digester.addSetNext("rss/channel/item", "add");
        digester.addBeanPropertySetter("rss/channel/item/title", "headline");
        digester.addBeanPropertySetter("rss/channel/item/description", "standFirst");
        digester.addBeanPropertySetter("rss/channel/item/guid", "link");
        digester.addObjectCreate("rss/channel/item/media:content", Image.class.getName());
        digester.addSetProperties("rss/channel/item/media:content");
        digester.addSetNext("rss/channel/item/media:content", "setImage");

        List<NewsItemDigestible> items = digester.parse(is);
        return items.stream().map(n -> n.toNewsItem()).collect(Collectors.toList());
    } catch (SAXException se) {
        throw new IOException("Failed reading rss feed", se);
    }
}

From source file:uk.co.sdev.undertow.rx.services.news.PushDigester.java

public void digest(InputStream is, Subscriber<? super NewsItem> subscriber) {
    try {/*from  w w w.  java  2s.  c o m*/
        Digester digester = new Digester();
        digester.setValidating(false);

        digester.push((Consumer<NewsItemDigestible>) newsItemDigestible -> {
            if (newsItemDigestible.hasImage()) {
                subscriber.onNext(newsItemDigestible.toNewsItem());
            }
        });
        digester.addObjectCreate("rss/channel/item", NewsItemDigestible.class.getName());
        digester.addBeanPropertySetter("rss/channel/item/title", "headline");
        digester.addBeanPropertySetter("rss/channel/item/description", "description");
        digester.addBeanPropertySetter("rss/channel/item/guid", "link");
        configureImageRules(digester);
        digester.addSetNext("rss/channel/item", "accept");

        digester.parse(is);

        subscriber.onCompleted();
    } catch (Exception e) {
        subscriber.onError(e);
    }
}