//
// 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.NotNull;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
import org.isotc211._2005.gco.AbstractObjectType;
import org.isotc211._2005.gco.CharacterStringPropertyType;
import org.isotc211._2005.gco.DateTimePropertyType;
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;
/**
* <p>Java class for LI_ProcessStep_Type complex type.
*
* <p>The following schema fragment specifies the expected content contained within this class.
*
* <pre>
* <complexType name="LI_ProcessStep_Type">
* <complexContent>
* <extension base="{http://www.isotc211.org/2005/gco}AbstractObject_Type">
* <sequence>
* <element name="description" type="{http://www.isotc211.org/2005/gco}CharacterString_PropertyType"/>
* <element name="rationale" type="{http://www.isotc211.org/2005/gco}CharacterString_PropertyType" minOccurs="0"/>
* <element name="dateTime" type="{http://www.isotc211.org/2005/gco}DateTime_PropertyType" minOccurs="0"/>
* <element name="processor" type="{http://www.isotc211.org/2005/gmd}CI_ResponsibleParty_PropertyType" maxOccurs="unbounded" minOccurs="0"/>
* <element name="source" type="{http://www.isotc211.org/2005/gmd}LI_Source_PropertyType" maxOccurs="unbounded" minOccurs="0"/>
* </sequence>
* </extension>
* </complexContent>
* </complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "LI_ProcessStep_Type", propOrder = {
"description",
"rationale",
"dateTime",
"processor",
"source"
})
public class LIProcessStepType
extends AbstractObjectType
implements Serializable, Cloneable, CopyTo2, Equals2, HashCode2, MergeFrom2, ToString2
{
private final static long serialVersionUID = 1L;
@XmlElement(required = true)
@NotNull(message = "LIProcessStepType.description {javax.validation.constraints.NotNull.message}")
@Valid
protected CharacterStringPropertyType description;
@Valid
protected CharacterStringPropertyType rationale;
@Valid
protected DateTimePropertyType dateTime;
@Valid
protected List<CIResponsiblePartyPropertyType> processor;
@Valid
protected List<LISourcePropertyType> source;
/**
* Gets the value of the description property.
*
* @return
* possible object is
* {@link CharacterStringPropertyType }
*
*/
public CharacterStringPropertyType getDescription() {
return description;
}
/**
* Sets the value of the description property.
*
* @param value
* allowed object is
* {@link CharacterStringPropertyType }
*
*/
public void setDescription(CharacterStringPropertyType value) {
this.description = value;
}
public boolean isSetDescription() {
return (this.description!= null);
}
/**
* Gets the value of the rationale property.
*
* @return
* possible object is
* {@link CharacterStringPropertyType }
*
*/
public CharacterStringPropertyType getRationale() {
return rationale;
}
/**
* Sets the value of the rationale property.
*
* @param value
* allowed object is
* {@link CharacterStringPropertyType }
*
*/
public void setRationale(CharacterStringPropertyType value) {
this.rationale = value;
}
public boolean isSetRationale() {
return (this.rationale!= null);
}
/**
* Gets the value of the dateTime property.
*
* @return
* possible object is
* {@link DateTimePropertyType }
*
*/
public DateTimePropertyType getDateTime() {
return dateTime;
}
/**
* Sets the value of the dateTime property.
*
* @param value
* allowed object is
* {@link DateTimePropertyType }
*
*/
public void setDateTime(DateTimePropertyType value) {
this.dateTime = value;
}
public boolean isSetDateTime() {
return (this.dateTime!= null);
}
/**
* Gets the value of the processor 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 processor property.
*
* <p>
* For example, to add a new item, do as follows:
* <pre>
* getProcessor().add(newItem);
* </pre>
*
*
* <p>
* Objects of the following type(s) are allowed in the list
* {@link CIResponsiblePartyPropertyType }
*
*
*/
public List<CIResponsiblePartyPropertyType> getProcessor() {
if (processor == null) {
processor = new ArrayList<CIResponsiblePartyPropertyType>();
}
return this.processor;
}
public boolean isSetProcessor() {
return ((this.processor!= null)&&(!this.processor.isEmpty()));
}
public void unsetProcessor() {
this.processor = null;
}
/**
* Gets the value of the source 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 source property.
*
* <p>
* For example, to add a new item, do as follows:
* <pre>
* getSource().add(newItem);
* </pre>
*
*
* <p>
* Objects of the following type(s) are allowed in the list
* {@link LISourcePropertyType }
*
*
*/
public List<LISourcePropertyType> getSource() {
if (source == null) {
source = new ArrayList<LISourcePropertyType>();
}
return this.source;
}
public boolean isSetSource() {
return ((this.source!= null)&&(!this.source.isEmpty()));
}
public void unsetSource() {
this.source = 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) {
super.appendFields(locator, buffer, strategy);
{
CharacterStringPropertyType theDescription;
theDescription = this.getDescription();
strategy.appendField(locator, this, "description", buffer, theDescription, this.isSetDescription());
}
{
CharacterStringPropertyType theRationale;
theRationale = this.getRationale();
strategy.appendField(locator, this, "rationale", buffer, theRationale, this.isSetRationale());
}
{
DateTimePropertyType theDateTime;
theDateTime = this.getDateTime();
strategy.appendField(locator, this, "dateTime", buffer, theDateTime, this.isSetDateTime());
}
{
List<CIResponsiblePartyPropertyType> theProcessor;
theProcessor = (this.isSetProcessor()?this.getProcessor():null);
strategy.appendField(locator, this, "processor", buffer, theProcessor, this.isSetProcessor());
}
{
List<LISourcePropertyType> theSource;
theSource = (this.isSetSource()?this.getSource():null);
strategy.appendField(locator, this, "source", buffer, theSource, this.isSetSource());
}
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;
}
if (!super.equals(thisLocator, thatLocator, object, strategy)) {
return false;
}
final LIProcessStepType that = ((LIProcessStepType) object);
{
CharacterStringPropertyType lhsDescription;
lhsDescription = this.getDescription();
CharacterStringPropertyType rhsDescription;
rhsDescription = that.getDescription();
if (!strategy.equals(LocatorUtils.property(thisLocator, "description", lhsDescription), LocatorUtils.property(thatLocator, "description", rhsDescription), lhsDescription, rhsDescription, this.isSetDescription(), that.isSetDescription())) {
return false;
}
}
{
CharacterStringPropertyType lhsRationale;
lhsRationale = this.getRationale();
CharacterStringPropertyType rhsRationale;
rhsRationale = that.getRationale();
if (!strategy.equals(LocatorUtils.property(thisLocator, "rationale", lhsRationale), LocatorUtils.property(thatLocator, "rationale", rhsRationale), lhsRationale, rhsRationale, this.isSetRationale(), that.isSetRationale())) {
return false;
}
}
{
DateTimePropertyType lhsDateTime;
lhsDateTime = this.getDateTime();
DateTimePropertyType rhsDateTime;
rhsDateTime = that.getDateTime();
if (!strategy.equals(LocatorUtils.property(thisLocator, "dateTime", lhsDateTime), LocatorUtils.property(thatLocator, "dateTime", rhsDateTime), lhsDateTime, rhsDateTime, this.isSetDateTime(), that.isSetDateTime())) {
return false;
}
}
{
List<CIResponsiblePartyPropertyType> lhsProcessor;
lhsProcessor = (this.isSetProcessor()?this.getProcessor():null);
List<CIResponsiblePartyPropertyType> rhsProcessor;
rhsProcessor = (that.isSetProcessor()?that.getProcessor():null);
if (!strategy.equals(LocatorUtils.property(thisLocator, "processor", lhsProcessor), LocatorUtils.property(thatLocator, "processor", rhsProcessor), lhsProcessor, rhsProcessor, this.isSetProcessor(), that.isSetProcessor())) {
return false;
}
}
{
List<LISourcePropertyType> lhsSource;
lhsSource = (this.isSetSource()?this.getSource():null);
List<LISourcePropertyType> rhsSource;
rhsSource = (that.isSetSource()?that.getSource():null);
if (!strategy.equals(LocatorUtils.property(thisLocator, "source", lhsSource), LocatorUtils.property(thatLocator, "source", rhsSource), lhsSource, rhsSource, this.isSetSource(), that.isSetSource())) {
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 = super.hashCode(locator, strategy);
{
CharacterStringPropertyType theDescription;
theDescription = this.getDescription();
currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "description", theDescription), currentHashCode, theDescription, this.isSetDescription());
}
{
CharacterStringPropertyType theRationale;
theRationale = this.getRationale();
currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "rationale", theRationale), currentHashCode, theRationale, this.isSetRationale());
}
{
DateTimePropertyType theDateTime;
theDateTime = this.getDateTime();
currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "dateTime", theDateTime), currentHashCode, theDateTime, this.isSetDateTime());
}
{
List<CIResponsiblePartyPropertyType> theProcessor;
theProcessor = (this.isSetProcessor()?this.getProcessor():null);
currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "processor", theProcessor), currentHashCode, theProcessor, this.isSetProcessor());
}
{
List<LISourcePropertyType> theSource;
theSource = (this.isSetSource()?this.getSource():null);
currentHashCode = strategy.hashCode(LocatorUtils.property(locator, "source", theSource), currentHashCode, theSource, this.isSetSource());
}
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);
super.copyTo(locator, draftCopy, strategy);
if (draftCopy instanceof LIProcessStepType) {
final LIProcessStepType copy = ((LIProcessStepType) draftCopy);
{
Boolean descriptionShouldBeCopiedAndSet = strategy.shouldBeCopiedAndSet(locator, this.isSetDescription());
if (descriptionShouldBeCopiedAndSet == Boolean.TRUE) {
CharacterStringPropertyType sourceDescription;
sourceDescription = this.getDescription();
CharacterStringPropertyType copyDescription = ((CharacterStringPropertyType) strategy.copy(LocatorUtils.property(locator, "description", sourceDescription), sourceDescription, this.isSetDescription()));
copy.setDescription(copyDescription);
} else {
if (descriptionShouldBeCopiedAndSet == Boolean.FALSE) {
copy.description = null;
}
}
}
{
Boolean rationaleShouldBeCopiedAndSet = strategy.shouldBeCopiedAndSet(locator, this.isSetRationale());
if (rationaleShouldBeCopiedAndSet == Boolean.TRUE) {
CharacterStringPropertyType sourceRationale;
sourceRationale = this.getRationale();
CharacterStringPropertyType copyRationale = ((CharacterStringPropertyType) strategy.copy(LocatorUtils.property(locator, "rationale", sourceRationale), sourceRationale, this.isSetRationale()));
copy.setRationale(copyRationale);
} else {
if (rationaleShouldBeCopiedAndSet == Boolean.FALSE) {
copy.rationale = null;
}
}
}
{
Boolean dateTimeShouldBeCopiedAndSet = strategy.shouldBeCopiedAndSet(locator, this.isSetDateTime());
if (dateTimeShouldBeCopiedAndSet == Boolean.TRUE) {
DateTimePropertyType sourceDateTime;
sourceDateTime = this.getDateTime();
DateTimePropertyType copyDateTime = ((DateTimePropertyType) strategy.copy(LocatorUtils.property(locator, "dateTime", sourceDateTime), sourceDateTime, this.isSetDateTime()));
copy.setDateTime(copyDateTime);
} else {
if (dateTimeShouldBeCopiedAndSet == Boolean.FALSE) {
copy.dateTime = null;
}
}
}
{
Boolean processorShouldBeCopiedAndSet = strategy.shouldBeCopiedAndSet(locator, this.isSetProcessor());
if (processorShouldBeCopiedAndSet == Boolean.TRUE) {
List<CIResponsiblePartyPropertyType> sourceProcessor;
sourceProcessor = (this.isSetProcessor()?this.getProcessor():null);
@SuppressWarnings("unchecked")
List<CIResponsiblePartyPropertyType> copyProcessor = ((List<CIResponsiblePartyPropertyType> ) strategy.copy(LocatorUtils.property(locator, "processor", sourceProcessor), sourceProcessor, this.isSetProcessor()));
copy.unsetProcessor();
if (copyProcessor!= null) {
List<CIResponsiblePartyPropertyType> uniqueProcessorl = copy.getProcessor();
uniqueProcessorl.addAll(copyProcessor);
}
} else {
if (processorShouldBeCopiedAndSet == Boolean.FALSE) {
copy.unsetProcessor();
}
}
}
{
Boolean sourceShouldBeCopiedAndSet = strategy.shouldBeCopiedAndSet(locator, this.isSetSource());
if (sourceShouldBeCopiedAndSet == Boolean.TRUE) {
List<LISourcePropertyType> sourceSource;
sourceSource = (this.isSetSource()?this.getSource():null);
@SuppressWarnings("unchecked")
List<LISourcePropertyType> copySource = ((List<LISourcePropertyType> ) strategy.copy(LocatorUtils.property(locator, "source", sourceSource), sourceSource, this.isSetSource()));
copy.unsetSource();
if (copySource!= null) {
List<LISourcePropertyType> uniqueSourcel = copy.getSource();
uniqueSourcel.addAll(copySource);
}
} else {
if (sourceShouldBeCopiedAndSet == Boolean.FALSE) {
copy.unsetSource();
}
}
}
}
return draftCopy;
}
public Object createNewInstance() {
return new LIProcessStepType();
}
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) {
super.mergeFrom(leftLocator, rightLocator, left, right, strategy);
if (right instanceof LIProcessStepType) {
final LIProcessStepType target = this;
final LIProcessStepType leftObject = ((LIProcessStepType) left);
final LIProcessStepType rightObject = ((LIProcessStepType) right);
{
Boolean descriptionShouldBeMergedAndSet = strategy.shouldBeMergedAndSet(leftLocator, rightLocator, leftObject.isSetDescription(), rightObject.isSetDescription());
if (descriptionShouldBeMergedAndSet == Boolean.TRUE) {
CharacterStringPropertyType lhsDescription;
lhsDescription = leftObject.getDescription();
CharacterStringPropertyType rhsDescription;
rhsDescription = rightObject.getDescription();
CharacterStringPropertyType mergedDescription = ((CharacterStringPropertyType) strategy.merge(LocatorUtils.property(leftLocator, "description", lhsDescription), LocatorUtils.property(rightLocator, "description", rhsDescription), lhsDescription, rhsDescription, leftObject.isSetDescription(), rightObject.isSetDescription()));
target.setDescription(mergedDescription);
} else {
if (descriptionShouldBeMergedAndSet == Boolean.FALSE) {
target.description = null;
}
}
}
{
Boolean rationaleShouldBeMergedAndSet = strategy.shouldBeMergedAndSet(leftLocator, rightLocator, leftObject.isSetRationale(), rightObject.isSetRationale());
if (rationaleShouldBeMergedAndSet == Boolean.TRUE) {
CharacterStringPropertyType lhsRationale;
lhsRationale = leftObject.getRationale();
CharacterStringPropertyType rhsRationale;
rhsRationale = rightObject.getRationale();
CharacterStringPropertyType mergedRationale = ((CharacterStringPropertyType) strategy.merge(LocatorUtils.property(leftLocator, "rationale", lhsRationale), LocatorUtils.property(rightLocator, "rationale", rhsRationale), lhsRationale, rhsRationale, leftObject.isSetRationale(), rightObject.isSetRationale()));
target.setRationale(mergedRationale);
} else {
if (rationaleShouldBeMergedAndSet == Boolean.FALSE) {
target.rationale = null;
}
}
}
{
Boolean dateTimeShouldBeMergedAndSet = strategy.shouldBeMergedAndSet(leftLocator, rightLocator, leftObject.isSetDateTime(), rightObject.isSetDateTime());
if (dateTimeShouldBeMergedAndSet == Boolean.TRUE) {
DateTimePropertyType lhsDateTime;
lhsDateTime = leftObject.getDateTime();
DateTimePropertyType rhsDateTime;
rhsDateTime = rightObject.getDateTime();
DateTimePropertyType mergedDateTime = ((DateTimePropertyType) strategy.merge(LocatorUtils.property(leftLocator, "dateTime", lhsDateTime), LocatorUtils.property(rightLocator, "dateTime", rhsDateTime), lhsDateTime, rhsDateTime, leftObject.isSetDateTime(), rightObject.isSetDateTime()));
target.setDateTime(mergedDateTime);
} else {
if (dateTimeShouldBeMergedAndSet == Boolean.FALSE) {
target.dateTime = null;
}
}
}
{
Boolean processorShouldBeMergedAndSet = strategy.shouldBeMergedAndSet(leftLocator, rightLocator, leftObject.isSetProcessor(), rightObject.isSetProcessor());
if (processorShouldBeMergedAndSet == Boolean.TRUE) {
List<CIResponsiblePartyPropertyType> lhsProcessor;
lhsProcessor = (leftObject.isSetProcessor()?leftObject.getProcessor():null);
List<CIResponsiblePartyPropertyType> rhsProcessor;
rhsProcessor = (rightObject.isSetProcessor()?rightObject.getProcessor():null);
List<CIResponsiblePartyPropertyType> mergedProcessor = ((List<CIResponsiblePartyPropertyType> ) strategy.merge(LocatorUtils.property(leftLocator, "processor", lhsProcessor), LocatorUtils.property(rightLocator, "processor", rhsProcessor), lhsProcessor, rhsProcessor, leftObject.isSetProcessor(), rightObject.isSetProcessor()));
target.unsetProcessor();
if (mergedProcessor!= null) {
List<CIResponsiblePartyPropertyType> uniqueProcessorl = target.getProcessor();
uniqueProcessorl.addAll(mergedProcessor);
}
} else {
if (processorShouldBeMergedAndSet == Boolean.FALSE) {
target.unsetProcessor();
}
}
}
{
Boolean sourceShouldBeMergedAndSet = strategy.shouldBeMergedAndSet(leftLocator, rightLocator, leftObject.isSetSource(), rightObject.isSetSource());
if (sourceShouldBeMergedAndSet == Boolean.TRUE) {
List<LISourcePropertyType> lhsSource;
lhsSource = (leftObject.isSetSource()?leftObject.getSource():null);
List<LISourcePropertyType> rhsSource;
rhsSource = (rightObject.isSetSource()?rightObject.getSource():null);
List<LISourcePropertyType> mergedSource = ((List<LISourcePropertyType> ) strategy.merge(LocatorUtils.property(leftLocator, "source", lhsSource), LocatorUtils.property(rightLocator, "source", rhsSource), lhsSource, rhsSource, leftObject.isSetSource(), rightObject.isSetSource()));
target.unsetSource();
if (mergedSource!= null) {
List<LISourcePropertyType> uniqueSourcel = target.getSource();
uniqueSourcel.addAll(mergedSource);
}
} else {
if (sourceShouldBeMergedAndSet == Boolean.FALSE) {
target.unsetSource();
}
}
}
}
}
public void setProcessor(List<CIResponsiblePartyPropertyType> value) {
this.processor = null;
if (value!= null) {
List<CIResponsiblePartyPropertyType> draftl = this.getProcessor();
draftl.addAll(value);
}
}
public void setSource(List<LISourcePropertyType> value) {
this.source = null;
if (value!= null) {
List<LISourcePropertyType> draftl = this.getSource();
draftl.addAll(value);
}
}
}