Violet UML editor – Doctrine 2 Entity Generator
- Filip Procházka
- Moderator | 4668
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)
- Filip Procházka
- Moderator | 4668
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
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
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
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)
- grongor
- Člen | 31
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
Lepší alternativu jsem nenašel a rozšiřovat to neplánuji :)
Pokud máš zájem, můžeš tyto features implementovat sám.