Das Notes Forum

Lotus Notes / Domino Sonstiges => Java und .NET mit Notes/Domino => Thema gestartet von: Hernan Cortez am 30.05.04 - 15:40:05

Titel: euro2004
Beitrag von: Hernan Cortez am 30.05.04 - 15:40:05
Schaun mer mal.  ??? ;D
I never promised you a rose garden.
In den nächsten 18 Stunden wird hier geheimnisvoller (und sehr unfertiger) Java code für ein Tipp-Spiel gepostet. Da muß dann noch weiter dran gearbeitet werden. Wir haben noch 12 Tage.


Titel: Zustimmen ja/nein
Beitrag von: Hernan Cortez am 30.05.04 - 16:07:43
ihr kennt das von Installationsprogrammen,

man kann das lesen, muß man aber nicht:

Hi,

Das ist jetzt mal so ein Versuch.

Disclaimer1:
Ich bin Angestellter einer kleinen und/aber kompetenten Consulting namens IMG. Ich arbeite da gerne. Die Organisation, das Management und die Kollegen haben eine langjährige Erfahrung in der erfolgreichen Umsetzung von IT Projekten. Unsere besondere Stärke besteht in der wirklich Mehrwert stiftenden Integration von neueren Technologien wie z.B. Java, J2EE, XML und Webservices in bestehende Systemlandschaften, insbesondere aber nicht nur im Zusammenspiel mit Lotus Notes.

Nun kann ich da natürlich nicht irgendwelche mühsam während der Arbeitszeit erarbeiteten code so mal einfach ins Internet stellen. Deshalb soll es hier um Themen gehen, die nicht strategische Bestandteile unserer Projekte und Produkte sind (Eclipse plug-ins, J2EE unterstützte Workflow Systeme, pragmatisches J2EE auf Basis von open Source und/oder IBM-Produkten sowie der Ausbau von bestehenden, erfolgreichen Produkten meist auf Domino Basis).

Eine Art serverlose verteilte Anwendung, die den Thread eines Internetforums als Art Datenbank verwendet, gehört sicherlich nicht zu den Dingen, die wir kommerziell ausschlachten wollen, bzw. die Geschäftsführung wäre vermutlich an einem Vertriebler interessiert, der das kann.
Das ist nicht mit der Geschäftsführung abgesprochen ausser der Aussage, dass ich während der Freizeit machen kann was ich will (ausser natürlich kriminelle Sachen  :-[ ).

Als GUI wird Swing verwendet. Als Datenbank bekommt jeder Mitspieler sein eigenes RDBMS in Form einer HSQLDB (oder wie das heisst, sehr neu für mich). Für die xml-Verarbeitung JDOM, ein paar packages aus jakarta-commons für Kleinkram sowie Hibernate für Objekt-Relationales Mapping.
Lediglich Hibernate wird von IMG als strategische Komponente angesehen. Ich war an den Projekten, wo das eingesetzt wurde, nicht beteiligt und setze es nur muy básico ein. Wer von Java programmiert und von Hibernate nix gehört hat, sollte die Tomaten aus den Ohren holen.   ::)

Disclaimer2:
Das folgende ist aus gewissen Auseinandersetzungen von mir mit ein paar openSource Projekten entstanden. Es ist nix großes und wichtiges. Einfach so ein bischen einarbeiten in das Zeug und dann sah ich eine Möglichkeit, dass zu einem Spiel zusammenzufügen. Das sind eben so Freizeit-Aktivitäten.
Dies ist nicht auf Basis eines bei IMG und mir in realen Kundenprojekten üblichen vernünftigen Projekt-Management gewachsen sondern mehr so wildwuchernd. Setz mich eben mit neuen Technologien auseinander. Bei diesem explorativ-spielerischen Umgang, weiss ich nicht unbedingt, wo ich am nächsten Tag lande. Die dort angeeignete Sicherheit mit den Dingen kann ich dann für reale Projekte als Ressource abrufen. (http://www.smileys.nl/images/middle/beweeg/69.gif)
Übrigens habe ich va. während der Phase der dot-com bubble schon Projekte mit einem schlechteren Projektmanagement als diesem hier gesehen.

Disclaimer3:
Weiss nicht, ob wir für die Europameisterschaft fertig werden. Auf mich wartet eine anstrengende Arbeitswoche. Ich mache das während meiner Freizeit und ich schulde meinen Kollegen und Kunden ein optimales Maß an Aufgewecktheit während der Arbeitszeit. Wenn wir nicht fertig werden, schlage ich vor, dies für das olympische Fußballtunier zu nutzen.  ;D

Disclaimer4:
Dies ist hier auch als Entgegnung zu verstehen zu den vielen Missverständnissen bezüglich Java, denen ich gerade in Domino-Kreisen immer wieder glaube zu begegnen.
Das ganze gipfelt dann irgendwie im Todschlag-Argument: „Das mit der Plattformunabhängigkeit funktioniert nicht“. Dies wird gerne v.a. von wirklich kompetenten Domino Programmierern vorgebracht. Da könnte ich die Wände hochgehen.  (http://saloon.javaranch.com/ubb/graemlins/censored.gif)
@Brothers: Oracle setzt auf Java, IBM setzt auf Java, Sun setzt auf Java, SAP setzt auf Java, viele ungenannte setzten auf Java und Microsoft hat in .NET auch eine Virtual Maschine, die (s. Mono) auch teilweise für Linux umgesetzt ist.
C# ist so was von einem Java clone, dass ich sogar beim lustige Klassennamen- und Methodenraten mit der automatic code completion von MS.Visual Studio ziemlich gute Trefferquoten erziele.
Da hab ich doch glatt so einen bösartigen Kommentar (http://www.smileys.nl/images/small/stil/13.gif): Wenn das alles so unausgereift und einfach falsch ist. Fangt heute an, mit Hilfe des Einsatzes von altbewährter Technologie zum Bill Gates des 21. Jahrhunderts zu werden. Laßt die Looser wie IBM, Microsoft, Oracle, SAP, etc. ihr Geld für etwas verbrennen, das nicht funktioniert.(http://www.smileys.nl/images/middle/stil/13.gif)

Disclaimer5:
Ich bin kein Java Teacher. Es gibt Leute, die haben Java gelernt und sich didaktische Kompetenz erworben. Diese Leute kosten Geld. Ich habe keinen Ehrgeiz diesen Markt kaputt zu machen. Ein guter Java Teacher gibt euch eine strukturierte Einführung. Hier ist ernsthafte Mitarbeit erforderlich. Ich beantworte gerne Fragen. Ich werde höflicher sein, als ich das teilweise in der Vergangenheit war. Der real existierende Widerspruch zwischen „gerne über Java zu reden“ und „keine Freizeit-Energie darin zu stecken, als didaktisch wertvoller Lehrer zu agieren“ hat mich dazu bewogen, nicht mehr Moderator dieses Forums zu sein.
Wir entwickeln hier kein für kommerzielle Zwecke einsetzbares out-of-the-box-freeware-tool. Dies ist ein unkommerzielles open Source Projekt Yust-For-Fun.
Jeder ist herzlich eingeladen:
-   meinen code zu kritisieren (er ist weeiiiit davon entfernt perfekt zu sein) (http://www.smileys.nl/images/middle/stil/09.gif)
-   etwas beizutragen (sehr gerne)(http://www.smileys.nl/images/small/stil/09.gif)
-   Projekt-Management bashing zu betreiben (http://www.smileys.nl/images/middle/stil/72.gif)
-   Fragen zu stellen (müssen keine „Guru(was immer das ist)-Fragen“ sein. Ich kann hier übringens mal eine Liste von Threads posten, wo ich auf Javaranch nicht so tolle Beiträge geliefert habe und teilweise die Reaktionen. Dabei ist Javaranch ein freundliches Forum. @Brothers: Life is not fair. Der Kapitalismus ist wie ein alter Hering: Er glänzt, aber er stinkt.

in diesem Sinne (http://saloon.javaranch.com/ubb/graemlins/beerchug.gif)

Axel
Titel: Re:euro2004
Beitrag von: animate am 30.05.04 - 16:23:28
her damit jetzt endlich :D
Titel: Re:euro2004
Beitrag von: TMC am 30.05.04 - 20:05:47
genau, dann mal los, Axel.  ;)

(http://217.160.137.156/user/bp/tmc/_smile/guitar.gif)

Titel: Re:euro2004
Beitrag von: Hernan Cortez am 30.05.04 - 22:49:34
Bevor ihr vor der Code Lawine erschlagen werdet, hier erstmal ein Screen Shot und dann ein paar UML Diagramme mit Erläuterungen.
Mit dem code müsst ihr dann noch eine Menge open Source packages runterladen, die ich benutze. Das geht aber problemlos. Ich poste einfach die ganzen URLs.

Also erstmal Screenshot:
(http://www.atnotes.de/attachments/em2004ScreenShotGen.JPG)

Hm. Fehlt was. Egal. Man sollte nicht mit Disketten arbeiten. Reicht aber erstmal. Also ihr seht da oben die Tabs Spielplan und Einstellungen. Fehlt noch der Tab Highscoreliste. Zur Zeit kann man da Ergebnisse eingeben und er rechnet dann die Tabellen inklusive Positionen der Teams aus*, sobald der Anwender auf Speichern drückt.
Der Spielplan wird aus einer xml-Datei gelesen. Dafür habe ich ein eigenes XML-Binding (?) framework geschrieben. xLooser 0.2. Das muss da unbedingt raus, weil es Mist ist. Der Spielplan als xml ist ok. Er soll aber in die Relationale Datenbank geschrieben werden.

Der User gibt also die Spiele ein und kann Zwischenspeichern (Persistierung muss noch realisiert werden, mit Hibernate).

Vor dem ersten Spiel kann der User über irgendeinen Button  aus seinen in der Datenbank zwischengespeicherten Tipp-Daten eine XML-Datei erzeugen, die er an einen bestimmten Thread in Atnotes attached. Dabei ffolgt der Name der xml-Datei einer bestimmten Konvention (Spielername.xml.txt oder so.
Ich weiss nicht, inwieweit man das posten der xml Datei vollständig automatisieren kann. Man muss sich ja per Cookie authentifizieren. Das müsste aber gehen. Für diese HTTP-Geschichten werde ich apache jakarta HTTP-Client verwenden (sehr cool).

OK. Die Tipps der Mitspieler sind jetzt also als xml-Dateien an den Thread in Atnotes attached. Für LAN-User können wir alternativ anbieten, dass die Dateien in einem gemappten Laufwerk gespeichert werden. Alles eine Frage der konkreten Adapter.
Per Apache-HTTP-Client wird nun aus der Anwendung der besagte Thread geparsed. Will das mit Regular Expression machen. Sollte möglich sein.
Gesucht wird nach xml Dateien. Von allen neuen xml Dateien wird die URL dieses attachement eingesammelt und per http-Client runtergeladen in ein Verzeichnis innerhalb des Programms.
Die xml Daten der Tipps werden in die Datenbank geschrieben.

Nun beginnt die Vorrunde. Datumsgesteuert werden nun die Ergebnisfelder (s. Screenshot) zu Eingabefeldern, die Tipps sind nicht mehr bearbeitbar (schon da). Der User gibt dann die Ergebnisse ein (oder ich finde noch einen Webservice). Das Programm errechnet automatisch die Punkte, die die Mitspieler mit ihren Tipps gewinnen.
So geht das immer weiter bis die Vorrunde zu Ende ist.

Das Programm errechnet aus den Ergebnissen der Vorrunde automatisch
die Spielpaarungen des Viertelfinales.
Nun beginnt der Zyklus von neuen. Die User geben Tipps ein, posten diese automatisiert oder halbautomatisiert als vom Programm erzeugten xml ins Forum. Die werden dann von den Clients der Mitspieler automatisch eingesammelt. Die wirklichen Ergebnisse werden eingegeben. Das Programm vergibt für die Tipps Punkte. Das Halbfinale wird ermittelt. usw.

Ich würde sagen technologisch 100% machbar.

Später mehr zu dem was da ist und was noch zu tun ist.

gruss Axel




* Wie ich jetzt aus dem Kicker-Sonderheft erfahren habe, nicht ganz korrekt. Aber das kommt noch.
Titel: Re:euro2004
Beitrag von: Hernan Cortez am 31.05.04 - 02:52:52
Apache Http Client? Datenbank?
Der unbedarfte Leser wird sich jetzt vielleicht fragen, ob das nicht für den Anwender total kompliziert wird, weil ja die sooo einfach zu verstehende Plattform Lotus Notes fehlt.
Nein. Das sind alles Komponenten, die mit seeeeehhhhr wenig Administration von der Anwendung gemanaged werden. Der User bekommt diese Teile nie zu Gesicht.

Es geht darum sich aus Teilen sein eigenes "Enterprise"-System zusammenzustecken. So verstehe ich komponenten-orientierte Software-Entwicklung.
Titel: Source code
Beitrag von: Hernan Cortez am 31.05.04 - 10:51:43
hier ist source code.
In Eclipse ein Projekt machen und dann dieses Paket importieren über Datei//Importieren.
Dummerweise habe ich bei der Anlage des Projekts keinen src Folder erstellt. Ist aber nicht so schlimm.

Die ganzen openSource Packages sind nicht dabei. Die Links zu den downloads poste ich in Kürze.
Titel: Re:euro2004
Beitrag von: Hernan Cortez am 31.05.04 - 12:32:48
JGoodies Forms und JGoodies Looks von http://www.jgoodies.com/downloads/libraries.html
jdom-b9.zip   von http://www.jdom.org/dist/binary/
hsqldb_1_7_1.zip von http://sourceforge.net/project/showfiles.php?group_id=23316&package_id=16653 (http://sourceforge.net/project/showfiles.php?group_id=23316&package_id=16653)

Jakarta: http://jakarta.apache.org/site/binindex.cgi (nur stable releases nehmen)
Commons HttpClient  
Commons Lang 2.0
Log4j 1.2.8

hibernate-2.1.3.zip von http://www.hibernate.org/6.html

MySQL  (benutze ich wegen mehr Erfahrung damit und vermutlich besserer unterstützender Tools für Entwicklung)
http://dev.mysql.com/downloads/
MySQL 4.0 stable
MySQL Control Center
MySQL Connector/J 3.0 -- production release



Titel: Re:euro2004
Beitrag von: Hernan Cortez am 31.05.04 - 13:00:30
ok. Das ist Entwickler-Nightbird Version.
Den Usern kann später ein zip-File zur Verfügung gestellt werden, dass beim Entpacken den ganzen Krempel an die richtige Stelle legt. Installer ist übertrieben für so ein einfaches Projekt.

Na. Ihr Flußschiffer. Spielt noch einer mit  ???

Bienvenido en el Oceano Atlántico  ;D
Titel: Re:euro2004
Beitrag von: animate am 31.05.04 - 13:21:59
habe looks-1.2.2 heruntergeladen

in MainWindow.java Zeile 38
muss es scheinbar

LookUtils.IS_LOW_RESOLUTION

statt

LookUtils.lowRes

heißen
Titel: Re:euro2004
Beitrag von: animate am 31.05.04 - 13:26:33
Cannot resolve com.jgoodies.uif_lite.panel.SimpleInternalFrame;

in GameScheduleTab Zeile 39
und in UserSettingsTab Zeile 34

ich kann com.jgoodies.uif_lite.* nicht finden
Titel: Re:euro2004
Beitrag von: animate am 31.05.04 - 13:35:58
in ObjectGraphFromXMLBuilder.java

ist ein catch block, der nie erreicht wird in Zeile 63ff.

*hat sich erledigt mit richtiger Version von jdom*
Titel: Re:euro2004
Beitrag von: animate am 31.05.04 - 13:42:25
in GroupSchedulePersistence.java Zeile 72 und
GameSchedulePersistence.java Zeile 73

List children = element.getContent();

scheints die Methode getContent() nicht zu geben

ich tausch das jetzt mal durch getMixedContent() aus

*hat sich erledigt mit richtiger Version von jdom*
Titel: Re:euro2004
Beitrag von: animate am 31.05.04 - 14:04:21
Indio, ¿ donde eres tu?

ok, das Problem mit dem SimpleInternalFrame hat sich erledigt.
die Klasse ist
Zitat
located in package com.jgoodies.uif-lite.panel that you can find in folder src/examples/demo/ of the Looks 1.2 distribution
(demo.jar)
Titel: Re:euro2004
Beitrag von: Hernan Cortez am 31.05.04 - 17:42:57
Thomas, du bist wirklich schnell.
Wie gesagt. Ich habe keine Zeit ein didaktisch korrektes Projektmanagement durchzuführen.  
Du musst die Pakete:
com.jgoodies.uif.lite.component
und
com.jgoodies.uif_lite.panel importieren
(aus der Looks Demo von Carsten Lentzsch).
Beide befinden sich in looks-1.21/src/eamples/demo
Einfach mit
rechte Maustaste auf Projekt
Import im Kontextmenü
File System auswählen
Dann Browse: looks-1.2.1 root/src/examples/demo.
com auswählen und die beiden Pakete sollten dann im Projekt drin sein.

Dann de.aja.em2004.gui.MainWindow starten.

Sollte dann funktionieren. Geh davon aus, dass sich seit Version 1.2.1 nix großes geändert hat.

Gruß Axel
Titel: Re:euro2004
Beitrag von: Hernan Cortez am 31.05.04 - 18:00:58
in GroupSchedulePersistence.java Zeile 72 und
GameSchedulePersistence.java Zeile 73

List children = element.getContent();

scheints die Methode getContent() nicht zu geben

ich tausch das jetzt mal durch getMixedContent() aus

Ich glaube, du hast jdom.jar nicht im Classpath:
Im Classpath, dh. Java-build-path sind bei mir (in dieser Reihenfolge)
commons-lang-2.0.jar
dom4j-1.4.jar
forms-1.0.4.jar
hibernate2.jar
hsqldb.jar
jdbc2_0-stdext.jar
jdom.jar
jta.jar
log4j-1.2.8.jar
looks-1.2.1.jar
mysql-connector-java-2.0.12-production-bin.jar
odmg-3.0.jar
xalan-2.4.0.jar
xerces-2.4.0.jar
xml-apis.jar

Die meisten der jars erschliessen sich aus dem Namen und den oben genannten Downloads. Der Rest kommt aus dem lib Verzeichnis von Hibernate.

Auf das Projekt, rechte Maustaste, Properties, Java Build Path, aber das weisst du glaub ich.
Dann als Add External JARs.

Titel: Re:euro2004
Beitrag von: Hernan Cortez am 31.05.04 - 18:13:19
Das sollte so aussehen, wenn du fertig bist:

(http://www.atnotes.de/attachments/packagesJavaPerspective.GIF)
Titel: Re:euro2004
Beitrag von: animate am 31.05.04 - 18:15:52
ich hab jdom im Classpath. jdom-b6. da gibts die Methode nicht für diese Klasse.

naja, also das Anwendungsfenster geht jetzt schonmal auf. mal schaun, ob ichs weiter schaffe.
Titel: Re:euro2004
Beitrag von: Hernan Cortez am 31.05.04 - 18:27:53
gibts definitiv in b9. und ist ganz sicher eine Methode von org.jdom.Element

Titel: Re:euro2004
Beitrag von: animate am 31.05.04 - 18:47:52
da ham wirs schon. b9. ich hab b6 gelesen. :-[
da gibts das noch nicht :)
Titel: Re:euro2004
Beitrag von: Hernan Cortez am 31.05.04 - 19:00:49
sag bitte, wenn es funktioniert.

Hier ist erstmal vorläufiges ddl-Skript für das Erstellen der Tabellen in MySQL (wie gesagt läuft alles bisher über xml).

Datenbank euro2004 anlegen und das im MySQL Controll Center gibt es einen button SQL. Da öffnet sich ein Fenster und das geht alles ganz einfach.

Das gibt auch einen Überblick über die BusinessObjekte.
Titel: Re:euro2004
Beitrag von: Hernan Cortez am 31.05.04 - 19:17:42
Als euro2004 night bird version Installierer bist du eine absolute Granate, Thomas.  ;D
Sowohl in Sachen Nerven als auch in Hinblick auf Kompetenz.
Jetzt müsstest du es aber sehen, oder.
Du kannst SpielTipps eingeben und dann den Speicher-Icon drücken. Die Ergebnisse sollten dann in den Tabellen rechts auftauchen.
Ich muss gleich noch Eisenbahn fahren und bin bis morgen früh nicht mehr im Netz.

Gruß Axel
Titel: Re:euro2004
Beitrag von: animate am 31.05.04 - 19:23:47
wie gesagt, das Fenster öffnet sich. Und ich kann Ergebnisse tippen und an der Konfiguration rumstellen.

diese SQL-Anweisungen ließen sich auch ohne Probleme importieren.

wenn ich was tippe, dann schreibst du das noch nicht raus, oder?
MainTab.save() is noch leer...

was gibts denn noch zu tun? so entwicklungstechnisch.
vielleicht kann ich ja ein ganz klein wenig helfen...
Titel: Re:euro2004
Beitrag von: Hernan Cortez am 31.05.04 - 19:36:21
wenn du Ergebnisse eintippst und auf den speichern icon klickst, errechnen sich die Tabellen neu.
MatchScheduleTab.save() ist nicht leer.
Spiele entfernen sind noch nicht da.
Alles weitere ist eigentlich auch nicht da.
Sorry. Ich muß jetzt los. Weitere Erklärungen später.

Die Klasse MatchSchedule ist eine Art Facade (da ist aber noch ziemlich kraus).
MatchSchedule has Phases
Phases has Matches
Phases has GroupLogic
Phases has Groups (oder nicht bei ko)
Matches has MatchResult
Matches has MatchResultTip
Groups has Teams
MatchResult und MatchResultTip ist ziemlich krauss durcheinander.

Mehr später.

Gruß Axel
Titel: Re:euro2004
Beitrag von: animate am 31.05.04 - 20:40:35
ah ja. na sieht doch schon sehr gut aus.

hast du das ganze zufällig auch als Modell?
das würde das Verstehen etwas erleichtern
Titel: Re:euro2004
Beitrag von: animate am 31.05.04 - 20:51:45
gui
Titel: Re:euro2004
Beitrag von: animate am 31.05.04 - 20:53:52
bo
Titel: Re:euro2004
Beitrag von: animate am 31.05.04 - 20:54:13
db
Titel: Re:euro2004
Beitrag von: Hernan Cortez am 01.06.04 - 18:17:55
sieht gut aus. Womit hast du das gemacht?
Ich habe gestern Hibernate zum laufen gekriegt. Die folgenden Dateien können ersetzt werden:
1. hibernate.properties
Code
hibernate.connection.driver_class=com.mysql.jdbc.Driver
hibernate.connection.url=jdbc:mysql://localhost/euro2004
hibernate.connection.username=root
hibernate.connection.password= 
hibernate.dialect=net.sf.hibernate.dialect.MySQLDialect
hibernate.show_sql=true
hibernate.c3p0.min_size=5
hibernate.c3p0.max_size=20
hibernate.c3p0.timeout=300
hibernate.c3p0.max_statements=50
hibernate.c3p0.idle_test_period=3000
2. User.hbm.xml
Code
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<hibernate-mapping>
<class
name="de.aja.em2004.bo.User"
table="USER">
<id name="id" column="ID">
<generator class="native"/>
</id>
<property name="name" column="NAME"/>
<property name="userNameProxy" column="USERNAMEPROXY"/>
<property name="userPwdProxy" column="USERPWDPROXY"/>
</class>
</hibernate-mapping>
3. Starter.java
Code
/*
 * Created on 09.05.2004
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Generation - Code and Comments
 */
package de.aja.em2004;

import de.aja.em2004.bo.*;
import de.aja.em2004.db.*;
import de.aja.em2004.gui.MainWindow;

import net.sf.hibernate.*;
import net.sf.hibernate.cfg.*;
import java.sql.*;

/**
 * @author Axel Janssen
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Generation - Code and Comments
 */
public class Starter {
   
   // hibernate session Factory 
   private SessionFactory hibSessionFactory;
   
   private static Starter starter = new Starter();
   
   
   private Starter() {
      initHibernateConfig();
   }
   
   public static Starter getInstance() {
      return starter;
   }
   
   private static void startupGui() {
      MatchSchedule gameSchedule = (MatchSchedule)PersistenceManager.getInstance().readObjectRootFromFile("MatchSchedule");
      
   }
   
   public SessionFactory getHibSessionFactory() {
      return hibSessionFactory;
   }
   
   public void initHibernateConfig(){
      try {
         //System.out.println(System.getProperty("java.class.path"));
         
         Configuration cfg = new Configuration();
         cfg.addClass(de.aja.em2004.bo.User.class); // sonst addFile
         //cfg.setProperties( System.getProperties() );
         hibSessionFactory = cfg.buildSessionFactory();
         
      } catch (MappingException e) {
         e.printStackTrace();
         
      } catch (HibernateException e) {
         e.printStackTrace();
      }
   }
   
   public static void main(String[] args) {
      
      
   }
}


4. User.java
Code
/*
 * Created on 27.05.2004
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Generation - Code and Comments
 */
package de.aja.em2004.bo;


import net.sf.hibernate.*;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;

import de.aja.em2004.Starter;
/**
 * @author Axel Janssen
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Generation - Code and Comments
 */
public class User {

   
   private long id;
   private String name;
   private String userNameProxy;
   private String userPwdProxy;

   
   public User (String name, String proxy, String pwd) {
      this.setName(name);
      setUserNameProxy(proxy);
      userPwdProxy = pwd;
   }
   
   public User() {}
   
   
   
   
   
   public static long createInstance(String name, String userNameProxy, String userNamePwd) {
      User user = new User(name, userNameProxy, userNamePwd);
      return user.getId();
   }

   private void setId(long id) {
      this.id = id;
   }

   protected long getId() {
      return id;
   }

   protected void setName(String name) {
      this.name = name;
   }

   protected String getName() {
      return name;
   }

   protected void setUserNameProxy(String userNameProxy) {
      this.userNameProxy = userNameProxy;
   }

   protected String getUserNameProxy() {
      return userNameProxy;
   }

   protected void setUserPwdProxy(String userPwdProxy) {
      this.userPwdProxy = userPwdProxy;
   }

   protected String getUserPwdProxy() {
      return userPwdProxy;
   }
   
   
   public void save() {
      
      Session session;
      try {
         session = Starter.getInstance().getHibSessionFactory().openSession();
         
         
         Transaction tx = session.beginTransaction();
         session.save(this);
         tx.commit();
         session.close();
         System.out.println(this.toString());
      } catch (HibernateException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
      }
   }
   
   public static void main (String[] args) {
      User looser = new User();
      looser.setName("axel");
      looser.save();
   }
   
   public String toString() {
      return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE);
   }
   
   
}

Sämtliche jars aus dem lib Verzeichnis von Hibernate in das Projekt importieren. Blick da zwischenzeitlich nicht mehr durch. Muss mir da irgendwann Klarheit verschaffen, was wirklich gebraucht wird. Ist aber erstmal ok.

User starten (hat main Methode für einen kleinen Test). Die Daten werden dann in die RDBMS geschrieben. Achtet auf den Wert von User.id nach dem save(). Hibernate ist Groß.

Was hier definitiv fehlt sind die usecases.
Ich denke auch, dass das statische Objektmodell soweit erstmal ok ist.
Aber was macht der Anwender mit den Objekten:
- Tipp zwiscchenspeichern
- endgültigen Tipp an das Forum absenden
- Ergebnisse eingeben (mit daran anschliessender Berechnung der Punktestände, etc.)
- vertipptes Ergebnis wieder wegnehmen.

- an das Forum gepostete xml Dateien einsammeln und verarbeiten (eigenes Icon in Menüleiste)

- Starte ein neues Spiel.

Costumbre del indio, um duh aus Java duh in eine duh relationale Datenbank zu schreiben:
así no más:
Code
session.save(this); 
Wobei ich zugeben muß, dass ich die Metadatenbeschreibung .hbm.xml noch von Hand schreibe. Man kann das aber auch mit xDoclet automatisch generieren (fehlen mir noch ein bischen die Nerven für).

Gruß Axel
Titel: Re:euro2004
Beitrag von: animate am 01.06.04 - 19:21:50
Zitat
sieht gut aus. Womit hast du das gemacht?

mit Together. das fütterst du mit dem Code und es spuckt die Diagramme aus.
Titel: un indio en apuros
Beitrag von: Hernan Cortez am 04.06.04 - 18:05:39
 ::)
Hi,

die Hibernatisierung von allem führt zu hmm sagen wir gewissen Verzögerungen.
Ausserdem gibts hier auch eine Menge, Menge, Menge bei der Arbeit zu tun.

Strick jedenfalls alles um und weiss nicht, ob ich bis zur EM fertig werde. Sonst gibt es das eben zum olympischen Fußball, Handball oder Basketball Tunier.

Sobald ich jedenfalls etwas Aussagekräftiges habe, werde ich posten.

Gruß Axel
Titel: Re:euro2004
Beitrag von: eknori am 09.06.04 - 16:02:27
weiss nicht, ob es nicht schon bekannt ist. Hier gibt es ein Blog zur EM http://www.em-blog.de/
Titel: Re:euro2004
Beitrag von: Hernan Cortez am 09.06.04 - 16:34:18
weiss nicht, ob es nicht schon bekannt ist. Hier gibt es ein Blog zur EM http://www.em-blog.de/

Danke. Aber der hatte auch keinen Webservice für Ergebnisse. :-\

Es geht hier um die Definition und Implementierung endgültiger Regeln und best practices für verteilte Anwendungen.

Also quasi so was ähnliches wie Moses für Jura nur eben für die endgültige Klärung sämtlicher Fragen in der Entwicklung verteilter Anwendungen.
(http://smile.smilies.nl/2136.gif)

... was natürlich Unsinn ist.

Ich spiele hier mit Komponenten, die aus einem stark als solchen kenntlichen Objektlayer heraus mit extrem wenig Zeilen code
- xml parsed und generiert  
- Daten in einer RDBMS speichert und liest
- über das Web kommuniziert
- webservices verarbeitet, wenn ich denn einen finde
- als Webrobot agiert

... ich werde weitere Versionen posten.
Die nächste Version wird ein bischen klarer.  
Titel: Re:euro2004
Beitrag von: Gandhi am 18.06.04 - 15:31:50
Hut ab, die Ergebnisse hast Du ja ziemlich gut getippt...;)