Quellcode durchsuchen

Latest source January 2022

Ariel vor 3 Jahren
Ursprung
Commit
116d041b94

+ 14 - 1
GabonTelMobicashMobileAppHelper/.checkstyle

@@ -1,3 +1,16 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
-<fileset-config file-format-version="1.2.0" simple-config="false" sync-formatter="false"/>
+<fileset-config file-format-version="1.2.0" simple-config="false" sync-formatter="false">
+  <local-check-config name="maven-checkstyle-plugin check-style" location="jar:file:/C:/Users/User/.m2/repository/org/wildfly/checkstyle/wildfly-checkstyle-config/1.0.5.Final/wildfly-checkstyle-config-1.0.5.Final.jar!/wildfly-checkstyle/checkstyle.xml" type="remote" description="maven-checkstyle-plugin configuration check-style">
+    <property name="checkstyle.cache.file" value="${project_loc}/target/checkstyle-cachefile"/>
+    <property name="checkstyle.header.file" value="D:\ARIEL\GABON\Gabon_Workspace\.metadata\.plugins\org.eclipse.core.resources\.projects\GabonTelMobicashMobileAppHelper\com.basistech.m2e.code.quality.checkstyleConfigurator\checkstyle-header-check-style.txt"/>
+  </local-check-config>
+  <fileset name="java-sources-check-style" enabled="true" check-config-name="maven-checkstyle-plugin check-style" local="true">
+    <file-match-pattern match-pattern="^src/test/java.*\.java" include-pattern="true"/>
+    <file-match-pattern match-pattern="^src/main/java/.*\.java" include-pattern="true"/>
+    <file-match-pattern match-pattern="^src/main/resources.*\.properties" include-pattern="true"/>
+    <file-match-pattern match-pattern="^src/main/resources.*\.xml" include-pattern="true"/>
+    <file-match-pattern match-pattern="^src/test/resources.*\.properties" include-pattern="true"/>
+    <file-match-pattern match-pattern="^src/test/resources.*\.xml" include-pattern="true"/>
+  </fileset>
+</fileset-config>

+ 48 - 0
GabonTelMobicashMobileAppHelper/src/main/java/com/psi/gabontel/mobileapp/achatforfait/AchatForfaitMenuHandler.java

@@ -0,0 +1,48 @@
+package com.psi.gabontel.mobileapp.achatforfait;
+
+import java.util.Map;
+
+import javax.ejb.Remote;
+import javax.ejb.Stateless;
+
+import org.jboss.logging.Logger;
+
+import com.psi.applicationmanager.AppManagerFunction;
+import com.psi.applicationmanager.AppMessage;
+import com.psi.common.transactions.McomSubscriber;
+import com.psi.common.transactions.Message;
+import com.psi.common.transactions.MessageId;
+import com.psi.common.transactions.Messanger;
+
+@Stateless
+@Remote(AppManagerFunction.class)
+public class AchatForfaitMenuHandler implements AppManagerFunction {
+    
+    private static final Logger log = Logger.getLogger(AchatForfaitMenuHandler.class);
+    @Override
+    public String processTransaction(String refid, String msisdn, String message, Map<String, String> syntax) {
+        return manageTransaction(refid, msisdn, message, syntax).getMessage();
+    }
+    
+    @Override
+    public AppMessage manageTransaction(String refid, String msisdn, String message, Map<String, String> syntax) {
+        String ret = null;
+        String key = syntax.get("key");
+        String location = syntax.get("location");
+        String language = syntax.get("language");
+        Message msg = Messanger.getMessage(MessageId.SYSTEM_BUSY, msisdn, "<refid>", refid);
+        ret = key + ":99:" + refid + ":" + msg.getMessage().toString();
+        
+        MobileMenuConfig menuconfig = new MobileMenuConfig();
+        try {
+           
+            String jsonresp = menuconfig.getForfait(location, language);
+            
+            ret = key + ":0:" + refid + ":" + jsonresp;
+            return new Message(0,0,ret);
+        }catch (Exception e) {
+            log.error("MobileHandler : error" + msisdn, e);
+            return new Message(0,0,ret);
+        }
+    }
+}

+ 56 - 0
GabonTelMobicashMobileAppHelper/src/main/java/com/psi/gabontel/mobileapp/achatforfait/MenuPackages.java

@@ -0,0 +1,56 @@
+package com.psi.gabontel.mobileapp.achatforfait;
+
+public class MenuPackages {
+    
+    private int id;
+    private String nextloc;
+    private String type;
+    private String packgroup;
+    private String displayname;
+    private String hits;
+    private int status;
+    
+    public int getId() {
+        return id;
+    }
+    public void setId(int id) {
+        this.id = id;
+    }
+    public String getNextloc() {
+        return nextloc;
+    }
+    public void setNextloc(String nextloc) {
+        this.nextloc = nextloc;
+    }
+    public String getType() {
+        return type;
+    }
+    public void setType(String type) {
+        this.type = type;
+    }
+    public String getPackgroup() {
+        return packgroup;
+    }
+    public void setPackgroup(String packgroup) {
+        this.packgroup = packgroup;
+    }
+    public String getDisplayname() {
+        return displayname;
+    }
+    public void setDisplayname(String displayname) {
+        this.displayname = displayname;
+    }
+    public String getHits() {
+        return hits;
+    }
+    public void setHits(String hits) {
+        this.hits = hits;
+    }
+    public int getStatus() {
+        return status;
+    }
+    public void setStatus(int status) {
+        this.status = status;
+    }
+    
+}

+ 103 - 0
GabonTelMobicashMobileAppHelper/src/main/java/com/psi/gabontel/mobileapp/achatforfait/MobileMenuConfig.java

@@ -0,0 +1,103 @@
+package com.psi.gabontel.mobileapp.achatforfait;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+
+import org.json.simple.JSONArray;
+import org.json.simple.JSONObject;
+
+import com.psi.common.db.DataRow;
+import com.psi.common.db.DataRowCollection;
+import com.psi.common.db.DbWrapper;
+import com.psi.common.util.StringUtil;
+
+public class MobileMenuConfig {
+
+    private static final DbWrapper db = DbWrapper.getInstance();
+    private static HashMap<String,ArrayList<MenuPackages>> mobilepackages = new HashMap<String,ArrayList<MenuPackages>>();
+    
+    
+    static {        
+        DataRowCollection rows = db.QueryDataRows("SELECT * FROM TBLAIRBUNDLEMOBILECONFIG WHERE STATUS = 1 ORDER BY ID");
+        for(DataRow row : rows) {
+            
+            int id              = row.getInteger("ID");
+            String loc          = row.getString("LOCATION");
+            String nextloc      = row.getString("NEXTLOCATION");
+            String type         = row.getString("TYPE");
+            String packgroup    = row.getString("PACKAGEGROUP");
+            String displayname  = row.getString("DISPLAYNAME");
+            String hits         = row.getString("HITS");
+            
+            MenuPackages menupack = new MenuPackages();
+            
+            if(!mobilepackages.containsKey(loc)) {
+                mobilepackages.put(loc, new ArrayList<MenuPackages>());
+            }
+            
+            menupack.setId(id);
+            menupack.setNextloc(nextloc);
+            menupack.setType(type);
+            menupack.setPackgroup(packgroup);
+            menupack.setDisplayname(displayname);
+            menupack.setHits(hits);
+            
+            mobilepackages.get(loc).add(menupack);
+        }       
+        
+    }
+
+    @SuppressWarnings("unchecked")
+    public String getForfait(String location, String lang) {
+//        DataRowCollection rows = db.QueryDataRows("SELECT * FROM TBLAIRBUNDLEMOBILECONFIG WHERE LOCATION = ? AND STATUS = 1 ORDER BY ID", location);
+
+        JSONObject jsonresp = new JSONObject();
+        JSONArray jsonarray = new JSONArray();
+        
+        String type = StringUtil.nvl(mobilepackages.get(location).get(0).getType(), "");
+
+//        String type = StringUtil.nvl(rows.getFirst().getString("TYPE"), "");       
+
+        for(MenuPackages menu: mobilepackages.get(location)) {
+            JSONObject jsondata = new JSONObject();
+            
+            if(menu.getType().equals("menu")) {
+                jsondata.put("nextdisplay", menu.getNextloc());
+                jsondata.put("displayname", menu.getDisplayname());
+                jsondata.put("displayid", menu.getId());
+                jsonarray.add(jsondata);
+            } else if (menu.getType().equals("package")) {
+                jsonarray = getPackages(menu.getDisplayname(), menu.getHits(), menu.getPackgroup());
+
+            }
+            
+        }
+        
+        jsonresp.put("data", jsonarray);
+        jsonresp.put("type", type);
+        
+        return jsonresp.toJSONString();
+    }
+
+    @SuppressWarnings("unchecked")
+    public JSONArray getPackages(String displayname, String hits, String bundlename) {
+        DataRowCollection rowspack = db.QueryDataRows("SELECT * FROM TBLAIRBUNDLE WHERE BUNDLENAME = ? AND STATUS = 1 ORDER BY PRICEFR", bundlename);
+        JSONArray jsonarray = new JSONArray();
+        int id = 0;
+
+        for(DataRow row: rowspack) {
+            
+            id++;
+            JSONObject jsondata = new JSONObject();
+            jsondata.put("hits", hits);
+            jsondata.put("packageamount", row.getLong("PRICEFR")/100);
+            jsondata.put("packagekey", row.get("BUNDLENAME"));
+            jsondata.put("packagedesc", row.get("DESCRIPTION"));
+            jsondata.put("displayname", row.get("DISPLAYNAME"));
+            jsondata.put("displayid", id);
+            jsonarray.add(jsondata);
+        }
+        return jsonarray;
+    }
+
+}

+ 32 - 33
GabonTelMobicashMobileAppHelper/src/main/java/com/psi/gabontel/mobileapp/helper/EulaAndroidOTPGen.java

@@ -26,52 +26,51 @@ import com.psi.gabontel.mobileapp.thirdparty.helper.OTPHandler;
 @Remote(AppManagerFunction.class)
 public class EulaAndroidOTPGen  implements AppManagerFunction {
 	private static final Logger log = Logger.getLogger(EulaAndroidOTPGen.class);
-	
+
 	public String processTransaction(String refid, String msisdn, String message, Map<String, String> syntax) {
 		return manageTransaction(refid, msisdn, message, syntax).getMessage();
 	}
-	
-	
+
 	public AppMessage manageTransaction(String refid, String msisdn, String message, Map<String, String> syntax)  {
 		String key = SystemUtil.isNull(syntax.get("key"),"");
 		String token = SystemUtil.isNull(syntax.get("token"),"");
+		String hash = SystemUtil.isNull(syntax.get("hash"),"");
 		String handset =  SystemUtil.isNull(syntax.get("handset"), "");
 		String version = SystemUtil.isNull(syntax.get("version"),"");
 		String language = SystemUtil.isNull(syntax.get("language"),"");
 		int otpmessagecode = 272028;
 		McomSubscriber originator = null;
 		Message msg = Messanger.getMessage(MessageId.SYSTEM_BUSY, msisdn, "<refid>", refid);
-		try{
-		originator = McomSubscriber.getMcomSubscriber(msisdn, language);
-		Timestamp sysdate  = SystemInfo.getDb().QueryScalar("SELECT SYSDATE FROM DUAL", new Timestamp(new java.util.Date().getTime()));
-		
-		OTPHandler otp = new OTPHandler(originator.getMsisdn());
-		
-		otp.generateOTP(1,"FOR VALIDATION",token.toUpperCase(),version);
-		
-		if (!otp.isSuccess()) {
-			log.error("OTP Generation Failed for : "+originator.getMsisdn());
-    	  	return Messanger.getMessage(MessageId.SYSTEM_BUSY, originator);
-	      }
-		
-		String otpcode = otp.getOtp();
-		
-		if(!originator.getProperty("PLAINTYPE").equals("MCOM")) {
-		    otpmessagecode = 272029;
+		try {
+			originator = McomSubscriber.getMcomSubscriber(msisdn, language);
+			Timestamp sysdate  = SystemInfo.getDb().QueryScalar("SELECT SYSDATE FROM DUAL", new Timestamp(new java.util.Date().getTime()));
+
+			OTPHandler otp = new OTPHandler(originator.getMsisdn());
+
+			otp.generateOTP(1,"FOR VALIDATION",token.toUpperCase(),version);
+
+			if (!otp.isSuccess()) {
+				log.error("OTP Generation Failed for : "+originator.getMsisdn());
+				return Messanger.getMessage(MessageId.SYSTEM_BUSY, originator);
+			}
+
+			String otpcode = otp.getOtp();
+
+			if(!originator.getProperty("PLAINTYPE").equals("MCOM")) {
+				otpmessagecode = 272029;
+			}
+
+			Message otpmessage = Messanger.getMessage(otpmessagecode, originator);
+			otpmessage.replace("<otp>", otpcode, "<hash>", hash);
+
+			Messanger.sendMessage(refid, originator.getMsisdn(), otpmessage);
+
+			return otpmessage;
+
+		} catch(Exception e){
+			log.error("Android Eula Error",e);
+			return new Message(0,0,"FAILED:" + msg.getMessage().toString());
 		}
-		
-		Message otpmessage = Messanger.getMessage(otpmessagecode, originator);
-		otpmessage.replace("<otp>",otpcode);
-		
-		Messanger.sendMessage(refid, originator.getMsisdn(), otpmessage);
-		
-		return otpmessage;
-	
-		}catch(Exception e){
-		log.error("Android Eula Error",e);
-		return new Message(0,0,"FAILED:" + msg.getMessage().toString());
 	}
-}
-
 
 }

+ 1 - 2
GabonTelMobicashMobileAppHelper/src/main/java/com/psi/gabontel/mobileapp/helper/EulaAndroidTransaction.java

@@ -31,7 +31,6 @@ public class EulaAndroidTransaction  implements AppManagerFunction {
 		return manageTransaction(refid, msisdn, message, syntax).getMessage();
 	}
 	
-	
 	public AppMessage manageTransaction(String refid, String msisdn, String message, Map<String, String> syntax)  {
 		String key = SystemUtil.isNull(syntax.get("key"),"");
 		String token = SystemUtil.isNull(syntax.get("token"),"");
@@ -85,7 +84,7 @@ public class EulaAndroidTransaction  implements AppManagerFunction {
 				 ":" + msisdn + 
 				 ":" + originator.getProperty("FIRSTNAME") + 
 				 ":" + originator.getProperty("LASTNAME") + 
-				 ":" + Messanger.getMessage(MessageId.SUCCESS_REGISTER_MSISDN, originator).getMessage();
+				 ":" + Messanger.getMessage(MessageId.SUCCESS_REGISTER_MSISDN, originator).replace("<value>", msisdn).getMessage();
 		
 		return new Message(0, 0, strmsg);
 		}catch(Exception e){

+ 13 - 20
GabonTelMobicashMobileAppHelper/src/main/java/com/psi/gabontel/mobileapp/thirdparty/helper/InitializerBean.java

@@ -57,30 +57,23 @@ public class InitializerBean {
         String username = extraparam.getOrDefault("username", "");
         String password = extraparam.getOrDefault("password", "");
         password = DbQuery.dbDecrypt(password, name);
-        jndiProperties.put(Context.INITIAL_CONTEXT_FACTORY, WildFlyInitialContextFactory.class.getName());
+        jndiProperties.put(Context.INITIAL_CONTEXT_FACTORY, WildFlyInitialContextFactory.class.getName()); 
         jndiProperties.put(Context.PROVIDER_URL, url);
         jndiProperties.put(Context.SECURITY_PRINCIPAL, username);
         jndiProperties.put(Context.SECURITY_CREDENTIALS, password);
         userconfig = commonconfig.useName(username).usePassword(password);
     }
 
-    public static boolean containsKey(String key) {
-        return ussdgwmenuejb.containsKey(key);
-    }
-    
-    public static String callUssd(final String key, final String ... params) {
-        try {
-            final Properties prop = jndiProperties;
-            final String jndi = ussdgwmenuejb.get(key);
-            final AuthenticationContext auth = AuthenticationContext.empty().with(MatchRule.ALL, userconfig);
-            return auth.runCallable(new BeanCaller(prop,jndi,Arrays.asList(params)));
-        } catch (Exception e) {
-            log.error(key,e);
-            if(e.getClass().getSimpleName().equals("IllegalArgumentException")) {
-                return e.getMessage();
-            }
-            return "System busy. Please try again later.";
-        }
-        //return null;
-    }
+	public static Hashtable<String, String> getUssdgwmenuejb() {
+		return ussdgwmenuejb;
+	}
+
+	public static Properties getJndiproperties() {
+		return jndiProperties;
+	}
+
+	public static AuthenticationConfiguration getUserconfig() {
+		return userconfig;
+	}
+
 }

+ 84 - 30
GabonTelMobicashMobileAppHelper/src/main/java/com/psi/gabontel/mobileapp/thirdparty/helper/MobileAppThirdPartyHelper.java

@@ -1,15 +1,17 @@
 package com.psi.gabontel.mobileapp.thirdparty.helper;
 
 import java.nio.charset.StandardCharsets;
+import java.util.Arrays;
 import java.util.Map;
+import java.util.Properties;
 
-import javax.ejb.ApplicationException;
+import javax.ejb.EJBTransactionRolledbackException;
 import javax.ejb.Remote;
 import javax.ejb.Stateless;
 
 import org.jboss.logging.Logger;
-import org.json.JSONArray;
-import org.json.JSONObject;
+import org.wildfly.security.auth.client.AuthenticationContext;
+import org.wildfly.security.auth.client.MatchRule;
 
 import com.psi.applicationmanager.AppManagerFunction;
 import com.psi.applicationmanager.AppMessage;
@@ -19,13 +21,12 @@ import com.psi.common.transactions.MessageId;
 import com.psi.common.transactions.Messanger;
 import com.psi.common.transactions.TransactionHelper;
 import com.psi.common.util.StringUtil;
-import com.psi.common.util.SystemUtil;
 
 @Stateless
 @Remote(AppManagerFunction.class)
 public class MobileAppThirdPartyHelper implements AppManagerFunction {
 	private static final Logger log = Logger.getLogger(MobileAppThirdPartyHelper.class);
-
+	private int code = 0;
 
 	@Override
 	public String processTransaction(String refid, String msisdn, String message, Map<String, String> syntax) {
@@ -43,9 +44,11 @@ public class MobileAppThirdPartyHelper implements AppManagerFunction {
         McomSubscriber originator = null;
         boolean isfinal = false;
         String finalmessage = "System Busy.";
+        
         if(!StringUtil.isNullOrEmpty(password)) {
             isfinal = true;
         }
+        
         Message msg = Messanger.getMessage(MessageId.SYSTEM_BUSY, msisdn, "<refid>", refid);
 	    try {
 	        if(isfinal) {
@@ -56,24 +59,24 @@ public class MobileAppThirdPartyHelper implements AppManagerFunction {
 	                return new Message(99,0,msg.getMessage().toString());
 	            }
 	        }
-    		if(InitializerBean.containsKey(method)) {
+    		if(containsKey(method)) {
     		    String appmanresponse = "";
     		    String[] paramarr = mparam.split("\\|");
     		    
     		    if(method.equals("canalvalidcard")) {
-    		        String canalcheckcard = InitializerBean.callUssd("canalcheckcard", paramarr).toString();
-    		        String canalvalidcard = InitializerBean.callUssd("canalvalidcard", canalcheckcard).toString();
+    		        String canalcheckcard = callUssd("canalcheckcard", paramarr).toString();
+    		        String canalvalidcard = callUssd("canalvalidcard", canalcheckcard).toString();
     		        appmanresponse = canalvalidcard;
     		    }else if(method.equals("canalsetcard")) {
     		        String[] csetcardarr = mparam.replaceAll("_", " ").split("\\|");
-    		        appmanresponse = InitializerBean.callUssd(method, csetcardarr).toString();
+    		        appmanresponse = callUssd(method, csetcardarr).toString();
     		    }else if(method.equals("canalrenewamount")){
     		        String canalrenewamount = "";
-    		        String canalcheckcard = InitializerBean.callUssd("canalcheckcard", paramarr).toString();
-    		        String canalvalidcard = InitializerBean.callUssd("canalvalidcard", canalcheckcard).toString();
+    		        String canalcheckcard = callUssd("canalcheckcard", paramarr).toString();
+    		        String canalvalidcard = callUssd("canalvalidcard", canalcheckcard).toString();
     		        appmanresponse = canalvalidcard;
     		        if(canalvalidcard.equals("")) {
-    		            canalrenewamount = InitializerBean.callUssd("canalrenewamount", canalcheckcard).toString();
+    		            canalrenewamount = callUssd("canalrenewamount", canalcheckcard).toString();
     		            appmanresponse = canalrenewamount;
     		        }
     		    }else if(method.equals("canalappman")) {
@@ -81,61 +84,79 @@ public class MobileAppThirdPartyHelper implements AppManagerFunction {
     		        String[] canalappman = mparam.split("\\|");
     		        if(canalappman[0].equals("renew")) {
     		            String[] canalcheckcardparam = (canalappman[1] + "|1").split("\\|");
-    		            String canalcheckcard = InitializerBean.callUssd("canalcheckcard", canalcheckcardparam).toString();
+    		            String canalcheckcard = callUssd("canalcheckcard", canalcheckcardparam).toString();
     		            String[] canalappmanparam = (canalappman[0] + "|" + canalappman[1] +"|"+ canalcheckcard).split("\\|");
-    		            canalappmanglobal = InitializerBean.callUssd("canalappman", canalappmanparam).toString();
+    		            canalappmanglobal = callUssd("canalappman", canalappmanparam).toString();
     		        }
     		        appmanresponse = canalappmanglobal;
     		    }else if(method.equals("seegregisteradd")) {
                     String[] seegregisteraddparam = (mparam.toString() + "|" + "L' enregistrement de votre compteur a ete fait avec succes" ).split("\\|");
-                    appmanresponse =  InitializerBean.callUssd("seegregisteradd", seegregisteraddparam).toString();
+                    appmanresponse =  callUssd("seegregisteradd", seegregisteraddparam).toString();
                 }else if(method.equals("seeggetdisplay")) {
                     String[] seeggetdisplaydata = mparam.split("\\|");
                     String[] seeggetdisplayparam = (new String(StringUtil.base64Decode(seeggetdisplaydata[0]), StandardCharsets.UTF_8)).split("\\~");
-                    appmanresponse =  InitializerBean.callUssd("seeggetdisplay", seeggetdisplayparam).toString();
+                    appmanresponse =  callUssd("seeggetdisplay", seeggetdisplayparam).toString();
                 }else if(method.equals("seegregisteredit")) {
                     String[] seegregistereditdata = mparam.split("\\|");
                     String[] seegregistereditparam = (new String(StringUtil.base64Decode(seegregistereditdata[0]), StandardCharsets.UTF_8) + "~" + seegregistereditdata[1] + "~" + seegregistereditdata[2]+ "~" + seegregistereditdata[3] + "~" + seegregistereditdata[4] + "~" + seegregistereditdata[5] + "~" + seegregistereditdata[6] + "~" + "Numero de compteur modifie").split("\\~");
-                    appmanresponse = InitializerBean.callUssd("seegregisteredit", seegregistereditparam).toString();
+                    appmanresponse = callUssd("seegregisteredit", seegregistereditparam).toString();
                 }else if(method.equals("seegregisterdelete")) {
     		        String[] seegregisterdeletedata = mparam.split("\\|");
     		        String[] seegregisterdeleteparam = (new String(StringUtil.base64Decode(seegregisterdeletedata[0]), StandardCharsets.UTF_8) + "~" + seegregisterdeletedata[1] + "~" + seegregisterdeletedata[2]+ "~" + seegregisterdeletedata[3] + "~" + "Le compteur " + seegregisterdeletedata[4] + " a ete efface").split("\\~");
-    		        appmanresponse = InitializerBean.callUssd("seegregisterdelete", seegregisterdeleteparam).toString();
+    		        appmanresponse = callUssd("seegregisterdelete", seegregisterdeleteparam).toString();
     		    }else if(method.equals("seeginvoicesdisplay")) {
                     String[] seeginvoices = mparam.split("\\|");
-                    String seeginvoicesdata = InitializerBean.callUssd("seeginvoices", seeginvoices).toString();
+                    String seeginvoicesdata = callUssd("seeginvoices", seeginvoices).toString();
                     if(seeginvoicesdata.startsWith("Vous n'avez pas de facture a payer a la SEEG")) {
                         appmanresponse = seeginvoicesdata;
                     }else {
-                        appmanresponse = InitializerBean.callUssd("seeginvoicesdisplay", seeginvoicesdata).toString();
+                        appmanresponse = callUssd("seeginvoicesdisplay", seeginvoicesdata).toString();
                     }
                 }else if(method.equals("displayinvoices")) {
                     String[] postpaidinvoices = mparam.split("\\|");
-                    String postpaidinvoicesdata = InitializerBean.callUssd("postpaidinvoices", postpaidinvoices).toString();
+                    String postpaidinvoicesdata = callUssd("postpaidinvoices", postpaidinvoices).toString();
                     if(postpaidinvoicesdata.startsWith("-1")) {
                         appmanresponse = postpaidinvoicesdata;
                     }else {
-                        appmanresponse = InitializerBean.callUssd("displayinvoices", postpaidinvoicesdata).toString();
+                        appmanresponse = callUssd("displayinvoices", postpaidinvoicesdata).toString();
                     }
                 }else if(method.equals("ebillingobj")) {
                     String[] ebillingparam = (mparam + "|" + refid).split("\\|");
-                    appmanresponse = InitializerBean.callUssd("ebillingobj", ebillingparam).toString();
+                    appmanresponse = callUssd("ebillingobj", ebillingparam).toString();
                     if(!appmanresponse.startsWith("-1")) {
-                        String payee = InitializerBean.callUssd("ebillingpayee", appmanresponse).toString();
-                        String amount = InitializerBean.callUssd("ebillingamount", appmanresponse).toString();
-                        String description = InitializerBean.callUssd("ebillingdesc", appmanresponse).toString();
+                        String payee = callUssd("ebillingpayee", appmanresponse).toString();
+                        String amount = callUssd("ebillingamount", appmanresponse).toString();
+                        String description = callUssd("ebillingdesc", appmanresponse).toString();
                         appmanresponse = payee.toUpperCase() + "~" + amount + "~" + description.replaceAll("~", " ");
                     }
-                }else if(method.equals("ussd")) {
+                }
+                //newly added for total
+                else if(method.equals("sambagetdisplay")) {
+                    String[] sambagetdisplaydata = mparam.split("\\|");
+                    String[] sambagetdisplayparam = (new String(StringUtil.base64Decode(sambagetdisplaydata[0]), StandardCharsets.UTF_8)).split("\\~");
+                    appmanresponse =  callUssd("sambagetdisplay", sambagetdisplayparam).toString();
+                }
+    		    //newly added for Ecobank
+                else if(method.equals("ecobankgetaccount")) {
+                    String[] ecobankgetaccountdata = mparam.split("\\|");
+                    appmanresponse =  callUssd("ecobankgetaccount", ecobankgetaccountdata).toString();
+                }
+    		    //newly added for UBA
+                else if(method.equals("ubagetaccount")) {
+                    String[] ubagetaccountdata = mparam.split("\\|");
+                    appmanresponse =  callUssd("ubagetaccount", ubagetaccountdata).toString();
+                    log.info("APPMANRESPONSE: "+appmanresponse);
+                }
+                else if(method.equals("ussd")) {
                     if(isfinal) {
                         mparam = mparam + "*" + password + "#";
                     }
-                    appmanresponse = InitializerBean.callUssd(method, "mobicash", msisdn, mparam).toString();
+                    appmanresponse = callUssd(method, "mobicash", msisdn, mparam).toString();
                 }else {
-    		        appmanresponse = InitializerBean.callUssd(method, paramarr).toString();
+    		        appmanresponse = callUssd(method, paramarr).toString();
     		    }
     		    
-    		    response = StringUtil.base64Encode(new JsonResponse(0,appmanresponse).toString().getBytes());
+    		    response = StringUtil.base64Encode(new JsonResponse(code,appmanresponse).toString().getBytes());
     			finalmessage = respmessage + response;
     			if(isfinal) {
     			    finalmessage = appmanresponse;
@@ -151,4 +172,37 @@ public class MobileAppThirdPartyHelper implements AppManagerFunction {
 	    }
 	    return new Message(99,0,finalmessage);
 	}
+	
+	private static boolean containsKey(String key) {
+        return InitializerBean.getUssdgwmenuejb().containsKey(key);
+    }
+    
+    private String callUssd(final String key, final String ... params) {
+        String response = "";
+        try {
+            final Properties prop = InitializerBean.getJndiproperties();
+            final String jndi = InitializerBean.getUssdgwmenuejb().get(key);
+            final AuthenticationContext auth = AuthenticationContext.empty().with(MatchRule.ALL, InitializerBean.getUserconfig());
+            response = auth.runCallable(new BeanCaller(prop,jndi,Arrays.asList(params)));
+            
+        } 
+        catch (EJBTransactionRolledbackException ej) {
+            log.info("CATCHED EJBTransactionRolledbackException");
+        }
+        catch (Exception e) {
+            log.error(key,e);
+            response = "System busy. Please try again later.";
+            Throwable cause = e.getCause();
+            if(cause instanceof IllegalArgumentException) {
+            	if(cause.getMessage().contains("|")) {
+            		String ex[] = cause.getMessage().split("\\|");
+            		code = Integer.valueOf(ex[0]);
+            		response = ex[1];
+            	} else {
+            		response = cause.getMessage();
+            	}
+            }
+        }  
+        return response;
+    }
 }