Comparator – eigene Sortierung, wenn immer ein bestimmter Wert am Anfang stehen soll

Man möchte eine Liste (in dem Beispiel mit Path-Objekten) sortieren. Allerdings soll ein bestimmter Eintrag ganz vorne in der Liste stehen, unabhängig von der Standardsortierung.
Dazu kann man den Comparator implementieren, der die entsprechende Prüfung vornimmt und sonst die Standard compareTo Methode aufruft.

protected Comparator<Path> pathComparator = new Comparator<Path>() {
  @Override
  public int compare(final Path path1, final Path path2) {
    if (path1.toString().endsWith("base.properties")) {
      return -1;
    }
    if (path2.toString().endsWith("base.properties")) {
      return 1;
    }

    return path1.toString().compareTo(path2.toString());
  }
};

Gradle einsetzen um Eclipse Projekte zu erstellen

Warum soll man ein Build Tool verwenden, um ein Eclipse Projekt zu erstellen, welches nur einmal erstellt wird? Arbeitet man mit mehreren Entwicklern, die vielleicht auch noch auf mehreren Plattformen (Linux, Windows, Mac OS X) unterwegs sind, möchte man vielleicht nicht die Eclipse Projekt Dateien in seiner Versionskontrolle hinterlegen. Aber man möchte sicherlich, dass jeder, bei der Erstellung des eigenen Eclipse Projektes, die identischen Rahmenbedingungen schafft. Es sollen die gleichen Quell und Ziel Verzeichnisse verwendet werden, die externen Library Versionen sollten auch zueinander passen.

Dies könnte also durchaus einen Sinn ergeben, warum man das Eclipse Projekt nicht nur einmal, sondern eben mehrmals erstellt und vielleicht aktualisiert, wenn neue Bibliotheken in das Projekt eingebunden werden.

Was muss man also machen, um mit Hilfe von Gradle solch eine Unterstützung zu erreichen.
Gradle einsetzen um Eclipse Projekte zu erstellen weiterlesen

Mit DataStage Excel Dateien lesen – Teil 1

Mit DataStage vor Version 9.1, war es nicht möglich, Excel Dateien direkt als Input zu verwenden. Leider verwenden Business Leute recht gerne Excel zur Datenerfassung (Excel ist ein tooles Programm, aber zur Erfassung von Daten, die dann automatisiert verarbeitet werden sollen, naja), weshalb in Daten Migrationsprojekten, oft der Punkt kommt, an dem man eben diese verarbeiten muss.

Eine Abhilfe kann hier die Verwendung eine Java Stage bringen.

Denn mit Java und der Apache POI API, ist es recht einfach Microsoft Office Excel Dateien mit Java auszulesen.
Mit DataStage Excel Dateien lesen – Teil 1 weiterlesen

Gradle mit Ant, am Beispiel von XMLBeans

Wer heute ein Projekt hat, welches komplett auf Ant Skripten basiert, der kann trotzdem über einen Wechsel nach Gradle nachdenken. Zumindest sieht man dies im Gradle Lager so. Gradle hat nämlich Integrationen für Ant und Maven. Daher bekommt man beispielsweise auch die aktuell verwendete Ant Version angezeigt, wenn man gradle -v ausführt.

------------------------------------------------------------
Gradle 1.4
------------------------------------------------------------

Gradle build time: Montag, 28. Januar 2013 03:42 Uhr UTC
Groovy: 1.8.6
Ant: Apache Ant(TM) version 1.8.4 compiled on May 22 2012
Ivy: 2.2.0
JVM: 1.7.0_17 (Oracle Corporation 23.7-b01)
OS: Mac OS X 10.8.3 x86_64

Im Gradle Skript kann man auf Ant Tasks verweisen, bzw. Ant Befehle ausführen. Hierzu ein Beispiel, wie man ein Ant Taskdef in Gradle verwendet, mit Apache XML Beans. XML Beans ist eine JAXB Implementierung.
Gradle mit Ant, am Beispiel von XMLBeans weiterlesen

Java Projekte bauen mit Gradle

Nach dem Apache Ant bisher meine erste Wahl war, wenn es darum ging ein Java Projekt zu bauen, habe ich mich die letzten Tage mit dem Quasi-Nachfolger Gradle beschäftigt.

Es ist wahrscheinlich geschmacksache, ob man eher ein XML oder ein DSL Dokument bevorzugt. Was ich derzeit bei der XML Variante noch etwas besser finde, ist die Möglichkeit vor dem build zu validieren ob die Struktur und die Elemente korrekt sind. Dies sehe ich bei der Gradle DSL noch nicht so einfach, sondern ich seh die Fehler erst, wenn ich den build starte (zumindest habe ich noch keinen Weg gefunden dies während des Tippen zu validieren).

Gradle ist, wie es in einem Buch dazu gelesen habe, die nächste Evolutionsstufe nach Ant und Maven. Die Begründung hierfür liegt daran, dass Gradle ein paar Dinge anders und „einfacher“ macht, als die gewohnten Java Build Tools. Aber um es einfacher zu machen, gibt es Vorgaben, die es bei Ant so nicht gab. Bei Ant war ich, als ersteller für die Struktur des Projektes zuständig. Ich habe definiert wo meine Quellen liegen und wohin die gebauten Artifakte geschrieben werden. Gradle nimmt einem, out of the box, diese Möglichkeit.
Klarer Vorteil, kenn ich ein Gradle Projekt, kenn ich alle. Ich muss mir keine Gedanken machen, wo die Quellen liegen und wohin die gebauten Elemente geschrieben werden. Java Quellen liegen immer unter src/main/java und die compilierten Klassen liegen unter build/classes/main. Mit dieser Vorgabe gelingt es mir mit einer Zeile ein Java build zu erzeugen.
Java Projekte bauen mit Gradle weiterlesen