/** * */ package org.marketcetera.photon.views.fixmessagedetail; import org.eclipse.core.runtime.Platform; class FIXMessageDetailTableRow implements Comparable<Object> { private String field; private int tag; private String value; private String valueName; private boolean required; public FIXMessageDetailTableRow(String field, int tag, String value, String valueName, boolean required) { this.field = field; this.tag = tag; this.value = value; this.valueName = valueName; this.required = required; changeNullsToEmptyString(); } private void changeNullsToEmptyString() { final String emptyString = ""; //$NON-NLS-1$ if (field == null) { field = emptyString; } if (value == null) { value = emptyString; } if (valueName == null) { valueName = emptyString; } } public Object getColumnValue(int whichColumn) { FIXMessageDetailColumnType columnType = FIXMessageDetailColumnType .fromColumnIndex(whichColumn); return getColumnValue(columnType); } public Object getColumnValue(FIXMessageDetailColumnType whichColumn) { if (whichColumn == FIXMessageDetailColumnType.Field) { return field; } else if (whichColumn == FIXMessageDetailColumnType.Tag) { return tag; } else if (whichColumn == FIXMessageDetailColumnType.Value) { return value; } else if (whichColumn == FIXMessageDetailColumnType.ValueName) { return valueName; } else if (whichColumn == FIXMessageDetailColumnType.Required) { return Boolean.toString(required); } return null; } private String getFormattedStringRowEnding() { String osStr = Platform.getOS(); if (osStr != null && osStr.equals(Platform.OS_WIN32)) { return "\r\n"; //$NON-NLS-1$ } return "\n"; //$NON-NLS-1$ } public String toFormattedString() { final String columnDelimiter = "\t"; //$NON-NLS-1$ final String rowEnding = getFormattedStringRowEnding(); StringBuilder builder = new StringBuilder(); builder.append(field); builder.append(columnDelimiter); builder.append(tag); builder.append(columnDelimiter); builder.append(value); builder.append(columnDelimiter); builder.append(valueName); builder.append(columnDelimiter); builder.append(required); builder.append(rowEnding); return builder.toString(); } // implementing Comparable is necessary simply to appease glazed lists which // otherwise // currently blows up when a new message is added to the list with a natural // sort order // (i.e., no comparator) public int compareTo(Object o) { return 0; } }