A legjobb ingyenes (webes kimenetet is adó) adatbázis-vizualizátort a schemaSpy személyében ismerem. Paraméterezéssel lehet e programban színeket változtatni az idegen kulcsokat összekötő vonalakon? Itt az látszik, hogy ez már másnak is volt eszében. S a kérés végén ott visszajelez az egyik fejlesztő, hogy valami XML-beli megadással ez lehetséges is (lenne). De ezt hol kell megtenni, milyen fájlban? Írtam a fejlesztőnek, de nem válaszolt. A forráskód is elérhető. Ötlet?
Az is szóba jöhet, hogy belenyúljunk a programba. A dot program az egde kulcsszóval jelöli az éleket (vagyis az adatbázis ábráján az idegen kulcsok vonalait), s ez a net/sourceforge/schemaspy/view/DotFormatter.java-ban kerül elő.
Próbáltam egy effélét:
dot.writeln(" edge [");
if (colorMe) {
dot.writeln(" color=\"#111122\"");
dot.writeln(" style=\"bold\"");
}
dot.writeln(" arrowsize=\"0.8\"");
dot.writeln(" ];"
Ezt a colorMe változót (amit felvettem új paraméterként a 229. sorban: private void writeHeader(String diagramName, boolean showLabel, LineWriter dot, boolean colorMe) szeretném valahogy paraméterezhetően változtatni. Magyarán, pl. hogy a valami_id idegen kulcsként való előkerülése esetén történjen meg a színezés.
(Ha elhagyom ezt a colorMe feltételt, akkor minden élt megvastagít (és pirosít) a program; ebből azt látom, hogy jó helyen keresgélek.)
Senki többet?
Ne tolongjatok!!
===
Végül egy kerülő megoldást találtam: a program diagrams alkönyvtárában vannak a .dot fájlok, amiből a diagramok képei készülnek. Itt egyszerűen átírhatóak az összekötő vonalaknak megfelelő kódrészletek:
"valami_lista":"kutya1_id":w -> "kutya1":"id.type":e [arrowhead=none dir=back color=red arrowtail=crowodot];
"valami_lista":"valami_id":w -> "valami":"elipses":e [arrowhead=none dir=back arrowtail=crowodot];
A pirosítás elérhető egy ilyen paranccsal a schemaSpy/diagrams/summary könyvtárból (megfelelően módosítva a tabla és id szavakat):
perl -pi -w -e 's/("tabla":"id".*)( arrowtail)/$1 color=red $2/' *.dot
S ezután ráeresztve egy "dot -Tpng bemenetifajl.dot -o kimenetifajl.png" utasítást, el is készül a kívánt .png fájl...
- 3662 megtekintés