/**
 * 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.biomoby.shared.message;

import java.io.Serializable;
import java.util.ArrayList;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;
import javax.xml.bind.annotation.XmlType;

/**
 * @author Dmitry Repchevsky
 */

@XmlRootElement(name="MOBY")
@XmlType(name="MOBY", namespace="http://www.biomoby.org/moby")
public class MobyMessage implements Serializable
{
    private MobyContent mobyContent;
    
    public MobyMessage()
    {
        mobyContent = new MobyContent();
    }

    public MobyMessage(MobyContent mobyContent)
    {
        this.mobyContent = mobyContent;
    }
    
    public MobyMessage(MobyData mobyData)
    {
        mobyContent = new MobyContent(mobyData);
    }
    
    public MobyMessage(ArrayList<MobyData> mobyDataList)
    {
        mobyContent = new MobyContent(mobyDataList);
    }
    
    public void addMobyData(MobyData mobyData)
    {
        mobyContent.addMobyData(mobyData);
    }

    @XmlElement
    public MobyContent getMobyContent()
    {
        return mobyContent;
    }
    
    public void setMobyContent(MobyContent mobyContent)
    {
        this.mobyContent = mobyContent;
    }
    
    @XmlTransient
    public ArrayList<MobyData> getMobyDataList()
    {
        return mobyContent.getMobyDataList();
    }

    public MobyData getMobyData(String queryID)
    {
        for(MobyData mobyData : getMobyDataList())
        {
            if (queryID.equals(mobyData.getQueryID()))
            {
                return mobyData;
            }
        }
        
        return null; // not found;
    }

    public boolean hasExceptions()
    {
        return mobyContent.hasExceptions();
    }
    
    public MobyExceptions getExceptions()
    {
        return mobyContent.getExceptions();
    }
}
