List of usage examples for org.apache.commons.digester3 Digester addCallMethod
public void addCallMethod(String pattern, String methodName, int paramCount)
From source file:eu.scape_project.planning.xml.PlanParser.java
/** * Create a rule for parsing an element for the given location * <code>pattern</code>, write it the XML as binary data, and use the * <code>dataSetterMethod</code> to set the data in the parent. * //from w w w.jav a 2s . co m * @param digester * the digester * @param pattern * the location pattern * @param dataMethod * a method name of the parent object that will be called to set * the binary data or null to use XMLDataWrapper's default * @throws ParserConfigurationException * if the digester could not be configured */ private static void addCreateXMLData(final Digester digester, final String pattern, String dataMethod, String changeLogMethod) throws ParserConfigurationException { // 1. Create a XMLDataWrapper digester.addObjectCreate(pattern, XMLDataWrapper.class); if (changeLogMethod != null) { // 6. Finally call setChangeLog on the XMLDataWrapper on top with // the object next to top as argument. digester.addSetTop(pattern, "setChangeLog"); // 5. Set change log setter method on XMLDataWrapper digester.addCallMethod(pattern, "setChangeLogMethodName", 1); digester.addObjectParam(pattern, 0, changeLogMethod); } // 4. Finally call setData on the XMLDataWrapper on top with the // object next to top as argument. digester.addSetTop(pattern, "setData"); // 3. Set data setter method on XMLDataWrapper if (dataMethod != null) { digester.addCallMethod(pattern, "setMethodName", 1); digester.addObjectParam(pattern, 0, dataMethod); } // 2. Create element from XML and set the element in the XMLDataWrapper NodeCreateRule nodeCreateRule = new NodeCreateRule(); digester.addRule(pattern, nodeCreateRule); digester.addSetNext(pattern, "setEncoded"); }
From source file:eu.scape_project.planning.xml.TreeLoader.java
private MindMap loadFreeMindMap(InputStream in) { try {//from w ww .j av a 2 s .c om MindMap map = new MindMap(); SAXParserFactory f = SAXParserFactory.newInstance(); SAXParser parser = f.newSAXParser(); // SAXParser parser = validatingParserFactory.getValidatingParser(); // parser.setProperty(ValidatingParserFactory.JAXP_SCHEMA_SOURCE, // "http://freemind.sourceforge.net/freemind.xsd"); // load content into temporary structure Digester digester = new Digester(parser); // digester.setEntityResolver(new SchemaResolver().addSchemaLocation( // "http://freemind.sourceforge.net/freemind.xsd", "data/schemas/freemind.xsd")); // digester.setErrorHandler(new StrictErrorHandler()); digester.push(map); digester.addObjectCreate("*/node", "eu.scape_project.planning.xml.freemind.Node"); digester.addSetProperties("*/node"); digester.addCallMethod("*/node/hook/text", "setDESCRIPTION", 0); digester.addSetNext("*/node", "addChild"); digester.setUseContextClassLoader(true); digester.parse(in); return map; } catch (IOException e) { log.error("Error loading Freemind file.", e); } catch (SAXException e) { log.error("Document is not a valid Freemind file.", e); } catch (ParserConfigurationException e) { log.error("Parser not properly configured.", e); } return null; }
From source file:br.univali.celine.scorm.model.cam.ContentPackageReader20043rd.java
protected void addConditionRule(Digester d, String tagCondition, String metodoAdd) { d.addObjectCreate(tagCondition, SequencingRule.class); d.addSetNext(tagCondition, metodoAdd); // <ruleConditions> d.addSetProperties(tagCondition + "/ruleConditions"); d.addObjectCreate(tagCondition + "/ruleConditions/ruleCondition", RuleCondition.class); d.addSetNext(tagCondition + "/ruleConditions/ruleCondition", "addRuleCondition"); d.addSetProperties(tagCondition + "/ruleConditions/ruleCondition"); // <ruleAction> d.addCallMethod(tagCondition + "/ruleAction", "setRuleAction", 1); d.addCallParam(tagCondition + "/ruleAction", 0, "action"); }
From source file:com.w20e.socrates.factories.XMLQuestionnaireFactory.java
/** * Create a new Digester for the instance. This should ALWAYS happen for * each parse... Seriously!// w ww. j av a 2 s . co m * * @return the digester */ private Digester createInstanceDigester() { Digester dig = new Digester(); NodeFactory nodeFactory = new NodeFactory(); PropertiesFactory propsFactory = new PropertiesFactory(); ExpressionFactory exprFactory = new ExpressionFactory(); SurveyFactory surveyFactory = new SurveyFactory(); dig.addFactoryCreate("survey", surveyFactory); dig.addSetProperties("survey"); // dig.addRule("*/var", nodeCreateRule); // dig.addCallParam( "*/var", 0, "name"); // dig.addCallParam( "*/var", 1); dig.addFactoryCreate("*/var", nodeFactory); dig.addCallMethod("*/var", "setValue", 1); dig.addCallParam("*/var", 0); dig.addSetNext("*/var", "addNode", "com.w20e.socrates.model.NodeImpl"); // dig.addObjectCreate("*/vargroup", Node.class); // dig.addSetNext("*/var", "addNode"); dig.addFactoryCreate("*/model/properties", propsFactory); dig.addSetNext("*/model/properties", "addProperties", "com.w20e.socrates.model.ItemPropertiesImpl"); dig.addCallMethod("*/model/properties/bind", "addBind", 1); dig.addCallParam("*/model/properties/bind", 0); Rule exprRule = new ExpressionCreateRule(exprFactory); dig.addRule("*/properties/required", exprRule); dig.addCallMethod("*/properties/required", "setExpr", 1); dig.addCallParam("*/properties/required", 0); dig.addRule("*/properties/relevant", exprRule); dig.addCallMethod("*/properties/relevant", "setExpr", 1); dig.addCallParam("*/properties/relevant", 0); dig.addRule("*/properties/readonly", exprRule); dig.addCallMethod("*/properties/readonly", "setExpr", 1); dig.addCallParam("*/properties/readonly", 0); dig.addRule("*/properties/calculate", exprRule); dig.addCallMethod("*/properties/calculate", "setExpr", 1); dig.addCallParam("*/properties/calculate", 0); dig.addRule("*/properties/constraint", exprRule); dig.addCallMethod("*/properties/constraint", "setExpr", 1); dig.addCallParam("*/properties/constraint", 0); dig.addRule("*/properties/datatype", exprRule); dig.addCallMethod("*/properties/datatype", "setExpr", 1); dig.addCallParam("*/properties/datatype", 0); dig.addRule("*/properties/default", exprRule); dig.addCallMethod("*/properties/default", "setExpr", 1); dig.addCallParam("*/properties/default", 0); return dig; }
From source file:com.w20e.socrates.factories.XMLQuestionnaireFactory.java
/** * Create a new Digester for the instance. This should ALWAYS happen for * each parse... Really!/* w w w. j a v a2 s . c o m*/ * * @return the digester */ private Digester createRenderingDigester(Configuration cfg) { GroupFactory groupFactory = new GroupFactory(); ControlFactory controlFactory = new ControlFactory(cfg); OptionsFactory optionsFactory = new OptionsFactory(); TranslatableFactory labelFactory = new TranslatableFactory(); Digester dig = new Digester(); dig.addObjectCreate("survey/layout", RenderConfigImpl.class); dig.addObjectCreate("*/layout/optionset", "com.w20e.socrates.rendering.OptionList"); dig.addSetProperties("*/layout/optionset"); dig.addSetNext("*/layout/optionset", "addOptionList"); dig.addFactoryCreate("*/group", groupFactory); dig.addSetNext("*/group", "addItem", "com.w20e.socrates.rendering.Group"); dig.addObjectCreate("*/text", "com.w20e.socrates.rendering.TextBlock"); dig.addSetProperties("*/text"); dig.addSetNext("*/text", "addItem", "com.w20e.socrates.rendering.TextBlock"); dig.addCallMethod("*/text", "setText", 1); dig.addCallParam("*/text", 0); dig.addObjectCreate("*/select", cfg.getString("layout.controlclasses.select", "com.w20e.socrates.rendering.Select")); dig.addSetProperties("*/select"); dig.addSetNext("*/select", "addItem"); dig.addObjectCreate("*/input", cfg.getString("layout.controlclasses.select", "com.w20e.socrates.rendering.Input")); dig.addSetProperties("*/input"); dig.addSetNext("*/input", "addItem"); dig.addObjectCreate("*/hidden", cfg.getString("layout.controlclasses.hidden", "com.w20e.socrates.rendering.Hidden")); dig.addSetProperties("*/hidden"); dig.addSetNext("*/hidden", "addItem"); dig.addObjectCreate("*/checkbox", cfg.getString("layout.controlclasses.checkbox", "com.w20e.socrates.rendering.Checkbox")); dig.addSetProperties("*/checkbox"); dig.addSetNext("*/checkbox", "addItem"); dig.addObjectCreate("*/textarea", cfg.getString("layout.controlclasses.textarea", "com.w20e.socrates.rendering.Input")); dig.addSetProperties("*/textarea"); dig.addSetNext("*/textarea", "addItem"); dig.addObjectCreate("*/date", cfg.getString("layout.controlclasses.date", "com.w20e.socrates.rendering.Date")); dig.addSetProperties("*/date"); dig.addSetNext("*/date", "addItem"); dig.addObjectCreate("*/range", cfg.getString("layout.controlclasses.range", "com.w20e.socrates.rendering.Range")); dig.addSetProperties("*/range"); dig.addSetNext("*/range", "addItem"); dig.addFactoryCreate("*/control", controlFactory); dig.addSetProperties("*/control"); dig.addSetNext("*/control", "addItem"); dig.addObjectCreate("*/option", "com.w20e.socrates.rendering.Option"); dig.addSetProperties("*/option"); dig.addSetNext("*/option", "addOption", "com.w20e.socrates.rendering.Option"); dig.addFactoryCreate("*/select/optionset", optionsFactory); dig.addSetNext("*/select/optionset", "setOptions"); dig.addFactoryCreate("*/label", labelFactory); dig.addSetNext("*/label", "setLabel"); dig.addCallMethod("*/label", "setText", 1); dig.addCallParam("*/label", 0); dig.addFactoryCreate("*/hint", labelFactory); dig.addSetNext("*/hint", "setHint"); dig.addCallMethod("*/hint", "setText", 1); dig.addCallParam("*/hint", 0); dig.addFactoryCreate("*/help", labelFactory); dig.addSetNext("*/help", "setHelp"); dig.addCallMethod("*/help", "setText", 1); dig.addCallParam("*/help", 0); dig.addFactoryCreate("*/alert", labelFactory); dig.addSetNext("*/alert", "setAlert"); dig.addCallMethod("*/alert", "setText", 1); dig.addCallParam("*/alert", 0); dig.addCallMethod("*/property", "setProperty", 2); dig.addCallParam("*/property", 0, "name"); dig.addCallParam("*/property", 1); return dig; }
From source file:eu.scape_project.planning.xml.PlanParser.java
/** * Adds rules to the digester to parse the a plan XML. * /*from w w w.ja v a 2 s .co m*/ * @param digester * the digester * @throws ParserConfigurationException * if an error occurred */ private static void addRules(Digester digester) throws ParserConfigurationException { ConvertUtils.register(new EnumConverter<EvaluationScope>(EvaluationScope.class), EvaluationScope.class); // start with a new file digester.addObjectCreate("*/plan", Plan.class); digester.addSetProperties("*/plan"); digester.addSetRoot("*/plan", "setProject"); digester.addFactoryCreate("*/changelog", ChangeLogFactory.class); digester.addSetNext("*/changelog", "setChangeLog"); digester.addObjectCreate("*/plan/properties", PlanProperties.class); digester.addSetProperties("*/plan/properties"); digester.addSetNext("*/plan/properties", "setPlanProperties"); digester.addCallMethod("*/plan/properties/description", "setDescription", 0); digester.addCallMethod("*/plan/properties/owner", "setOwner", 0); digester.addFactoryCreate("*/plan/properties/state", PlanStateFactory.class); digester.addSetNext("*/plan/properties/state", "setState"); PlanParser.addCreateUpload(digester, "*/plan/properties/report", "setReportUpload", DigitalObject.class); digester.addObjectCreate("*/plan/basis", ProjectBasis.class); digester.addSetProperties("*/plan/basis"); digester.addSetNext("*/plan/basis", "setProjectBasis"); digester.addCallMethod("*/plan/basis/applyingPolicies", "setApplyingPolicies", 0); digester.addCallMethod("*/plan/basis/designatedCommunity", "setDesignatedCommunity", 0); digester.addCallMethod("*/plan/basis/mandate", "setMandate", 0); digester.addCallMethod("*/plan/basis/documentTypes", "setDocumentTypes", 0); digester.addCallMethod("*/plan/basis/identificationCode", "setIdentificationCode", 0); digester.addCallMethod("*/plan/basis/organisationalProcedures", "setOrganisationalProcedures", 0); digester.addCallMethod("*/plan/basis/planningPurpose", "setPlanningPurpose", 0); digester.addCallMethod("*/plan/basis/planRelations", "setPlanRelations", 0); digester.addCallMethod("*/plan/basis/preservationRights", "setPreservationRights", 0); digester.addCallMethod("*/plan/basis/referenceToAgreements", "setReferenceToAgreements", 0); // define common rule for triggers, for all */triggers/...! // also used for PlanDefinition digester.addObjectCreate("*/triggers", TriggerDefinition.class); digester.addSetNext("*/triggers", "setTriggers"); // every time a */triggers/trigger is encountered: digester.addFactoryCreate("*/triggers/trigger", TriggerFactory.class); digester.addSetNext("*/triggers/trigger", "setTrigger"); // // Policy Tree // digester.addObjectCreate("*/plan/basis/policyTree", PolicyTree.class); digester.addSetProperties("*/plan/basis/policyTree"); digester.addSetNext("*/plan/basis/policyTree", "setPolicyTree"); digester.addObjectCreate("*/plan/basis/policyTree/policyNode", PolicyNode.class); digester.addSetProperties("*/plan/basis/policyTree/policyNode"); digester.addSetNext("*/plan/basis/policyTree/policyNode", "setRoot"); digester.addObjectCreate("*/policyNode/policyNode", PolicyNode.class); digester.addSetProperties("*/policyNode/policyNode"); digester.addSetNext("*/policyNode/policyNode", "addChild"); digester.addObjectCreate("*/policyNode/policy", Policy.class); digester.addSetProperties("*/policyNode/policy"); digester.addSetNext("*/policyNode/policy", "addChild"); // // Sample Records // digester.addObjectCreate("*/plan/sampleRecords", SampleRecordsDefinition.class); digester.addSetProperties("*/plan/sampleRecords"); digester.addSetNext("*/plan/sampleRecords", "setSampleRecordsDefinition"); digester.addCallMethod("*/plan/sampleRecords/samplesDescription", "setSamplesDescription", 0); // - records digester.addObjectCreate("*/record", SampleObject.class); digester.addSetProperties("*/record"); digester.addSetNext("*/record", "addRecord"); digester.addCallMethod("*/record/description", "setDescription", 0); digester.addCallMethod("*/record/originalTechnicalEnvironment", "setOriginalTechnicalEnvironment", 0); digester.addObjectCreate("*/record/data", BinaryDataWrapper.class); digester.addSetTop("*/record/data", "setData"); digester.addCallMethod("*/record/data", "setFromBase64Encoded", 0); // set up an general rule for all jhove strings! digester.addObjectCreate("*/jhoveXML", BinaryDataWrapper.class); digester.addSetTop("*/jhoveXML", "setString"); digester.addCallMethod("*/jhoveXML", "setFromBase64Encoded", 0); digester.addCallMethod("*/jhoveXML", "setMethodName", 1, new String[] { "java.lang.String" }); digester.addObjectParam("*/jhoveXML", 0, "setJhoveXMLString"); // set up general rule for all fitsXMLs digester.addObjectCreate("*/fitsXML", BinaryDataWrapper.class); digester.addSetTop("*/fitsXML", "setString"); digester.addCallMethod("*/fitsXML", "setFromBase64Encoded", 0); digester.addCallMethod("*/fitsXML", "setMethodName", 1, new String[] { "java.lang.String" }); digester.addObjectParam("*/fitsXML", 0, "setFitsXMLString"); digester.addObjectCreate("*/formatInfo", FormatInfo.class); digester.addSetProperties("*/formatInfo"); digester.addSetNext("*/formatInfo", "setFormatInfo"); PlanParser.addCreateUpload(digester, "*/record/xcdlDescription", "setXcdlDescription", XcdlDescription.class); // - collection profile digester.addObjectCreate("*/plan/sampleRecords/collectionProfile", CollectionProfile.class); digester.addSetProperties("*/plan/sampleRecords/collectionProfile"); digester.addSetNext("*/plan/sampleRecords/collectionProfile", "setCollectionProfile"); digester.addCallMethod("*/plan/sampleRecords/collectionProfile/collectionID", "setCollectionID", 0); digester.addCallMethod("*/plan/sampleRecords/collectionProfile/description", "setDescription", 0); digester.addCallMethod("*/plan/sampleRecords/collectionProfile/numberOfObjects", "setNumberOfObjects", 0); digester.addCallMethod("*/plan/sampleRecords/collectionProfile/typeOfObjects", "setTypeOfObjects", 0); digester.addCallMethod("*/plan/sampleRecords/collectionProfile/expectedGrowthRate", "setExpectedGrowthRate", 0); digester.addCallMethod("*/plan/sampleRecords/collectionProfile/retentionPeriod", "setRetentionPeriod", 0); PlanParser.addCreateUpload(digester, "*/plan/sampleRecords/collectionProfile/profile", "setProfile", DigitalObject.class); // requirements definition digester.addObjectCreate("*/plan/requirementsDefinition", RequirementsDefinition.class); digester.addSetProperties("*/plan/requirementsDefinition"); digester.addSetNext("*/plan/requirementsDefinition", "setRequirementsDefinition"); digester.addCallMethod("*/plan/requirementsDefinition/description", "setDescription", 0); // - uploads digester.addObjectCreate("*/plan/requirementsDefinition/uploads", ArrayList.class); digester.addSetNext("*/plan/requirementsDefinition/uploads", "setUploads"); PlanParser.addCreateUpload(digester, "*/plan/requirementsDefinition/uploads/upload", "add", DigitalObject.class); // alternatives digester.addObjectCreate("*/plan/alternatives", AlternativesDefinition.class); digester.addSetProperties("*/plan/alternatives"); digester.addCallMethod("*/plan/alternatives/description", "setDescription", 0); digester.addSetNext("*/plan/alternatives", "setAlternativesDefinition"); digester.addObjectCreate("*/plan/alternatives/alternative", Alternative.class); digester.addSetProperties("*/plan/alternatives/alternative"); digester.addSetNext("*/plan/alternatives/alternative", "addAlternative"); // - action digester.addObjectCreate("*/plan/alternatives/alternative/action", PreservationActionDefinition.class); digester.addSetProperties("*/plan/alternatives/alternative/action"); digester.addBeanPropertySetter("*/plan/alternatives/alternative/action/descriptor"); digester.addBeanPropertySetter("*/plan/alternatives/alternative/action/parameterInfo"); digester.addSetNext("*/plan/alternatives/alternative/action", "setAction"); digester.addCallMethod("*/plan/alternatives/alternative/description", "setDescription", 0); // - - params digester.addObjectCreate("*/plan/alternatives/alternative/action/params", LinkedList.class); digester.addSetNext("*/plan/alternatives/alternative/action/params", "setParams"); digester.addObjectCreate("*/plan/alternatives/alternative/action/params/param", Parameter.class); digester.addSetProperties("*/plan/alternatives/alternative/action/params/param"); digester.addSetNext("*/plan/alternatives/alternative/action/params/param", "add"); // - resource description digester.addObjectCreate("*/resourceDescription", ResourceDescription.class); digester.addSetProperties("*/resourceDescription"); digester.addSetNext("*/resourceDescription", "setResourceDescription"); digester.addCallMethod("*/resourceDescription/configSettings", "setConfigSettings", 0); digester.addCallMethod("*/resourceDescription/necessaryResources", "setNecessaryResources", 0); digester.addCallMethod("*/resourceDescription/reasonForConsidering", "setReasonForConsidering", 0); // - experiment digester.addObjectCreate("*/experiment", ExperimentWrapper.class); digester.addSetProperties("*/experiment"); digester.addSetNext("*/experiment", "setExperiment"); digester.addCallMethod("*/experiment/description", "setDescription", 0); digester.addCallMethod("*/experiment/settings", "setSettings", 0); PlanParser.addCreateUpload(digester, "*/experiment/workflow", "setWorkflow", DigitalObject.class); PlanParser.addCreateUpload(digester, "*/experiment/results/result", null, DigitalObject.class); PlanParser.addCreateUpload(digester, "*/result/xcdlDescription", "setXcdlDescription", XcdlDescription.class); // call function addUpload of ExperimentWrapper CallMethodRule r = new CallMethodRule(1, "addResult", 2); // method // with // two // params // every time */experiment/uploads/upload is encountered digester.addRule("*/experiment/results/result", r); // use attribute "key" as first param digester.addCallParam("*/experiment/results/result", 0, "key"); // and the object on stack (DigitalObject) as the second digester.addCallParam("*/experiment/results/result", 1, true); // addCreateUpload(digester, // "*/experiment/xcdlDescriptions/xcdlDescription", null, // XcdlDescription.class); // // call function addXcdlDescription of ExperimentWrapper // r = new CallMethodRule(1, "addXcdlDescription", 2); //method with // two // params // // every time */experiment/xcdlDescriptions/xcdlDescription is // encountered // digester.addRule("*/experiment/xcdlDescriptions/xcdlDescription", // r); // // use attribute "key" as first param // digester.addCallParam("*/experiment/xcdlDescriptions/xcdlDescription", // 0 , "key");http://fue.onb.ac.at/abo/data // // and the object on stack (DigitalObject) as the second // digester.addCallParam("*/experiment/xcdlDescriptions/xcdlDescription",1,true); digester.addObjectCreate("*/experiment/detailedInfos/detailedInfo", DetailedExperimentInfo.class); digester.addSetProperties("*/experiment/detailedInfos/detailedInfo"); digester.addBeanPropertySetter("*/experiment/detailedInfos/detailedInfo/programOutput"); digester.addBeanPropertySetter("*/experiment/detailedInfos/detailedInfo/cpr"); // call function "addDetailedInfo" of ExperimentWrapper r = new CallMethodRule(1, "addDetailedInfo", 2); // method with two // params // every time */experiment/detailedInfos/detailedInfo is encountered digester.addRule("*/experiment/detailedInfos/detailedInfo", r); // use attribute "key" as first param digester.addCallParam("*/experiment/detailedInfos/detailedInfo", 0, "key"); // and the object on stack as second parameter digester.addCallParam("*/experiment/detailedInfos/detailedInfo", 1, true); // read contained measurements: digester.addObjectCreate("*/detailedInfo/measurements/measurement", Measurement.class); digester.addSetProperties("*/detailedInfo/measurements/measurement"); digester.addSetNext("*/detailedInfo/measurements/measurement", "put"); // values are defined with wild-cards, and therefore set // automatically /* * for each value type a set of rules because of FreeStringValue we need * to store the value as XML-element instead of an attribute naming them * "ResultValues" wasn't nice too */ PlanParser.addCreateValue(digester, BooleanValue.class, "setValue"); PlanParser.addCreateValue(digester, FloatRangeValue.class, "setValue"); PlanParser.addCreateValue(digester, IntegerValue.class, "setValue"); PlanParser.addCreateValue(digester, IntRangeValue.class, "setValue"); PlanParser.addCreateValue(digester, OrdinalValue.class, "setValue"); PlanParser.addCreateValue(digester, PositiveFloatValue.class, "setValue"); PlanParser.addCreateValue(digester, PositiveIntegerValue.class, "setValue"); PlanParser.addCreateValue(digester, YanValue.class, "setValue"); PlanParser.addCreateValue(digester, FreeStringValue.class, "setValue"); // go no go decision digester.addObjectCreate("*/plan/decision", Decision.class); digester.addSetProperties("*/plan/decision"); digester.addSetNext("*/plan/decision", "setDecision"); digester.addCallMethod("*/plan/decision/actionNeeded", "setActionNeeded", 0); digester.addCallMethod("*/plan/decision/reason", "setReason", 0); digester.addFactoryCreate("*/plan/decision/goDecision", GoDecisionFactory.class); digester.addSetNext("*/plan/decision/goDecision", "setDecision"); // evaluation digester.addObjectCreate("*/plan/evaluation", Evaluation.class); digester.addSetProperties("*/plan/evaluation"); digester.addSetNext("*/plan/evaluation", "setEvaluation"); digester.addCallMethod("*/plan/evaluation/comment", "setComment", 0); // importance weighting digester.addObjectCreate("*/plan/importanceWeighting", ImportanceWeighting.class); digester.addSetProperties("*/plan/importanceWeighting"); digester.addSetNext("*/plan/importanceWeighting", "setImportanceWeighting"); digester.addCallMethod("*/plan/importanceWeighting/comment", "setComment", 0); // recommendation digester.addObjectCreate("*/plan/recommendation", RecommendationWrapper.class); digester.addSetProperties("*/plan/recommendation"); digester.addSetNext("*/plan/recommendation", "setRecommendation"); digester.addCallMethod("*/plan/recommendation/reasoning", "setReasoning", 0); digester.addCallMethod("*/plan/recommendation/effects", "setEffects", 0); // transformation digester.addObjectCreate("*/plan/transformation", Transformation.class); digester.addSetProperties("*/plan/transformation"); digester.addSetNext("*/plan/transformation", "setTransformation"); digester.addCallMethod("*/plan/transformation/comment", "setComment", 0); // Tree /* * Some rules for tree parsing are necessary for importing templates * too, that's why they are added by this static method. */ PlanParser.addTreeParsingRulesToDigester(digester); digester.addObjectCreate("*/leaf/evaluation", HashMap.class); digester.addSetNext("*/leaf/evaluation", "setValueMap"); /* * The valueMap has an entry for each (considered) alternative ... and * for each alternative there is a list of values, one per SampleObject. * Note: The digester uses a stack, therefore the rule to put the list * of values to the valueMap must be added after the rule for adding the * values to the list. */ /* * 2. and for each alternative there is a list of values, one per * SampleObject */ digester.addObjectCreate("*/leaf/evaluation/alternative", Values.class); digester.addCallMethod("*/leaf/evaluation/alternative/comment", "setComment", 0); /* * for each result-type a set of rules they are added to the valueMap by * the rules above */ PlanParser.addCreateResultValue(digester, BooleanValue.class); PlanParser.addCreateResultValue(digester, FloatValue.class); PlanParser.addCreateResultValue(digester, FloatRangeValue.class); PlanParser.addCreateResultValue(digester, IntegerValue.class); PlanParser.addCreateResultValue(digester, IntRangeValue.class); PlanParser.addCreateResultValue(digester, OrdinalValue.class); PlanParser.addCreateResultValue(digester, PositiveFloatValue.class); PlanParser.addCreateResultValue(digester, PositiveIntegerValue.class); PlanParser.addCreateResultValue(digester, YanValue.class); PlanParser.addCreateResultValue(digester, FreeStringValue.class); /* * 1. The valueMap has an entry for each (considered) alternative ... */ // call put of the ValueMap (HashMap) r = new CallMethodRule(1, "put", 2); digester.addRule("*/leaf/evaluation/alternative", r); digester.addCallParam("*/leaf/evaluation/alternative", 0, "key"); digester.addCallParam("*/leaf/evaluation/alternative", 1, true); // digester.addObjectCreate("*/plan/executablePlan/planWorkflow", // ExecutablePlanContentWrapper.class); // digester.addSetProperties("*/plan/executablePlan/planWorkflow"); // digester.addSetNext("*/plan/executablePlan/planWorkflow", // "setRecommendation"); // Executable plan definition digester.addObjectCreate("*/plan/executablePlan", ExecutablePlanDefinition.class); digester.addSetProperties("*/plan/executablePlan"); digester.addCallMethod("*/plan/executablePlan/objectPath", "setObjectPath", 0); digester.addCallMethod("*/plan/executablePlan/toolParameters", "setToolParameters", 0); digester.addCallMethod("*/plan/executablePlan/triggersConditions", "setTriggersConditions", 0); digester.addCallMethod("*/plan/executablePlan/validateQA", "setValidateQA", 0); PlanParser.addCreateUpload(digester, "*/plan/executablePlan/workflow", "setT2flowExecutablePlan", DigitalObject.class); digester.addSetNext("*/plan/executablePlan", "setExecutablePlanDefinition"); // Preservation action plan digester.addObjectCreate("*/plan/preservationActionPlan", DigitalObject.class); digester.addSetNext("*/plan/preservationActionPlan", "setPreservationActionPlan"); digester.addCallMethod("*/plan/preservationActionPlan", "setContentType", 1); digester.addObjectParam("*/plan/preservationActionPlan", 0, "application/xml"); digester.addCallMethod("*/plan/preservationActionPlan", "setFullname", 1); digester.addObjectParam("*/plan/preservationActionPlan", 0, PreservationActionPlanGenerator.FULL_NAME); digester.addSetNext("*/plan/preservationActionPlan", "setPreservationActionPlan"); PlanParser.addCreateXMLData(digester, "*/plan/preservationActionPlan", "setData", "setChangeLog"); // // Import Planets executable plan if present // // object-create rules are called at the beginning element-tags, in // the // same order as defined // first create the wrapper // digester.addObjectCreate("*/plan/executablePlan/planWorkflow", // NodeContentWrapper.class); // // then an element for workflowConf // digester.addRule("*/plan/executablePlan/planWorkflow/workflowConf", // new NodeCreateRule()); // // // CallMethod and SetNext rules are called at closing element-tags, // // (last // // in - first out!) // // CallMethodRule rr = new CallMethodRule(1, "setNodeContent", 2); // digester.addRule("*/plan/executablePlan/planWorkflow/workflowConf", // rr); // // right below the wrapper is an instance of // // ExecutablePlanDefinition // digester.addCallParam("*/plan/executablePlan/planWorkflow/workflowConf", // 0, 1); // // provide the name of the setter method // digester.addObjectParam("*/plan/executablePlan/planWorkflow/workflowConf", // 1, "setExecutablePlan"); // // // the generated node is not accessible as CallParam (why?!?), but // // available for addSetNext // digester.addSetNext("*/plan/executablePlan/planWorkflow/workflowConf", // "setNode"); // // // // // Import EPrints executable plan if present // // // digester.addObjectCreate("*/plan/executablePlan/eprintsPlan", // NodeContentWrapper.class); // // then an element for workflowConf // digester.addRule("*/plan/executablePlan/eprintsPlan", new // NodeCreateRule()); // // CallMethodRule rr2 = new CallMethodRule(1, // "setNodeContentEPrintsPlan", 2); // digester.addRule("*/plan/executablePlan/eprintsPlan", rr2); // // right below the wrapper is an instance of // // ExecutablePlanDefinition // digester.addCallParam("*/plan/executablePlan/eprintsPlan", 0, 1); // // provide the name of the setter method // digester.addObjectParam("*/plan/executablePlan/eprintsPlan", 1, // "setEprintsExecutablePlan"); // digester.addSetNext("*/plan/executablePlan/eprintsPlan", "setNode"); // Plan definition digester.addObjectCreate("*/plan/planDefinition", PlanDefinition.class); digester.addSetProperties("*/plan/planDefinition"); digester.addSetNext("*/plan/planDefinition", "setPlanDefinition"); digester.addCallMethod("*/plan/planDefinition/costsIG", "setCostsIG", 0); digester.addCallMethod("*/plan/planDefinition/costsPA", "setCostsPA", 0); digester.addCallMethod("*/plan/planDefinition/costsPE", "setCostsPE", 0); digester.addCallMethod("*/plan/planDefinition/costsQA", "setCostsQA", 0); digester.addCallMethod("*/plan/planDefinition/costsREI", "setCostsREI", 0); digester.addCallMethod("*/plan/planDefinition/costsRemarks", "setCostsRemarks", 0); digester.addCallMethod("*/plan/planDefinition/costsRM", "setCostsRM", 0); digester.addCallMethod("*/plan/planDefinition/costsTCO", "setCostsTCO", 0); digester.addCallMethod("*/plan/planDefinition/responsibleExecution", "setResponsibleExecution", 0); digester.addCallMethod("*/plan/planDefinition/responsibleMonitoring", "setResponsibleMonitoring", 0); digester.addObjectCreate("*/plan/planDefinition/triggers", TriggerDefinition.class); digester.addSetNext("*/plan/planDefinition/triggers", "setTriggers"); // every time a */plan/basis/triggers/trigger is encountered: digester.addFactoryCreate("*/plan/planDefinition/triggers/trigger", TriggerFactory.class); digester.addSetNext("*/plan/planDefinition/triggers/trigger", "setTrigger"); }
From source file:eu.scape_project.planning.xml.PlanParser.java
/** * Create a rule for reading an upload entry for the given location * <code>pattern</code>, and use the <code>method</code> to set the upload * object.// w w w. j a va 2 s .c om * * @param digester * the digester * @param pattern * the location pattern * @param method * a method name of the parent object * @param objectType * class of object to create */ private static void addCreateUpload(final Digester digester, final String pattern, final String method, final Class<?> objectType) { digester.addObjectCreate(pattern, objectType); digester.addSetProperties(pattern); if ((method != null) && (!"".equals(method))) { digester.addSetNext(pattern, method); } /* * Note: It is not possible to read element data, process it and pass it * to a function with a simple digester Rule, neither you can define a * factory to read the data of an element. * * So we have to do it the other way round: (remember: the function * added last is executed first!) */ // 1. Create a BinaryDataWrapper if a <data> element is encountered digester.addObjectCreate(pattern + "/data", BinaryDataWrapper.class); // 3. Finally call setData on the BinaryDataWrapper(!) on top with the // object next to top as argument // The BinaryDataWrapper will call setData on to object next to top with // the previously read and decoded data digester.addSetTop(pattern + "/data", "setData"); // 2. Call setFromBase64Encoded on the BinaryDataWrapper to read the // elements content digester.addCallMethod(pattern + "/data", "setFromBase64Encoded", 0); }
From source file:br.univali.celine.scorm.model.cam.ContentPackageReader20043rd.java
protected void addRollupRules(Digester d, String tagParent) { d.addObjectCreate(tagParent + "/sequencing/rollupRules", RollupRules.class); d.addSetNext(tagParent + "/sequencing/rollupRules", "setRollupRules"); d.addSetProperties(tagParent + "/sequencing/rollupRules"); // <rollupRule> d.addObjectCreate(tagParent + "/sequencing/rollupRules/rollupRule", RollupRule.class); d.addSetNext(tagParent + "/sequencing/rollupRules/rollupRule", "addRollupRule"); d.addSetProperties(tagParent + "/sequencing/rollupRules/rollupRule"); // <rollupCondition> d.addObjectCreate(tagParent + "/sequencing/rollupRules/rollupRule/rollupConditions/rollupCondition", RollupCondition.class); d.addSetProperties(tagParent + "/sequencing/rollupRules/rollupRule/rollupConditions/rollupCondition"); d.addSetNext(tagParent + "/sequencing/rollupRules/rollupRule/rollupConditions/rollupCondition", "addRollupCondition"); // <rollupAction> d.addCallMethod(tagParent + "/sequencing/rollupRules/rollupRule/rollupAction", "setRollupAction", 1); d.addCallParam(tagParent + "/sequencing/rollupRules/rollupRule/rollupAction", 0, "action"); /*//from ww w. ja v a 2 s . c o m d.addCallMethod(tagParent+"/sequencing/rollupRules/rollupRule/rollupAction", "set"); d.addSetNext(tagParent+"/sequencing/rollupRules/rollupRule", "addRollupRule"); d.addSetProperties(tagParent+"/sequencing/rollupRules/rollupRule"); */ }
From source file:net.sf.mcf2pdf.mcfelements.impl.DigesterConfiguratorImpl.java
@Override public void configureDigester(Digester digester, File mcfFile) throws IOException { digester.setSubstitutor(createSubstitutor()); // fotobook element digester.addObjectCreate("fotobook", getFotobookClass()); DigesterUtil.addSetProperties(digester, "fotobook", getSpecialFotobookAttributes()); // page element digester.addObjectCreate("fotobook/page", getPageClass()); digester.addSetTop("fotobook/page", "setFotobook"); DigesterUtil.addSetProperties(digester, "fotobook/page", getSpecialPageAttributes()); digester.addSetNext("fotobook/page", "addPage", McfPage.class.getName()); // background element digester.addObjectCreate("fotobook/page/background", getBackgroundClass()); digester.addSetTop("fotobook/page/background", "setPage"); DigesterUtil.addSetProperties(digester, "fotobook/page/background", getSpecialBackgroundAttributes()); digester.addSetNext("fotobook/page/background", "addBackground", McfBackground.class.getName()); // area element digester.addObjectCreate("fotobook/page/area", getAreaClass()); digester.addSetTop("fotobook/page/area", "setPage"); DigesterUtil.addSetProperties(digester, "fotobook/page/area", getSpecialAreaAttributes()); digester.addSetNext("fotobook/page/area", "addArea", McfArea.class.getName()); // border element digester.addObjectCreate("fotobook/page/area/border", getBorderClass()); DigesterUtil.addSetProperties(digester, "fotobook/page/area/border", getSpecialBorderAttributes()); digester.addSetNext("fotobook/page/area/border", "setBorder"); // text element, including textFormat element digester.addObjectCreate("fotobook/page/area/text", getTextClass()); digester.addSetProperties("fotobook/page/area/text"); digester.addCallMethod("fotobook/page/area/text", "setHtmlContent", 0); DigesterUtil.addSetProperties(digester, "fotobook/page/area/text/textFormat", getSpecialTextFormatAttributes()); digester.addSetNext("fotobook/page/area/text", "setContent"); digester.addSetTop("fotobook/page/area/text", "setArea"); // clipart element digester.addObjectCreate("fotobook/page/area/clipart", getClipartClass()); digester.addSetProperties("fotobook/page/area/clipart"); digester.addSetNext("fotobook/page/area/clipart", "setContent"); digester.addSetTop("fotobook/page/area/clipart", "setArea"); // image element digester.addObjectCreate("fotobook/page/area/image", getImageClass()); DigesterUtil.addSetProperties(digester, "fotobook/page/area/image", getSpecialImageAttributes()); digester.addSetNext("fotobook/page/area/image", "setContent"); digester.addSetTop("fotobook/page/area/image", "setArea"); // imagebackground element digester.addObjectCreate("fotobook/page/area/imagebackground", getImageBackgroundClass()); DigesterUtil.addSetProperties(digester, "fotobook/page/area/imagebackground", getSpecialImageAttributes()); digester.addSetNext("fotobook/page/area/imagebackground", "setContent"); digester.addSetTop("fotobook/page/area/imagebackground", "setArea"); }
From source file:org.apache.commons.digester3.examples.api.addressbook.Main.java
private static void addRules(Digester d) { // -------------------------------------------------- // when we encounter a "person" tag, do the following: // create a new instance of class Person, and push that // object onto the digester stack of objects d.addObjectCreate("address-book/person", Person.class); // map *any* attributes on the tag to appropriate // setter-methods on the top object on the stack (the Person // instance created by the preceeding rule). ///*from w w w . j a va2 s .c o m*/ // For example: // if attribute "id" exists on the xml tag, and method setId // with one parameter exists on the object that is on top of // the digester object stack, then a call will be made to that // method. The value will be type-converted from string to // whatever type the target method declares (where possible), // using the commons ConvertUtils functionality. // // Attributes on the xml tag for which no setter methods exist // on the top object on the stack are just ignored. d.addSetProperties("address-book/person"); // call the addPerson method on the second-to-top object on // the stack (the AddressBook object), passing the top object // on the stack (the recently created Person object). d.addSetNext("address-book/person", "addPerson"); // -------------------------------------------------- // when we encounter a "name" tag, call setName on the top // object on the stack, passing the text contained within the // body of that name element [specifying a zero parameter count // implies one actual parameter, being the body text]. // The top object on the stack will be a person object, because // the pattern address-book/person always triggers the // ObjectCreateRule we added previously. d.addCallMethod("address-book/person/name", "setName", 0); // -------------------------------------------------- // when we encounter an "email" tag, call addEmail on the top // object on the stack, passing two parameters: the "type" // attribute, and the text within the tag body. d.addCallMethod("address-book/person/email", "addEmail", 2); d.addCallParam("address-book/person/email", 0, "type"); d.addCallParam("address-book/person/email", 1); // -------------------------------------------------- // When we encounter an "address" tag, create an instance of class // Address and push it on the digester stack of objects. After // doing that, call addAddress on the second-to-top object on the // digester stack (a "Person" object), passing the top object on // the digester stack (the "Address" object). And also set things // up so that for each child xml element encountered between the start // of the address tag and the end of the address tag, the text // contained in that element is passed to a setXXX method on the // Address object where XXX is the name of the xml element found. d.addObjectCreate("address-book/person/address", Address.class); d.addSetNext("address-book/person/address", "addAddress"); d.addSetNestedProperties("address-book/person/address"); }