package org.argeo.slc.diff; import org.argeo.slc.UnsupportedException; /** * A diff position within a table structure such a CSV file or an SQL result * set. */ public class TableDiffPosition extends DiffPosition { private Integer line; /** Can be null */ private Integer column; /** Can be null */ private String columnName; public TableDiffPosition(RelatedFile relatedFile, Integer line, Integer column, String columnName) { super(relatedFile); this.line = line; this.column = column; this.columnName = columnName; } @SuppressWarnings("unused") private TableDiffPosition() { } public Integer getLine() { return line; } public Integer getColumn() { return column; } public String getColumnName() { return columnName; } public int compareTo(DiffPosition dp) { if (!(dp instanceof TableDiffPosition)) throw new UnsupportedException("position", dp); TableDiffPosition o = (TableDiffPosition) dp; if (relatedFile.equals(o.relatedFile)) { if (line == o.line) { return column.compareTo(o.column); } else { return line.compareTo(o.line); } } else { return relatedFile.compareTo(o.relatedFile); } } @Override public String toString() { StringBuffer buf = new StringBuffer(""); buf.append(relatedFile).append('[').append(line); if (column != null) { buf.append(',').append(column); if (columnName != null) { buf.append('-').append(columnName); } } buf.append(']'); return buf.toString(); } // Hibernate @SuppressWarnings("unused") private void setLine(Integer line) { this.line = line; } @SuppressWarnings("unused") private void setColumn(Integer column) { this.column = column; } @SuppressWarnings("unused") private void setColumnName(String columnName) { this.columnName = columnName; } }