use of cern.laser.business.data.CategoryImpl in project ACS by ACS-Community.
the class ACSCategoryDAOImpl method getChildren.
public Integer[] getChildren(Integer parentId) {
int pid = parentId.intValue();
CategoryImpl cat = (CategoryImpl) getCategory(parentId);
if (cat == null)
return null;
ArrayList<Integer> result = new ArrayList<Integer>();
Iterator<Category> i = categories.values().iterator();
while (i.hasNext()) {
Category c = i.next();
// root categories have null parentId
if (c.getParentId() != null && c.getParentId().intValue() == pid)
result.add(c.getCategoryId());
}
Integer[] out = new Integer[result.size()];
result.toArray(out);
return out;
}
use of cern.laser.business.data.CategoryImpl in project ACS by ACS-Community.
the class ACSCategoryDAOImpl method setParentID.
/**
* Set the parent ID of the passed category
*
* Each category has a parent ID that can be evaluated by reading
* the name of the category.
* If the name does not contain ':' then the parent ID is the ROOT.
* Otherwise its parent is the category whose name is represented
* by the substring before the ':'
*
* @param cat
*/
private void setParentID(CategoryImpl cat) {
if (cat.getPath().equals("ROOT")) {
// ROOT has no parent
cat.setParentId(null);
return;
}
String name = cat.getPath();
int pos = name.lastIndexOf(':');
if (pos == -1) {
// This category parent is ROOT
Category root = getCategoryByPath("ROOT");
cat.setParentId(root.getCategoryId());
cat.setPath(cat.getPath());
cat.setName(cat.getPath());
return;
}
String parentID = name.substring(0, pos);
CategoryImpl parent = (CategoryImpl) getCategoryByPath(parentID);
if (parent == null) {
logger.log(AcsLogLevel.WARNING, "Parent category of " + parentID + " NOT found");
return;
}
cat.setParentId(parent.getCategoryId());
}
use of cern.laser.business.data.CategoryImpl in project ACS by ACS-Community.
the class ACSCategoryDAOImpl method saveCategory.
public void saveCategory(Category category) {
// actual save is done in flushCategory();
CategoryImpl cimpl = (CategoryImpl) category;
if (cimpl.getCategoryId() == null) {
cimpl.setCategoryId(new Integer(nextCatID++));
}
categories.put(cimpl.getCategoryId(), cimpl);
if (cimpl.getPath() != null)
catPathToCategory.put(cimpl.getPath(), cimpl);
}
use of cern.laser.business.data.CategoryImpl in project ACS by ACS-Community.
the class SourceDefinitionServiceImpl method createSource.
public void createSource(String userId, SourceDefinition sourceDefinition) throws LaserDefinitionException {
if (sourceDefinition == null) {
throw new LaserDefinitionNotValidException("source is null");
}
Source source = sourceDAO.getSource(sourceDefinition.getSourceId());
if (source != null) {
throw new LaserDefinitionDuplicationException("source " + sourceDefinition.getSourceId() + " already exist");
}
if (sourceDefinition.getResponsiblePersonId() == null) {
throw new LaserDefinitionNotValidException("responsible id for the source definition is null");
}
ResponsiblePerson responsible = responsiblePersonDAO.getResponsiblePerson(sourceDefinition.getResponsiblePersonId());
if (responsible == null) {
throw new LaserDefinitionNotValidException("responsible with id " + sourceDefinition.getResponsiblePersonId() + " does not exist");
}
AdminUser admin_user = adminUserDAO.findAdminUser(userId);
AdminUser laser_user = adminUserDAO.findByLaserAdminUser();
LOGGER.info("user " + admin_user.getName() + " creating source : " + sourceDefinition);
// create the source
source = new Source(sourceDefinition, responsible);
CategoryDefinition category_definition = new CategoryDefinition(SOURCE_CATEGORY_PATH_PREFIX + sourceDefinition.getName(), "Category for source " + sourceDefinition.getName());
Category parent_category = categoryDAO.findCategoryByPath(category_definition.getParentPath());
Category category = new CategoryImpl(category_definition);
parent_category.addChildCategory(category);
categoryDAO.saveCategory(category);
admin_user.addAdministeredCategory(category);
laser_user.addAdministeredCategory(category);
if (LOGGER.isDebugEnabled())
LOGGER.debug("default category " + category_definition.getPath() + "created for source " + sourceDefinition.getName());
source.setSurveillanceAlarmId(alarmDAO.findLaserSurveillanceAlarmId());
sourceDAO.saveSource(source);
// create the source surveillance alarm
AlarmDefinition surveillance_alarm_definition = (AlarmDefinition) SOURCE_SURVEILLANCE_ALARM_DEFINITION.clone();
surveillance_alarm_definition.setFaultMember(sourceDefinition.getName());
surveillance_alarm_definition.setIdentifier(sourceDefinition.getName());
Alarm surveillance_alarm = new AlarmImpl(surveillance_alarm_definition, source, responsible);
Category surveillance_category = categoryDAO.findBySurveillanceCategory();
surveillance_category.addAlarm(surveillance_alarm);
category.addAlarm(surveillance_alarm);
alarmDAO.saveAlarm(surveillance_alarm);
categoryDAO.updateCategory(surveillance_category);
categoryDAO.updateCategory(category);
if (LOGGER.isDebugEnabled())
LOGGER.debug("surveillance alarm created for source " + sourceDefinition.getName());
source.setSurveillanceAlarmId(surveillance_alarm.getAlarmId());
sourceDAO.updateSource(source);
admin_user.addAdministeredSource(source);
laser_user.addAdministeredSource(source);
adminUserDAO.updateAdminUser(admin_user);
adminUserDAO.updateAdminUser(laser_user);
LOGGER.info("source created");
}
use of cern.laser.business.data.CategoryImpl in project ACS by ACS-Community.
the class ACSCategoryDAOImpl method flushCategory.
public void flushCategory() {
if (conf == null || !conf.isWriteable())
throw new IllegalStateException("no writable configuration accessor");
CategoryDefinitions acds = new CategoryDefinitions();
CategoryDefinitionListType ctc = new CategoryDefinitionListType();
acds.setCategoriesToCreate(ctc);
AlarmCategoryDefinitions linksTop = new AlarmCategoryDefinitions();
AlarmCategoryLinkDefinitionListType cltc = new AlarmCategoryLinkDefinitionListType();
linksTop.setCategoryLinksToCreate(cltc);
Iterator<Category> i = catPathToCategory.values().iterator();
while (i.hasNext()) {
CategoryDefinition cd = new CategoryDefinition();
CategoryImpl ci = (CategoryImpl) i.next();
cd.setDescription(ci.getDescription());
cd.setPath(ci.getPath());
ctc.addCategoryDefinition(cd);
Iterator<?> aidsi = ci.getAlarmIds().iterator();
while (aidsi.hasNext()) {
String aid = (String) aidsi.next();
Alarm a = alarmDao.getAlarm(aid);
if (a == null)
throw new RuntimeException("Category has a link to a non-existent alarm");
AlarmCategoryLinkType link = new AlarmCategoryLinkType();
alma.alarmsystem.alarmmessage.generated.Alarm linkAlarm = new alma.alarmsystem.alarmmessage.generated.Alarm();
alma.alarmsystem.alarmmessage.generated.Category linkCat = new alma.alarmsystem.alarmmessage.generated.Category();
link.setAlarm(linkAlarm);
link.setCategory(linkCat);
AlarmDefinition linkAlarmDef = new AlarmDefinition();
CategoryDefinition linkCatDef = new CategoryDefinition();
linkAlarm.setAlarmDefinition(linkAlarmDef);
linkCat.setCategoryDefinition(linkCatDef);
linkAlarmDef.setFaultCode(a.getTriplet().getFaultCode().intValue());
linkAlarmDef.setFaultFamily(a.getTriplet().getFaultFamily());
linkAlarmDef.setFaultMember(a.getTriplet().getFaultMember());
linkCatDef.setPath(ci.getPath());
cltc.addAlarmCategoryLink(link);
}
}
StringWriter catList = new StringWriter();
try {
acds.marshal(catList);
} catch (Exception e) {
throw new RuntimeException("Failed to encode categories", e);
}
StringWriter linkList = new StringWriter();
try {
acds.marshal(linkList);
} catch (Exception e) {
throw new RuntimeException("Failed to encode link", e);
}
try {
conf.setConfiguration(CATEGORY_DEFINITION_PATH, catList.toString());
conf.setConfiguration(ALARM_CATEGORY_DEFINITION_PATH, linkList.toString());
} catch (Exception e) {
throw new RuntimeException("Failed to store configuration", e);
}
}
Aggregations