Violet UML editor – Doctrine 2 Entity Generator

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Filip Procházka
Moderator | 4668
+
0
-

Ahoj, kdo mě sledujete na Twitteru, tak víte, že jsem si oblíbil Violet UML :)

Umí takovéto pěkné diagramy:

A pokud je vám to pořád málo, tak jsem si posledních pár dní syslil hračičku, která ze tříd. Které budou odpovídat výše uvedenému schématu, bude generovat prototypy Doctrine 2 entit.

Pokud se vám editor líbí a chtěli by jste ho používat a máte rádi i Doctrine 2, pak je pro vás projekt přístupný na githubu: https://github.com/…ty-Generator

Samozřejmě aplikaci doporučuji i jako studíjní materiál, který vám může na pár dní zamotat hlavu (jako i mně). Netvrdím, že je to dokonalé, ale v rámci možností je to „good-enough“ :) Je tam ukázka

  • zpracování XML
  • práce s Nette\Utils\Tokenizer (úžasná hračka)
  • PHPUnit testy (netestoval jsem ale všechno)

Pokud se objeví chyby, rád je opravím, ale v současné době to umí základ, bez kterého by používání Violetu byla otrava a nepočítám s doděláváním dalších features. Pokud nějaký feature někdo dopíše, rád ho přidám.

Abych se jen nechvástal…

Syntaxe:

Jméno objektu, jeho vlastnosti a metody se zapisují jako čistý text a jako takový musí mít nějaký řád.

  • jednotlivé vlastnosti a metody se píší na samostatné řádky
  • pokud chcete vytvořit namespace, obalte třídy do balíčku (Package)

Vlastnosti se zapisují jako

name
+ name
+ name : string
+ name : Collection<BarClass>
+ name = vychoziHodnota
name : boolean = FALSE

První znak je viditelnost, rozlišuje + = public, # = protected, - = private. Viditelnost je nepovinná a výchozí je private. Jméno by mělo být uvedeno vždy (jinak by to nemělo smysl, že? :))

Typ je volitelný, ale důrazně doporučuji vyplňovat! Používá se také na párování vztahů, jako naznačuje obrázek.

Výchozí hodnota je také volitelná a papá pouze jedno slovo, nebo název třídy.

Metody se zapisují jako

makeFlip() : návratováHodnota
+ makeFlip() : string
+ makeFlip(string bar, FooClass foo) : string
+ makeFlip(FooClass foo) : Collection<FooClass>

Editoval HosipLan (9. 9. 2011 8:13)

Fanda
Člen | 39
+
0
-

Funguje to hezky. V UML se teprve rozhlížím, tak jsem se chtěl zeptat: Je to UML přiohnutý Tvým potřebám, nebo se podobné oboustranné agregace/kompozice opravdu používají?

Filip Procházka
Moderator | 4668
+
0
-

Opravdu se používají, byť okrajově. Jednotlivé typy vazeb jsem zpracovával podle dokumentace Doctrine.

Jenom to má takovou blbou nevýhodu, že občas to zvolí špatnou stranu vlastníka, protože to není moc podle čeho rozlišovat. :) Leda tam dát další řídící symbol.

David Ďurika
Člen | 328
+
0
-

Zdravim, skusal som ten violet na OSX ale robi mi nasledovne:

Usporiadam si entity pekne zarovna atd. ulozim subor. A ked ho znova otvorim tak tam mam totalny bordel, je to cele popresuvane ziadne usporiadanie, entity sa prekryvaju…

co s tym?

Editoval achtan (31. 1. 2012 13:03)

Filip Procházka
Moderator | 4668
+
0
-

Violet mi malinko entity občas posune, ale nikdy né víc než o jeden řádek mřížky. Mám linux, takže nevím…

David Ďurika
Člen | 328
+
0
-

usporiadam http://grab.by/bL42 ulozim, zatvorim program, pustim znova http://grab.by/bL44

EDIT: teraz som to skusal u kolegu na WIN 7 robi to presne to iste

EDIT 2: zistil som ze to robi len v tom pripade, ked niektore prvky skopirujem z ineho dokumentu…

Editoval achtan (31. 1. 2012 14:35)

frosty22
Člen | 373
+
0
-

Zajímavé nyní to zkouším, pouze by mě zajímalo, jakým způsobem zapíšeš anotace jako @length, @GeneratedValue, @id, apod.? Děkuji

Filip Procházka
Moderator | 4668
+
0
-

Nezapíšu.

frosty22
Člen | 373
+
0
-

Tak to je docela škoda :( Jinak jako feature by nebylo zlé, tedy pokud na tom ještě pracuješ a plánuješ rozvíjet. Alternativně tedy zkusím tužku a papír.

natrim
Člen | 73
+
0
-

hm, nezná spíš někdo nějaký nástroj který naopak vizualizuje Doctrine2 mapingy?
něco jako Doctrine to UML

grongor
Člen | 31
+
0
-

Zdravím, chci se zeptat, jestli ješte na tomhle projektu pracuješ. Sháním teď něco podobného a je docela obtížné to najít. Na tomhle projektu mi ale pár věcí chybí. Např. již zmiňované @GeneratedValue a @Id, ale nepřišel jsem také na to, jak definovat decimal (precision a rate). Máš tedy v plánu to nějak rozšiřovat? Našel jsi lepší alternativu? Dík :)

Filip Procházka
Moderator | 4668
+
0
-

Lepší alternativu jsem nenašel a rozšiřovat to neplánuji :)
Pokud máš zájem, můžeš tyto features implementovat sám.

grongor
Člen | 31
+
0
-

No škoda, to jsi přestal s Doctrine pracovat? :D jak řešíš absenci těch funkcí? To si vždy tyhle detaily dopisuješ sám? No a asi se na to mrknu, je to perfektní základ, chce to jen malinko dotáhnout no :-)