Marklar
Zalozeni Projektu
- Prerequisities
- Prvni kroky
- Experiment
- Grafika
- Logika Experimentu
Struktura
- marklar-core
- marklar-fx-common
- marklar-driver-modbus
- marklar-pardWeight
- plastometer
- dilatometer
- lbm
- dokuwiki
Nastaveni ohledne experimentu se mota jednak kolem ExperimentType
(defaultni nastaveni) a ExperimentInstance
(nastaveni specificke pro danou ExperimentInstance
).
Kazda ExperimentInstance
obdrzi pri vytvoreni defaultni nastaveni. Toto nastaveni ma ale moznost prepsat svym vlastnim. Stejne tak se k ExperimentInstance
vazi nektera nastaveni, ktere neni mozno definovat jako defaultni (napr. pocatecni velikost vzorku, sub-status experimentu…).
Defaultni nastaveni zprostredkovava trida ExpTypeSettingsService
, ktera jako klic pri ukladani do DB pouziva id konkretniho ExperimentType
a Stringem pojmenovanou hodnotu. Nastaveni pro ExperimentInstance
zprostredkovava trida ExpInstanceSettingsService
, ktera jako klic pouziva id ExperimentInstance
a Stringem pojmenovanou hodnotu. I kdyz obe SettingsServicy poskytuji stejne metody pro ukladani/nacitani, svoji implementaci se lisi.
Osvedcilo se mi organizovat tridy zprostredkovavajici nastaveni dle nasledneho UML
Konkreni implementace jednotlivych trid/interface nasleduje
Nejprve interface poskytujici metody spolecne pro obe nastaveni
public interface DokuwikiExperimentSettingsInterface { public double getStartT(); public void setStartT(double temp); }
Nyni trida pro nastaveni ExperimentInstance
. V constructoru ji predavam defaultni nastaveni a pri volani metody getStartT()
, pokud tato hodnota u dane ExperimentInstance
neni nalezena, deleguji povinnost teto tridy na defaultni nastaveni. V pripade metody getInitSize()
vyhodim vyjimku, ze hodnota nebyla nalezena.
public class DokuwikiExpInstanceSettignsService extends ExpInstanceSettingsService implements DokuwikiExperimentSettingsInterface { private final static String START_T = "startT"; private final static String INIT_SIZE = "initSize"; private DokuwikiExpTypeSettingsService defaultSS; public DokuwikiExpInstanceSettignsService(ExperimentInstance expInstance) { super(expInstance); defaultSS = (DokuwikiExpTypeSettingsService) expInstance.getExperimentType().getExpDefaultSettingsService(); } public double getStartT() { try { return loadDoubleValue(START_T); } catch (ValueNotFoundException e) { return defaultSS.getStartT(); } } public void setStartT(double temp) { saveDoubleValue(temp, START_T); } public double getInitSize() throws ValueNotFoundException { return loadDoubleValue(INIT_SIZE); } public void setInitSize(double size) { saveDoubleValue(size, INIT_SIZE); } }
defaultni nastaveni. Pokud zadana hodnota neni nalezena, muzu si zde vybrat, zda vyhodim vyjimku nebo vratim nejakou konretni hodnotu (metoda getStartT()
).
public class DokuwikiExpTypeSettingsService extends ExpTypeSettingsService implements DokuwikiExperimentSettingsInterface { private final static String START_T = "startT"; public DokuwikiExpTypeSettingsService(ExperimentType expType) { super(expType); } public double getStartT() { try { return loadDoubleValue(START_T); } catch (ValueNotFoundException e) { return 300.; } } public void setStartT(double temp) { saveDoubleValue(temp, START_T); } }