
package net.brutex.xservices.types.alfevent;

import java.util.HashMap;
import java.util.Map;
import jakarta.xml.bind.annotation.XmlAccessType;
import jakarta.xml.bind.annotation.XmlAccessorType;
import jakarta.xml.bind.annotation.XmlAnyAttribute;
import jakarta.xml.bind.annotation.XmlElement;
import jakarta.xml.bind.annotation.XmlSchemaType;
import jakarta.xml.bind.annotation.XmlType;
import javax.xml.datatype.XMLGregorianCalendar;
import javax.xml.namespace.QName;


/**
 * 
 *                 EventBaseType is a container for that portion of an ALF
 *                 Event that is generally set by the Tool that raises the
 *                 event.
 *             
 * 
 * <p>Java-Klasse für EventBaseType complex type.
 * 
 * <p>Das folgende Schemafragment gibt den erwarteten Content an, der in dieser Klasse enthalten ist.
 * 
 * <pre>
 * &lt;complexType name="EventBaseType">
 *   &lt;complexContent>
 *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *       &lt;sequence>
 *         &lt;element name="EventId" type="{http://www.eclipse.org/alf/schema/EventBase/1}SourceEventIdType"/>
 *         &lt;element name="Timestamp" type="{http://www.eclipse.org/alf/schema/EventBase/1}TimestampType"/>
 *         &lt;element name="EventType" type="{http://www.eclipse.org/alf/schema/EventBase/1}EventTypeType"/>
 *         &lt;element name="ObjectType" type="{http://www.eclipse.org/alf/schema/EventBase/1}ObjectTypeType"/>
 *         &lt;element name="ObjectId" type="{http://www.eclipse.org/alf/schema/EventBase/1}ObjectIdType"/>
 *         &lt;element name="Source" type="{http://www.eclipse.org/alf/schema/EventBase/1}SourceType"/>
 *         &lt;element name="User" type="{http://www.eclipse.org/alf/schema/EventBase/1}CredentialsType"/>
 *         &lt;element name="EventControl" type="{http://www.eclipse.org/alf/schema/EventBase/1}EmBaseType" minOccurs="0"/>
 *         &lt;element name="BaseExtension" type="{http://www.eclipse.org/alf/schema/EventBase/1}BaseExtensionType" minOccurs="0"/>
 *       &lt;/sequence>
 *       &lt;anyAttribute/>
 *     &lt;/restriction>
 *   &lt;/complexContent>
 * &lt;/complexType>
 * </pre>
 * 
 * 
 */
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "EventBaseType", namespace = "http://www.eclipse.org/alf/schema/EventBase/1", propOrder = {
    "eventId",
    "timestamp",
    "eventType",
    "objectType",
    "objectId",
    "source",
    "user",
    "eventControl",
    "baseExtension"
})
public class EventBaseType {

    @XmlElement(name = "EventId", namespace = "http://www.eclipse.org/alf/schema/EventBase/1", required = true)
    protected String eventId;
    @XmlElement(name = "Timestamp", namespace = "http://www.eclipse.org/alf/schema/EventBase/1", required = true, nillable = true)
    @XmlSchemaType(name = "dateTime")
    protected XMLGregorianCalendar timestamp;
    @XmlElement(name = "EventType", namespace = "http://www.eclipse.org/alf/schema/EventBase/1", required = true)
    protected String eventType;
    @XmlElement(name = "ObjectType", namespace = "http://www.eclipse.org/alf/schema/EventBase/1", required = true)
    protected String objectType;
    @XmlElement(name = "ObjectId", namespace = "http://www.eclipse.org/alf/schema/EventBase/1", required = true)
    protected String objectId;
    @XmlElement(name = "Source", namespace = "http://www.eclipse.org/alf/schema/EventBase/1", required = true)
    protected SourceType source;
    @XmlElement(name = "User", namespace = "http://www.eclipse.org/alf/schema/EventBase/1", required = true)
    protected CredentialsType user;
    @XmlElement(name = "EventControl", namespace = "http://www.eclipse.org/alf/schema/EventBase/1")
    protected EmBaseType eventControl;
    @XmlElement(name = "BaseExtension", namespace = "http://www.eclipse.org/alf/schema/EventBase/1")
    protected BaseExtensionType baseExtension;
    @XmlAnyAttribute
    private Map<QName, String> otherAttributes = new HashMap<QName, String>();

    /**
     * Ruft den Wert der eventId-Eigenschaft ab.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getEventId() {
        return eventId;
    }

    /**
     * Legt den Wert der eventId-Eigenschaft fest.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setEventId(String value) {
        this.eventId = value;
    }

    /**
     * Ruft den Wert der timestamp-Eigenschaft ab.
     * 
     * @return
     *     possible object is
     *     {@link XMLGregorianCalendar }
     *     
     */
    public XMLGregorianCalendar getTimestamp() {
        return timestamp;
    }

    /**
     * Legt den Wert der timestamp-Eigenschaft fest.
     * 
     * @param value
     *     allowed object is
     *     {@link XMLGregorianCalendar }
     *     
     */
    public void setTimestamp(XMLGregorianCalendar value) {
        this.timestamp = value;
    }

    /**
     * Ruft den Wert der eventType-Eigenschaft ab.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getEventType() {
        return eventType;
    }

    /**
     * Legt den Wert der eventType-Eigenschaft fest.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setEventType(String value) {
        this.eventType = value;
    }

    /**
     * Ruft den Wert der objectType-Eigenschaft ab.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getObjectType() {
        return objectType;
    }

    /**
     * Legt den Wert der objectType-Eigenschaft fest.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setObjectType(String value) {
        this.objectType = value;
    }

    /**
     * Ruft den Wert der objectId-Eigenschaft ab.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getObjectId() {
        return objectId;
    }

    /**
     * Legt den Wert der objectId-Eigenschaft fest.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setObjectId(String value) {
        this.objectId = value;
    }

    /**
     * Ruft den Wert der source-Eigenschaft ab.
     * 
     * @return
     *     possible object is
     *     {@link SourceType }
     *     
     */
    public SourceType getSource() {
        return source;
    }

    /**
     * Legt den Wert der source-Eigenschaft fest.
     * 
     * @param value
     *     allowed object is
     *     {@link SourceType }
     *     
     */
    public void setSource(SourceType value) {
        this.source = value;
    }

    /**
     * Ruft den Wert der user-Eigenschaft ab.
     * 
     * @return
     *     possible object is
     *     {@link CredentialsType }
     *     
     */
    public CredentialsType getUser() {
        return user;
    }

    /**
     * Legt den Wert der user-Eigenschaft fest.
     * 
     * @param value
     *     allowed object is
     *     {@link CredentialsType }
     *     
     */
    public void setUser(CredentialsType value) {
        this.user = value;
    }

    /**
     * Ruft den Wert der eventControl-Eigenschaft ab.
     * 
     * @return
     *     possible object is
     *     {@link EmBaseType }
     *     
     */
    public EmBaseType getEventControl() {
        return eventControl;
    }

    /**
     * Legt den Wert der eventControl-Eigenschaft fest.
     * 
     * @param value
     *     allowed object is
     *     {@link EmBaseType }
     *     
     */
    public void setEventControl(EmBaseType value) {
        this.eventControl = value;
    }

    /**
     * Ruft den Wert der baseExtension-Eigenschaft ab.
     * 
     * @return
     *     possible object is
     *     {@link BaseExtensionType }
     *     
     */
    public BaseExtensionType getBaseExtension() {
        return baseExtension;
    }

    /**
     * Legt den Wert der baseExtension-Eigenschaft fest.
     * 
     * @param value
     *     allowed object is
     *     {@link BaseExtensionType }
     *     
     */
    public void setBaseExtension(BaseExtensionType value) {
        this.baseExtension = value;
    }

    /**
     * Gets a map that contains attributes that aren't bound to any typed property on this class.
     * 
     * <p>
     * the map is keyed by the name of the attribute and 
     * the value is the string value of the attribute.
     * 
     * the map returned by this method is live, and you can add new attribute
     * by updating the map directly. Because of this design, there's no setter.
     * 
     * 
     * @return
     *     always non-null
     */
    public Map<QName, String> getOtherAttributes() {
        return otherAttributes;
    }

}
