Smart Comparator

Geschrieben von Michael Biesmann & Fabian Markert

1. Einleitung
2. Was ist unsere Idee?
2.1. Wie sind wir auf die Idee gekommen?
2.2. Warum machen wir das?
3. Wie haben wir diesen Comparator umgesetzt und wofür ist er gedacht?
3.1. Wie funktioniert unser SmartComparator?
3.1.1. Die Instanziierung
3.1.2. Die Vorverarbeitung
3.1.3. Der Vergleich
3.1.4. Änderung der Sortierung
4. Wie kann unser SmartComparator eingesetzt werden?
4.1. Erzeugung per String-Array
4.2. Erzeugung per MethodNameRecord-Array
4.3. Erzeugung per MethodNameGenerator
4.4. Erzeugung per @CompareCriteria-Annotation
4.5. Erzeugung per @NamedSorts und @NamedSort Annotations
5. Haben wir getestet?
5.1. Was haben wir getestet?
5.2. Wie haben wir getestet?
5.3. Was war das Testergebnis?
5.3.1. Auswertung System 1 Linux (Oracle 1.7.0_45):
5.3.2. Auswertung System 1 Linux ( icedtea 7.2.4.3):
5.3.3. Auswertung System 1 Windows ( 1.7.0_45):
5.3.4. Auswertung System 2 Linux ( icedtea 7.2.4.3):
5.3.5. Auswertung System 2 Windows ( 1.7.0_45):
5.3.6. Auswertung System 3 ( Oracle 1.7.0_07 ):
6. Quellcode
7. Fazit und Ausblick


1. Einleitung

Wir wollen hier unser Hauptthema erörtern, auf das wir so lange hin gearbeitet haben. Wir werden uns hier folgenden Fragen stellen:

  • Was ist unsere Idee
  • Wie sind wir auf die Idee gekommen
  • Warum machen wir das
  • Wie haben wir diesen Comparator umgesetzt und wofür ist er gedacht
  • Wie funktioniert unser SmartComparator
  • Wie kann unser SmartComparator eingesetzt werden
  • Haben wir getestet
  • Was haben wir getestet
  • Wie haben wir getestet


2. Was ist unsere Idee?

Die Idee die wir hatten, besteht darin einen Comparator für alles anzubieten. Ein Comparator soll für die Sortierung aller eigenen Datenobjekte dienen. Dabei muss die Möglichkeit bestehen, die Objekte nach einem oder mehreren Attributen zu sortieren. Der Comparator sollte dabei einfach und flexibel zu benutzen sein.


2.1. Wie sind wir auf die Idee gekommen?

Nachdem wir viel programmieren und programmiert haben in der Vergangenheit, sind wir immer auf ähnlich geartete Probleme gestoßen. Eines, was sehr häufig auftritt, ist eben das Sortieren von eigenen Datenobjekten nach verschiedenen Kriterien. Zum einen traten diese Dinge zum Vorschein bei der Verarbeitung der Daten, aber auch bei der Ausgabe der Daten in Tabellen. Hier benötigt man die Funktion zum Sortieren der Tabelleninhalte recht häufig. Vor allem immer dann, wenn man dem Benutzer eine gut bedienbare GUI anbieten will.


2.2. Warum machen wir das?

Wir wollen allen anderen Entwicklern und auch uns selbst in Zukunft die Möglichkeit an die Hand geben, Software schneller und auch einfacher zu entwickeln. Außerdem kann die Umsetzung von mehreren Comparatoren für verschiedene Datenobjekte ziemlich eintönig auf Dauer werden.


3. Wie haben wir diesen Comparator umgesetzt und wofür ist er gedacht?

Die Umsetzung und das Testen gestalteten sich schwierig und umfangreich. Wir haben dafür zusammen volle 4h benötigt für unsere erste Version. ;-)

Wir fingen damit an, uns zu überlegen, welche Objekte oder Werte wir sortieren können - angefangen von den Wrapper Klassen von Java, wie Integer, Float, Boolean usw., aber auch Objekte wie Strings oder primitive Datentypen. Hier wird der erfahrene Programmierer wissen, dass die zurück gelieferten Datentypen eines Datenobjektes meist primitive Datentypen sind oder die Wrapper-Klassen davon. Natürlich besteht die Möglichkeit, eine Liste oder ein Array als Rückgabe zu erhalten. Diese Objekte sind eben das Ziel wofür ein Comparator benötigt wird und diente uns somit nicht als Ausgangspunkt für die Sortierung.


3.1. Wie funktioniert unser SmartComparator?

Der Kern besteht aus der public int compare(T t, T t1) Methode und den drei dazugehörigen private Methoden private int compare(T t, T t1, MethodNameRecord VAL), private void analyzeClassReturnTypes() und private Class castObjects(Class clazz).

Weiterlesen: Smart Comparator

Comparator und Comparable

Geschrieben von Michael Biesmann & Fabian Markert

1. Einleitung
2. Was sind Comparatoren und Comparables?
3. Wofür werden sie verwendet?
4. Welche Gemeinsamkeiten haben Comparatoren und Comparables?
5. Was ist der Unterschied zwischen Comparatoren und Comparables?
6. Wie funktioniert ein Comparator?
7. Wie sieht ein Comparator aus?
7.1. Beispiel für einen Comparator:
7.1.1. Benutzte Datenklasse:
7.1.2. ein Attribut Sortierung
7.1.3. mehrfach Attribut Sortierung
8. Wie funktioniert ein Comparable?
9. Wie sieht ein Comparable aus?
9.1. Beispiel für einen Comparable:
9.1.1. ein Attribut sortierung
9.1.2. mehrfach Attribut sortierung
10. Wie wendet man Comparatoren und Comparables an?
10.1. Anwendung von Comparatoren
10.2. Anwendung von Comparable

1. Einleitung

Dies ist der dritte von drei Posts, bevor wir uns mit dem Hauptthema befassen. In diesem Post gehen wir auf Comparatoren und Comparables ein. Den Fragestellungen, den wir uns hier stellen, sind:

  • Was sind Comparatoren und Comparables
  • Wofür werden sie verwendet
  • Welche Gemeinsamkeiten haben Comparatoren und Comparables
  • Was ist der Unterschied zwischen Comparatoren und Comparables
  • Wie funktioniert ein Comparator
  • Wie sieht ein Comparator aus
  • Wie funktioniert ein Comparable
  • Wie sieht ein Comparable aus
  • Wie wendet man Comparatoren und Comparables an

Teil 1 Teil 2

Weiterlesen: Comparator und Comparable

Generics

Geschrieben von Michael Biesmann & Fabian Markert

1. Einleitung
2. Was sind Generics?
3. Welche Einschränkungen existieren für Generics?
4. Wie sehen Generic-Deklarationen aus?
5. Wofür verwendet man Generics?
5.1. Beispiel 1
5.2. Beispiel 2
6. Wie funktionieren Generics?
7. Welche Typen von Generics gibt es?
8. Wie kann man Datentypen mit Generics verwenden?
9. Welche Neuerungen gibt es?

1. Einleitung

Dies ist unser zweiter vorbereitender Artikel von drei, bevor wir uns unserem Hauptthema widmen. Wir wollen uns in diesem Post über Generics den folgenden Fragestellungen stellen:

  • Was sind Generics
  • Welche Einschränkungen existieren für Generics
  • Wie sehen Generic-Deklarationen aus
  • Wofür verwendet man Generics
  • Wie funktionieren Generics
  • Welche Typen von Generics gibt es
  • Wie kann man Datentypen mit Generics verwenden
  • Welche Neuerungen gibt es

Teil 1 Teil 3

Weiterlesen: Generics

Annotations

Geschrieben von Michael Biesmann & Fabian Markert

1. Einleitung
2. Was sind Annotations?
3. Wie sehen Annotations aus?
4. Für was kann man Annotations verwenden?
5. Welche Einschränkungen haben Annotations?
6. Welche Arten von Annotations gibt es?
6.1. Beispiele für Annotations
6.1.1. Beispiel ohne Parameter (Marker-Annotation):
6.1.2. Beispiel mit einem Parameter:
6.1.3. Beispiel mit mehreren Parametern:
7. An welchen Elementen kann man Annotations definieren?
7.1. Beispiele dafür:
7.1.1. Klassen-Annotation:
7.1.2. Methoden-Annotation:
7.1.3. Feld-Annotation:
7.1.4. Parameter-Annotation:

1. Einleitung

Wir möchten an dieser Stelle etwas über Annotations schreiben. Dieser Blogpost soll als erster von mehreren die Grundlage für unser späteres Hauptthema schaffen. Die Fragestellungen, denen wir uns hier stellen, sind:

  • Was sind Annotations
  • Wie sehen Annotations aus
  • Für was kann man Annotations verwenden
  • Welche Einschränkungen haben Annotations
  • Welche Arten von Annotations gibt es
  • An welchen Elementen kann man Annotations definieren

Teil 2 Teil 3

Weiterlesen: Annotations