/*
* Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
* Copyright (C) $$Year-Rel$$ The Jalview Authors
*
* This file is part of Jalview.
*
* Jalview is free software: you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation, either version 3
* of the License, or (at your option) any later version.
*
* Jalview is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Jalview. If not, see .
* The Jalview Authors are detailed in the 'AUTHORS' file.
*/
package jalview.fts.api;
import jalview.fts.api.FTSDataColumnI.FTSDataColumnGroupI;
import jalview.fts.core.FTSRestRequest;
import jalview.fts.core.FTSRestResponse;
import java.util.Collection;
/**
* Methods for FTS Rest client.
*
* @author tcnofoegbu
*/
public interface FTSRestClientI
{
/**
* Execute a given FTS request, process the response and return it as an
* FTSRestResponse object
*
* @param ftsRestRequest
* the FTS request to execute
* @return FTSRestResponse - the response after executing an FTS request
* @throws Exception
*/
public FTSRestResponse executeRequest(FTSRestRequest ftsRequest)
throws Exception;
/**
* Return the resource file path for the data columns configuration file
*
* @return
*/
public String getColumnDataConfigFileName();
/**
* Fetch FTSDataColumnGroupI by the group's Id
*
* @param groupId
* @return FTSDataColumnGroupI
* @throws Exception
*/
public FTSDataColumnGroupI getDataColumnGroupById(String groupId)
throws Exception;
/**
* Fetch FTSDataColumnI by name or code
*
* @param nameOrCode
* @return FTSDataColumnI
* @throws Exception
*/
public FTSDataColumnI getDataColumnByNameOrCode(String nameOrCode)
throws Exception;
/**
* Convert collection of FTSDataColumnI objects to a comma delimited string of
* the 'code' values
*
* @param wantedFields
* the collection of FTSDataColumnI to process
* @return the generated comma delimited string from the supplied
* FTSDataColumnI collection
*/
public String getDataColumnsFieldsAsCommaDelimitedString(
Collection wantedFields);
/**
* Fetch index of the primary key column for the dynamic table
*
* @param wantedFields
* the available table columns
* @param hasRefSeq
* true if the data columns has an additional column for reference
* sequence
* @return index of the primary key column
* @throws Exception
*/
public int getPrimaryKeyColumIndex(
Collection wantedFields, boolean hasRefSeq)
throws Exception;
/**
* Fetch the primary key data column object
*
* @return the FTSDataColumnI object for the primary key column
*/
public FTSDataColumnI getPrimaryKeyColumn();
/**
* Returns list of FTSDataColumnI objects to be displayed by default
*
* @return list of columns to display by default
*/
public Collection getAllDefaultDisplayedFTSDataColumns();
/**
* Return list of FTSDataColumnI objects that can be used to perform a search
* query
*
* @return list of searchable FTSDataColumnI object
*/
public Collection getSearchableDataColumns();
/**
* Return list of all available FTSDataColumnI object
*
* @return list of all FTSColumnI objcet
*/
public Collection getAllFTSDataColumns();
/**
* Return the default response page limit
*
* @return the default response page size
*/
public int getDefaultResponsePageSize();
}