package org.inb.biomoby.service;

import java.util.List;
import org.inb.biomoby.shared.message.MobyDataElement;
import org.inb.biomoby.shared.message.MobyMessage;

import org.inb.biomoby.shared.wsrf.fault.InvalidQueryExpressionFault;
import org.inb.biomoby.shared.wsrf.fault.InvalidResourcePropertyQNameFault;
import org.inb.biomoby.shared.wsrf.fault.QueryEvaluationErrorFault;
import org.inb.biomoby.shared.wsrf.fault.ResourceNotDestroyedFault;
import org.inb.biomoby.shared.wsrf.fault.ResourceUnavailableFault;
import org.inb.biomoby.shared.wsrf.fault.ResourceUnknownFault;
import org.inb.biomoby.shared.wsrf.fault.UnknownQueryExpressionDialectFault;
import org.inb.lsae.AnalysisEvent;

/**
 * @author Dmitry Repchevsky
 */

public interface IAsyncMobyImpl extends IAsyncMobyService
{
    public MobyMessage call(MobyMessage message);
    public void submit(MobyMessage message);

    public MobyMessage getResourcePropertyResult() throws ResourceUnavailableFault;
    
    public AnalysisEvent getResourcePropertyStatus(String queryID) throws InvalidResourcePropertyQNameFault, ResourceUnavailableFault, ResourceUnknownFault;
    public MobyMessage getResourcePropertyResult(String queryID) throws InvalidResourcePropertyQNameFault, ResourceUnavailableFault, ResourceUnknownFault;

    public List<MobyDataElement> queryResourceProperties(String expression) throws UnknownQueryExpressionDialectFault, InvalidQueryExpressionFault, QueryEvaluationErrorFault;
    public void destroy() throws ResourceNotDestroyedFault, ResourceUnavailableFault, ResourceUnknownFault;
}
