/*
* Copyright (c) 2010-2013 Evolveum
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
//
// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4
// 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: 2013.01.25 at 04:55:44 PM CET
//
package com.evolveum.prism.xml.ns._public.types_3;
import java.io.Serializable;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.JAXBElement;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAnyElement;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
import javax.xml.namespace.QName;
import com.evolveum.midpoint.prism.PrismConstants;
import com.evolveum.midpoint.util.exception.SystemException;
import org.w3c.dom.Element;
/**
*
* Describes a change of a specific object.
*
*
* <p>Java class for ObjectDeltaType complex type.
*
* <p>The following schema fragment specifies the expected content contained within this class.
*
* <pre>
* <complexType name="ObjectDeltaType">
* <complexContent>
* <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* <sequence>
* <element name="changeType" type="{http://prism.evolveum.com/xml/ns/public/types-3}ChangeTypeType"/>
* <element name="objectType" type="{http://www.w3.org/2001/XMLSchema}QName"/>
* <element name="objectToAdd" minOccurs="0">
* <complexType>
* <complexContent>
* <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* <sequence>
* <any processContents='lax'/>
* </sequence>
* </restriction>
* </complexContent>
* </complexType>
* </element>
* <element name="oid" type="{http://www.w3.org/2001/XMLSchema}string"/>
* <element name="modification" type="{http://prism.evolveum.com/xml/ns/public/types-3}ItemDeltaType" maxOccurs="unbounded" minOccurs="0"/>
* </sequence>
* </restriction>
* </complexContent>
* </complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "ObjectDeltaType", propOrder = {
"changeType",
"objectType",
"objectToAdd",
"oid",
"itemDelta"
})
public class ObjectDeltaType implements Serializable {
@XmlElement(required = true)
protected ChangeTypeType changeType;
@XmlElement(required = true)
protected QName objectType;
protected ObjectType objectToAdd;
@XmlElement(required = true)
protected String oid;
protected final List<ItemDeltaType> itemDelta = new ArrayList<>();
public final static QName COMPLEX_TYPE = new QName(PrismConstants.NS_TYPES, "ObjectDeltaType");
public final static QName F_CHANGE_TYPE = new QName(PrismConstants.NS_TYPES, "changeType");
public final static QName F_OBJECT_TYPE = new QName(PrismConstants.NS_TYPES, "objectType");
public final static QName F_OBJECT_TO_ADD = new QName(PrismConstants.NS_TYPES, "objectToAdd");
public final static QName F_ITEM_DETLA = new QName(PrismConstants.NS_TYPES, "itemDelta");
/**
* Gets the value of the changeType property.
*
* @return
* possible object is
* {@link ChangeTypeType }
*
*/
public ChangeTypeType getChangeType() {
return changeType;
}
/**
* Sets the value of the changeType property.
*
* @param value
* allowed object is
* {@link ChangeTypeType }
*
*/
public void setChangeType(ChangeTypeType value) {
this.changeType = value;
}
/**
* Gets the value of the objectType property.
*
* @return
* possible object is
* {@link QName }
*
*/
public QName getObjectType() {
return objectType;
}
/**
* Sets the value of the objectType property.
*
* @param value
* allowed object is
* {@link QName }
*
*/
public void setObjectType(QName value) {
this.objectType = value;
}
/**
* Gets the value of the objectToAdd property.
*
* @return
* possible object is
* {@link ObjectDeltaType.ObjectToAdd }
*
*/
public ObjectType getObjectToAdd() {
return objectToAdd;
}
/**
* Sets the value of the objectToAdd property.
*
* @param value
* allowed object is
* {@link ObjectDeltaType.ObjectToAdd }
*
*/
public <T extends ObjectType> void setObjectToAdd(T value) {
this.objectToAdd = value;
}
/**
* Gets the value of the oid property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getOid() {
return oid;
}
/**
* Sets the value of the oid property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setOid(String value) {
this.oid = value;
}
/**
* Gets the value of the modification 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 modification property.
*
* <p>
* For example, to add a new item, do as follows:
* <pre>
* getModification().add(newItem);
* </pre>
*
*
* <p>
* Objects of the following type(s) are allowed in the list
* {@link ItemDeltaType }
*
*
*/
public List<ItemDeltaType> getItemDelta() {
return this.itemDelta;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((changeType == null) ? 0 : changeType.hashCode());
result = prime * result + ((itemDelta == null) ? 0 : itemDelta.hashCode());
result = prime * result + ((objectToAdd == null) ? 0 : objectToAdd.hashCode());
result = prime * result + ((objectType == null) ? 0 : objectType.hashCode());
result = prime * result + ((oid == null) ? 0 : oid.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
ObjectDeltaType other = (ObjectDeltaType) obj;
if (changeType != other.changeType)
return false;
if (itemDelta == null) {
if (other.itemDelta != null)
return false;
} else if (!itemDelta.equals(other.itemDelta))
return false;
if (objectToAdd == null) {
if (other.objectToAdd != null)
return false;
} else if (!objectToAdd.equals(other.objectToAdd))
return false;
if (objectType == null) {
if (other.objectType != null)
return false;
} else if (!objectType.equals(other.objectType))
return false;
if (oid == null) {
if (other.oid != null)
return false;
} else if (!oid.equals(other.oid))
return false;
return true;
}
@Override
public String toString() {
return "ObjectDeltaType(changeType=" + changeType + ", objectType=" + objectType + ", objectToAdd="
+ objectToAdd + ", oid=" + oid + ", modification=" + itemDelta + ")";
}
/**
* <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">
* <sequence>
* <any processContents='lax'/>
* </sequence>
* </restriction>
* </complexContent>
* </complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"any"
})
public static class ObjectToAdd implements Serializable {
@XmlAnyElement(lax = true)
protected JAXBElement<?> any;
/**
* Gets the value of the any property.
*
* @return
* possible object is
* {@link Object }
* {@link Element }
*
*/
public JAXBElement<?> getAny() {
return any;
}
/**
* Sets the value of the any property.
*
* @param value
* allowed object is
* {@link Object }
* {@link Element }
*
*/
public void setAny(JAXBElement<?> value) {
this.any = value;
}
// todo this method is UNTESTED for now; however, as "any" will usually be ObjectType or its subclass, it should work
public ObjectToAdd clone() {
ObjectToAdd retval = new ObjectToAdd();
if (any != null) {
try {
Method clone = any.getClass().getMethod("clone");
clone.setAccessible(true);
retval.any = (JAXBElement<?>) clone.invoke(any);
} catch (NoSuchMethodException e) {
throw new SystemException("Cannot clone objectToAdd: " + any, e);
} catch (InvocationTargetException e) {
throw new SystemException("Cannot clone objectToAdd: " + any, e);
} catch (IllegalAccessException e) {
throw new SystemException("Cannot clone objectToAdd: " + any, e);
}
}
return retval;
}
}
/**
* Clones the object (objectToAdd is cloned using reflection, assuming it is a subclass of ObjectType, that has public clone() method)
*
* @return copy of the object
*/
public ObjectDeltaType clone() {
ObjectDeltaType clone = new ObjectDeltaType();
clone.setOid(getOid());
clone.setChangeType(getChangeType());
clone.setObjectType(getObjectType());
if (getObjectToAdd() != null) {
clone.setObjectToAdd(getObjectToAdd());
}
for (ItemDeltaType mod : getItemDelta()) {
clone.getItemDelta().add(mod.clone());
}
return clone;
}
}