/*
* 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.core;
import jalview.fts.api.FTSData;
import jalview.fts.api.FTSDataColumnI;
import java.util.Collection;
import java.util.Map;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
/**
* Represents the response model generated by the FTSRestClient upon successful
* execution of a given FTS request
*
* @author tcnofoegbu
*
*/
public class FTSRestResponse
{
private int numberOfItemsFound;
private String responseTime;
private Collection searchSummary;
public int getNumberOfItemsFound()
{
return numberOfItemsFound;
}
public void setNumberOfItemsFound(int itemFound)
{
this.numberOfItemsFound = itemFound;
}
public String getResponseTime()
{
return responseTime;
}
public void setResponseTime(String responseTime)
{
this.responseTime = responseTime;
}
public Collection getSearchSummary()
{
return searchSummary;
}
public void setSearchSummary(Collection searchSummary)
{
this.searchSummary = searchSummary;
}
/**
* Convenience method to obtain a Table model for a given summary List based
* on the request parameters
*
* @param request
* the FTSRestRequest object which holds useful information for
* creating a table model
* @param summariesList
* the summary list which contains the data for populating the
* table's rows
* @return the table model which was dynamically generated
*/
public static DefaultTableModel getTableModel(FTSRestRequest request,
Collection summariesList)
{
final FTSDataColumnI[] cols = request.getWantedFields()
.toArray(new FTSDataColumnI[0]);
final int colOffset = request.getAssociatedSequence() == null ? 0 : 1;
DefaultTableModel tableModel = new DefaultTableModel()
{
@Override
public boolean isCellEditable(int row, int column)
{
return false;
}
@Override
public Class> getColumnClass(int columnIndex)
{
if (colOffset == 1 && columnIndex == 0)
{
return String.class;
}
return cols[columnIndex - colOffset].getDataType()
.getDataTypeClass();
}
};
if (request.getAssociatedSequence() != null)
{
tableModel.addColumn("Ref Sequence"); // Create sequence column header if
// exists in the request
}
for (FTSDataColumnI field : request.getWantedFields())
{
tableModel.addColumn(field.getName()); // Create sequence column header if
// exists in the request
}
for (FTSData res : summariesList)
{
tableModel.addRow(res.getSummaryData()); // Populate table rows with
// summary list
}
return tableModel;
}
public static void configureTableColumn(JTable tbl_summary,
Collection wantedFields,
Map columnPrefs)
{
for (FTSDataColumnI wantedField : wantedFields)
{
try
{
tbl_summary.getColumn(wantedField.getName())
.setMinWidth(wantedField.getMinWidth());
tbl_summary.getColumn(wantedField.getName())
.setMaxWidth(wantedField.getMaxWidth());
int prefedWidth = columnPrefs.get(wantedField.getName()) == null
? wantedField.getPreferredWidth()
: columnPrefs.get(wantedField.getName());
tbl_summary.getColumn(wantedField.getName())
.setPreferredWidth(prefedWidth);
} catch (Exception e)
{
e.printStackTrace();
}
if (wantedField.getDataType().getDataTypeClass() == Double.class)
{
DecimalFormatTableCellRenderer dfr = new DecimalFormatTableCellRenderer(
wantedField.getDataType().isFormtted(),
wantedField.getDataType().getSignificantFigures());
tbl_summary.getColumn(wantedField.getName()).setCellRenderer(dfr);
}
else if (wantedField.getDataType()
.getDataTypeClass() == Integer.class)
{
DecimalFormatTableCellRenderer dfr = new DecimalFormatTableCellRenderer(
wantedField.getDataType().isFormtted(),
wantedField.getDataType().getSignificantFigures());
tbl_summary.getColumn(wantedField.getName()).setCellRenderer(dfr);
}
}
}
}