From: <ta...@we...> - 2003-06-10 20:25:38
|
On Tue, Jun 10, 2003 at 09:54:47AM +0200, Kouba Tomas wrote: > V aplikaci mam nekolik konfiguracnich souboru, kde kazdy konfiguracni > soubor prislusi nejakemu funkcnimu modulu. Cteni a ukladani > konfiguracnich hodnot z/do souboru mam vyreseno a neni predmetem tohoto > dotazu. Vlastni konfiguracni hodnoty jsou ulozeny Mapach (HashTable) - > kazdy konfiguracni soubor ma vlastni Mapu. Paklize tomu rozumim spravne, tak konfiguracni soubor jsou vlastne properties - mnozina dvojic [klic, hodnota] > Pri startu modulu potrebuji do kazde konfiguracni hodnoty v Mape ulozit > nejakou implicitni hodnotu, ktera je casto vypocitavana. Po nacteni > hodnoty z konfiguracniho souboru je vetsinou nutne provest validaci > hodnoty (zda nekdo do konfiguracniho souboru nenapsal nejakou kravinu) a > pokud validace probehne OK, ulozit ji do Mapy. Zde tim prepisi > implicitni hodnotu. Stejnou validaci provadet pri zmene hodnoty v Mape > jinym zpusobem nez nactenim z konfiguracniho souboru. Napriklad zadanim > uzivatele do formulare. Rekl bych, ze je potreba v prve rade rict, kde ma byt ona implicitni hodnota ulozena. Ja osobne vidim tri moznosti a kazda ma dost dobre opodstatneni: 1. jedna trida pro vsechny implicitni hodnoty. Je to pekne pohromade. Ma to ale zasadni problem - neni to vubec delano obecne a zrovna se mapa muze nahradit jendom obrovskym JavaBeanem 2. veskery kod pri ziskavani konfigurace ma svou vlastni defaultni hodnotu. Vyhneme se problemu centralizovanosti a onen holder mapy s konfiguraci je krasne univerzalni. Za otazku ovsem stoji, proc potom nepouzit primo java.util.Properties (ciste z duvodu defaultnich hodnot) 3. Defaultni hodnoty jsou v separatnim souboru. Je to pekne ciste reseni, v konstruktoru se soubor nacte a naplni se daty. Daji se delat figle jako treba ze pokud dato nema implicitni hodnotu, tak ji nejde nastavit atd. Paklize vime, kde jsou defaultni hodnoty, muzeme pristoupit k analyze problemu s validaci dat. Jsou v podstate zase tri moznosti: A) validace je na jednom miste a data nejsou typovana. Pak je vsechno natvrdo napsano v kodu a mame zase bod 1. B) validace je volana aplikacni logikou a neexistuje zadna globalni validace. Potom se konfigurace opet omezuje na java.util.Properties C) Mame univerzalni model, jak validovat data. Zavedeme si do konfigurace typy (cisla, retezce,...). Potom je jeste obohatime o rozsahy cisel, delky retezcu, formaty dat a nakonec se dostaneme ke XML schematu. Nevim, zda existuji nastroje, ktere umi vzit netextovou reprezentaci XML (napr. DOM) a rict o nem, ze odpovida danemu schematu. Kdyby takovy nastroj existoval, nevidim duvod v tomto bode psat neco vlastniho. No a nakonec samozrejme existuji "obskurni" reseni, ktere jsou takovymi kockopsi. Napriklad je mozne nad danou mapou nadefinovat Observery, kteri budou resit validaci vybranych dat. V konfiguraci je receno ktery observer ma zajistovat validitu kterych dat. Toto je tak zhruba na prvni pohled vse podstatne. Oto 'tapik' Buchta |