/**
 * Distributable under LGPL license.
 * See terms of license at gnu.org.
 *
 * Copyright (C)
 * <a href="http://www.inab.org">Spanish National Institute of Bioinformatics (INB)</a>
 * <a href="http://www.bsc.es">Barcelona Supercomputing Center (BSC)</a>
 * <a href="http://inb.bsc.es">Computational Node 6</a>
 */

package org.inb.lsae;

import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElements;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;

@XmlType(name="")
@XmlRootElement(name="analysis_event")
public class AnalysisEvent
{
    private String id;
    private String timestamp;

    private String message;
    private Event event;

    @XmlAttribute
    public String getId()
    {
        return id;
    }

    public void setId(String id)
    {
        this.id = id;
    }

    @XmlAttribute
    public String getTimestamp()
    {
        return timestamp;
    }

    public void setTimestamp(String timestamp)
    {
        this.timestamp = timestamp;
    }

    @XmlElement(name = "message")
    public String getMessage()
    {
        return message;
    }

    public void setMessage(String message)
    {
        this.message = message;
    }

    @XmlElements({
            @XmlElement(name="heartbeat_progress", type=HeartbeatProgress.class),
            @XmlElement(name="percent_progress", type=PercentProgress.class),
            @XmlElement(name="state_changed", type=StateChanged.class),
            @XmlElement(name="step_progress", type=StepProgress.class),
            @XmlElement(name="time_progress", type=TimeProgress.class)
    })
    public Event getEvent()
    {
        return event;  
    }
    
    public void setEvent(Event event)
    {
        this.event = event;
    }
}
