Dienstag, 21. Dezember 2010
Eindeutige Kennung / Unique ID
Wie kann man in Java eine eindeutige, zufällige ID erzeugen?

Ab Java 5 kann man die Klasse UUID benutzen:
String id = UUID.randomUUID().toString();

Weitere Möglichkeiten findet man hier:
http://www.javapractices.com/topic/TopicAction.do?Id=56
.

... link (0 Kommentare)   ... comment


Freitag, 15. Oktober 2010
Java TimeZone to iCal TimeZone
private static VTimeZone convertTimeZone( TimeZone tz ) {
TimeZoneRegistry registry = TimeZoneRegistryFactory.getInstance().createRegistry();
net.fortuna.ical4j.model.TimeZone timezone = registry.getTimeZone( tz.getID() );
return timezone.getVTimeZone();
}

... link (0 Kommentare)   ... comment


Dienstag, 24. August 2010
Load Resoucefile from Classpath
Wie kann man in einem Java-Programm ein Resourcefile (z.B. XML- oder Properties-Datei), die im Classpath liegt, laden?

ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
InputStream inputStream = classLoader.getResourceAsStream("dies/ist/ein/test/liesmich.xml");


oder

ClassLoader.getSystemResourceAsStream("dies/ist/ein/test/liesmich.xml");

In diesem Beispiel wird ein InputStream zum Lesen der Datei "liesmich.xml" erstellt. Diese Datei muss sich im Classpath befinden und im Java-Package "dies.ist.ein.test" liegen.

File-Objekt erstellen:

File file = new File(classLoader.getResource("dies/ist/ein/test/liesmich.xml").toURI());

... link (0 Kommentare)   ... comment


Freitag, 9. April 2010
JUnit: TestSuite of TestSuites
Wie kann man TestSuites in einer übergeordneten TestSuite zusammenfassen?

So geht's:
public class TestSuite1 {
   public static Test suit() {
      TestSuite testSuite = new TestSuite();
      testSuite.addTestSuite(Test1.class);
      testSuite.addTestSuite(Test2.class);
      return testSuite;
   }
}
public class TestSuiteOfTestSuites {
   public static Test suit() {
      TestSuite testSuite = new TestSuite();
      testSuite.addTest(TestSuite1.suite());
      return testSuite;
   }
}

... link (0 Kommentare)   ... comment


Vordefinierte Zeit- und Datumsformate
So kann man in Java die vordefinierten Zeit- und Datumsformate verwenden:

http://java.sun.com/docs/books/tutorial/i18n/format/dateFormat.html

... link (0 Kommentare)   ... comment


Mittwoch, 30. Dezember 2009
Zufallszahlen erzeugen
Wie kann man in Java Zufallszahlen aus einem bestimmten Wertebereich erzeugen?

Beispielcode:
Random random = new Random();

private int getRandomValueBetween(
int firstValue, int lastValue) {
return firstValue + random.nextInt(lastValue - firstValue + 1);
}

private short getRandomValueOf(
short[] valueSet) {
return valueSet[random.nextInt(valueSet.length)];
}

... link (0 Kommentare)   ... comment


Montag, 12. Oktober 2009
In Java eine XML gegen ein Schema validieren
Kann man in Java eine XML Datei mit Boardmitteln gegen ein XML Schema (XSD) validieren?

Ab Java 5 ist das Package javax.xml.validation hinzugekommen. Eine Validierung gegen ein Schema ist nun einfach möglich.

Details siehe:
http://www.ibm.com/developerworks/xml/library/x-javaxmlvalidapi.html

... link (0 Kommentare)   ... comment


Donnerstag, 8. Oktober 2009
Wort RegEx inklusive Unicode
Der reguläre Ausdruck (RegEx) \w steht für ein Zeichen eines Worts. In Java umfasst er aber nur die Buchstaben von a bis z und A bis Z, sowie die Ziffern. \w entspricht also dem regulären Ausdruck [a-zA-Z_0-9].

Im deutschen gibt es aber Umlaute und in anderen Sprachen noch ganz andere Schriftzeichen.

Mit welchem regulären Ausdruck kann man also all diese Wortzeichen bezeichnen?

Der Ausdruck für ein Unicode Wortzeichen inklusive aller Unicode Buchstaben (Letters) und Ziffern (Numbers) ist:

[\p{L}\p{N}]

Beispiel:

// RegEx, das beliebig viele Wortzeichen umfasst:
Pattern pattern = Pattern.compile("[\\p{L}\\p{N}]*");

// true, weil nur Buchstaben und Ziffern:
boolean test1 = pattern.matcher("18Mäuse").matches();

// false, wegen dem Leerzeichen:
boolean test2 = pattern.matcher("18 Mäuse").matches();


Weitere Quelle:

... link (0 Kommentare)   ... comment


Freitag, 13. Februar 2009
Throwable/Exception in einen String wandeln
Ich möchte eine Exception anzeigen. Die Methode exception.getMessage() liefert mir bestenfalls einen beschreibenden Text, aber nicht die Stelle, wo die Exception aufgetreten ist. Wie gehe ich vor?

Mit dieser Methode kann man den kompletten Stacktrace einer Exception in einen String schreiben:

public static String getStackTrace(Throwable aThrowable) {
StringWriter strWriter = new StringWriter();
PrintWriter printWriter = new PrintWriter(strWriter);
aThrowable.printStackTrace(printWriter);
return strWriter.toString();
}

... link (0 Kommentare)   ... comment


Ausgabe formatieren
Mit String.format kann man ab Java 1.5 einen Text inklusive Variablenwerte komfortable anzeigen

Syntax wie mit printf in C:
%[flags][width][.precision][length]specifier

Für die Formatierung stehen folgende Format-Spezifizierer zur Verfügung:

%b : Boolean
%c : Character
%s : String
%d : Dezimalzahl
%x : Hexadezimaldarstellung
%X : ^^ mit Großbuchstaben
%f : Fließkommazahl
%e : Wissenschaftliche Notation
%E : ^^ mit großem "E"
%g : Fließkommazahl in gemischter Schreibweise
%G : ^^ mit großem "E"
%t : Datum und Zeit
%n : neue Zeile
%% : Prozentzeichen
%c : Unicode-Zeichen

Nähere Informationen in den JDK JavaDocs zur Klasse java.util.Formatter.

Beispiele:

1. Strings:

String name = "Max";
String day = "Montag";
String.format("Hallo %s! Heute ist %s.", name, day);
// Ausgabe: Hallo Max! Heute ist Montag.


2. Eine Dezimalzahl auf 2 Stellen formartieren, bei 1 stelligen Zahlen eine führende 0 anhängen:

// flag = 0 --> mit 0-en auffüllen
// width = 2 --> auf 2 Stellen formatieren
// specifier = d --> Dezimalzahl
String.format("%02d", 1) // Ausgabe: 01


3. Aktuelles Datum und Uhrzeit ausgeben:

System.out.println(String.format("Datum %tD, Uhrzeit %tT", new Date(), new Date()));

4. Datum nach ISO-8601 (YYYY-MM-DD) formatieren:

System.out.println(String.format("%tF", new Date()));

... link (0 Kommentare)   ... comment