//
// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.11
// 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: 2016.07.27 at 04:06:37 PM EDT
//
package org.isotc211._2005.gmd;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.validation.Valid;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlType;
import org.isotc211._2005.gco.CharacterStringPropertyType;
import org.isotc211._2005.gco.ObjectReferencePropertyType;
import org.jvnet.jaxb2_commons.lang.CopyStrategy2;
import org.jvnet.jaxb2_commons.lang.CopyTo2;
import org.jvnet.jaxb2_commons.lang.Equals2;
import org.jvnet.jaxb2_commons.lang.EqualsStrategy2;
import org.jvnet.jaxb2_commons.lang.HashCode2;
import org.jvnet.jaxb2_commons.lang.HashCodeStrategy2;
import org.jvnet.jaxb2_commons.lang.JAXBCopyStrategy;
import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
import org.jvnet.jaxb2_commons.lang.JAXBHashCodeStrategy;
import org.jvnet.jaxb2_commons.lang.JAXBMergeStrategy;
import org.jvnet.jaxb2_commons.lang.JAXBToStringStrategy;
import org.jvnet.jaxb2_commons.lang.MergeFrom2;
import org.jvnet.jaxb2_commons.lang.MergeStrategy2;
import org.jvnet.jaxb2_commons.lang.ToString2;
import org.jvnet.jaxb2_commons.lang.ToStringStrategy2;
import org.jvnet.jaxb2_commons.locator.ObjectLocator;
import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;
/**
* Description of the class of information covered by the information
*
* <p>Java class for MD_ScopeDescription_Type complex type.
*
* <p>The following schema fragment specifies the expected content contained within this class.
*
* <pre>
* <complexType name="MD_ScopeDescription_Type">
* <complexContent>
* <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* <choice>
* <element name="attributes" type="{http://www.isotc211.org/2005/gco}ObjectReference_PropertyType" maxOccurs="unbounded"/>
* <element name="features" type="{http://www.isotc211.org/2005/gco}ObjectReference_PropertyType" maxOccurs="unbounded"/>
* <element name="featureInstances" type="{http://www.isotc211.org/2005/gco}ObjectReference_PropertyType" maxOccurs="unbounded"/>
* <element name="attributeInstances" type="{http://www.isotc211.org/2005/gco}ObjectReference_PropertyType" maxOccurs="unbounded"/>
* <element name="dataset" type="{http://www.isotc211.org/2005/gco}CharacterString_PropertyType"/>
* <element name="other" type="{http://www.isotc211.org/2005/gco}CharacterString_PropertyType"/>
* </choice>
* </restriction>
* </complexContent>
* </complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "MD_ScopeDescription_Type", propOrder = {
"attributes",
"features",
"featureInstances",
"attributeInstances",
"dataset",
"other"
})
public class MDScopeDescriptionType implements Serializable, Cloneable, CopyTo2, Equals2, HashCode2, MergeFrom2, ToString2
{
private final static long serialVersionUID = 1L;
@Size(min = 1)
@Valid
protected List<ObjectReferencePropertyType> attributes;
@Size(min = 1)
@Valid
protected List<ObjectReferencePropertyType> features;
@Size(min = 1)
@Valid
protected List<ObjectReferencePropertyType> featureInstances;
@Size(min = 1)
@Valid
protected List<ObjectReferencePropertyType> attributeInstances;
@Valid
protected CharacterStringPropertyType dataset;
@Valid
protected CharacterStringPropertyType other;
/**
* Gets the value of the attributes property.
*
* <p>
* This accessor method returns a reference to the live list,
* not a snapshot. Therefore any modification you make to the
* returned list will be present inside the JAXB object.
* This is why there is not a <CODE>set</CODE> method for the attributes property.
*
* <p>
* For example, to add a new item, do as follows:
* <pre>
* getAttributes().add(newItem);
* </pre>
*
*
* <p>
* Objects of the following type(s) are allowed in the list
* {@link ObjectReferencePropertyType }
*
*
*/
public List<ObjectReferencePropertyType> getAttributes() {
if (attributes == null) {
attributes = new ArrayList<ObjectReferencePropertyType>();
}
return this.attributes;
}
public boolean isSetAttributes() {
return ((this.attributes!= null)&&(!this.attributes.isEmpty()));
}
public void unsetAttributes() {
this.attributes = null;
}
/**
* Gets the value of the features property.
*
* <p>
* This accessor method returns a reference to the live list,
* not a snapshot. Therefore any modification you make to the
* returned list will be present inside the JAXB object.
* This is why there is not a <CODE>set</CODE> method for the features property.
*
* <p>
* For example, to add a new item, do as follows:
* <pre>
* getFeatures().add(newItem);
* </pre>
*
*
* <p>
* Objects of the following type(s) are allowed in the list
* {@link ObjectReferencePropertyType }
*
*
*/
public List<ObjectReferencePropertyType> getFeatures() {
if (features == null) {
features = new ArrayList<ObjectReferencePropertyType>();
}
return this.features;
}
public boolean isSetFeatures() {
return ((this.features!= null)&&(!this.features.isEmpty()));
}
public void unsetFeatures() {
this.features = null;
}
/**
* Gets the value of the featureInstances property.
*
* <p>
* This accessor method returns a reference to the live list,
* not a snapshot. Therefore any modification you make to the
* returned list will be present inside the JAXB object.
* This is why there is not a <CODE>set</CODE> method for the featureInstances property.
*
* <p>
* For example, to add a new item, do as follows:
* <pre>
* getFeatureInstances().add(newItem);
* </pre>
*
*
* <p>
* Objects of the following type(s) are allowed in the list
* {@link ObjectReferencePropertyType }
*
*
*/
public List<ObjectReferencePropertyType> getFeatureInstances() {
if (featureInstances == null) {
featureInstances = new ArrayList<ObjectReferencePropertyType>();
}
return this.featureInstances;
}
public boolean isSetFeatureInstances() {
return ((this.featureInstances!= null)&&(!this.featureInstances.isEmpty()));
}
public void unsetFeatureInstances() {
this.featureInstances = null;
}
/**
* Gets the value of the attributeInstances property.
*
* <p>
* This accessor method returns a reference to the live list,
* not a snapshot. Therefore any modification you make to the
* returned list will be present inside the JAXB object.
* This is why there is not a <CODE>set</CODE> method for the attributeInstances property.
*
* <p>
* For example, to add a new item, do as follows:
* <pre>
* getAttributeInstances().add(newItem);
* </pre>
*
*
* <p>
* Objects of the following type(s) are allowed in the list
* {@link ObjectReferencePropertyType }
*
*
*/
public List<ObjectReferencePropertyType> getAttributeInstances() {
if (attributeInstances == null) {
attributeInstances = new ArrayList<ObjectReferencePropertyType>();
}
return this.attributeInstances;
}
public boolean isSetAttributeInstances() {
return ((this.attributeInstances!= null)&&(!this.attributeInstances.isEmpty()));
}
public void unsetAttributeInstances() {
this.attributeInstances = null;
}
/**
* Gets the value of the dataset property.
*
* @return
* possible object is
* {@link CharacterStringPropertyType }
*
*/
public CharacterStringPropertyType getDataset() {
return dataset;
}
/**
* Sets the value of the dataset property.
*
* @param value
* allowed object is
* {@link CharacterStringPropertyType }
*
*/
public void setDataset(CharacterStringPropertyType value) {
this.dataset = value;
}
public boolean isSetDataset() {
return (this.dataset!= null);
}
/**
* Gets the value of the other property.
*
* @return
* possible object is
* {@link CharacterStringPropertyType }
*
*/
public CharacterStringPropertyType getOther() {
return other;
}
/**
* Sets the value of the other property.
*
* @param value
* allowed object is
* {@link CharacterStringPropertyType }
*
*/
public void setOther(CharacterStringPropertyType value) {
this.other = value;
}
public boolean isSetOther() {
return (this.other!= null);
}
public String toString() {
final ToStringStrategy2 strategy = JAXBToStringStrategy.INSTANCE;
final StringBuilder buffer = new StringBuilder();
append(null, buffer, strategy);
return buffer.toString();
}
public StringBuilder append(ObjectLocator locator, StringBuilder buffer, ToStringStrategy2 strategy) {
strategy.appendStart(locator, this, buffer);
appendFields(locator, buffer, strategy);
strategy.appendEnd(locator, this, buffer);
return buffer;
}
public StringBuilder appendFields(ObjectLocator locator, StringBuilder buffer, ToStringStrategy2 strategy) {
{
List<ObjectReferencePropertyType> theAttributes;
theAttributes = (this.isSetAttributes()?this.getAttributes():null);
strategy.appendField(locator, this, "attributes", buffer, theAttributes, this.isSetAttributes());
}
{
List<ObjectReferencePropertyType> theFeatures;
theFeatures = (this.isSetFeatures()?this.getFeatures():null);
strategy.appendField(locator, this, "features", buffer, theFeatures, this.isSetFeatures());
}
{
List<ObjectReferencePropertyType> theFeatureInstances;
theFeatureInstances = (this.isSetFeatureInstances()?this.getFeatureInstances():null);
strategy.appendField(locator, this, "featureInstances", buffer, theFeatureInstances, this.isSetFeatureInstances());
}
{
List<ObjectReferencePropertyType> theAttributeInstances;
theAttributeInstances = (this.isSetAttributeInstances()?this.getAttributeInstances():null);
strategy.appendField(locator, this, "attributeInstances", buffer, theAttributeInstances, this.isSetAttributeInstances());
}
{
CharacterStringPropertyType theDataset;
theDataset = this.getDataset();
strategy.appendField(locator, this, "dataset", buffer, theDataset, this.isSetDataset());
}
{
CharacterStringPropertyType theOther;
theOther = this.getOther();
strategy.appendField(locator, this, "other", buffer, theOther, this.isSetOther());
}
return buffer;
}
public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy2 strategy) {
if ((object == null)||(this.getClass()!= object.getClass())) {
return false;
}
if (this == object) {
return true;
}
final MDScopeDescriptionType that = ((MDScopeDescriptionType) object);
{
List<ObjectReferencePropertyType> lhsAttributes;
lhsAttributes = (this.isSetAttributes()?this.getAttributes():null);
List<ObjectReferencePropertyType> rhsAttributes;
rhsAttributes = (that.isSetAttributes()?that.getAttributes():null);
if (!strategy.equals(LocatorUtils.property(thisLocator, "attributes", lhsAttributes), LocatorUtils.property(thatLocator, "attributes", rhsAttributes), lhsAttributes, rhsAttributes, this.isSetAttributes(), that.isSetAttributes())) {
return false;
}
}
{
List<ObjectReferencePropertyType> lhsFeatures;
lhsFeatures = (this.isSetFeatures()?this.getFeatures():null);
List<ObjectReferencePropertyType> rhsFeatures;
rhsFeatures = (that.isSetFeatures()?that.getFeatures():null);
if (!strategy.equals(LocatorUtils.property(thisLocator, "features", lhsFeatures), LocatorUtils.property(thatLocator, "features", rhsFeatures), lhsFeatures, rhsFeatures, this.isSetFeatures(), that.isSetFeatures())) {
return false;
}
}
{
List<ObjectReferencePropertyType> lhsFeatureInstances;
lhsFeatureInstances = (this.isSetFeatureInstances()?this.getFeatureInstances():null);
List<ObjectReferencePropertyType> rhsFeatureInstances;
rhsFeatureInstances = (that.isSetFeatureInstances()?that.getFeatureInstances():null);
if (!strategy.equals(LocatorUtils.property(thisLocator, "featureInstances", lhsFeatureInstances), LocatorUtils.property(thatLocator, "featureInstances", rhsFeatureInstances), lhsFeatureInstances, rhsFeatureInstances, this.isSetFeatureInstances(), that.isSetFeatureInstances())) {
return false;
}
}
{
List<ObjectReferencePropertyType> lhsAttributeInstances;
lhsAttributeInstances = (this.isSetAttributeInstances()?this.getAttributeInstances():null);
List<ObjectReferencePropertyType> rhsAttributeInstances;
rhsAttributeInstances = (that.isSetAttributeInstances()?that.getAttributeInstances():null);
if (!strategy.equals(LocatorUtils.property(thisLocator, "attributeInstances", lhsAttributeInstances), LocatorUtils.property(thatLocator, "attributeInstances", rhsAttributeInstances), lhsAttributeInstances, rhsAttributeInstances, this.isSetAttributeInstances(), that.isSetAttributeInstances())) {
return false;
}
}
{
CharacterStringPropertyType lhsDataset;
lhsDataset = this.getDataset();
CharacterStringPropertyType rhsDataset;
rhsDataset = that.getDataset();
if (!strategy.equals(LocatorUtils.property(thisLocator, "dataset", lhsDataset), LocatorUtils.property(thatLocator, "dataset", rhsDataset), lhsDataset, rhsDataset, this.isSetDataset(), that.isSetDataset())) {
return false;
}
}
{
CharacterStringPropertyType lhsOther;
lhsOther = this.getOther();
CharacterStringPropertyType rhsOther;
rhsOther = that.getOther();
if (!strategy.equals(LocatorUtils.property(thisLocator, "other", lhsOther), LocatorUtils.property(thatLocator, "other", rhsOther), lhsOther, rhsOther, this.isSetOther(), that.isSetOther())) {
return false;
}
}
return true;
}
public boolean equals(Object object) {
final EqualsStrategy2 strategy = JAXBEqualsStrategy.INSTANCE;
return equals(null, null, object, strategy);
}
public int hashCode(ObjectLocator locator, HashCodeStrategy2 strategy) {
int currentHashCode = 1;
{
List<ObjectReferencePropertyType> theAttributes;
theAttributes = (this.isSetAttributes()?this.getAttributes():null);
currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "attributes", theAttributes), currentHashCode, theAttributes, this.isSetAttributes());
}
{
List<ObjectReferencePropertyType> theFeatures;
theFeatures = (this.isSetFeatures()?this.getFeatures():null);
currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "features", theFeatures), currentHashCode, theFeatures, this.isSetFeatures());
}
{
List<ObjectReferencePropertyType> theFeatureInstances;
theFeatureInstances = (this.isSetFeatureInstances()?this.getFeatureInstances():null);
currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "featureInstances", theFeatureInstances), currentHashCode, theFeatureInstances, this.isSetFeatureInstances());
}
{
List<ObjectReferencePropertyType> theAttributeInstances;
theAttributeInstances = (this.isSetAttributeInstances()?this.getAttributeInstances():null);
currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "attributeInstances", theAttributeInstances), currentHashCode, theAttributeInstances, this.isSetAttributeInstances());
}
{
CharacterStringPropertyType theDataset;
theDataset = this.getDataset();
currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "dataset", theDataset), currentHashCode, theDataset, this.isSetDataset());
}
{
CharacterStringPropertyType theOther;
theOther = this.getOther();
currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "other", theOther), currentHashCode, theOther, this.isSetOther());
}
return currentHashCode;
}
public int hashCode() {
final HashCodeStrategy2 strategy = JAXBHashCodeStrategy.INSTANCE;
return this.hashCode(null, strategy);
}
public Object clone() {
return copyTo(createNewInstance());
}
public Object copyTo(Object target) {
final CopyStrategy2 strategy = JAXBCopyStrategy.INSTANCE;
return copyTo(null, target, strategy);
}
public Object copyTo(ObjectLocator locator, Object target, CopyStrategy2 strategy) {
final Object draftCopy = ((target == null)?createNewInstance():target);
if (draftCopy instanceof MDScopeDescriptionType) {
final MDScopeDescriptionType copy = ((MDScopeDescriptionType) draftCopy);
{
Boolean attributesShouldBeCopiedAndSet = strategy.shouldBeCopiedAndSet(locator, this.isSetAttributes());
if (attributesShouldBeCopiedAndSet == Boolean.TRUE) {
List<ObjectReferencePropertyType> sourceAttributes;
sourceAttributes = (this.isSetAttributes()?this.getAttributes():null);
@SuppressWarnings("unchecked")
List<ObjectReferencePropertyType> copyAttributes = ((List<ObjectReferencePropertyType> ) strategy.copy(LocatorUtils.property(locator, "attributes", sourceAttributes), sourceAttributes, this.isSetAttributes()));
copy.unsetAttributes();
if (copyAttributes!= null) {
List<ObjectReferencePropertyType> uniqueAttributesl = copy.getAttributes();
uniqueAttributesl.addAll(copyAttributes);
}
} else {
if (attributesShouldBeCopiedAndSet == Boolean.FALSE) {
copy.unsetAttributes();
}
}
}
{
Boolean featuresShouldBeCopiedAndSet = strategy.shouldBeCopiedAndSet(locator, this.isSetFeatures());
if (featuresShouldBeCopiedAndSet == Boolean.TRUE) {
List<ObjectReferencePropertyType> sourceFeatures;
sourceFeatures = (this.isSetFeatures()?this.getFeatures():null);
@SuppressWarnings("unchecked")
List<ObjectReferencePropertyType> copyFeatures = ((List<ObjectReferencePropertyType> ) strategy.copy(LocatorUtils.property(locator, "features", sourceFeatures), sourceFeatures, this.isSetFeatures()));
copy.unsetFeatures();
if (copyFeatures!= null) {
List<ObjectReferencePropertyType> uniqueFeaturesl = copy.getFeatures();
uniqueFeaturesl.addAll(copyFeatures);
}
} else {
if (featuresShouldBeCopiedAndSet == Boolean.FALSE) {
copy.unsetFeatures();
}
}
}
{
Boolean featureInstancesShouldBeCopiedAndSet = strategy.shouldBeCopiedAndSet(locator, this.isSetFeatureInstances());
if (featureInstancesShouldBeCopiedAndSet == Boolean.TRUE) {
List<ObjectReferencePropertyType> sourceFeatureInstances;
sourceFeatureInstances = (this.isSetFeatureInstances()?this.getFeatureInstances():null);
@SuppressWarnings("unchecked")
List<ObjectReferencePropertyType> copyFeatureInstances = ((List<ObjectReferencePropertyType> ) strategy.copy(LocatorUtils.property(locator, "featureInstances", sourceFeatureInstances), sourceFeatureInstances, this.isSetFeatureInstances()));
copy.unsetFeatureInstances();
if (copyFeatureInstances!= null) {
List<ObjectReferencePropertyType> uniqueFeatureInstancesl = copy.getFeatureInstances();
uniqueFeatureInstancesl.addAll(copyFeatureInstances);
}
} else {
if (featureInstancesShouldBeCopiedAndSet == Boolean.FALSE) {
copy.unsetFeatureInstances();
}
}
}
{
Boolean attributeInstancesShouldBeCopiedAndSet = strategy.shouldBeCopiedAndSet(locator, this.isSetAttributeInstances());
if (attributeInstancesShouldBeCopiedAndSet == Boolean.TRUE) {
List<ObjectReferencePropertyType> sourceAttributeInstances;
sourceAttributeInstances = (this.isSetAttributeInstances()?this.getAttributeInstances():null);
@SuppressWarnings("unchecked")
List<ObjectReferencePropertyType> copyAttributeInstances = ((List<ObjectReferencePropertyType> ) strategy.copy(LocatorUtils.property(locator, "attributeInstances", sourceAttributeInstances), sourceAttributeInstances, this.isSetAttributeInstances()));
copy.unsetAttributeInstances();
if (copyAttributeInstances!= null) {
List<ObjectReferencePropertyType> uniqueAttributeInstancesl = copy.getAttributeInstances();
uniqueAttributeInstancesl.addAll(copyAttributeInstances);
}
} else {
if (attributeInstancesShouldBeCopiedAndSet == Boolean.FALSE) {
copy.unsetAttributeInstances();
}
}
}
{
Boolean datasetShouldBeCopiedAndSet = strategy.shouldBeCopiedAndSet(locator, this.isSetDataset());
if (datasetShouldBeCopiedAndSet == Boolean.TRUE) {
CharacterStringPropertyType sourceDataset;
sourceDataset = this.getDataset();
CharacterStringPropertyType copyDataset = ((CharacterStringPropertyType) strategy.copy(LocatorUtils.property(locator, "dataset", sourceDataset), sourceDataset, this.isSetDataset()));
copy.setDataset(copyDataset);
} else {
if (datasetShouldBeCopiedAndSet == Boolean.FALSE) {
copy.dataset = null;
}
}
}
{
Boolean otherShouldBeCopiedAndSet = strategy.shouldBeCopiedAndSet(locator, this.isSetOther());
if (otherShouldBeCopiedAndSet == Boolean.TRUE) {
CharacterStringPropertyType sourceOther;
sourceOther = this.getOther();
CharacterStringPropertyType copyOther = ((CharacterStringPropertyType) strategy.copy(LocatorUtils.property(locator, "other", sourceOther), sourceOther, this.isSetOther()));
copy.setOther(copyOther);
} else {
if (otherShouldBeCopiedAndSet == Boolean.FALSE) {
copy.other = null;
}
}
}
}
return draftCopy;
}
public Object createNewInstance() {
return new MDScopeDescriptionType();
}
public void mergeFrom(Object left, Object right) {
final MergeStrategy2 strategy = JAXBMergeStrategy.INSTANCE;
mergeFrom(null, null, left, right, strategy);
}
public void mergeFrom(ObjectLocator leftLocator, ObjectLocator rightLocator, Object left, Object right, MergeStrategy2 strategy) {
if (right instanceof MDScopeDescriptionType) {
final MDScopeDescriptionType target = this;
final MDScopeDescriptionType leftObject = ((MDScopeDescriptionType) left);
final MDScopeDescriptionType rightObject = ((MDScopeDescriptionType) right);
{
Boolean attributesShouldBeMergedAndSet = strategy.shouldBeMergedAndSet(leftLocator, rightLocator, leftObject.isSetAttributes(), rightObject.isSetAttributes());
if (attributesShouldBeMergedAndSet == Boolean.TRUE) {
List<ObjectReferencePropertyType> lhsAttributes;
lhsAttributes = (leftObject.isSetAttributes()?leftObject.getAttributes():null);
List<ObjectReferencePropertyType> rhsAttributes;
rhsAttributes = (rightObject.isSetAttributes()?rightObject.getAttributes():null);
List<ObjectReferencePropertyType> mergedAttributes = ((List<ObjectReferencePropertyType> ) strategy.merge(LocatorUtils.property(leftLocator, "attributes", lhsAttributes), LocatorUtils.property(rightLocator, "attributes", rhsAttributes), lhsAttributes, rhsAttributes, leftObject.isSetAttributes(), rightObject.isSetAttributes()));
target.unsetAttributes();
if (mergedAttributes!= null) {
List<ObjectReferencePropertyType> uniqueAttributesl = target.getAttributes();
uniqueAttributesl.addAll(mergedAttributes);
}
} else {
if (attributesShouldBeMergedAndSet == Boolean.FALSE) {
target.unsetAttributes();
}
}
}
{
Boolean featuresShouldBeMergedAndSet = strategy.shouldBeMergedAndSet(leftLocator, rightLocator, leftObject.isSetFeatures(), rightObject.isSetFeatures());
if (featuresShouldBeMergedAndSet == Boolean.TRUE) {
List<ObjectReferencePropertyType> lhsFeatures;
lhsFeatures = (leftObject.isSetFeatures()?leftObject.getFeatures():null);
List<ObjectReferencePropertyType> rhsFeatures;
rhsFeatures = (rightObject.isSetFeatures()?rightObject.getFeatures():null);
List<ObjectReferencePropertyType> mergedFeatures = ((List<ObjectReferencePropertyType> ) strategy.merge(LocatorUtils.property(leftLocator, "features", lhsFeatures), LocatorUtils.property(rightLocator, "features", rhsFeatures), lhsFeatures, rhsFeatures, leftObject.isSetFeatures(), rightObject.isSetFeatures()));
target.unsetFeatures();
if (mergedFeatures!= null) {
List<ObjectReferencePropertyType> uniqueFeaturesl = target.getFeatures();
uniqueFeaturesl.addAll(mergedFeatures);
}
} else {
if (featuresShouldBeMergedAndSet == Boolean.FALSE) {
target.unsetFeatures();
}
}
}
{
Boolean featureInstancesShouldBeMergedAndSet = strategy.shouldBeMergedAndSet(leftLocator, rightLocator, leftObject.isSetFeatureInstances(), rightObject.isSetFeatureInstances());
if (featureInstancesShouldBeMergedAndSet == Boolean.TRUE) {
List<ObjectReferencePropertyType> lhsFeatureInstances;
lhsFeatureInstances = (leftObject.isSetFeatureInstances()?leftObject.getFeatureInstances():null);
List<ObjectReferencePropertyType> rhsFeatureInstances;
rhsFeatureInstances = (rightObject.isSetFeatureInstances()?rightObject.getFeatureInstances():null);
List<ObjectReferencePropertyType> mergedFeatureInstances = ((List<ObjectReferencePropertyType> ) strategy.merge(LocatorUtils.property(leftLocator, "featureInstances", lhsFeatureInstances), LocatorUtils.property(rightLocator, "featureInstances", rhsFeatureInstances), lhsFeatureInstances, rhsFeatureInstances, leftObject.isSetFeatureInstances(), rightObject.isSetFeatureInstances()));
target.unsetFeatureInstances();
if (mergedFeatureInstances!= null) {
List<ObjectReferencePropertyType> uniqueFeatureInstancesl = target.getFeatureInstances();
uniqueFeatureInstancesl.addAll(mergedFeatureInstances);
}
} else {
if (featureInstancesShouldBeMergedAndSet == Boolean.FALSE) {
target.unsetFeatureInstances();
}
}
}
{
Boolean attributeInstancesShouldBeMergedAndSet = strategy.shouldBeMergedAndSet(leftLocator, rightLocator, leftObject.isSetAttributeInstances(), rightObject.isSetAttributeInstances());
if (attributeInstancesShouldBeMergedAndSet == Boolean.TRUE) {
List<ObjectReferencePropertyType> lhsAttributeInstances;
lhsAttributeInstances = (leftObject.isSetAttributeInstances()?leftObject.getAttributeInstances():null);
List<ObjectReferencePropertyType> rhsAttributeInstances;
rhsAttributeInstances = (rightObject.isSetAttributeInstances()?rightObject.getAttributeInstances():null);
List<ObjectReferencePropertyType> mergedAttributeInstances = ((List<ObjectReferencePropertyType> ) strategy.merge(LocatorUtils.property(leftLocator, "attributeInstances", lhsAttributeInstances), LocatorUtils.property(rightLocator, "attributeInstances", rhsAttributeInstances), lhsAttributeInstances, rhsAttributeInstances, leftObject.isSetAttributeInstances(), rightObject.isSetAttributeInstances()));
target.unsetAttributeInstances();
if (mergedAttributeInstances!= null) {
List<ObjectReferencePropertyType> uniqueAttributeInstancesl = target.getAttributeInstances();
uniqueAttributeInstancesl.addAll(mergedAttributeInstances);
}
} else {
if (attributeInstancesShouldBeMergedAndSet == Boolean.FALSE) {
target.unsetAttributeInstances();
}
}
}
{
Boolean datasetShouldBeMergedAndSet = strategy.shouldBeMergedAndSet(leftLocator, rightLocator, leftObject.isSetDataset(), rightObject.isSetDataset());
if (datasetShouldBeMergedAndSet == Boolean.TRUE) {
CharacterStringPropertyType lhsDataset;
lhsDataset = leftObject.getDataset();
CharacterStringPropertyType rhsDataset;
rhsDataset = rightObject.getDataset();
CharacterStringPropertyType mergedDataset = ((CharacterStringPropertyType) strategy.merge(LocatorUtils.property(leftLocator, "dataset", lhsDataset), LocatorUtils.property(rightLocator, "dataset", rhsDataset), lhsDataset, rhsDataset, leftObject.isSetDataset(), rightObject.isSetDataset()));
target.setDataset(mergedDataset);
} else {
if (datasetShouldBeMergedAndSet == Boolean.FALSE) {
target.dataset = null;
}
}
}
{
Boolean otherShouldBeMergedAndSet = strategy.shouldBeMergedAndSet(leftLocator, rightLocator, leftObject.isSetOther(), rightObject.isSetOther());
if (otherShouldBeMergedAndSet == Boolean.TRUE) {
CharacterStringPropertyType lhsOther;
lhsOther = leftObject.getOther();
CharacterStringPropertyType rhsOther;
rhsOther = rightObject.getOther();
CharacterStringPropertyType mergedOther = ((CharacterStringPropertyType) strategy.merge(LocatorUtils.property(leftLocator, "other", lhsOther), LocatorUtils.property(rightLocator, "other", rhsOther), lhsOther, rhsOther, leftObject.isSetOther(), rightObject.isSetOther()));
target.setOther(mergedOther);
} else {
if (otherShouldBeMergedAndSet == Boolean.FALSE) {
target.other = null;
}
}
}
}
}
public void setAttributes(List<ObjectReferencePropertyType> value) {
this.attributes = null;
if (value!= null) {
List<ObjectReferencePropertyType> draftl = this.getAttributes();
draftl.addAll(value);
}
}
public void setFeatures(List<ObjectReferencePropertyType> value) {
this.features = null;
if (value!= null) {
List<ObjectReferencePropertyType> draftl = this.getFeatures();
draftl.addAll(value);
}
}
public void setFeatureInstances(List<ObjectReferencePropertyType> value) {
this.featureInstances = null;
if (value!= null) {
List<ObjectReferencePropertyType> draftl = this.getFeatureInstances();
draftl.addAll(value);
}
}
public void setAttributeInstances(List<ObjectReferencePropertyType> value) {
this.attributeInstances = null;
if (value!= null) {
List<ObjectReferencePropertyType> draftl = this.getAttributeInstances();
draftl.addAll(value);
}
}
}