| 

.NET C# Java Javascript Exception

Re: Eintrag in domain class

Dies ist das Archiv des ehemaligen Forums zum Thema Groovy, Grails, Griffon und Bean Scripting Framework, welches unter groovy-forum.de existierte. Die neue Adresse des Groovy-Forums ist: http://codekicker.de/fragen/themen/groovy.


Re: Eintrag in domain class

lsinger - 24.11.2008 00:57
Die Groovy-Datei interessiert zu dem Zeitpunkt nicht mehr, sie wurde nach JVM Bytecode kompiliert und liegt jetzt im WAR. Ausserdem würde das Hibernate vollkommen durcheinanderbringen, denke ich.

Was ist denn genau der Anwendungsfall, den Du lösen möchtest?
-- Leif


Re: Eintrag in domain class

Zigu - 24.11.2008 01:18
Hi,

also so ganz muss ich gestehen, weiß ich nicht worauf du hinauswillst. Ich versuch trotzdem mal zu erklären, was ich verstanden habe. Ich gehe davon aus, dass du im Development-Modus arbeitest und kein WAR-file exportierst.

Wenn du via scaffold deine Ausgabe generieren lässt, also im entsprechenden Controller sowas steht wie
def scaffold = MyDomainClass
, kannst du beliebig Properties in die Groovy-Datei schreiben, die deiner Domain-Klasse zugrunde liegt. Die Ausgabe wird automatisch angepasst.

Wichtig bezüglich der Datenbank ist der Eintrag in der DataSource.groovy. Dort legst du allgemein fest wie mit dem Datenbankschema umgegangen wird. Lässt du es auf "create-drop" wird das Schema nach deiner Änderung komplett weggeworfen und neu erstellt. Dabei werden entsprechend alle Daten gelöscht. Bei "update" werden Änderungen versucht zu übernehmen. Das kann insbesondere bei not-null-Feldern zu Fehlermeldungen führen und bedarf dann manueller Nachbehandlung.

Rob


Re: Eintrag in domain class

Wiper - 24.11.2008 09:09
Hallo,
danke für die schnelle Antwort,

Ich glaube ich hab etwas undeutlich beschrieben. also nochmal.

Ich hab eine domainClass die ich project nenne. Jetzt hat project Eigenschaften zb String name und Date dueDate.
Das lass ich mir dann anzeigenmit list.
Jetzt möchte ich eine Verwaltung für mehrere Projekte schreiben und dem Benutzer dieser Verwaltung es möglichst einfach machen.
Wenn jetzt der Benutzer nachträglich eine weiter Eigenschaft haben möchte z.B. AnzahlTeilnehmer, was ja dann eine neue Spalte für die Tabelle bedeutet,
muss er dann unbedingt in die Datei project.groovy reinschreiben? oder kann ich es ihm Benutzerfreundlicher machen mit ner Form und das dann in die Datei eintragen lassen.

Hoffe ihr versteht jetzt was ich meine.
Danke
mfg wiper


Re: Eintrag in domain class

christian - 24.11.2008 09:47
Hallo wiper,

du solltest das besser nicht durch dynamische Änderung der Klassen bzw. DB-Struktur machen, damit sind Probleme vorprogrammiert. Verwende lieber eine Objekt-/Datenbankstruktur, die dir die nötige Freiheit gibt. Du könntest eine Klasse Project haben, die eine Reihe von Wert-Objekten enthalten kann. Die Wertobjekte könntest du in einer Vererbungshierarchie ordnen, so dass alle von einer abstrakten Klasse abstammen.

+-------+    +------------+
|       |    |<<abstract>>|
|Project|--->|Value       |
+-------+    +------------+
                    ^
                    |
      +-------------+--------------+							
+-----------+   +--------+   +---------+										
|StringValue|   |IntValue|   |BoolValue|
+-----------+   +--------+   +---------+

Gruß
Christian


Re: Eintrag in domain class

christian - 26.11.2008 08:58
Hallo wiper,

ein Wert-Objekt ist einfach ein Objekt, dessen einzige Aufgabe die Speicherung eines Wertes ist.

Nehmen wir mal an, du hättest eine Klasse "Umfrage" und man sollte flexibel festlegen können, nach was gefragt werden soll.

Ganz grob skizziert, könnte das so aussehen:

// Dies ist der Behälter, in dem die Fragen enthalten sind.
class Umfrage{
	String name
	List fragen = []
}

// Hier wird der String mit der Frage gespeichert, festgelegt, von welchem Typ
// (z.B. IntAntwort) die Antwort sein muss und die Antworten ertfrm gespeichert.
class Frage{
	String fragestellung
	class antwortTyp
	List antworten = []
}

// Schnittstelle, die allen Antworten gemein ist. Könnte auch ein Interface 
// sein und muss evtl. noch mehr oder andere Methoden enthalten.
abstract class Antwort{
	abstract String toString();
}

// Eine konkrete Antwort, die in der Liste "antworten" in der Klasse "Frage"
// gespeichert wird.
class IntAntwort extends Antwort{
	int wert
	String toString(){
		return wert
	}
}

belongsTo und hasMany habe ich jetzt mal rausgelassen, ich will dir nur das Prinzip veranschaulichen.

Gruß
Christian


Stelle deine Groovy-Frage jetzt!


Diese Seite zeigt den Thread "Re: Eintrag in domain class" der ehemaligen Webseite groovy-forum.de, welche durch einen Serverunfall zerstört wurde. codekicker.de hat viele Konversationen über die beliebte Programmiersprache Groovy und zugehörige Frameworks wie das Grails-Framework retten können.

Hast Du eine Frage zum Thema Groovy, Grails oder allgemein Java? Viele ehemalige groovy-forum.de Mitglieder beantworten dir auf codekicker.de deine Frage! Stelle jetzt eine Frage!

Viele weitere Diskussionen zu Grails und Groovy befinden sich auf der Threadübersicht des alten groovy-forum.de.