// // This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.6 // See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> // Any modifications to this file will be lost upon recompilation of the source schema. // Generated on: 2012.09.27 at 06:57:43 PM EST // package org.opendope.conditions; import java.util.List; import java.util.Map; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlElements; import javax.xml.bind.annotation.XmlID; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlSchemaType; import javax.xml.bind.annotation.XmlType; import javax.xml.bind.annotation.adapters.CollapsedStringAdapter; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; import org.docx4j.XmlUtils; import org.docx4j.openpackaging.packages.WordprocessingMLPackage; import org.docx4j.openpackaging.parts.CustomXmlPart; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * <p>Java class for anonymous complex type. * * <p>The following schema fragment specifies the expected content contained within this class. * * <pre> * <complexType> * <complexContent> * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType"> * <choice> * <element ref="{http://opendope.org/conditions}xpathref"/> * <element ref="{http://opendope.org/conditions}and"/> * <element ref="{http://opendope.org/conditions}or"/> * <element ref="{http://opendope.org/conditions}not"/> * </choice> * <attribute name="id" use="required" type="{http://www.w3.org/2001/XMLSchema}ID" /> * <attribute name="name" type="{http://www.w3.org/2001/XMLSchema}string" /> * <attribute name="description" type="{http://www.w3.org/2001/XMLSchema}string" /> * <attribute name="comments" type="{http://www.w3.org/2001/XMLSchema}string" /> * <attribute name="source" type="{http://www.w3.org/2001/XMLSchema}string" /> * </restriction> * </complexContent> * </complexType> * </pre> * * */ @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "", propOrder = { "particle" }) @XmlRootElement(name = "condition") public class Condition implements Evaluable { private static Logger log = LoggerFactory.getLogger(Condition.class); @XmlElements({ @XmlElement(name = "xpathref", type = Xpathref.class), @XmlElement(name = "and", type = And.class), @XmlElement(name = "or", type = Or.class), @XmlElement(name = "not", type = Not.class) }) protected Evaluable particle; @XmlAttribute(name = "id", required = true) @XmlJavaTypeAdapter(CollapsedStringAdapter.class) @XmlID @XmlSchemaType(name = "ID") protected String id; @XmlAttribute(name = "name") protected String name; @XmlAttribute(name = "description") protected String description; @XmlAttribute(name = "comments") protected String comments; @XmlAttribute(name = "source") protected String source; /** * Gets the value of the particle property. * * @return * possible object is * {@link Xpathref } * {@link And } * {@link Or } * {@link Not } * */ public Evaluable getParticle() { return particle; } /** * Sets the value of the particle property. * * @param value * allowed object is * {@link Xpathref } * {@link And } * {@link Or } * {@link Not } * */ public void setParticle(Evaluable value) { this.particle = value; } public boolean evaluate(WordprocessingMLPackage pkg, Map<String, CustomXmlPart> customXmlDataStorageParts, Map<String, Condition> conditionsMap, Map<String, org.opendope.xpaths.Xpaths.Xpath> xpathsMap) { return particle.evaluate(pkg, customXmlDataStorageParts, conditionsMap, xpathsMap); } public void listXPaths( List<org.opendope.xpaths.Xpaths.Xpath> theList, Map<String, Condition> conditionsMap, Map<String, org.opendope.xpaths.Xpaths.Xpath> xpathsMap) { particle.listXPaths(theList, conditionsMap, xpathsMap); } /** * Map the IDs used in this condition to new values; useful for merging ConditionParts. * * @param xpathIdMap * @param conditionIdMap * @since 3.0.0 */ public void mapIds(Map<String, String> xpathIdMap, Map<String, String> conditionIdMap) { particle.mapIds(xpathIdMap, conditionIdMap); } public String toString(Map<String, Condition> conditionsMap, Map<String, org.opendope.xpaths.Xpaths.Xpath> xpathsMap) { return particle.toString(conditionsMap, xpathsMap); } public Condition repeat(String xpathBase, int index, Map<String, Condition> conditionsMap, Map<String, org.opendope.xpaths.Xpaths.Xpath> xpathsMap) { Condition newCondition; /* Avoid deepCopy for common simple cases: * <condition id="astInTrustSpouseCond"> <xpathref id="astInTrustSpouseXP"/> </condition> <condition id="astInTrustSpouseNotCond"> <not> <xpathref id="astInTrustSpouseXP"/> </not> </condition> */ if (this.getParticle() instanceof Xpathref) { newCondition = new Condition(); // copy the xpathref Xpathref xpathref = new Xpathref(); xpathref.setId( ((Xpathref)this.getParticle()).getId()); newCondition.setParticle(xpathref); } else if ( (this.getParticle() instanceof Not) && (((Not)this.getParticle()).getParticle() instanceof Xpathref) ) { newCondition = new Condition(); Not notParticle = new Not(); newCondition.setParticle(notParticle); // copy the xpathref Xpathref xpathref = new Xpathref(); xpathref.setId( ((Xpathref)((Not)this.getParticle()).getParticle()).getId()); notParticle.setParticle(xpathref); } else { // Create and add new condition newCondition = XmlUtils.deepCopy(this); } String newConditionId = id + "_" + index; newCondition.setId(newConditionId); // Add it Condition preExistingSanity = conditionsMap.put(newCondition.getId(), newCondition); //conditions.getCondition().add(newCondition); if (preExistingSanity!=null) { String preExisting = XmlUtils.marshaltoString(preExistingSanity); String newC = XmlUtils.marshaltoString(newCondition); if (preExistingSanity.equals(newC)) { log.debug("Duplicate identical Condition being added: " + newCondition.getId()); } else { log.error("Duplicate Condition " + newCondition.getId() + ": " + "\n"+ newC + " overwriting " + "\n"+ preExisting); } } // Fix its particles newCondition.getParticle().repeat(xpathBase, index, conditionsMap, xpathsMap); return newCondition; } /** * Gets the value of the id property. * * @return * possible object is * {@link String } * */ public String getId() { return id; } /** * Sets the value of the id property. * * @param value * allowed object is * {@link String } * */ public void setId(String value) { this.id = value; } /** * Gets the value of the name property. * * @return * possible object is * {@link String } * */ public String getName() { return name; } /** * Sets the value of the name property. * * @param value * allowed object is * {@link String } * */ public void setName(String value) { this.name = value; } /** * Gets the value of the description property. * * @return * possible object is * {@link String } * */ public String getDescription() { return description; } /** * Sets the value of the description property. * * @param value * allowed object is * {@link String } * */ public void setDescription(String value) { this.description = value; } /** * Gets the value of the comments property. * * @return * possible object is * {@link String } * */ public String getComments() { return comments; } /** * Sets the value of the comments property. * * @param value * allowed object is * {@link String } * */ public void setComments(String value) { this.comments = value; } /** * Gets the value of the source property. * * @return * possible object is * {@link String } * */ public String getSource() { return source; } /** * Sets the value of the source property. * * @param value * allowed object is * {@link String } * */ public void setSource(String value) { this.source = value; } }