Search in sources :

Example 1 with StatusImpl

use of cern.laser.business.data.StatusImpl in project ACS by ACS-Community.

the class CategoryClient method convertAlarmType.

/**
	 * Convert a CORBA alarm into a client alarm.
	 * 
	 * @param alarm The CORBA alarm
	 * @return the client alarm
	 */
private Alarm convertAlarmType(alma.alarmsystem.Alarm alarm) {
    Source source = new Source();
    Building building = new Building(alarm.alarmLocation.buildingNb, alarm.alarmLocation.site, alarm.alarmLocation.zone, alarm.alarmLocation.map);
    Location location = new Location(alarm.alarmLocation.locationId, alarm.alarmLocation.floor, alarm.alarmLocation.mnemonic, alarm.alarmLocation.position, alarm.alarmLocation.room);
    location.setBuilding(building);
    ResponsiblePerson responsiblePerson = new ResponsiblePerson(alarm.alarmResponsiblePerson.responsibleId, alarm.alarmResponsiblePerson.familyName, alarm.alarmResponsiblePerson.firstName, alarm.alarmResponsiblePerson.eMail, alarm.alarmResponsiblePerson.gsmNumber, alarm.alarmResponsiblePerson.phoneNumber);
    Properties userProperties = new Properties();
    for (org.omg.CosPropertyService.Property prop : alarm.alarmStatus.userProperties) {
        userProperties.put(prop.property_name, prop.property_value);
    }
    Status status = new StatusImpl(Boolean.valueOf(alarm.alarmStatus.active), Boolean.valueOf(alarm.alarmStatus.masked), Boolean.valueOf(alarm.alarmStatus.reduced), Boolean.FALSE, Boolean.FALSE, alarm.alarmStatus.sourceHostname, new Timestamp(alarm.alarmStatus.sourceTimestamp.miliseconds), new Timestamp(alarm.alarmStatus.userTimestamp.miliseconds), new Timestamp(alarm.alarmStatus.systemTimestamp.miliseconds), userProperties);
    Triplet triplet = new Triplet(alarm.alarmTriplet.faultFamily, alarm.alarmTriplet.faultMember, alarm.alarmTriplet.faultCode);
    Set<cern.laser.business.data.Category> categories = new HashSet<cern.laser.business.data.Category>();
    for (Category cat : alarm.categories) {
        CategoryImpl catImpl = new CategoryImpl(cat.categoryId, cat.name, cat.description, cat.path, cat.leaf);
        categories.add(catImpl);
    }
    cern.laser.business.data.Alarm businessAlarm = new AlarmImpl(alarm.alarmId, alarm.systemName, alarm.identifier, alarm.problemDescription, Integer.valueOf(alarm.priority), alarm.cause, alarm.action, alarm.consequence, alarm.piquetGSM, alarm.piquetEmail, alarm.helpURL, Boolean.valueOf(alarm.instant), source, location, responsiblePerson, categories, status, triplet, alarm.nodeParent, alarm.multiplicityParent, alarm.nodeChild, alarm.multiplicityChild);
    Alarm ret = new cern.laser.client.impl.data.AlarmImpl(businessAlarm);
    return ret;
}
Also used : Building(cern.laser.business.data.Building) Status(cern.laser.business.data.Status) Category(alma.alarmsystem.Category) Triplet(cern.laser.business.data.Triplet) StatusImpl(cern.laser.business.data.StatusImpl) Properties(java.util.Properties) Timestamp(java.sql.Timestamp) Source(cern.laser.business.data.Source) CategoryImpl(cern.laser.business.data.CategoryImpl) ResponsiblePerson(cern.laser.business.data.ResponsiblePerson) AlarmImpl(cern.laser.business.data.AlarmImpl) Alarm(cern.laser.client.data.Alarm) Location(cern.laser.business.data.Location) HashSet(java.util.HashSet)

Example 2 with StatusImpl

use of cern.laser.business.data.StatusImpl in project ACS by ACS-Community.

the class AlarmMessageConversion method getAlarm.

public static synchronized AlarmImpl getAlarm(String xml) throws ValidationException, MarshalException, ParseException {
    if (xml == null) {
        throw new IllegalArgumentException();
    }
    StringReader strReader = new StringReader(xml);
    ACSAlarmMessage alarm = ACSAlarmMessage.unmarshalACSAlarmMessage(strReader);
    // Primitive field
    String alarmId = alarm.getAlarmId();
    String systemName = alarm.getSystemName();
    String identifier = alarm.getIdent();
    String problemDescription = alarm.getProblemDescription();
    Integer priority = new Integer(alarm.getPriority());
    String cause = alarm.getCause();
    String action = alarm.getAction();
    String consequence = alarm.getConsequence();
    String piquetGSM = alarm.getPiquetGSM();
    String piquetEmail = alarm.getPiquetEmail();
    String helpURLString = alarm.getHelpURLString();
    Boolean instant = new Boolean(alarm.getInstant());
    boolean nodeParent = alarm.getNodeParent();
    boolean multiplicityParent = alarm.getMultiplicityParent();
    boolean nodeChild = alarm.getNodeChild();
    boolean multiplicityChild = alarm.getMultiplicityChild();
    // The Triplet
    Triplet triplet = new Triplet(alarm.getTriplet().getFaultFamily(), alarm.getTriplet().getFaultMember(), new Integer(alarm.getTriplet().getFaultCode()));
    // The Building
    Building building;
    if (alarm.getLocation() != null) {
        if (alarm.getLocation().getBuilding() != null) {
            building = new Building(alarm.getLocation().getBuilding().getBuildingNumber(), alarm.getLocation().getBuilding().getSite(), new Integer(alarm.getLocation().getBuilding().getZone()), alarm.getLocation().getBuilding().getMap());
        } else {
            building = new Building("N/A", ",N/A", 0, "N/A");
        }
    } else {
        building = new Building("N/A", ",N/A", 0, "N/A");
    }
    // The Location
    Location location;
    if (alarm.getLocation() != null) {
        location = new Location(alarm.getLocation().getLocationId(), alarm.getLocation().getFloor(), alarm.getLocation().getMnemonic(), alarm.getLocation().getPosition(), alarm.getLocation().getRoom());
    } else {
        location = new Location("N/A", "N/A", "N/A", "N/A", "N/A");
    }
    location.setBuilding(building);
    // The ResponsiblePerson
    ResponsiblePerson responsiblePerson = null;
    if (alarm.getResponsiblePerson() != null) {
        responsiblePerson = new ResponsiblePerson(new Integer(alarm.getResponsiblePerson().getResponsibleId()), alarm.getResponsiblePerson().getFirstName(), alarm.getResponsiblePerson().getFamilyName(), alarm.getResponsiblePerson().getEMail(), alarm.getResponsiblePerson().getGsmNumber(), alarm.getResponsiblePerson().getPhoneNumber());
    }
    // The Source
    Source source = new Source();
    source.setSourceId(alarm.getSource().getSourceId());
    source.setDescription(alarm.getSource().getDescription());
    source.setConnectionTimeout(new Integer(alarm.getSource().getConnectionTimeout()));
    source.setSurveillanceAlarmId(alarm.getSource().getSurveillanceAlarmId());
    source.setHostName(alarm.getSource().getHostName());
    ResponsiblePerson responsiblePersonSrc = new ResponsiblePerson(new Integer(alarm.getSource().getResponsiblePerson().getResponsibleId()), alarm.getSource().getResponsiblePerson().getFirstName(), alarm.getSource().getResponsiblePerson().getFamilyName(), alarm.getSource().getResponsiblePerson().getEMail(), alarm.getSource().getResponsiblePerson().getGsmNumber(), alarm.getSource().getResponsiblePerson().getPhoneNumber());
    source.setResponsiblePerson(responsiblePersonSrc);
    HashSet set = new HashSet();
    for (int pos = 0; pos < alarm.getSource().getAlarmIds().length; pos++) {
        set.add(alarm.getSource().getAlarmIds()[pos]);
    }
    source.setAlarmIds(set);
    Timestamp lastContact = null;
    if (alarm.getSource().getSourceStatus().getLastContact() != null) {
        Date date = IsoDateFormat.parseIsoTimestamp(alarm.getSource().getSourceStatus().getLastContact());
        lastContact = new Timestamp(date.getTime());
    }
    SourceStatus sourceStatus = new SourceStatus(new Boolean(alarm.getSource().getSourceStatus().getConnected()), new Boolean(alarm.getSource().getSourceStatus().getEnabled()), lastContact);
    source.setStatus(sourceStatus);
    // The Status
    Timestamp sourceTimestamp = new Timestamp(IsoDateFormat.parseIsoTimestamp(alarm.getStatus().getSourceTimestamp()).getTime());
    Timestamp userTimestamp = new Timestamp(IsoDateFormat.parseIsoTimestamp(alarm.getStatus().getUserTimestamp()).getTime());
    Timestamp systemTimestamp = new Timestamp(IsoDateFormat.parseIsoTimestamp(alarm.getStatus().getSystemTimestamp()).getTime());
    // The properties
    ACSProperty[] props = alarm.getStatus().getPersistentUserProperties();
    Properties properties = new Properties();
    for (int pos = 0; pos < props.length; pos++) {
        properties.put(props[pos].getKey(), props[pos].getValue());
    }
    StatusImpl status = new StatusImpl(new Boolean(alarm.getStatus().getActive()), new Boolean(alarm.getStatus().getMasked()), new Boolean(alarm.getStatus().getReduced()), new Boolean(alarm.getStatus().getActivatedByBackup()), new Boolean(alarm.getStatus().getTerminatedByBackup()), alarm.getStatus().getSourceHostname(), sourceTimestamp, userTimestamp, systemTimestamp, properties);
    // The Categories
    HashSet categories = new HashSet();
    for (int pos = 0; pos < alarm.getCategoriesCount(); pos++) {
        ACSCategory cat = alarm.getCategories(pos);
        CategoryImpl catImpl = new CategoryImpl(new Integer(cat.getCategoryId()), cat.getName(), cat.getDescription(), cat.getPath(), cat.getIsLeaf());
        catImpl.setParentId(new Integer(cat.getParentId()));
        HashSet alarmIds = new HashSet();
        if (cat.getAlarmIdsCount() > 0) {
            for (pos = 0; pos < cat.getAlarmIdsCount(); pos++) {
                alarmIds.add(cat.getAlarmIds(pos));
            }
            catImpl.setAlarmIds(alarmIds);
        }
        HashSet childrenIds = new HashSet();
        if (cat.getChildrenIdsCount() > 0) {
            for (pos = 0; pos < cat.getChildrenIdsCount(); pos++) {
                childrenIds.add(cat.getChildrenIds(pos));
            }
            catImpl.setChildrenIds(childrenIds);
        }
        categories.add(catImpl);
    }
    // MutiplicityChildIds (added later to alarmImpl)
    HashSet MultiplicityChildIds = new HashSet();
    if (alarm.getMultiplicityChildrenIdsCount() > 0) {
        for (int pos = 0; pos < alarm.getMultiplicityChildrenIdsCount(); pos++) {
            MultiplicityChildIds.add(alarm.getMultiplicityChildrenIds(pos));
        }
    }
    // MutiplicityParentIds (added later to alarmImpl)
    HashSet MultiplicityParentIds = new HashSet();
    if (alarm.getMultiplicityParentIdsCount() > 0) {
        for (int pos = 0; pos < alarm.getMultiplicityParentIdsCount(); pos++) {
            MultiplicityParentIds.add(alarm.getMultiplicityParentIds(pos));
        }
    }
    // NodeChildIds (added later to alarmImpl)
    HashSet NodeChildIds = new HashSet();
    if (alarm.getNodeChildrenIdsCount() > 0) {
        for (int pos = 0; pos < alarm.getNodeChildrenIdsCount(); pos++) {
            NodeChildIds.add(alarm.getNodeChildrenIds(pos));
        }
    }
    // NodeParentIds (added later to alarmImpl)
    HashSet NodeParentIds = new HashSet();
    if (alarm.getNodeParentIdsCount() > 0) {
        for (int pos = 0; pos < alarm.getNodeParentIdsCount(); pos++) {
            NodeParentIds.add(alarm.getNodeParentIds(pos));
        }
    }
    // The multiplicity threshold (added later to alarmImpl)
    int multiplityThreshold = alarm.getMultiplicityThreshold();
    AlarmImpl alarmImpl = new AlarmImpl(alarmId, systemName, identifier, problemDescription, priority, cause, action, consequence, piquetGSM, piquetEmail, helpURLString, instant, source, location, responsiblePerson, categories, status, triplet, nodeParent, multiplicityParent, nodeChild, multiplicityChild);
    alarmImpl.setNodeParentIds(NodeParentIds);
    alarmImpl.setNodeChildrenIds(NodeChildIds);
    alarmImpl.setMultiplicityChildrenIds(MultiplicityChildIds);
    alarmImpl.setMultiplicityParentIds(MultiplicityParentIds);
    alarmImpl.setMultiplicityThreshold(new Integer(multiplityThreshold));
    return alarmImpl;
}
Also used : Building(cern.laser.business.data.Building) SourceStatus(cern.laser.business.data.SourceStatus) Triplet(cern.laser.business.data.Triplet) StatusImpl(cern.laser.business.data.StatusImpl) Properties(java.util.Properties) Timestamp(java.sql.Timestamp) Source(cern.laser.business.data.Source) Date(java.util.Date) CategoryImpl(cern.laser.business.data.CategoryImpl) ResponsiblePerson(cern.laser.business.data.ResponsiblePerson) AlarmImpl(cern.laser.business.data.AlarmImpl) StringReader(java.io.StringReader) Location(cern.laser.business.data.Location) HashSet(java.util.HashSet)

Example 3 with StatusImpl

use of cern.laser.business.data.StatusImpl in project ACS by ACS-Community.

the class ACSAlarmCacheImpl method buildUnconfiguredAlarm.

/**
	 * Build a unconfigured alarm from the passed ID.
	 * 
	 * A unconfigured alarm has no data but the triplet generated
	 * from the identifier.
	 * I associate the lowest priority and a user property
	 * to be recognized by clients as being generated by the AS instead
	 * of being retrieved from the configuration database.
	 * <P>
	 * The property identifying this alarm as generated by the AS is:
	 * <Name="AlarmServerProp", Value="UnconfiguredAlarm">
	 * <P>
	 * The alarm is associated to the ROOT category.
	 * 
	 * @param alarmID The ID of the alarm
	 * @return The default alarm
	 */
private Alarm buildUnconfiguredAlarm(String alarmID) {
    if (alarmID == null || alarmID.isEmpty()) {
        throw new IllegalArgumentException("Invalid null or empty alarm ID!");
    }
    String[] parts = alarmID.split(":");
    if (parts.length != 3) {
        throw new IllegalArgumentException("Invalid alarm ID: " + alarmID);
    }
    String FF = parts[0];
    String FM = parts[1];
    Integer FC;
    try {
        FC = Integer.valueOf(parts[2]);
    } catch (NumberFormatException nfe) {
        throw new IllegalArgumentException("Invalid FC in alarm ID: " + alarmID, nfe);
    }
    AlarmImpl alarm = new AlarmImpl();
    alarm.setMultiplicityChildrenIds(new HashSet());
    alarm.setMultiplicityParentIds(new HashSet());
    alarm.setNodeChildrenIds(new HashSet());
    alarm.setNodeParentIds(new HashSet());
    alarm.setAction(EMPTY_STRING);
    alarm.setTriplet(new Triplet(FF, FM, FC));
    alarm.setCategories(new HashSet<Category>());
    alarm.setCause(EMPTY_STRING);
    alarm.setConsequence(EMPTY_STRING);
    alarm.setProblemDescription(EMPTY_STRING);
    alarm.setHelpURL(null);
    alarm.setInstant(false);
    Location location = new Location("0", EMPTY_STRING, EMPTY_STRING, EMPTY_STRING, EMPTY_STRING);
    alarm.setLocation(location);
    alarm.setPiquetEmail(EMPTY_STRING);
    alarm.setPiquetGSM(EMPTY_STRING);
    alarm.setPriority(3);
    ResponsiblePerson responsible = new ResponsiblePerson(1, EMPTY_STRING, EMPTY_STRING, EMPTY_STRING, EMPTY_STRING, EMPTY_STRING);
    alarm.setResponsiblePerson(responsible);
    SourceDefinition srcDef = new SourceDefinition("ALARM_SYSTEM_SOURCES", "SOURCE", EMPTY_STRING, 15, 1);
    Source src = new Source(srcDef, responsible);
    alarm.setSource(src);
    alarm.setIdentifier(alarm.getTriplet().toIdentifier());
    // Build the status in order to associate the property
    Properties userProps = new Properties();
    userProps.put(alarmServerPropkey, undocumentedAlarmProp);
    StatusImpl status = new StatusImpl(false, false, false, false, false, EMPTY_STRING, new Timestamp(0), new Timestamp(0), new Timestamp(0), userProps);
    alarm.setStatus(status);
    // Category association
    //
    // A category for this FF can be already set (this is the case when a new FC/FM is found
    // but the FF has already been associated to a category)
    // In practice a new category has to be defined only if the FF is unknown.
    Category[] categories = categoryDAO.findAllCategories();
    Set<Category> categoriesSet = new HashSet<Category>();
    for (Category cat : categories) {
        if (cat.containsAlarm(alarm)) {
            categoriesSet.add(cat);
        }
    }
    if (!categoriesSet.isEmpty()) {
        System.out.println("Alarm " + alarm.getAlarmId() + " already associated to categories");
    } else {
        System.out.println("Alarm " + alarm.getAlarmId() + " has no associated category");
        Category root = categoryDAO.findCategoryByPath("ROOT");
        categoriesSet.add(root);
        alarm.setCategories(categoriesSet);
        root.addAlarm(alarm);
    }
    return alarm;
}
Also used : SourceDefinition(cern.laser.business.definition.data.SourceDefinition) Category(cern.laser.business.data.Category) Triplet(cern.laser.business.data.Triplet) StatusImpl(cern.laser.business.data.StatusImpl) Properties(java.util.Properties) Timestamp(java.sql.Timestamp) Source(cern.laser.business.data.Source) ResponsiblePerson(cern.laser.business.data.ResponsiblePerson) AlarmImpl(cern.laser.business.data.AlarmImpl) HashSet(java.util.HashSet) Location(cern.laser.business.data.Location)

Aggregations

AlarmImpl (cern.laser.business.data.AlarmImpl)3 Location (cern.laser.business.data.Location)3 ResponsiblePerson (cern.laser.business.data.ResponsiblePerson)3 Source (cern.laser.business.data.Source)3 StatusImpl (cern.laser.business.data.StatusImpl)3 Triplet (cern.laser.business.data.Triplet)3 Timestamp (java.sql.Timestamp)3 HashSet (java.util.HashSet)3 Properties (java.util.Properties)3 Building (cern.laser.business.data.Building)2 CategoryImpl (cern.laser.business.data.CategoryImpl)2 Category (alma.alarmsystem.Category)1 Category (cern.laser.business.data.Category)1 SourceStatus (cern.laser.business.data.SourceStatus)1 Status (cern.laser.business.data.Status)1 SourceDefinition (cern.laser.business.definition.data.SourceDefinition)1 Alarm (cern.laser.client.data.Alarm)1 StringReader (java.io.StringReader)1 Date (java.util.Date)1