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
Jadro je navrzeno dle navrhoveho vzoru Service Locator, ktery poskytuje Servici nad DAO (SampleService
, ExperimentService
), DAO samotne, servicy pro konfiguraci aplikace pri spusteni, servicu zprostredkovavajici logiku kolem experimentu a InstrumentService
(ten se pouzije jen pri inicializaci jadra). Trida ServiceLocator
je singleton, je inicializovana pri startu aplikace. Jakakoliv service zprostredkovavana ServiceLocatorem
musi byt volana jako ServiceLocator.getInstance.getXXXService()
.
Ackoliv trida DAOSingleton
neni deklarovana jako Singleton, Singleton z ni dela prave ServiceLocator
. DAOSingleton
uchovava DAO pro jednotlive entity (SampleDAO
, ExperimentDAO
, SettingsDAO
) a drzi v sobe thread-safe instanci EntityManagerFactory
.
Dotazy na DB zprostredkovava EntityManager
, ktery je vytvored EntityManagerFactory
metodou v DAOSingleton
, tj. je treba volat ServiceLocator.getInstance().getDaos().getEntityManager()
.
Zprostredkovava nacitani konfigurace ze dvou zdroju
CommandArgs
- zatim nepouzito)confing.ini
(trida ConfigFileService
)
V konkretni implenetaci nacitani z config.ini
se pouziva misto ConfigFileService
trida ConfigDataService
. Ta umoznuje navic definovat suffix
, ktery pri zadosti o key
z config.ini
zada o key+suffix
(pouziti, kdyz bude vice instrumentu, kazdy nacitajici konfiguraci ze stejneho souboru.
Rozsahla trida, ktera ma nasledujici ulohy
ExperimentStatus
ExperimentInstance
Subject
v navrhovem vzoru Observer (tj. registruje Observery a kdykoliv je raisnut event, notifikuje observery)
Observery se vazi ke konretnim objektum a jsou registrovani pres registerListener(Object, Listener)
. Raisovani eventu probiha metodami raiseEvent(Event, Object)
. Object
v obou pripadech muze byt ExperimentInstance
(nejpouzivanejsi), ExperimentType
(napr. prepinani log↔lin osy grafu), Instrument
(napr. vypinani nekterych zalozek, pokud dany experiment bezi) a Sample
(napr. zmena popisku v Sample
).
K LogicModuleManager
u patri LogicEventUtility
, ktera se chova o raisovani patricnych eventu (jejich spousteni na vlakne, ktere ma pristup ke grafice, protoze vetsina eventu vede prave ke zmene v grafice).