Wednesday, April 23, 2008

EclEmma Java code coverage

Habe gerade die "Eclipse Awards Winners" betrachtet und bin auf das Project EclEmma, gewinner der Kategorie "Best Open Source Eclipse-Based Developer Tool", gestossen. Es ist unter EPL lizensiert.

Ich habe es bei meinen Java App und meinen Eclipse RCP App getestet und es hat mir einen guten Eindruck gemacht.

Sunday, April 20, 2008

Wie weisst OpenJPA was zu speichern ist ...

Damit OpenJPA weiss welche Properties einer Klasse zu speichern sind, kann man Tags benutzen:

Es gibt natuerlich auch Tags fuer Master-Detail Verbindungen z.B. @OneToMany, @OneToOne und @ManyToMany


package net.cioppino.fita.core.model;

import javax.persistence.Basic;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Id;

@Entity
@Table(name="users")
public class User extends ModelObject {

@Id
private String id;

@Basic
private String password = "";

@Basic
private String roles = "";

public String getPassword() {
return password;
}
public void setPassword(String password) {
firePropertyChange("password", this.password, this.password = password);
}

public String getRoles() {
return roles;
}
public void setRoles(String roles) {
firePropertyChange("roles", this.roles, this.roles = roles);
}

public String getId() {
return id;
}

public void setId(String id) {
firePropertyChange("roles", this.roles, this.roles = roles);
}


}


Habe hier einen Tabellename definiert da User meistens ein reserviertes Wort ist. Bei den anderen Klassen habe ich den Klassen-Namen gelassen.

Sicherlich gibt es hier viel mehr, aber es gibt noch so viel zu lesen und zu lernen.

Friday, April 18, 2008

OpenJPA

Habe heute mit OpenJPA den Persistenzlayer fuer meine Testapplikation Fita.RCP implementiert. Ich kann ueber die Datei persistence.xml entscheiden wohin die Daten gespeichert werden. Zum Beispiel habe ich ueber DerbyEmbedded eine Standalone Applikation und wenn ich mehrere Instanzen starten will, gehe ich auf PostgreSQL.

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
version="1.0">
<persistence-unit name="fitaDB-EmbeddedDriver">
<provider>
org.apache.openjpa.persistence.PersistenceProviderImpl
</provider>
<class>net.cioppino.fita.core.model.ModelObject</class>
<class>net.cioppino.fita.core.model.User</class>
<class>net.cioppino.fita.core.model.Arrow</class>
<class>net.cioppino.fita.core.model.Score</class>
<class>net.cioppino.fita.core.model.ScoreCard</class>
<class>net.cioppino.fita.core.model.Training</class>
<class>net.cioppino.fita.core.model.TrainingBook</class>
<properties>
<property name="openjpa.ConnectionDriverName"
value="org.apache.derby.jdbc.EmbeddedDriver" />
<property name="openjpa.ConnectionURL"
value="jdbc:derby:c:\DerbyDatabases\fitaDB;create=true" />
<property name="openjpa.ConnectionUserName" value="" />
<property name="openjpa.ConnectionPassword" value="" />
<property name="openjpa.Sequence"
value="table(Table=OPENJPASEQ, Increment=100)" />
<property name="openjpa.Log" value="SQL=TRACE" />
<property name="openjpa.jdbc.SynchronizeMappings"
value="buildSchema" />
<property name="openjpa.jdbc.EagerFetchMode"
value="parallel" />
<property name="openjpa.jdbc.SubclassFetchMode"
value="join" />

</properties>
</persistence-unit>

<persistence-unit name="fitaDB-PostgreSQL">
<provider>
org.apache.openjpa.persistence.PersistenceProviderImpl
</provider>
<class>net.cioppino.fita.core.model.ModelObject</class>
<class>net.cioppino.fita.core.model.User</class>
<class>net.cioppino.fita.core.model.Arrow</class>
<class>net.cioppino.fita.core.model.Score</class>
<class>net.cioppino.fita.core.model.ScoreCard</class>
<class>net.cioppino.fita.core.model.Training</class>
<class>net.cioppino.fita.core.model.TrainingBook</class>
<properties>
<property name="openjpa.ConnectionDriverName"
value="org.postgresql.Driver" />
<property name="openjpa.ConnectionURL"
value="jdbc:postgresql://localhost:5432/fitaDB" />
<property name="openjpa.ConnectionUserName"
value="postgres" />
<property name="openjpa.ConnectionPassword"
value="XXXXXXX" />

<property name="openjpa.Sequence"
value="table(Table=OPENJPASEQ, Increment=100)" />
<property name="openjpa.Log" value="SQL=TRACE" />
<property name="openjpa.jdbc.SynchronizeMappings"
value="buildSchema" />
<property name="openjpa.jdbc.EagerFetchMode"
value="parallel" />
<property name="openjpa.jdbc.SubclassFetchMode"
value="join" />
<property name="openjpa.Log" value="SQL=TRACE" />
</properties>
</persistence-unit>
</persistence>



So einfach war Persistenze noch nie. Die Einarbeitung kostet etwas Zeit aber wenn es laeuft, dann ist man sehr schnell bei der Speicherung und Aenderung von Daten.

Saturday, April 12, 2008

SharpDevelop SDA

Habe gestern wieder mit SharpDevelop an einen kleinen WebService Client gearbeitet und mit SDA meinen 2. Versuch gemacht.

Leider fehlt mir immer noch ein Wizard um ein SDA Projekt zu erstellen, wie es in Eclipse RCP gibt. Somit kann ich dann nur mehr meine Plugins schreiben.

Werde weiter nach einer Loesung suchen.