+ // /**
+ // * Takes a collection of FTSDataColumnI and converts its 'code' values into
+ // a
+ // * tab delimited string.
+ // *
+ // * @param dataColumnFields
+ // * the collection of FTSDataColumnI to process
+ // * @return the generated comma delimited string from the supplied
+ // * FTSDataColumnI collection
+ // */
+ // private String getDataColumnsFieldsAsTabDelimitedString(
+ // Collection<FTSDataColumnI> dataColumnFields)
+ // {
+ // String result = "";
+ // if (dataColumnFields != null && !dataColumnFields.isEmpty())
+ // {
+ // StringBuilder returnedFields = new StringBuilder();
+ // for (FTSDataColumnI field : dataColumnFields)
+ // {
+ // if (field.getName().equalsIgnoreCase("Uniprot Id"))
+ // {
+ // returnedFields.append("\t").append("Entry");
+ // }
+ // else
+ // {
+ // returnedFields.append("\t").append(field.getName());
+ // }
+ // }
+ // returnedFields.deleteCharAt(0);
+ // result = returnedFields.toString();
+ // }
+ // return result;
+ // }
+
+ public static FTSData getFTSData(String tabDelimittedDataStr,
+ FTSRestRequest request)
+ {
+ String primaryKey = null;
+
+ Object[] summaryRowData;
+
+ Collection<FTSDataColumnI> diplayFields = request.getWantedFields();
+ int colCounter = 0;
+ summaryRowData = new Object[diplayFields.size()];
+ String[] columns = tabDelimittedDataStr.split("\t");
+ for (FTSDataColumnI field : diplayFields)
+ {
+ try
+ {
+ String fieldData = columns[colCounter];
+ if (field.isPrimaryKeyColumn())
+ {
+ primaryKey = fieldData;
+ summaryRowData[colCounter++] = primaryKey;
+ }
+ else if (fieldData == null || fieldData.isEmpty())
+ {
+ summaryRowData[colCounter++] = null;
+ }
+ else
+ {
+ try
+ {
+ summaryRowData[colCounter++] = (field.getDataType()
+ .getDataTypeClass() == Integer.class)
+ ? Integer.valueOf(fieldData.replace(",", ""))
+ : (field.getDataType()
+ .getDataTypeClass() == Double.class)
+ ? Double.valueOf(fieldData)
+ : fieldData;
+ } catch (Exception e)
+ {
+ e.printStackTrace();
+ System.out.println("offending value:" + fieldData);
+ }
+ }
+ } catch (Exception e)
+ {
+ // e.printStackTrace();
+ }
+ }
+
+ final String primaryKey1 = primaryKey;
+
+ final Object[] summaryRowData1 = summaryRowData;
+ return new FTSData()
+ {
+ @Override
+ public Object[] getSummaryData()
+ {
+ return summaryRowData1;
+ }
+
+ @Override
+ public Object getPrimaryKey()
+ {
+ return primaryKey1;
+ }
+
+ /**
+ * Returns a string representation of this object;
+ */
+ @Override
+ public String toString()
+ {
+ StringBuilder summaryFieldValues = new StringBuilder();
+ for (Object summaryField : summaryRowData1)
+ {
+ summaryFieldValues.append(
+ summaryField == null ? " " : summaryField.toString())
+ .append("\t");
+ }
+ return summaryFieldValues.toString();
+ }
+
+ /**
+ * Returns hash code value for this object
+ */
+ @Override
+ public int hashCode()
+ {
+ return Objects.hash(primaryKey1, this.toString());
+ }
+
+ @Override
+ public boolean equals(Object that)
+ {
+ return this.toString().equals(that.toString());
+ }
+ };
+ }