use of com.cosylab.acs.laser.dao.ConfigurationAccessor in project ACS by ACS-Community.
the class LaserComponent method initialize.
public void initialize() {
this.logger = corbaServer.getLogger();
defaultTopicConnectionFactory = new ACSJMSTopicConnectionFactory(alSysContSvcs);
TopicConnection tc;
TopicSession ts = null;
try {
tc = defaultTopicConnectionFactory.createTopicConnection();
ts = tc.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
Topic topicAdminCacheLoader = new ACSJMSTopic("CMW.ALARM_SYSTEM.ADMIN_CACHE_LOADER");
subscriberAdminCacheLoader = ts.createSubscriber(topicAdminCacheLoader);
subscriberAdminCacheLoader.setMessageListener(new MessageListener() {
public void onMessage(Message message) {
if (message instanceof TextMessage) {
logger.log(AcsLogLevel.DEBUG, "Received a JMS message");
} else {
logger.log(AcsLogLevel.WARNING, "Received a non text JMS message");
}
try {
alarmMessageProcessor.process(message);
} catch (Throwable t) {
logger.log(AcsLogLevel.ERROR, "Exception processing a message: " + t.getMessage(), t);
// There is nothing to do at this level: log the exception
// and be ready to process the next message
}
}
});
logger.log(AcsLogLevel.DEBUG, "JMS initialized");
} catch (Throwable t) {
System.err.println("Error initing JMS, " + t.getMessage());
t.printStackTrace(System.err);
logger.log(AcsLogLevel.ERROR, "Error initializing JMS", t);
coreAlarms.add(LaserCoreFaultCodes.JMS_INIT);
}
ConfigurationAccessor conf = null;
try {
conf = ConfigurationAccessorFactory.getInstance(alSysContSvcs);
} catch (Throwable t) {
System.err.println("Error getting CDB: " + t.getMessage());
t.printStackTrace(System.err);
logger.log(AcsLogLevel.WARNING, "Error getting CDB", t);
coreAlarms.add(LaserCoreFaultCodes.CDB_UNAVAILABLE);
}
adminUserDAO = new ACSAdminUserDAOImpl();
alarmDAO = new ACSAlarmDAOImpl(logger);
alarmDAO.setConfAccessor(conf);
categoryDAO = new ACSCategoryDAOImpl(logger, alarmDAO);
categoryDAO.setConfAccessor(conf);
responsiblePersonDAO = new ACSResponsiblePersonDAOImpl();
try {
alarmDAO.loadAlarms();
} catch (Throwable t) {
System.err.println("Error loading alarms: " + t.getMessage());
t.printStackTrace(System.err);
logger.log(AcsLogLevel.CRITICAL, "Error loading alarms from CDB", t);
coreAlarms.add(LaserCoreFaultCodes.ALARMS_CDB);
}
try {
categoryDAO.loadCategories();
} catch (Throwable t) {
System.err.println("Error loading categories: " + t.getMessage());
t.printStackTrace(System.err);
logger.log(AcsLogLevel.CRITICAL, "Error loading categories from CDB", t);
coreAlarms.add(LaserCoreFaultCodes.CATEGORIES_CDB);
}
sourceDAO = new ACSSourceDAOImpl(logger, alarmDAO.getSources());
sourceDAO.setConfAccessor(conf);
sourceDAO.setLaserSourceId("LASER");
sourceDAO.setAlarmDAO(alarmDAO);
sourceDAO.setResponsiblePersonDAO(responsiblePersonDAO);
adminUserDefinitionService = new AdminUserDefinitionServiceImpl();
alarmCacheServer = new AlarmCacheServerImpl(logger);
alarmDefinitionService = new AlarmDefinitionServiceImpl();
sourcesListener = new AlarmSourcesListenerCached(alSysContSvcs, logger, this);
statisticsCalculator = new StatsCalculator(this.logger, sourcesListener);
alarmMessageProcessor = new AlarmMessageProcessorImpl(this, logger, statisticsCalculator);
alarmPublisher = new AlarmPublisherImpl(logger);
alarmSourceMonitor = new AlarmSourceMonitorImpl();
categoryDefinitionService = new CategoryDefinitionServiceImpl();
coreService = new CoreServiceImpl();
heartbeat = new HeartbeatImpl();
mailAndSmsServer = new ACSMailAndSmsServer(logger);
sourceDefinitionService = new SourceDefinitionServiceImpl();
alarmCacheListener = new AlarmCacheListenerImpl(alarmCacheServer);
alarmCache = new ACSAlarmCacheImpl(alarmDAO, categoryDAO, alarmCacheListener, logger);
statisticsCalculator.start();
alarmDAO.setSurveillanceAlarmId("SURVEILLANCE:SOURCE:1");
alarmDAO.setResponsiblePersonDAO(responsiblePersonDAO);
// categoryDAO.setCategoryTreeRoot("ACS");
categoryDAO.setCategoryTreeRoot("ROOT");
categoryDAO.setSurveillanceCategoryPath("ACS.SURVEILLANCE");
responsiblePersonDAO.setAlarmDAO(alarmDAO);
adminUserDefinitionService.setCategoryDAO(categoryDAO);
adminUserDefinitionService.setAdminUserDAO(adminUserDAO);
alarmCacheServer.setAlarmDAO(alarmDAO);
alarmCacheServer.setAlarmPublisher(alarmPublisher);
alarmCacheServer.setMailAndSmsServer(mailAndSmsServer);
alarmDefinitionService.setAlarmCache(alarmCache);
alarmDefinitionService.setAdminUserDAO(adminUserDAO);
alarmDefinitionService.setAlarmDAO(alarmDAO);
alarmDefinitionService.setCategoryDAO(categoryDAO);
alarmDefinitionService.setResponsiblePersonDAO(responsiblePersonDAO);
alarmDefinitionService.setSourceDAO(sourceDAO);
alarmDefinitionService.setAlarmMessageProcessor(alarmMessageProcessor);
alarmDefinitionService.setAlarmPublisher(alarmPublisher);
alarmMessageProcessor.setAlarmCache(alarmCache);
alarmMessageProcessor.setSourceDAO(sourceDAO);
alarmPublisher.setTopicConnectionFactory(defaultTopicConnectionFactory);
alarmPublisher.setCategoryRootTopic("CMW.ALARM_SYSTEM.CATEGORIES");
alarmSourceMonitor.setSourceDAO(sourceDAO);
alarmSourceMonitor.setAlarmMessageProcessor(alarmMessageProcessor);
alarmSourceMonitor.setSourceMonitorFrequency(60000);
categoryDefinitionService.setAlarmCache(alarmCache);
categoryDefinitionService.setAdminUserDAO(adminUserDAO);
categoryDefinitionService.setAlarmDAO(alarmDAO);
categoryDefinitionService.setCategoryDAO(categoryDAO);
coreService.setAlarmCache(alarmCache);
coreService.setResponsiblePersonDAO(responsiblePersonDAO);
coreService.setSourceDAO(sourceDAO);
coreService.setAlarmDAO(alarmDAO);
coreService.setCategoryDAO(categoryDAO);
coreService.setAlarmPublisher(alarmPublisher);
// coreService.setDataSource(defaultDataSource);
coreService.setClientRootTopic("CMW.ALARM_SYSTEM.CLIENTS");
coreService.setRootCategoryPK(2064926);
coreService.setHeartbeatTopic("CMW.ALARM_SYSTEM.HEARTBEAT");
coreService.setHeartbeatFrequency(60000);
coreService.setSearchRootTopic("CMW.ALARM_SYSTEM.SEARCH");
heartbeat.setCoreService(coreService);
heartbeat.setTopicConnectionFactory(defaultTopicConnectionFactory);
sourceDefinitionService.setAlarmCache(alarmCache);
sourceDefinitionService.setAdminUserDAO(adminUserDAO);
sourceDefinitionService.setAlarmDAO(alarmDAO);
sourceDefinitionService.setCategoryDAO(categoryDAO);
sourceDefinitionService.setResponsiblePersonDAO(responsiblePersonDAO);
sourceDefinitionService.setSourceDAO(sourceDAO);
sourceDefinitionService.setAlarmDefinitionService(alarmDefinitionService);
alarmDAO.setAlarmProcessor(alarmMessageProcessor);
// Subscribe the source listener to all the source NCs
try {
sourcesListener.connectSources(sourceDAO.getAllSourceIDs());
logger.log(AcsLogLevel.DEBUG, "Successfully connected to sources NCs");
} catch (Throwable t) {
System.err.println("Error setting source listener: " + t.getMessage());
t.printStackTrace(System.err);
logger.log(AcsLogLevel.WARNING, "Error setting the source listener", t);
coreAlarms.add(LaserCoreFaultCodes.SOURCE_LISTENER);
}
sourcesListener.start();
}
use of com.cosylab.acs.laser.dao.ConfigurationAccessor in project ACS by ACS-Community.
the class HibernateWDALAlarmPluginImpl method importEpilogue.
/* (non-Javadoc)
* @see com.cosylab.cdb.jdal.hibernate.plugin.HibernateWDALPlugin#importEpilogue(org.hibernate.Session, alma.acs.tmcdb.Configuration, com.cosylab.cdb.client.CDBAccess)
*/
public void importEpilogue(Session session, Configuration config, final CDBAccess cdbAccess) {
try {
m_logger.config("Importing ACS Alarm System configuration...");
ConfigurationAccessor conf = new ConfigurationAccessor() {
public String getConfiguration(String path) throws Exception {
return cdbAccess.getDAL().get_DAO(path);
}
public boolean isWriteable() {
return false;
}
public void setConfiguration(String path, String data) throws Exception {
// noop
}
public void deleteConfiguration(String path) throws Exception {
// noop
}
};
importAlarms(session, config, conf, m_logger);
} catch (Throwable th) {
// ugly but...
if (th.getMessage() != null && th.getMessage().startsWith("Couldn't read alarm")) {
m_logger.warning("Alarm system configuration could not be read, skipping...");
} else
m_logger.log(Level.SEVERE, "Failed to import all the alarm data.", th);
}
}
use of com.cosylab.acs.laser.dao.ConfigurationAccessor in project ACS by ACS-Community.
the class TestAlarmDAO method setUp.
/**
* @see TestCase
*/
public void setUp() throws Exception {
super.setUp();
ConfigurationAccessor conf;
conf = ConfigurationAccessorFactory.getInstance(getContainerServices());
assertNotNull("Got a null ConfigurationAccessor", conf);
alarmDAO = new ACSAlarmDAOImpl(getContainerServices().getLogger());
assertNotNull("AlarmDAO is null", alarmDAO);
alarmDAO.setConfAccessor(conf);
alarmDAO.loadAlarms();
}
use of com.cosylab.acs.laser.dao.ConfigurationAccessor in project ACS by ACS-Community.
the class ACSCategoryDAOTest method setUp.
public void setUp() throws Exception {
super.setUp();
ConfigurationAccessor conf;
conf = ConfigurationAccessorFactory.getInstance(getContainerServices());
assertNotNull("Got a null ConfigurationAccessor", conf);
alarmDAO = new ACSAlarmDAOImpl(getContainerServices().getLogger());
alarmDAO.setConfAccessor(conf);
assertNotNull("AlarmDAO is null", alarmDAO);
categoryDAO = new ACSCategoryDAOImpl(getContainerServices().getLogger(), alarmDAO);
assertNotNull("category DAO is null", categoryDAO);
categoryDAO.setConfAccessor(conf);
// Load the categories
categoryDAO.loadCategories();
}
use of com.cosylab.acs.laser.dao.ConfigurationAccessor in project ACS by ACS-Community.
the class CDBSender method readAlarmsFromCDB.
/**
* Read alarms from the TM/CDB with the help of {@link ACSAlarmDAOImpl}.
* <P>
* This method can be quite slow so it would be better to run
* in a dedicated thread.
*
* @throws Exception
*/
private void readAlarmsFromCDB() throws Exception {
ConfigurationAccessor conf;
conf = ConfigurationAccessorFactory.getInstance(contSvcs);
ACSAlarmDAOImpl alarmDAO = new ACSAlarmDAOImpl(contSvcs.getLogger());
alarmDAO.setConfAccessor(conf);
List<FaultFamily> FFs = alarmDAO.loadAlarms();
synchronized (alarms) {
for (FaultFamily ff : FFs) {
String faultFamily = ff.getName();
for (FaultMember fm : ff.getFaultMember()) {
for (FaultCode fc : ff.getFaultCode()) {
alarms.add(new AlarmRead(faultFamily + "," + fm.getName() + "," + fc.getValue(), null));
}
}
// Has this FF a default fault member?
if (ff.getFaultMemberDefault() != null) {
System.out.println("Found a default fault member for " + ff.getName());
for (FaultCode fc : ff.getFaultCode()) {
alarms.add(new AlarmRead(faultFamily + ",*," + fc.getValue(), null));
}
}
}
}
}
Aggregations