package org.simpleflatmapper.csv; import org.simpleflatmapper.map.mapper.MapperKey; import org.simpleflatmapper.map.mapper.MapperKeyComparator; public final class CsvColumnKeyMapperKeyComparator extends MapperKeyComparator<CsvColumnKey> { public final static CsvColumnKeyMapperKeyComparator INSTANCE = new CsvColumnKeyMapperKeyComparator(); private CsvColumnKeyMapperKeyComparator() { } @Override public int compare(MapperKey<CsvColumnKey> m1, MapperKey<CsvColumnKey> m2) { CsvColumnKey[] keys1 = m1.getColumns(); CsvColumnKey[] keys2 = m2.getColumns(); int d = keys1.length - keys2.length; if (d != 0) { return d; } return compareKeys(keys1, keys2); } private int compareKeys(CsvColumnKey[] keys1, CsvColumnKey[] keys2) { for (int i = 0; i < keys1.length; i++) { int d = compare(keys1[i], keys2[i]); if (d != 0) { return d; } } return 0; } private int compare(CsvColumnKey k1, CsvColumnKey k2) { int d = k1.getIndex() - k2.getIndex(); if (d != 0) return d; return k1.getName().compareTo(k2.getName()); } }