/*
* TeleStax, Open Source Cloud Communications Copyright 2012.
* and individual contributors
* by the @authors tag. See the copyright.txt in the distribution for a
* full listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.mobicents.protocols.ss7.oam.common.m3ua;
import java.util.Calendar;
import java.util.List;
import java.util.Map;
import javolution.util.FastList;
import org.mobicents.protocols.ss7.m3ua.As;
import org.mobicents.protocols.ss7.m3ua.Asp;
import org.mobicents.protocols.ss7.m3ua.AspFactory;
import org.mobicents.protocols.ss7.m3ua.ExchangeType;
import org.mobicents.protocols.ss7.m3ua.Functionality;
import org.mobicents.protocols.ss7.m3ua.IPSPType;
import org.mobicents.protocols.ss7.m3ua.M3UAManagement;
import org.mobicents.protocols.ss7.m3ua.M3UAManagementEventListener;
import org.mobicents.protocols.ss7.m3ua.RouteAs;
import org.mobicents.protocols.ss7.m3ua.State;
import org.mobicents.protocols.ss7.m3ua.impl.parameter.ParameterFactoryImpl;
import org.mobicents.protocols.ss7.m3ua.parameter.NetworkAppearance;
import org.mobicents.protocols.ss7.m3ua.parameter.ParameterFactory;
import org.mobicents.protocols.ss7.m3ua.parameter.RoutingContext;
import org.mobicents.protocols.ss7.m3ua.parameter.TrafficModeType;
import org.mobicents.protocols.ss7.oam.common.alarm.AlarmListener;
import org.mobicents.protocols.ss7.oam.common.alarm.AlarmListenerCollection;
import org.mobicents.protocols.ss7.oam.common.alarm.AlarmMediator;
import org.mobicents.protocols.ss7.oam.common.alarm.AlarmMessage;
import org.mobicents.protocols.ss7.oam.common.alarm.AlarmMessageImpl;
import org.mobicents.protocols.ss7.oam.common.alarm.AlarmSeverity;
import org.mobicents.protocols.ss7.oam.common.alarm.CurrentAlarmList;
import org.mobicents.protocols.ss7.oam.common.alarm.CurrentAlarmListImpl;
import org.mobicents.protocols.ss7.oam.common.jmx.MBeanHost;
import org.mobicents.protocols.ss7.oam.common.jmxss7.Ss7Layer;
/**
* @author amit bhayani
* @author sergey vetyutnev
*
*/
public class M3uaManagementJmx implements M3uaManagementJmxMBean, M3UAManagementEventListener, AlarmMediator {
private final MBeanHost ss7Management;
private final M3UAManagement wrappedM3UAManagement;
protected FastList<As> appServers = new FastList<As>();
protected FastList<AspFactory> aspfactories = new FastList<AspFactory>();
private AlarmListenerCollection alc = new AlarmListenerCollection();
private static final ParameterFactory parameterFactory = new ParameterFactoryImpl();
public M3uaManagementJmx(MBeanHost ss7Management, M3UAManagement wrappedM3UAManagement) {
this.ss7Management = ss7Management;
this.wrappedM3UAManagement = wrappedM3UAManagement;
}
/**
* methods - bean life-cycle
*/
public void start() {
synchronized (this.appServers) {
appServers.clear();
}
synchronized (this.aspfactories) {
aspfactories.clear();
}
this.ss7Management.registerMBean(Ss7Layer.M3UA, M3UAManagementType.MANAGEMENT, this.getName(), this);
this.wrappedM3UAManagement.addM3UAManagementEventListener(this);
List<AspFactory> aspFactories = this.wrappedM3UAManagement.getAspfactories();
for (AspFactory aspFactory : aspFactories) {
this.addAspFactoryToManagement(aspFactory);
}
List<As> appServers = this.wrappedM3UAManagement.getAppServers();
for (As as : appServers) {
this.addAsToManagement(as);
List<Asp> asps = as.getAspList();
for (Asp asp : asps) {
this.onAspAssignedToAs(as, asp);
}
}
}
public void stop() {
this.removeAllResourcesFromManagement();
}
/*
* (non-Javadoc)
*
* @see org.mobicents.protocols.ss7.oam.common.m3ua.M3uaManagementJmxMBean#getName ()
*/
@Override
public String getName() {
return this.wrappedM3UAManagement.getName();
}
/*
* (non-Javadoc)
*
* @see org.mobicents.protocols.ss7.oam.common.m3ua.M3uaManagementJmxMBean# getPersistDir()
*/
@Override
public String getPersistDir() {
return this.wrappedM3UAManagement.getPersistDir();
}
@Override
public void setPersistDir(String persistDir) {
this.wrappedM3UAManagement.setPersistDir(persistDir);
}
/*
* (non-Javadoc)
*
* @see org.mobicents.protocols.ss7.oam.common.m3ua.M3uaManagementJmxMBean# getMaxSequenceNumber()
*/
@Override
public int getMaxSequenceNumber() {
return this.wrappedM3UAManagement.getMaxSequenceNumber();
}
@Override
public void setMaxSequenceNumber(int maxSequenceNumber) throws Exception {
this.wrappedM3UAManagement.setMaxSequenceNumber(maxSequenceNumber);
}
@Override
public boolean isSctpLibNettySupport() {
return this.wrappedM3UAManagement.isSctpLibNettySupport();
}
/*
* (non-Javadoc)
*
* @see org.mobicents.protocols.ss7.oam.common.m3ua.M3uaManagementJmxMBean# getMaxAsForRoute()
*/
@Override
public int getMaxAsForRoute() {
return this.wrappedM3UAManagement.getMaxAsForRoute();
}
@Override
public void setMaxAsForRoute(int maxAsForRoute) throws Exception {
this.wrappedM3UAManagement.setMaxAsForRoute(maxAsForRoute);
}
/*
* (non-Javadoc)
*
* @see org.mobicents.protocols.ss7.oam.common.m3ua.M3uaManagementJmxMBean# getAppServers()
*/
@Override
public List<As> getAppServers() {
return this.appServers.unmodifiable();
}
/*
* (non-Javadoc)
*
* @see org.mobicents.protocols.ss7.oam.common.m3ua.M3uaManagementJmxMBean# getAspfactories()
*/
@Override
public List<AspFactory> getAspfactories() {
return this.aspfactories.unmodifiable();
}
/*
* (non-Javadoc)
*
* @see org.mobicents.protocols.ss7.oam.common.m3ua.M3uaManagementJmxMBean#createAs (java.lang.String,
* org.mobicents.protocols.ss7.m3ua.Functionality, org.mobicents.protocols.ss7.m3ua.ExchangeType,
* org.mobicents.protocols.ss7.m3ua.IPSPType, org.mobicents.protocols.ss7.m3ua.parameter.RoutingContext,
* org.mobicents.protocols.ss7.m3ua.parameter.TrafficModeType, org.mobicents.protocols.ss7.m3ua.parameter.NetworkAppearance)
*/
@Override
public As createAs(String asName, Functionality functionality, ExchangeType exchangeType, IPSPType ipspType,
RoutingContext rc, TrafficModeType trafficMode, int minAspActive, NetworkAppearance na) throws Exception {
As as = this.wrappedM3UAManagement.createAs(asName, functionality, exchangeType, ipspType, rc, trafficMode,
minAspActive, na);
return null;
}
@Override
public As createAppServer(String asName, String functionality, String exchangeType, String ipspType,
String rc, int trafficMode, int minAspActive, String na) throws Exception {
NetworkAppearance networkAppearance = null;
if (na != null && !na.trim().equals("")) {
long naLong = Long.parseLong(na);
networkAppearance = parameterFactory.createNetworkAppearance(naLong);
}
RoutingContext routingContext = null;
if (rc != null && !rc.trim().equals("")) {
long rcLong = Long.parseLong(rc.trim());
routingContext = parameterFactory.createRoutingContext(new long[] { rcLong });
}
TrafficModeType trafficModeType = parameterFactory.createTrafficModeType(trafficMode);
As as = this.wrappedM3UAManagement.createAs(asName, Functionality.valueOf(functionality.toUpperCase()),
ExchangeType.valueOf(exchangeType.toUpperCase()), IPSPType.valueOf(ipspType.toUpperCase()), routingContext,
trafficModeType, minAspActive, networkAppearance);
return null;
}
/*
* (non-Javadoc)
*
* @see org.mobicents.protocols.ss7.oam.common.m3ua.M3uaManagementJmxMBean#destroyAs (java.lang.String)
*/
@Override
public As destroyAs(String asName) throws Exception {
this.wrappedM3UAManagement.destroyAs(asName);
return null;
}
/*
* (non-Javadoc)
*
* @see org.mobicents.protocols.ss7.oam.common.m3ua.M3uaManagementJmxMBean# createAspFactory(java.lang.String,
* java.lang.String)
*/
@Override
public AspFactory createAspFactory(String aspName, String associationName) throws Exception {
this.wrappedM3UAManagement.createAspFactory(aspName, associationName);
return null;
}
@Override
public AspFactory createAspFactory(String aspName, String associationName, boolean isHeartBeatEnabled) throws Exception {
this.wrappedM3UAManagement.createAspFactory(aspName, associationName, isHeartBeatEnabled);
return null;
}
@Override
public int getHeartbeatTime() {
return this.wrappedM3UAManagement.getHeartbeatTime();
}
@Override
public void setHeartbeatTime(int timeBetweenHeartbeat) throws Exception {
this.wrappedM3UAManagement.setHeartbeatTime(timeBetweenHeartbeat);
}
@Override
public boolean isUseLsbForLinksetSelection() {
return this.wrappedM3UAManagement.isUseLsbForLinksetSelection();
}
@Override
public void setUseLsbForLinksetSelection(boolean useLsbForLinksetSelection) throws Exception {
this.wrappedM3UAManagement.setUseLsbForLinksetSelection(useLsbForLinksetSelection);
}
@Override
public int getDeliveryMessageThreadCount() {
return this.wrappedM3UAManagement.getDeliveryMessageThreadCount();
}
@Override
public String getRoutingLabelFormatStr() {
return this.wrappedM3UAManagement.getRoutingLabelFormatStr();
}
@Override
public boolean isStarted() {
return this.wrappedM3UAManagement.isStarted();
}
/*
* (non-Javadoc)
*
* @see org.mobicents.protocols.ss7.oam.common.m3ua.M3uaManagementJmxMBean# createAspFactory(java.lang.String,
* java.lang.String, long)
*/
@Override
public AspFactory createAspFactory(String aspName, String associationName, long aspid, boolean isHeartBeatEnabled)
throws Exception {
this.wrappedM3UAManagement.createAspFactory(aspName, associationName, aspid, isHeartBeatEnabled);
return null;
}
/*
* (non-Javadoc)
*
* @see org.mobicents.protocols.ss7.oam.common.m3ua.M3uaManagementJmxMBean# destroyAspFactory(java.lang.String)
*/
@Override
public AspFactory destroyAspFactory(String aspName) throws Exception {
this.wrappedM3UAManagement.destroyAspFactory(aspName);
return null;
}
/*
* (non-Javadoc)
*
* @see org.mobicents.protocols.ss7.oam.common.m3ua.M3uaManagementJmxMBean# assignAspToAs(java.lang.String, java.lang.String)
*/
@Override
public Asp assignAspToAs(String asName, String aspName) throws Exception {
this.wrappedM3UAManagement.assignAspToAs(asName, aspName);
return null;
}
/*
* (non-Javadoc)
*
* @see org.mobicents.protocols.ss7.oam.common.m3ua.M3uaManagementJmxMBean# unassignAspFromAs(java.lang.String,
* java.lang.String)
*/
@Override
public Asp unassignAspFromAs(String asName, String aspName) throws Exception {
this.wrappedM3UAManagement.unassignAspFromAs(asName, aspName);
return null;
}
/*
* (non-Javadoc)
*
* @see org.mobicents.protocols.ss7.oam.common.m3ua.M3uaManagementJmxMBean#startAsp (java.lang.String)
*/
@Override
public void startAsp(String aspName) throws Exception {
this.wrappedM3UAManagement.startAsp(aspName);
}
/*
* (non-Javadoc)
*
* @see org.mobicents.protocols.ss7.oam.common.m3ua.M3uaManagementJmxMBean#stopAsp (java.lang.String)
*/
@Override
public void stopAsp(String aspName) throws Exception {
this.wrappedM3UAManagement.stopAsp(aspName);
}
/*
* (non-Javadoc)
*
* @see org.mobicents.protocols.ss7.oam.common.m3ua.M3uaManagementJmxMBean#addRoute (int, int, int, java.lang.String)
*/
@Override
@Deprecated
public void addRoute(int dpc, int opc, int si, String asName) throws Exception {
this.wrappedM3UAManagement.addRoute(dpc, opc, si, asName);
}
@Override
public void addRoute(int dpc, int opc, int si, String asName, int trafficModeType) throws Exception {
this.wrappedM3UAManagement.addRoute(dpc, opc, si, asName, trafficModeType);
}
/*
* (non-Javadoc)
*
* @see org.mobicents.protocols.ss7.oam.common.m3ua.M3uaManagementJmxMBean#removeRoute (int, int, int, java.lang.String)
*/
@Override
public void removeRoute(int dpc, int opc, int si, String asName) throws Exception {
this.wrappedM3UAManagement.removeRoute(dpc, opc, si, asName);
}
/*
* (non-Javadoc)
*
* @see org.mobicents.protocols.ss7.oam.common.m3ua.M3uaManagementJmxMBean# removeAllResourses()
*/
@Override
public void removeAllResourses() throws Exception {
// TODO Auto-generated method stub
}
/**
* M3UAManagementEventListener callbacks
*/
@Override
public void onAsCreated(As as) {
this.addAsToManagement(as);
// if (wrappedM3UAManagement.isStarted()) {
if (!(as.getState().getName().equals(State.STATE_ACTIVE))) {
AlarmMessage alm = this.generateAsAlarm(as, false);
this.alc.onAlarm(alm);
}
// }
}
@Override
public void onAsDestroyed(As as) {
this.removeAsFromManagement(as);
// if (wrappedM3UAManagement.isStarted()) {
if (!(as.getState().getName().equals(State.STATE_ACTIVE))) {
AlarmMessage alm = this.generateAsAlarm(as, true);
this.alc.onAlarm(alm);
}
// }
}
@Override
public void onAsDown(As as, State oldState) {
// if (wrappedM3UAManagement.isStarted()) {
AlarmMessage alm = this.generateAsAlarm(as, false);
this.alc.onAlarm(alm);
// }
}
@Override
public void onAsInactive(As as, State oldState) {
// if (wrappedM3UAManagement.isStarted()) {
AlarmMessage alm = this.generateAsAlarm(as, false);
this.alc.onAlarm(alm);
// }
}
@Override
public void onAsActive(As as, State oldState) {
// if (wrappedM3UAManagement.isStarted()) {
AlarmMessage alm = this.generateAsAlarm(as, true);
this.alc.onAlarm(alm);
// }
}
@Override
public void onAsPending(As as, State oldState) {
// if (wrappedM3UAManagement.isStarted()) {
AlarmMessage alm = this.generateAsAlarm(as, false);
this.alc.onAlarm(alm);
// }
}
@Override
public void onAspInactive(Asp asp, State oldState) {
// if (wrappedM3UAManagement.isStarted()) {
// AspFactory aspFact = asp.getAspFactory();
// if (aspFact.getStatus()) {
AlarmMessage alm = this.generateAspAlarm(asp, false);
this.alc.onAlarm(alm);
// }
// }
}
@Override
public void onAspActive(Asp asp, State oldState) {
// if (wrappedM3UAManagement.isStarted()) {
// AspFactory aspFact = asp.getAspFactory();
// if (aspFact.getStatus()) {
AlarmMessage alm = this.generateAspAlarm(asp, true);
this.alc.onAlarm(alm);
// }
// }
}
@Override
public void onAspDown(Asp asp, State oldState) {
// if (wrappedM3UAManagement.isStarted()) {
// AspFactory aspFact = asp.getAspFactory();
// if (aspFact.getStatus()) {
AlarmMessage alm = this.generateAspAlarm(asp, false);
this.alc.onAlarm(alm);
// }
// }
}
// @Override
public void onStarted() {
CurrentAlarmListImpl all = this.checkAllAlarms(false);
for (AlarmMessage alm : all.getCurrentAlarmList()) {
this.alc.onAlarm(alm);
}
AlarmMessage alm2 = generateStoppedAlarm(true);
this.alc.onAlarm(alm2);
}
// @Override
public void onStopped() {
CurrentAlarmListImpl all = this.checkAllAlarms(true);
for (AlarmMessage alm : all.getCurrentAlarmList()) {
this.alc.onAlarm(alm);
}
AlarmMessage alm2 = generateStoppedAlarm(false);
this.alc.onAlarm(alm2);
}
@Override
public void onAspFactoryCreated(AspFactory aspFactory) {
this.addAspFactoryToManagement(aspFactory);
}
@Override
public void onAspFactoryDestroyed(AspFactory aspFactory) {
this.removeAspFactoryFromManagement(aspFactory);
}
@Override
public void onAspFactoryStarted(AspFactory aspFact) {
// if (wrappedM3UAManagement.isStarted()) {
List<Asp> lstAsp = aspFact.getAspList();
for (Asp asp : lstAsp) {
if (!asp.getState().getName().equals(State.STATE_ACTIVE)) {
AlarmMessage alm = this.generateAspAlarm(asp, false);
this.alc.onAlarm(alm);
}
}
// }
}
@Override
public void onAspFactoryStopped(AspFactory aspFact) {
// if (wrappedM3UAManagement.isStarted()) {
List<Asp> lstAsp = aspFact.getAspList();
for (Asp asp : lstAsp) {
if (!asp.getState().getName().equals(State.STATE_ACTIVE)) {
AlarmMessage alm = this.generateAspAlarm(asp, true);
this.alc.onAlarm(alm);
}
}
// }
}
@Override
public void onAspAssignedToAs(As as, Asp asp) {
AsJmx asJmx = null;
AspFactoryJmx aspFactoryJmx = null;
synchronized (this.appServers) {
for (FastList.Node<As> n = this.appServers.head(), end = this.appServers.tail(); (n = n.getNext()) != end;) {
As asTemp = n.getValue();
if (asTemp.getName().equals(as.getName())) {
asJmx = (AsJmx) asTemp;
break;
}
}// for loop
}
synchronized (this.aspfactories) {
for (FastList.Node<AspFactory> n = this.aspfactories.head(), end = this.aspfactories.tail(); (n = n.getNext()) != end;) {
AspFactory aspFactoryJmxTmp = n.getValue();
if (aspFactoryJmxTmp.getName().equals(asp.getName())) {
aspFactoryJmx = (AspFactoryJmx) aspFactoryJmxTmp;
break;
}
}// for loop
}
this.addAspToManagement(asJmx, aspFactoryJmx, asp);
}
@Override
public void onAspUnassignedFromAs(As as, Asp asp) {
AsJmx asJmx = null;
AspFactoryJmx aspFactoryJmx = null;
synchronized (this.appServers) {
for (FastList.Node<As> n = this.appServers.head(), end = this.appServers.tail(); (n = n.getNext()) != end;) {
As asTemp = n.getValue();
if (asTemp.getName().equals(as.getName())) {
asJmx = (AsJmx) asTemp;
break;
}
}// for loop
}
synchronized (this.aspfactories) {
for (FastList.Node<AspFactory> n = this.aspfactories.head(), end = this.aspfactories.tail(); (n = n.getNext()) != end;) {
AspFactory aspFactoryJmxTmp = n.getValue();
if (aspFactoryJmxTmp.getName().equals(asp.getName())) {
aspFactoryJmx = (AspFactoryJmx) aspFactoryJmxTmp;
break;
}
}// for loop
}
this.removeAspFromManagement(asJmx, aspFactoryJmx, asp);
}
@Override
public void onRemoveAllResources() {
this.removeAllResourcesFromManagement();
}
/**
* methods - private
*/
private void addAsToManagement(As as) {
synchronized (this.appServers) {
AsJmx asJmx = new AsJmx(as);
this.ss7Management.registerMBean(Ss7Layer.M3UA, M3UAManagementType.AS, as.getName(), asJmx);
this.appServers.add(asJmx);
}
}
private void removeAsFromManagement(As as) {
synchronized (this.appServers) {
As asJmx = null;
for (FastList.Node<As> n = this.appServers.head(), end = this.appServers.tail(); (n = n.getNext()) != end;) {
As asTemp = n.getValue();
if (asTemp.getName().equals(as.getName())) {
asJmx = asTemp;
break;
}
}// for
this.appServers.remove(asJmx);
this.ss7Management.unregisterMBean(Ss7Layer.M3UA, M3UAManagementType.AS, as.getName());
}
}
private void addAspFactoryToManagement(AspFactory aspFactory) {
synchronized (this.aspfactories) {
AspFactoryJmx aspFactoryJmx = new AspFactoryJmx(aspFactory);
this.ss7Management.registerMBean(Ss7Layer.M3UA, M3UAManagementType.ASPFACTORY, aspFactory.getName(), aspFactoryJmx);
this.aspfactories.add(aspFactoryJmx);
}
}
private void removeAspFactoryFromManagement(AspFactory aspFactory) {
synchronized (this.aspfactories) {
AspFactory aspFactoryJmx = null;
for (FastList.Node<AspFactory> n = this.aspfactories.head(), end = this.aspfactories.tail(); (n = n.getNext()) != end;) {
AspFactory aspFactoryJmxTmp = n.getValue();
if (aspFactoryJmxTmp.getName().equals(aspFactory.getName())) {
aspFactoryJmx = aspFactoryJmxTmp;
break;
}
}
this.aspfactories.remove(aspFactoryJmx);
this.ss7Management.unregisterMBean(Ss7Layer.M3UA, M3UAManagementType.ASPFACTORY, aspFactoryJmx.getName());
}
}
private void addAspToManagement(AsJmx asJmx, AspFactoryJmx aspFactoryJmx, Asp asp) {
AspJmx aspJmx = new AspJmx(asp, asJmx, aspFactoryJmx);
asJmx.addAppServerProcess(aspJmx);
aspFactoryJmx.addAppServerProcess(aspJmx);
this.ss7Management.registerMBean(Ss7Layer.M3UA, M3UAManagementType.ASP, aspJmx.getName(), aspJmx);
}
private void removeAspFromManagement(AsJmx asJmx, AspFactoryJmx aspFactoryJmx, Asp asp) {
AspJmx aspJmx = asJmx.removeAppServerProcess(asp.getName());
aspFactoryJmx.removeAppServerProcess(aspJmx);
this.ss7Management.unregisterMBean(Ss7Layer.M3UA, M3UAManagementType.ASP, asp.getName());
}
private void removeAllResourcesFromManagement() {
List<As> appServers = this.wrappedM3UAManagement.getAppServers();
for (As as : appServers) {
List<Asp> asps = as.getAspList();
for (Asp asp : asps) {
this.onAspUnassignedFromAs(as, asp);
}
this.removeAsFromManagement(as);
}
List<AspFactory> aspFactories = this.wrappedM3UAManagement.getAspfactories();
for (AspFactory aspFactory : aspFactories) {
this.removeAspFactoryFromManagement(aspFactory);
}
}
@Override
public String getAlarmProviderObjectPath() {
return this.alc.getAlarmProviderObjectPath();
}
@Override
public CurrentAlarmList getCurrentAlarmList() {
CurrentAlarmListImpl all = new CurrentAlarmListImpl();
// if (wrappedM3UAManagement.isStarted()) {
if (true) {
all = this.checkAllAlarms(false);
} else {
AlarmMessage alm = generateStoppedAlarm(false);
all.addAlarm(alm);
}
return all;
}
@Override
public void registerAlarmListener(AlarmListener al) {
this.alc.registerAlarmListener(al);
}
@Override
public void setAlarmProviderObjectPath(String value) {
this.alc.setAlarmProviderObjectPath(value);
}
@Override
public void unregisterAlarmListener(AlarmListener al) {
this.alc.unregisterAlarmListener(al);
}
private AlarmMessage generateAsAlarm(As ass, boolean isCleared) {
AlarmMessageImpl alm = new AlarmMessageImpl();
alm.setIsCleared(isCleared);
alm.setAlarmSeverity(AlarmSeverity.major);
alm.setAlarmSource("SS7_M3UA_" + this.getName());
alm.setObjectName("AS: " + ass.getName());
alm.setObjectPath("/M3ua:" + this.getName() + "/Ass/As:" + ass.getName());
alm.setProblemName("AS state is not active");
alm.setTimeAlarm(Calendar.getInstance());
return alm;
}
private AlarmMessage generateAspAlarm(Asp asp, boolean isCleared) {
AlarmMessageImpl alm = new AlarmMessageImpl();
alm.setIsCleared(isCleared);
alm.setAlarmSeverity(AlarmSeverity.minor);
alm.setAlarmSource("SS7_M3UA_" + this.getName());
alm.setObjectName("ASP: " + asp.getName());
alm.setObjectPath("/M3ua:" + this.getName() + "/Asps/Asp:" + asp.getName());
alm.setProblemName("ASP state is not active");
alm.setTimeAlarm(Calendar.getInstance());
return alm;
}
private AlarmMessage generateStoppedAlarm(boolean isCleared) {
AlarmMessageImpl alm = new AlarmMessageImpl();
alm.setIsCleared(isCleared);
alm.setAlarmSeverity(AlarmSeverity.critical);
alm.setAlarmSource("SS7_M3UA_" + this.getName());
alm.setObjectName("M3UA");
alm.setObjectPath("/M3ua:" + this.getName());
alm.setProblemName("M3UA server is stopped");
alm.setTimeAlarm(Calendar.getInstance());
return alm;
}
private CurrentAlarmListImpl checkAllAlarms(boolean isCleared) {
CurrentAlarmListImpl all = new CurrentAlarmListImpl();
List<AspFactory> lstAspFact = this.wrappedM3UAManagement.getAspfactories();
for (AspFactory aspFact : lstAspFact) {
if (aspFact.getStatus()) {
List<Asp> lstAsp = aspFact.getAspList();
for (Asp asp : lstAsp) {
if (!asp.getState().getName().equals(State.STATE_ACTIVE)) {
AlarmMessage alm = this.generateAspAlarm(asp, isCleared);
all.addAlarm(alm);
}
}
}
}
List<As> lstAs = this.wrappedM3UAManagement.getAppServers();
for (As as : lstAs) {
if (!as.getState().getName().equals(State.STATE_ACTIVE)) {
AlarmMessage alm = this.generateAsAlarm(as, isCleared);
all.addAlarm(alm);
}
}
return all;
}
@Override
public void onServiceStarted() {
// TODO Auto-generated method stub
}
@Override
public void onServiceStopped() {
// TODO Auto-generated method stub
}
@Override
public void addM3UAManagementEventListener(M3UAManagementEventListener arg0) {
// TODO Auto-generated method stub
}
@Override
public void removeM3UAManagementEventListener(M3UAManagementEventListener arg0) {
// TODO Auto-generated method stub
}
@Override
public Map<String, RouteAs> getRoute() {
return this.wrappedM3UAManagement.getRoute();
}
}