Niedawno napisałem komparator do sortowania wielu pól w obrębie rozdzielonego rekordu ciągu. Umożliwia zdefiniowanie separatora, struktury rekordu i reguł sortowania (niektóre z nich są specyficzne dla danego typu).
Wymagane informacje są rozesłane do samego komparatora, programowo lub poprzez plik XML.
XML jest sprawdzany przez osadzony plik XSD pakietu. Na przykład, poniżej znajduje znakami tabulacji layout rekord z czterech pól (z których dwa są sortable):
<?xml version="1.0" encoding="ISO-8859-1"?>
<row xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<delimiter>	</delimiter>
<column xsi:type="Decimal">
<name>Column One</name>
</column>
<column xsi:type="Integer">
<name>Column Two</name>
</column>
<column xsi:type="String">
<name>Column Three</name>
<sortOrder>2</sortOrder>
<trim>true</trim>
<caseSensitive>false</caseSensitive>
<stripAccents>true</stripAccents>
</column>
<column xsi:type="DateTime">
<name>Column Four</name>
<sortOrder>1</sortOrder>
<ascending>true</ascending>
<nullLowSortOrder>true</nullLowSortOrder>
<trim>true</trim>
<pattern>yyyy-MM-dd</pattern>
</column>
</row>
by następnie użyć w Java tak:
Comparator<String> comparator = new RowComparator(
new XMLStructureReader(new File("layout.xml")));
Library można znaleźć tutaj :
http://sourceforge.net/projects/multicolumnrowcomparator/
Nazwa klasy przypomniały mi o org.apache.commons.collections.comparators.ComparatorChain :) –
Tak, to wh znalazłem zaledwie kilka minut temu. Może musiał najpierw google, zanim go wdroży :) – Simon