package ch.elexis.tarmed.printer; import java.util.Comparator; import org.jdom.Element; import ch.elexis.TarmedRechnung.XMLExporter; import ch.rgw.tools.TimeTool; public class RnComparator implements Comparator<Element> { TimeTool tt0 = new TimeTool(); TimeTool tt1 = new TimeTool(); @Override public int compare(Element e0, Element e1){ if (!tt0.set(e0.getAttributeValue("date_begin"))) { return 1; } if (!tt1.set(e1.getAttributeValue("date_begin"))) { return -1; } int dat = tt0.compareTo(tt1); if (dat != 0) { return dat; } String t0 = e0.getAttributeValue(XMLExporter.ATTR_TARIFF_TYPE); String t1 = e1.getAttributeValue(XMLExporter.ATTR_TARIFF_TYPE); if (t0.equals("001")) { // tarmed-tarmed: nach code sortieren if (t1.equals("001")) { String c0 = e0.getAttributeValue(XMLExporter.ATTR_CODE); String c1 = e1.getAttributeValue(XMLExporter.ATTR_CODE); return c0.compareTo(c1); } else { return -1; // tarmed immer oberhab nicht-tarmed } } else if (t1.equals("001")) { return 1; // nicht-tarmed immer unterhalb tarmed } else { // nicht-tarmed - nicht-tarmed: alphabetisch int diffc = t0.compareTo(t1); if (diffc == 0) { diffc = e0.getText().compareToIgnoreCase(e1.getText()); } return diffc; } } }