Example usage for io.vertx.core.json JsonArray size

List of usage examples for io.vertx.core.json JsonArray size

Introduction

In this page you can find the example usage for io.vertx.core.json JsonArray size.

Prototype

public int size() 

Source Link

Document

Get the number of values in this JSON array

Usage

From source file:io.nonobot.core.handlers.GiphyHandler.java

License:Apache License

public void handle(Message msg) {
    String query = msg.matchedGroup(1);
    HttpClientRequest req = client.get(80, "api.giphy.com",
            "/v1/gifs/search?q=" + query + "&api_key=" + "dc6zaTOxFJmzC", resp -> {
                if (resp.statusCode() == 200 && resp.getHeader("Content-Type").equals("application/json")) {
                    System.out.println(resp.statusCode());
                    System.out.println(resp.statusMessage());
                    System.out.println(resp.getHeader("Content-Type"));
                    resp.exceptionHandler(err -> {
                        msg.reply("Error: " + err.getMessage());
                    });//from   ww w.  ja  v a  2  s  . c  o m
                    Buffer buf = Buffer.buffer();
                    resp.handler(buf::appendBuffer);
                    resp.endHandler(v -> {
                        JsonObject json = new JsonObject(buf.toString());
                        JsonArray images = json.getJsonArray("data");
                        if (images.size() > 0) {
                            JsonObject image = images.getJsonObject(0); // Should be random !!!
                            String url = image.getJsonObject("images").getJsonObject("original")
                                    .getString("url");
                            msg.reply(url);
                        }
                        msg.reply("got response " + json);
                    });
                } else {
                    msg.reply("Error");
                }
            });
    req.exceptionHandler(err -> {
        msg.reply("Error: " + err.getMessage());
    });
    req.end();
}

From source file:io.nonobot.core.handlers.GitHubVerticle.java

License:Apache License

@Override
public void start() throws Exception {
    super.start();
    Router router = Router.router(vertx);
    bot.webRouter().mountSubRouter("/github", router);
    router.post().handler(ctx -> {/*from  w  w  w .  ja  v  a  2  s  .  c o m*/
        HttpServerRequest req = ctx.request();
        String event = req.getHeader("X-Github-Event");
        if (!"push".equals(event)) {
            req.response().setStatusCode(400).end("X-Github-Event " + event + " not handled");
            return;
        }
        String contentType = req.getHeader("Content-Type");
        if (!"application/json".equals(contentType)) {
            req.response().setStatusCode(400).end("Content-Type " + contentType + " not handled");
            return;
        }
        req.bodyHandler(body -> {
            JsonObject json = body.toJsonObject();
            req.response().end();
            String chatId = req.getParam("chat");
            JsonArray commits = json.getJsonArray("commits");
            if (chatId != null && commits != null && commits.size() > 0) {
                String commitWord = commits.size() > 1 ? "commits" : "commit";
                bot.chatRouter().sendMessage(new SendOptions().setChatId(chatId),
                        "Got " + commits.size() + " new " + commitWord + " from "
                                + json.getJsonObject("pusher").getString("name") + " on "
                                + json.getJsonObject("repository").getString("full_name"));
                for (int index = 0; index < commits.size(); index++) {
                    JsonObject commit = commits.getJsonObject(index);
                    bot.chatRouter().sendMessage(new SendOptions().setChatId(chatId),
                            "  * " + commit.getString("message") + " " + commit.getString("url"));
                }
            }
        });
    });
}

From source file:io.sqp.proxy.vertx.VertxBackendConnectionPool.java

License:Open Source License

private void loadConfigurations(JsonArray backendConfs) throws ConfigurationException {
    // first validate the configuration object
    if (backendConfs == null || backendConfs.isEmpty()) {
        throw new ConfigurationException("No backend was configured.");
    }/*from  ww w  .ja va 2  s. c  o m*/
    if (backendConfs.size() > 1) {
        logger.log(Level.WARNING,
                "Only one backend configuration is supported at the moment. The rest is ignored.");
    }
    JsonObject firstConf = backendConfs.getJsonObject(0);
    if (firstConf == null) {
        throwInvalidConfiguration("It's not a valid JSON object.");
    }

    // Every backend needs a specific 'config' configuration map
    JsonObject backendSpecificConf = firstConf.getJsonObject("config");
    if (backendSpecificConf == null) {
        throwInvalidConfiguration("Backend specific configuration is missing.");
    }
    _backendSpecificConfiguration = backendSpecificConf.getMap();

    // The 'type' defines the subclass of BackendConnection that is the heart of the backend
    String backendType = firstConf.getString("type");
    if (backendType == null) {
        throwInvalidConfiguration("No type specified.");
    }
    // Get the class from the class loader and verify it's a subclass of BackendConnection
    Class<?> uncastedBackendClass = null;
    try {
        uncastedBackendClass = Class.forName(backendType);
    } catch (ClassNotFoundException e) {
        throwInvalidConfiguration("Class '" + backendType + "' specified as 'type' was not found.");
    }
    try {
        _backendClass = uncastedBackendClass.asSubclass(Backend.class);
    } catch (ClassCastException e) {
        throwInvalidConfiguration("Class '" + backendType + "' is not a valid Backend implementation.");
    }
}

From source file:org.bdlions.server.AuthServer.java

@Override
public void start() {

    HttpServer server = vertx.createHttpServer();

    Router router = Router.router(vertx);

    router.route("/").handler((RoutingContext routingContext) -> {
        HttpServerResponse response = routingContext.response();
        response.end("Authentication server");
    });/*from   w  w w.  j a v a  2 s .  c  o  m*/

    //adding a new sim with services
    router.route("/addsim*").handler(BodyHandler.create());
    router.post("/addsim").handler((RoutingContext routingContext) -> {
        ResultEvent resultEvent = new ResultEvent();
        //sim no
        String simNo = routingContext.request().getParam("sim_no");
        //web server identifier
        String identifier = routingContext.request().getParam("identifier");
        //description of the sim
        String description = routingContext.request().getParam("description");
        //status of the sim
        String statusStr = routingContext.request().getParam("status");
        //sim service list
        String simServiceList = routingContext.request().getParam("sim_service_list");
        int status = 0;
        try {
            status = Integer.parseInt(statusStr);
        } catch (Exception ex) {
            logger.error(ex.getMessage());
        }
        try {
            SIMManager simManager = new SIMManager();
            SIMInfo simInfo = new SIMInfo();
            simInfo.setSimNo(simNo);
            simInfo.setIdentifier(identifier);
            simInfo.setDescription(description);
            simInfo.setStatus(status);
            JsonArray simServiceArray = new JsonArray(simServiceList);
            for (int counter = 0; counter < simServiceArray.size(); counter++) {
                JsonObject simServiceObject = new JsonObject(simServiceArray.getValue(counter).toString());
                String serviceIdStr = simServiceObject.getString("serviceId");
                String categoryIdStr = simServiceObject.getString("categoryId");
                String currentBalanceStr = simServiceObject.getString("currentBalance");
                double currentBalance = 0;
                try {
                    currentBalance = Double.parseDouble(currentBalanceStr);
                } catch (Exception ex) {
                    logger.error(ex.getMessage());
                }
                SIMServiceInfo simServiceInfo = new SIMServiceInfo();
                simServiceInfo.setCurrentBalance(currentBalance);
                simServiceInfo.setId(Integer.parseInt(serviceIdStr));
                simServiceInfo.setCategoryId(Integer.parseInt(categoryIdStr));
                simInfo.getSimServiceList().add(simServiceInfo);
            }
            simManager.addSIM(simInfo);
            resultEvent.setResponseCode(simManager.getResponseCode());
            resultEvent.setResult(simInfo);
        } catch (Exception ex) {
            resultEvent.setResponseCode(ResponseCodes.ERROR_CODE_INVALID_AMOUNT);
            logger.error(ex.getMessage());
        }
        HttpServerResponse response = routingContext.response();
        response.end(resultEvent.toString());
    });

    //edit sim info
    router.route("/editsim*").handler(BodyHandler.create());
    router.post("/editsim").handler((RoutingContext routingContext) -> {
        ResultEvent resultEvent = new ResultEvent();
        //based on the identifier validate that given sim_no is valid for this identifier
        String simNo = routingContext.request().getParam("sim_no");
        String identifier = routingContext.request().getParam("identifier");
        String description = routingContext.request().getParam("description");
        String statusStr = routingContext.request().getParam("status");

        int status = 0;
        try {
            status = Integer.parseInt(statusStr);
        } catch (Exception ex) {
            logger.error(ex.getMessage());
        }
        try {
            SIMManager simManager = new SIMManager();
            SIMInfo simInfo = new SIMInfo();
            simInfo.setSimNo(simNo);
            simInfo.setIdentifier(identifier);
            simInfo.setDescription(description);
            simInfo.setStatus(status);
            simManager.updateSIMInfo(simInfo);
            resultEvent.setResponseCode(simManager.getResponseCode());
            resultEvent.setResult(simInfo);
        } catch (Exception ex) {
            resultEvent.setResponseCode(ResponseCodes.ERROR_CODE_SERVER_EXCEPTION);
            logger.error(ex.getMessage());
        }
        if (status == 0) {
            //stopping mqtt future client for this sim
            try {
                TransactionInfo transactionInfo = new TransactionInfo();
                transactionInfo.setServiceId(-1);
                transactionInfo.setCellNumber(simNo);
                BufferManager bufferManager = new BufferManager();
                bufferManager.setLocalServerIdentifier(identifier);
                bufferManager.processBuffer(transactionInfo, Transactions.BUFFER_PROCESS_TYPE_MQTT_STOP_SIM);
            } catch (Exception ex) {
                logger.debug(ex.toString());
            }

        }
        HttpServerResponse response = routingContext.response();
        response.end(resultEvent.toString());
    });

    //return sim with service details
    router.route("/getsimserviceinfo*").handler(BodyHandler.create());
    router.post("/getsimserviceinfo").handler((RoutingContext routingContext) -> {
        ResultEvent resultEvent = new ResultEvent();
        //sim no
        String simNo = routingContext.request().getParam("sim_no");
        try {
            SIMManager simManager = new SIMManager();
            SIMInfo simInfo = simManager.getSIMServiceInfo(simNo);
            if (simInfo != null) {
                resultEvent.setResponseCode(ResponseCodes.SUCCESS);
                resultEvent.setResult(simInfo);
            } else {
                resultEvent.setResponseCode(ResponseCodes.ERROR_CODE_INVALID_SIMNO);
            }
        } catch (Exception ex) {
            resultEvent.setResponseCode(ResponseCodes.ERROR_CODE_SERVER_EXCEPTION);
            logger.error(ex.getMessage());
        }
        HttpServerResponse response = routingContext.response();
        response.end(resultEvent.toString());
    });

    //return all sims
    router.route("/getallsims*").handler(BodyHandler.create());
    router.post("/getallsims").handler((RoutingContext routingContext) -> {
        ResultEvent resultEvent = new ResultEvent();
        //identifier of a webserver
        String identifier = routingContext.request().getParam("identifier");
        try {
            SIMManager simManager = new SIMManager();
            List<SIMInfo> simList = simManager.getAllSIMs(identifier);
            resultEvent.setResponseCode(ResponseCodes.SUCCESS);
            resultEvent.setResult(simList);

        } catch (Exception ex) {
            resultEvent.setResponseCode(ResponseCodes.ERROR_CODE_INVALID_IDENTIFIER);
            logger.error(ex.getMessage());
        }
        HttpServerResponse response = routingContext.response();
        response.end(resultEvent.toString());
    });

    router.route("/getallsimsservices*").handler(BodyHandler.create());
    router.post("/getallsims").handler((RoutingContext routingContext) -> {
        ResultEvent resultEvent = new ResultEvent();
        String identifier = routingContext.request().getParam("identifier");
        try {
            SIMManager simManager = new SIMManager();
            List<SIMInfo> simList = simManager.getAllSIMsServices(identifier);
            resultEvent.setResponseCode(ResponseCodes.SUCCESS);
            resultEvent.setResult(simList);

        } catch (Exception ex) {
            resultEvent.setResponseCode(ResponseCodes.ERROR_CODE_INVALID_IDENTIFIER);
            logger.error(ex.getMessage());
        }
        HttpServerResponse response = routingContext.response();
        response.end(resultEvent.toString());
    });

    router.route("/checksimbalance*").handler(BodyHandler.create());
    router.post("/checksimbalance").handler((RoutingContext routingContext) -> {
        ResultEvent resultEvent = new ResultEvent();
        String simNo = routingContext.request().getParam("sim_no");
        try {
            SIMManager simManager = new SIMManager();
            SIMInfo simInfo = simManager.getSIMServiceInfo(simNo);
            simManager.generateSIMBalance(simInfo);
            resultEvent.setResponseCode(ResponseCodes.SUCCESS);

        } catch (Exception ex) {
            resultEvent.setResponseCode(ResponseCodes.ERROR_CODE_INVALID_AMOUNT);
            logger.error(ex.getMessage());
        }
        HttpServerResponse response = routingContext.response();
        response.end(resultEvent.toString());
    });

    router.route("/getsimmessages*").handler(BodyHandler.create());
    router.post("/getsimmessages").handler((RoutingContext routingContext) -> {
        ResultEvent resultEvent = new ResultEvent();
        String simNo = routingContext.request().getParam("sim_no");
        String startTimeStr = routingContext.request().getParam("start_time");
        String endTimeStr = routingContext.request().getParam("end_time");
        String offsetStr = routingContext.request().getParam("offset");
        String limitStr = routingContext.request().getParam("limit");
        int startTime = 0;
        int endTime = 0;
        int offset = 0;
        int limit = 0;
        try {
            startTime = Integer.parseInt(startTimeStr);
            endTime = Integer.parseInt(endTimeStr);
            offset = Integer.parseInt(offsetStr);
            limit = Integer.parseInt(limitStr);
        } catch (Exception ex) {
            logger.error(ex.getMessage());
        }
        try {
            SIMSMSListInfo simSMSListInfo = new SIMSMSListInfo();
            SIMManager simManager = new SIMManager();
            //setting total messages of this sim
            simSMSListInfo.setCounter(simManager.getSIMTotalMessages(simNo, startTime, endTime));
            List<SIMSMSInfo> simSMSList;
            if (limit != 0) {
                simSMSList = simManager.getSIMMessages(simNo, startTime, endTime, offset, limit);
            } else {
                simSMSList = simManager.getAllSIMMessages(simNo, startTime, endTime);
            }
            //setting sim sms list
            simSMSListInfo.setSimSMSList(simSMSList);
            resultEvent.setResult(simSMSListInfo);
            resultEvent.setResponseCode(ResponseCodes.SUCCESS);
        } catch (Exception ex) {
            resultEvent.setResponseCode(ResponseCodes.ERROR_CODE_INVALID_AMOUNT);
            logger.error(ex.getMessage());
        }
        HttpServerResponse response = routingContext.response();
        response.end(resultEvent.toString());
    });

    router.route("/registersubscriber*").handler(BodyHandler.create());
    router.post("/registersubscriber").handler((RoutingContext routingContext) -> {
        ResultEvent resultEvent = new ResultEvent();
        try {
            Database db = Database.getInstance();
            Connection connection = db.getConnection();
            if (connection == null) {
                resultEvent.setResponseCode(ResponseCodes.ERROR_CODE_DB_SETUP_EXCEPTION);
                logger.info("Db connection not set.");
            } else {
                String userName = routingContext.request().getParam("username");
                String maxMembers = routingContext.request().getParam("maxmembers");
                String APIKey = routingContext.request().getParam("apikey");

                try {
                    UserInfo userInfo = new UserInfo();
                    userInfo.setReferenceUserName(userName);
                    userInfo.setMaxMembers(Integer.parseInt(maxMembers));
                    userInfo.setRegistrationDate(1449141369);
                    //right now we are setting a default expired time
                    userInfo.setExpiredDate(2140000000);
                    //right now are not restricting/validating ip address
                    userInfo.setIpAddress("192.168.1.30");

                    UserServiceInfo userServiceInfo = new UserServiceInfo();
                    userServiceInfo.setServiceId(Services.SERVICE_TYPE_ID_BKASH_CASHIN);
                    userServiceInfo.setAPIKey(APIKey);
                    userServiceInfo.setRegistrationDate(1449141369);
                    userServiceInfo.setExpiredDate(2140000000);
                    //right now we have not implement call back function
                    userServiceInfo.setCallbackFunction("callback30");
                    List<UserServiceInfo> userServiceInfoList = new ArrayList<>();
                    userServiceInfoList.add(userServiceInfo);

                    AuthManager authManager = new AuthManager();
                    authManager.createSubscriber(userInfo, userServiceInfoList);
                    int responseCode = authManager.getResponseCode();
                    resultEvent.setResponseCode(responseCode);
                } catch (Exception ex) {
                    resultEvent.setResponseCode(ResponseCodes.ERROR_CODE_INVALID_MEMBER_COUNTER);
                    logger.error(ex.getMessage());
                }
            }
        } catch (DBSetupException | SQLException ex) {
            resultEvent.setResponseCode(ResponseCodes.ERROR_CODE_DB_SETUP_EXCEPTION);
            logger.error(ex.getMessage());
        }
        HttpServerResponse response = routingContext.response();
        response.end(resultEvent.toString());
    });

    router.route("/getsubscriberinfo*").handler(BodyHandler.create());
    router.post("/getsubscriberinfo").handler((RoutingContext routingContext) -> {
        ResultEvent resultEvent = new ResultEvent();
        try {
            Database db = Database.getInstance();
            Connection connection = db.getConnection();
            if (connection == null) {
                resultEvent.setResponseCode(ResponseCodes.ERROR_CODE_DB_SETUP_EXCEPTION);
                logger.info("Db connection not set.");
            } else {
                String userName = routingContext.request().getParam("username");
                try {
                    UserInfo userInfo = new UserInfo();
                    userInfo.setSubscriberReferenceUserName(userName);

                    AuthManager authManager = new AuthManager();
                    userInfo = authManager.getSubscriberInfo(userInfo);
                    int responseCode = authManager.getResponseCode();
                    resultEvent.setResponseCode(responseCode);
                    if (responseCode == ResponseCodes.SUCCESS) {
                        resultEvent.setResult(userInfo);
                    }
                } catch (Exception ex) {
                    resultEvent.setResponseCode(ResponseCodes.ERROR_CODE_INVALID_MEMBER_COUNTER);
                    logger.error(ex.getMessage());
                }
            }
        } catch (DBSetupException | SQLException ex) {
            resultEvent.setResponseCode(ResponseCodes.ERROR_CODE_DB_SETUP_EXCEPTION);
            logger.error(ex.getMessage());
        }
        HttpServerResponse response = routingContext.response();
        response.end(resultEvent.toString());
    });

    router.route("/registermember*").handler(BodyHandler.create());
    router.post("/registermember").handler((RoutingContext routingContext) -> {
        ResultEvent resultEvent = new ResultEvent();
        String userName = routingContext.request().getParam("username");
        String subscriberName = routingContext.request().getParam("subscribername");

        UserInfo userInfo = new UserInfo();
        userInfo.setReferenceUserName(userName);
        userInfo.setSubscriberReferenceUserName(subscriberName);
        //right now are not restricting/validating ip address
        userInfo.setIpAddress("192.168.1.30");

        try {
            AuthManager authManager = new AuthManager();
            authManager.createUser(userInfo);
            int responseCode = authManager.getResponseCode();
            resultEvent.setResponseCode(responseCode);
        } catch (UnRegisterIPException ex) {
            //Right now we are skipping ipaddress validation
        } catch (SubscriptionExpireException ex) {
            resultEvent.setResponseCode(ResponseCodes.ERROR_CODE_SUBSCRIPTION_PERIOD_EXPIRED);
            logger.error(ex.getMessage());
        } catch (MaxMemberRegException ex) {
            resultEvent.setResponseCode(ResponseCodes.ERROR_CODE_MAXINUM_MEMBERS_CREATION_REACHED);
            logger.error(ex.getMessage());
        }
        HttpServerResponse response = routingContext.response();
        response.end(resultEvent.toString());
    });

    router.route("/getsessioninfo").handler((RoutingContext routingContext) -> {
        String result = "";
        UserInfo userInfo = new UserInfo();
        userInfo.setReferenceUserName("ru31");
        userInfo.setIpAddress("192.168.1.30");

        try {
            AuthManager authManager = new AuthManager();
            result = authManager.getSessionInfo(userInfo, "64hedl981o0suvld9r79kklta2");
        } catch (SubscriptionExpireException | ServiceExpireException ex) {

        }
        HttpServerResponse response = routingContext.response();
        response.end(result);
    });

    router.route("/addsubscriberpayment*").handler(BodyHandler.create());
    router.post("/addsubscriberpayment").handler((RoutingContext routingContext) -> {
        ResultEvent resultEvent = new ResultEvent();
        String APIKey = routingContext.request().getParam("APIKey");
        String amount = routingContext.request().getParam("amount");

        TransactionInfo transactionInfo = new TransactionInfo();
        transactionInfo.setAPIKey(APIKey);
        try {
            transactionInfo.setBalanceIn(Long.parseLong(amount));

            TransactionManager transactionManager = new TransactionManager();
            transactionManager.addUserPayment(transactionInfo);
            int responseCode = transactionManager.getResponseCode();
            resultEvent.setResponseCode(responseCode);
            if (responseCode == ResponseCodes.SUCCESS) {
                transactionInfo.setTransactionId(transactionManager.getTransactionId());
                resultEvent.setResult(transactionInfo);
            }
        } catch (Exception ex) {
            resultEvent.setResponseCode(ResponseCodes.ERROR_CODE_INVALID_AMOUNT);
            logger.error(ex.getMessage());
        }
        HttpServerResponse response = routingContext.response();
        response.end(resultEvent.toString());
    });

    router.route("/getdeshboardinfolist*").handler(BodyHandler.create());
    router.post("/getdeshboardinfolist").handler((RoutingContext routingContext) -> {
        JSONObject resultInfos = new JSONObject();
        ResultEvent resultEvent = new ResultEvent();
        String startUnixTime = routingContext.request().getParam("start_time");
        String endUnixTime = routingContext.request().getParam("end_time");
        try {
            //generate summary info
            JSONObject summaryInfo = new JSONObject();
            summaryInfo.put("total_amount", 600000);
            summaryInfo.put("total_profit", 50000);
            summaryInfo.put("total_subscriber", 50);

            //generate survice rank list by volumn
            // return service rank list by acending order by volumn
            JSONObject serviceRankInfoByVolumn1 = new JSONObject();
            serviceRankInfoByVolumn1.put("service_id", "101");
            serviceRankInfoByVolumn1.put("total_amount", 30000);
            serviceRankInfoByVolumn1.put("total_profit", 5000);
            JSONObject serviceRankInfoByVolumn2 = new JSONObject();
            serviceRankInfoByVolumn2.put("service_id", "1");
            serviceRankInfoByVolumn2.put("total_amount", 20000);
            serviceRankInfoByVolumn2.put("total_profit", 1000);
            JSONObject serviceRankInfoByVolumn3 = new JSONObject();
            serviceRankInfoByVolumn3.put("service_id", "3");
            serviceRankInfoByVolumn3.put("total_amount", 10000);
            serviceRankInfoByVolumn3.put("total_profit", 500);

            List<JSONObject> serviceRankByVolumnList = new ArrayList<>();
            serviceRankByVolumnList.add(serviceRankInfoByVolumn1);
            serviceRankByVolumnList.add(serviceRankInfoByVolumn2);
            serviceRankByVolumnList.add(serviceRankInfoByVolumn3);

            //generate survice profit rank list by volumn
            JSONObject serviceProfitRank1 = new JSONObject();
            serviceProfitRank1.put("service_id", "101");
            serviceProfitRank1.put("service_percentage", "30");
            JSONObject serviceProfitRank2 = new JSONObject();
            serviceProfitRank2.put("service_id", "1");
            serviceProfitRank2.put("service_percentage", "10");
            JSONObject serviceProfitRank3 = new JSONObject();
            serviceProfitRank3.put("service_id", "2");
            serviceProfitRank3.put("service_percentage", "10");
            JSONObject serviceProfitRank4 = new JSONObject();
            serviceProfitRank4.put("service_id", "3");
            serviceProfitRank4.put("service_percentage", "15");
            JSONObject serviceProfitRank5 = new JSONObject();
            serviceProfitRank5.put("service_id", "4");
            serviceProfitRank5.put("service_percentage", "10");
            JSONObject serviceProfitRank6 = new JSONObject();
            serviceProfitRank6.put("service_id", "102");
            serviceProfitRank6.put("service_percentage", "15");
            JSONObject serviceProfitRank7 = new JSONObject();
            serviceProfitRank7.put("service_id", "103");
            serviceProfitRank7.put("service_percentage", "1");

            List<JSONObject> serviceProfitRankList = new ArrayList<>();
            serviceProfitRankList.add(serviceProfitRank1);
            serviceProfitRankList.add(serviceProfitRank2);
            serviceProfitRankList.add(serviceProfitRank3);
            serviceProfitRankList.add(serviceProfitRank4);
            serviceProfitRankList.add(serviceProfitRank5);
            serviceProfitRankList.add(serviceProfitRank6);
            serviceProfitRankList.add(serviceProfitRank7);

            //generate Top customer rank list by volumn
            JSONObject customerInfo1 = new JSONObject();
            customerInfo1.put("user_name", "Nazmul Hasan");
            customerInfo1.put("amount_percentage", "50");
            JSONObject customerInfo2 = new JSONObject();
            customerInfo2.put("user_name", "Alamgir Kabir");
            customerInfo2.put("amount_percentage", "30");
            JSONObject customerInfo3 = new JSONObject();
            customerInfo3.put("user_name", "Rashida Sultana");
            customerInfo3.put("amount_percentage", "20");

            List<JSONObject> topCustomerList = new ArrayList<>();
            topCustomerList.add(customerInfo1);
            topCustomerList.add(customerInfo2);
            topCustomerList.add(customerInfo3);

            resultInfos.put("summaryInfo", summaryInfo);
            resultInfos.put("serviceRankByVolumnList", serviceRankByVolumnList);
            resultInfos.put("topCustomerList", topCustomerList);
            resultInfos.put("serviceProfitRankList", serviceProfitRankList);
            resultEvent.setResponseCode(ResponseCodes.SUCCESS);
            resultEvent.setResult(resultInfos);

        } catch (Exception ex) {
            resultEvent.setResponseCode(ResponseCodes.ERROR_CODE_INVALID_AMOUNT);
            logger.error(ex.getMessage());
        }
        HttpServerResponse response = routingContext.response();
        response.end(resultInfos.toString());
    });

    router.route("/getServiceRanklistByVolumn*").handler(BodyHandler.create());
    router.post("/getServiceRanklistByVolumn").handler((RoutingContext routingContext) -> {
        ResultEvent resultEvent = new ResultEvent();
        List<JSONObject> serviceRankByVolumnList = new ArrayList<>();
        String startDate = routingContext.request().getParam("start_date");
        String endDate = routingContext.request().getParam("end_date");
        try {

            //generate survice rank list by volumn
            // return service rank list by acending order by volumn
            JSONObject serviceRankInfoByVolumn1 = new JSONObject();
            serviceRankInfoByVolumn1.put("service_id", "102");
            serviceRankInfoByVolumn1.put("total_amount", 7000);
            serviceRankInfoByVolumn1.put("total_profit", 100);
            JSONObject serviceRankInfoByVolumn2 = new JSONObject();
            serviceRankInfoByVolumn2.put("service_id", "1");
            serviceRankInfoByVolumn2.put("total_amount", 2000);
            serviceRankInfoByVolumn2.put("total_profit", 2000);
            JSONObject serviceRankInfoByVolumn3 = new JSONObject();
            serviceRankInfoByVolumn3.put("service_id", "2");
            serviceRankInfoByVolumn3.put("total_amount", 30000);
            serviceRankInfoByVolumn3.put("total_profit", 500);

            //                List<JSONObject> serviceRankByVolumnList = new ArrayList<>();
            serviceRankByVolumnList.add(serviceRankInfoByVolumn1);
            serviceRankByVolumnList.add(serviceRankInfoByVolumn2);
            serviceRankByVolumnList.add(serviceRankInfoByVolumn3);
            resultEvent.setResponseCode(ResponseCodes.SUCCESS);
            resultEvent.setResult(serviceRankByVolumnList);

        } catch (Exception ex) {
            resultEvent.setResponseCode(ResponseCodes.ERROR_CODE_INVALID_AMOUNT);
            logger.error(ex.getMessage());
        }
        HttpServerResponse response = routingContext.response();
        response.end(serviceRankByVolumnList.toString());
    });
    router.route("/getCustomerList*").handler(BodyHandler.create());
    router.post("/getCustomerList").handler((RoutingContext routingContext) -> {
        ResultEvent resultEvent = new ResultEvent();
        List<JSONObject> topCustomerList = new ArrayList<>();
        String startDate = routingContext.request().getParam("start_date");
        String endDate = routingContext.request().getParam("end_date");
        String serviceId = routingContext.request().getParam("service_id");
        try {

            //generate Top customer rank list by volumn
            JSONObject customerInfo1 = new JSONObject();
            customerInfo1.put("user_name", "Rashida sultana");
            customerInfo1.put("amount_percentage", "60");
            JSONObject customerInfo2 = new JSONObject();
            customerInfo2.put("user_name", "Alamgir Kabir");
            customerInfo2.put("amount_percentage", "30");
            JSONObject customerInfo3 = new JSONObject();
            customerInfo3.put("user_name", "Nazmul Hasan");
            customerInfo3.put("amount_percentage", "20");

            //                List<JSONObject> topCustomerList = new ArrayList<>();
            topCustomerList.add(customerInfo1);
            topCustomerList.add(customerInfo2);
            topCustomerList.add(customerInfo3);
            resultEvent.setResponseCode(ResponseCodes.SUCCESS);
            resultEvent.setResult(topCustomerList);

        } catch (Exception ex) {
            resultEvent.setResponseCode(ResponseCodes.ERROR_CODE_INVALID_AMOUNT);
            logger.error(ex.getMessage());
        }
        HttpServerResponse response = routingContext.response();
        response.end(topCustomerList.toString());
    });

    router.route("/getbaseurl*").handler(BodyHandler.create());
    router.post("/getbaseurl").handler((RoutingContext routingContext) -> {
        ResultEvent resultEvent = new ResultEvent();
        String opCode = routingContext.request().getParam("code");
        try {
            AuthManager authManager = new AuthManager();
            String baseURL = authManager.getBaseURLOPCode(opCode);
            if (baseURL != null && !baseURL.equals("")) {
                resultEvent.setResponseCode(ResponseCodes.SUCCESS);
                resultEvent.setResult(baseURL);
            } else {
                resultEvent.setResponseCode(ResponseCodes.ERROR_CODE_INVALID_OP_CODE);
                logger.error("baseURL request for invalid op code : " + opCode);
            }
        } catch (Exception ex) {
            resultEvent.setResponseCode(ResponseCodes.ERROR_CODE_SERVER_EXCEPTION);
            logger.error(ex.getMessage());
        }
        HttpServerResponse response = routingContext.response();
        response.end(resultEvent.toString());
    });

    router.route("/getServiceProfitList*").handler(BodyHandler.create());
    router.post("/getServiceProfitList").handler((RoutingContext routingContext) -> {
        ResultEvent resultEvent = new ResultEvent();
        List<JSONObject> serviceProfitRankList = new ArrayList<>();
        String startDate = routingContext.request().getParam("start_date");
        String endDate = routingContext.request().getParam("end_date");
        try {

            JSONObject serviceProfitRank1 = new JSONObject();
            serviceProfitRank1.put("service_id", "101");
            serviceProfitRank1.put("service_percentage", "20");
            JSONObject serviceProfitRank2 = new JSONObject();
            serviceProfitRank2.put("service_id", "1");
            serviceProfitRank2.put("service_percentage", "20");
            JSONObject serviceProfitRank3 = new JSONObject();
            serviceProfitRank3.put("service_id", "2");
            serviceProfitRank3.put("service_percentage", "10");
            JSONObject serviceProfitRank4 = new JSONObject();
            serviceProfitRank4.put("service_id", "3");
            serviceProfitRank4.put("service_percentage", "15");
            JSONObject serviceProfitRank5 = new JSONObject();
            serviceProfitRank5.put("service_id", "4");
            serviceProfitRank5.put("service_percentage", "5");
            JSONObject serviceProfitRank6 = new JSONObject();
            serviceProfitRank6.put("service_id", "102");
            serviceProfitRank6.put("service_percentage", "15");
            JSONObject serviceProfitRank7 = new JSONObject();
            serviceProfitRank7.put("service_id", "103");
            serviceProfitRank7.put("service_percentage", "10");

            serviceProfitRankList.add(serviceProfitRank1);
            serviceProfitRankList.add(serviceProfitRank2);
            serviceProfitRankList.add(serviceProfitRank3);
            serviceProfitRankList.add(serviceProfitRank4);
            serviceProfitRankList.add(serviceProfitRank5);
            serviceProfitRankList.add(serviceProfitRank6);
            serviceProfitRankList.add(serviceProfitRank7);
            resultEvent.setResponseCode(ResponseCodes.SUCCESS);
            resultEvent.setResult(serviceProfitRankList);

        } catch (Exception ex) {
            resultEvent.setResponseCode(ResponseCodes.ERROR_CODE_INVALID_AMOUNT);
            logger.error(ex.getMessage());
        }
        HttpServerResponse response = routingContext.response();
        response.end(serviceProfitRankList.toString());
    });
    server.requestHandler(router::accept).listen(4040);
}

From source file:org.bdlions.server.ServiceAPIServer.java

@Override
public void start() {
    HttpServer server = vertx.createHttpServer();
    Router router = Router.router(vertx);

    router.route("/").handler((RoutingContext routingContext) -> {
        HttpServerResponse response = routingContext.response();
        response.end("ServiceAPI server");
    });//from w  w  w  . j  av a 2 s .  c  om

    //router.route("/addtransaction").handler((RoutingContext routingContext) -> {
    router.route("/addtransaction*").handler(BodyHandler.create());
    router.post("/addtransaction").handler((RoutingContext routingContext) -> {
        HttpServerResponse response = routingContext.response();
        ResultEvent resultEvent = new ResultEvent();
        String userId = "";
        String sessionId = "";
        //validate userId and sessionId from the hashmap

        String APIKey = routingContext.request().getParam("APIKey");
        String amount = routingContext.request().getParam("amount");
        String cellNumber = routingContext.request().getParam("cell_no");
        String packageId = routingContext.request().getParam("package_id");
        String description = routingContext.request().getParam("description");
        String liveTestFlag = routingContext.request().getParam("livetestflag");
        TransactionInfo transactionInfo = new TransactionInfo();
        transactionInfo.setAPIKey(APIKey);
        transactionInfo.setCellNumber(cellNumber);
        transactionInfo.setDescription(description);
        transactionInfo.setLiveTestFlag(liveTestFlag);
        transactionInfo.setEditable(Boolean.TRUE);
        try {
            transactionInfo.setPackageId(Integer.parseInt(packageId));
        } catch (Exception ex) {
            resultEvent.setResponseCode(ResponseCodes.ERROR_CODE_INVALID_OPERATOR_PACKAGE_ID);
            logger.error(ex.getMessage());
            response.end(resultEvent.toString());
            return;
        }
        try {
            transactionInfo.setBalanceOut(Double.parseDouble(amount));
        } catch (Exception ex) {
            resultEvent.setResponseCode(ResponseCodes.ERROR_CODE_INVALID_AMOUNT);
            logger.error(ex.getMessage());
            response.end(resultEvent.toString());
            return;
        }

        //for web server test transaction we are returning back from here
        if (transactionInfo.getLiveTestFlag().equals(Transactions.TRANSACTION_FLAG_WEBSERVER_TEST)) {
            resultEvent.setResponseCode(ResponseCodes.SUCCESS);
            transactionInfo.setTransactionId(Utils.getTransactionId());
            resultEvent.setResult(transactionInfo);
            response.end(resultEvent.toString());
            return;
        }

        BufferManager bufferManager = new BufferManager();
        bufferManager.processBuffer(transactionInfo, Transactions.BUFFER_PROCESS_TYPE_ADD_TRANSACTION);
        int responseCode = bufferManager.getTransactionManager().getResponseCode();

        resultEvent.setResponseCode(responseCode);
        if (responseCode == ResponseCodes.SUCCESS) {
            transactionInfo.setTransactionId(bufferManager.getTransactionManager().getTransactionId());
            resultEvent.setResult(transactionInfo);
        }
        response.end(resultEvent.toString());
    });

    router.route("/addmultipletransactions*").handler(BodyHandler.create());
    router.post("/addmultipletransactions").handler((RoutingContext routingContext) -> {
        ResultEvent resultEvent = new ResultEvent();
        HttpServerResponse response = routingContext.response();
        List<TransactionInfo> transactionInfoList = new ArrayList<>();
        String transactionList = routingContext.request().getParam("transction_list");
        String liveTestFlag = routingContext.request().getParam("livetestflag");
        JsonArray transactionArray = new JsonArray(transactionList);
        BufferManager bufferManager = new BufferManager();
        for (int counter = 0; counter < transactionArray.size(); counter++) {
            JsonObject jsonObject = new JsonObject(transactionArray.getValue(counter).toString());
            String id = jsonObject.getString("id");
            String cellNo = jsonObject.getString("cell_no");
            String APIKey = jsonObject.getString("APIKey");
            String packageId = jsonObject.getString("operator_type_id");
            String amount = jsonObject.getString("amount");

            TransactionInfo transactionInfo = new TransactionInfo();
            transactionInfo.setEditable(Boolean.TRUE);
            transactionInfo.setAPIKey(APIKey);
            try {
                transactionInfo.setPackageId(Integer.parseInt(packageId));
            } catch (Exception ex) {
                resultEvent.setResponseCode(ResponseCodes.ERROR_CODE_INVALID_OPERATOR_PACKAGE_ID);
                logger.error(ex.getMessage());
                response.end(resultEvent.toString());
                return;
            }
            try {
                transactionInfo.setBalanceOut(Double.parseDouble(amount));
            } catch (Exception ex) {
                resultEvent.setResponseCode(ResponseCodes.ERROR_CODE_INVALID_AMOUNT);
                logger.error(ex.getMessage());
                response.end(resultEvent.toString());
                return;
            }
            transactionInfo.setLiveTestFlag(liveTestFlag);
            transactionInfo.setCellNumber(cellNo);
            transactionInfo.setReferenceId(id);
            //for web server test transaction we are returning back from here
            if (transactionInfo.getLiveTestFlag().equals(Transactions.TRANSACTION_FLAG_WEBSERVER_TEST)) {
                transactionInfo.setTransactionId(Utils.getTransactionId());
            } else {
                //transactionInfo.setTransactionId(Utils.getTransactionId());                
                //UserServiceInfo userServiceInfo = transactionManager.getUserServiceInfo(APIKey);
                //transactionInfo.setServiceId(userServiceInfo.getServiceId());
                //transactionManager.addTransaction(transactionInfo);
                bufferManager.processBuffer(transactionInfo, Transactions.BUFFER_PROCESS_TYPE_ADD_TRANSACTION);
                int responseCode = bufferManager.getTransactionManager().getResponseCode();
                if (responseCode == ResponseCodes.SUCCESS) {
                    transactionInfo.setTransactionId(bufferManager.getTransactionManager().getTransactionId());
                }
                //what will you do if response code is not success?                    
            }
            transactionInfoList.add(transactionInfo);
        }
        resultEvent.setResult(transactionInfoList);
        resultEvent.setResponseCode(ResponseCodes.SUCCESS);

        response.end(resultEvent.toString());
    });

    router.route("/updatetransactioninfo*").handler(BodyHandler.create());
    router.post("/updatetransactioninfo").handler((RoutingContext routingContext) -> {
        HttpServerResponse response = routingContext.response();
        ResultEvent resultEvent = new ResultEvent();
        String transactionId = routingContext.request().getParam("transaction_id");
        String amount = routingContext.request().getParam("amount");
        String cellNumber = routingContext.request().getParam("cell_no");
        TransactionInfo transactionInfo = new TransactionInfo();
        transactionInfo.setTransactionId(transactionId);
        transactionInfo.setCellNumber(cellNumber);
        transactionInfo.setEditable(Boolean.TRUE);
        try {
            transactionInfo.setBalanceOut(Double.parseDouble(amount));
        } catch (Exception ex) {
            resultEvent.setResponseCode(ResponseCodes.ERROR_CODE_INVALID_AMOUNT);
            logger.error(ex.getMessage());
            response.end(resultEvent.toString());
            return;
        }

        BufferManager bufferManager = new BufferManager();
        bufferManager.processBuffer(transactionInfo, Transactions.BUFFER_PROCESS_TYPE_UPDATE_TRANSACTION);
        int responseCode = bufferManager.getTransactionManager().getResponseCode();
        resultEvent.setResponseCode(responseCode);
        if (responseCode == ResponseCodes.SUCCESS) {
            resultEvent.setResult(transactionInfo);
        }
        response.end(resultEvent.toString());
    });

    //updating transaction acknowledge status from local server
    router.route("/transactionstatusack*").handler(BodyHandler.create());
    router.post("/transactionstatusack").handler((RoutingContext routingContext) -> {
        ResultEvent resultEvent = new ResultEvent();
        //our system transaction id
        String transactionId = routingContext.request().getParam("transactionid");
        //transaction status id
        String statusIdStr = routingContext.request().getParam("statusid");
        System.out.println("Updating transaction status ack ----------------transactionId:" + transactionId
                + ",statusIdStr:" + statusIdStr);
        int statusId = 0;
        try {
            statusId = Integer.parseInt(statusIdStr);
        } catch (Exception ex) {
            logger.error(ex.getMessage());
        }
        //updating transaction status acknowledgement
        try {
            TransactionInfo transactionInfo = new TransactionInfo();
            transactionInfo.setTransactionId(transactionId);
            transactionInfo.setTransactionStatusId(statusId);

            TransactionManager transactionManager = new TransactionManager();
            transactionManager.updateTransactionStatusAck(transactionInfo);

            int responseCode = transactionManager.getResponseCode();
            resultEvent.setResponseCode(responseCode);
        } catch (Exception ex) {
            resultEvent.setResponseCode(ResponseCodes.ERROR_CODE_UPDATE_TRANSACTION_STATUS_ACK_FAILED);
            logger.error(ex.getMessage());
        }
        HttpServerResponse response = routingContext.response();
        response.end(resultEvent.toString());
    });

    //updating transaction status with other parameters for ussd call at local server
    router.route("/updatetransactionstatus*").handler(BodyHandler.create());
    router.post("/updatetransactionstatus").handler((RoutingContext routingContext) -> {
        ResultEvent resultEvent = new ResultEvent();
        //our system transaction id
        String transactionId = routingContext.request().getParam("transactionid");
        //transaction status id
        String statusIdStr = routingContext.request().getParam("statusid");
        // transaction id from operator
        String trxIdOperator = routingContext.request().getParam("trxidoperator");
        //sender cell number
        String senderCellNumber = routingContext.request().getParam("sendercellnumber");
        //sim service id of sender
        String serviceIdStr = routingContext.request().getParam("serviceid");
        //current balance of sender
        String balanceStr = routingContext.request().getParam("balance");

        System.out.println("Updating transaction status----------------transactionId:" + transactionId
                + ",statusIdStr:" + statusIdStr + ",trxIdOperator:" + trxIdOperator + ",senderCellNumber:"
                + senderCellNumber + ",serviceIdStr:" + serviceIdStr + ",balanceStr:" + balanceStr);

        int statusId = 0;
        try {
            statusId = Integer.parseInt(statusIdStr);
        } catch (Exception ex) {
            logger.error(ex.getMessage());
        }
        double balance = 0;
        try {
            balance = Double.parseDouble(balanceStr);
        } catch (Exception ex) {
            logger.error(ex.getMessage());
        }

        int serviceId = 0;
        try {
            serviceId = Integer.parseInt(serviceIdStr);
        } catch (Exception ex) {
            logger.error(ex.getMessage());
        }
        //updating transaction status with sender cell number and operator transaction id
        try {
            TransactionInfo transactionInfo = new TransactionInfo();
            transactionInfo.setTransactionId(transactionId);
            transactionInfo.setTransactionStatusId(statusId);
            transactionInfo.setSenderCellNumber(senderCellNumber);
            transactionInfo.setTrxIdOperator(trxIdOperator);

            TransactionManager transactionManager = new TransactionManager();
            transactionManager.updateTransactionStatus(transactionInfo);

            int responseCode = transactionManager.getResponseCode();
            resultEvent.setResponseCode(responseCode);
        } catch (Exception ex) {
            resultEvent.setResponseCode(ResponseCodes.ERROR_CODE_UPDATE_TRANSACTION_STATUS_FAILED);
            logger.error(ex.getMessage());
        }
        //updating sim current balance
        try {
            SIMManager simManager = new SIMManager();
            SIMInfo simInfo = new SIMInfo();
            simInfo.setSimNo(senderCellNumber);
            SIMServiceInfo simServiceInfo = new SIMServiceInfo();
            simServiceInfo.setCurrentBalance(balance);
            simServiceInfo.setId(serviceId);
            simInfo.getSimServiceList().add(simServiceInfo);
            simManager.updateSIMServiceBalanceInfo(simInfo);

            int responseCode = simManager.getResponseCode();
            resultEvent.setResponseCode(responseCode);
        } catch (Exception ex) {
            logger.error(ex.getMessage());
        }

        HttpServerResponse response = routingContext.response();
        response.end(resultEvent.toString());

    });

    router.route("/updatestktransactionstatus*").handler(BodyHandler.create());
    router.post("/updatestktransactionstatus").handler((RoutingContext routingContext) -> {
        ResultEvent resultEvent = new ResultEvent();
        String serviceIdStr = routingContext.request().getParam("serviceId");
        //expected format of cell number 8801711123456
        String senderCellNumber = routingContext.request().getParam("sendercellnumber");
        String currentBalanceStr = routingContext.request().getParam("currentbalance");
        String APIKey = routingContext.request().getParam("apikey");
        //expected format of cell number 01711123456
        String cellNumber = routingContext.request().getParam("cellnumber");
        String balanceStr = routingContext.request().getParam("balance");
        //transaction id from operators
        String transactionId = routingContext.request().getParam("transactionid");
        String statusIdStr = routingContext.request().getParam("statusid");
        String sender = routingContext.request().getParam("sender");
        String sms = routingContext.request().getParam("sms");
        System.out.println("Updating stk transaction status----------------serviceIdStr:" + serviceIdStr
                + ",senderCellNumber:" + senderCellNumber + ",currentBalanceStr:" + currentBalanceStr
                + ",APIKey:" + APIKey + ",cellNumber:" + cellNumber + ",balanceStr:" + balanceStr
                + ",transactionId:" + transactionId + ",statusIdStr:" + statusIdStr + ",sender:" + sender
                + ",sms:" + sms);
        int serviceId = 0;
        try {
            serviceId = Integer.parseInt(serviceIdStr);
        } catch (Exception ex) {
            logger.debug("Invalid serviceId at updatestktransactionstatus-senderCellNumber:" + senderCellNumber
                    + ",currentBalance:" + currentBalanceStr + ",APIKey:" + APIKey + ",cellNumber:" + cellNumber
                    + ",balance:" + balanceStr + ",transactionId:" + transactionId + ",statusId:" + statusIdStr
                    + ",serviceId:" + serviceIdStr);
            logger.debug(ex.getMessage());
        }
        int statusId = 0;
        try {
            statusId = Integer.parseInt(statusIdStr);
        } catch (Exception ex) {
            logger.debug("Invalid statusId at updatestktransactionstatus-senderCellNumber:" + senderCellNumber
                    + ",currentBalance:" + currentBalanceStr + ",APIKey:" + APIKey + ",cellNumber:" + cellNumber
                    + ",balance:" + balanceStr + ",transactionId:" + transactionId + ",statusId:" + statusIdStr
                    + ",serviceId:" + serviceIdStr);
            logger.debug(ex.getMessage());
        }
        double currentBalance = 0;
        try {
            currentBalance = Double.parseDouble(currentBalanceStr);
        } catch (Exception ex) {
            logger.debug("Invalid current balance at updatestktransactionstatus-senderCellNumber:"
                    + senderCellNumber + ",currentBalance:" + currentBalanceStr + ",APIKey:" + APIKey
                    + ",cellNumber:" + cellNumber + ",balance:" + balanceStr + ",transactionId:" + transactionId
                    + ",statusId:" + statusIdStr + ",serviceId:" + serviceIdStr);
            logger.debug(ex.getMessage());
        }
        double balance = 0;
        try {
            balance = Double.parseDouble(balanceStr);
        } catch (Exception ex) {
            logger.debug("Invalid balance at updatestktransactionstatus-senderCellNumber:" + senderCellNumber
                    + ",currentBalance:" + currentBalanceStr + ",APIKey:" + APIKey + ",cellNumber:" + cellNumber
                    + ",balance:" + balanceStr + ",transactionId:" + transactionId + ",statusId:" + statusIdStr
                    + ",serviceId:" + serviceIdStr);
            logger.debug(ex.getMessage());
        }

        try {
            TransactionInfo transactionInfo = new TransactionInfo();
            //updating transaction info
            transactionInfo.setSenderCellNumber(senderCellNumber);
            transactionInfo.setAPIKey(APIKey);
            transactionInfo.setCellNumber(cellNumber);
            transactionInfo.setBalanceOut(balance);
            transactionInfo.setTrxIdOperator(transactionId);
            transactionInfo.setTransactionStatusId(statusId);

            TransactionManager transactionManager = new TransactionManager();
            transactionManager.updateLSSTKTransactionStatus(transactionInfo);
            int responseCode = transactionManager.getResponseCode();
            if (responseCode == ResponseCodes.SUCCESS) {
                try {
                    //updating SIM current balance for this service
                    SIMManager simManager = new SIMManager();
                    SIMInfo simInfo = new SIMInfo();
                    simInfo.setSimNo(senderCellNumber);
                    SIMServiceInfo simServiceInfo = new SIMServiceInfo();
                    simServiceInfo.setCurrentBalance(currentBalance);
                    simServiceInfo.setId(serviceId);
                    simInfo.getSimServiceList().add(simServiceInfo);
                    simManager.updateSIMServiceBalanceInfo(simInfo);

                    responseCode = simManager.getResponseCode();
                    resultEvent.setResponseCode(responseCode);

                    SIMSMSInfo simSMSInfo = new SIMSMSInfo();
                    simSMSInfo.setSimNo(senderCellNumber);
                    simSMSInfo.setSender(sender);
                    simSMSInfo.setSms(sms);
                    simManager.addSIMMessage(simSMSInfo);
                } catch (Exception ex) {
                    resultEvent.setResponseCode(ResponseCodes.ERROR_CODE_SIM_BALANCE_UPDATE_FAILED);
                    logger.error(ex.getMessage());
                }
            }
            resultEvent.setResponseCode(responseCode);
        } catch (Exception ex) {
            resultEvent.setResponseCode(ResponseCodes.ERROR_CODE_UPDATE_TRANSACTION_STATUS_FAILED);
            logger.error(ex.getMessage());
        }

        HttpServerResponse response = routingContext.response();
        response.end(resultEvent.toString());

    });

    //this method will update sim balance of a service
    router.route("/updatesimbalance*").handler(BodyHandler.create());
    router.post("/updatesimbalance").handler((RoutingContext routingContext) -> {
        ResultEvent resultEvent = new ResultEvent();
        //sim service id
        String serviceIdStr = routingContext.request().getParam("serviceid");
        //8801711123456
        String senderCellNumber = routingContext.request().getParam("sendercellnumber");
        //current balance of the sim under the sim service
        String balanceStr = routingContext.request().getParam("balance");
        //sms sender title
        String sender = routingContext.request().getParam("sender");
        //sms text
        String sms = routingContext.request().getParam("sms");
        System.out.println(
                "Updating sim balance----------------serviceIdStr:" + serviceIdStr + ",senderCellNumber:"
                        + senderCellNumber + ",balanceStr:" + balanceStr + ",sender:" + sender + ",sms:" + sms);
        double balance = 0;
        try {
            balance = Double.parseDouble(balanceStr);
        } catch (Exception ex) {
            logger.debug(
                    "Invalid balance at updatesimbalance-senderCellNumber:" + senderCellNumber + ",balance:"
                            + balanceStr + ",serviceId:" + serviceIdStr + ",sender:" + sender + ",sms:" + sms);
            logger.debug(ex.getMessage());
        }
        int serviceId = 0;
        try {
            serviceId = Integer.parseInt(serviceIdStr);
        } catch (Exception ex) {
            logger.debug(
                    "Invalid serviceId at updatesimbalance-senderCellNumber:" + senderCellNumber + ",balance:"
                            + balanceStr + ",serviceId:" + serviceIdStr + ",sender:" + sender + ",sms:" + sms);
            logger.debug(ex.getMessage());
        }
        try {
            SIMManager simManager = new SIMManager();
            SIMInfo simInfo = new SIMInfo();
            simInfo.setSimNo(senderCellNumber);
            SIMServiceInfo simServiceInfo = new SIMServiceInfo();
            simServiceInfo.setCurrentBalance(balance);
            simServiceInfo.setId(serviceId);
            simInfo.getSimServiceList().add(simServiceInfo);
            simManager.updateSIMServiceBalanceInfo(simInfo);

            int responseCode = simManager.getResponseCode();
            resultEvent.setResponseCode(responseCode);
            //saving sim sms if exists (there will sms for stk feature)
            if (sender != null && !sender.isEmpty() && sms != null && !sms.isEmpty()) {
                SIMSMSInfo simSMSInfo = new SIMSMSInfo();
                simSMSInfo.setSimNo(senderCellNumber);
                simSMSInfo.setSender(sender);
                simSMSInfo.setSms(sms);
                simManager.addSIMMessage(simSMSInfo);
            }
        } catch (Exception ex) {
            logger.debug(ex.getMessage());
        }
        HttpServerResponse response = routingContext.response();
        response.end(resultEvent.toString());
    });

    //this method will update sim balance of a service
    router.route("/savesimsms*").handler(BodyHandler.create());
    router.post("/savesimsms").handler((RoutingContext routingContext) -> {
        ResultEvent resultEvent = new ResultEvent();
        //expected format is 8801711123456
        String senderCellNumber = routingContext.request().getParam("sendercellnumber");
        //sms sender title
        String sender = routingContext.request().getParam("sender");
        //sms text
        String sms = routingContext.request().getParam("sms");
        System.out.println("Saving sim sms----------------senderCellNumber:" + senderCellNumber + ",sender:"
                + sender + ",sms:" + sms);
        try {
            SIMManager simManager = new SIMManager();
            SIMSMSInfo simSMSInfo = new SIMSMSInfo();
            simSMSInfo.setSimNo(senderCellNumber);
            simSMSInfo.setSender(sender);
            simSMSInfo.setSms(sms);
            simManager.addSIMMessage(simSMSInfo);
            int responseCode = simManager.getResponseCode();
            resultEvent.setResponseCode(responseCode);
        } catch (Exception ex) {
            logger.debug(ex.getMessage());
        }
        HttpServerResponse response = routingContext.response();
        response.end(resultEvent.toString());
    });
    /**
     * post method to send bulk sms
     * @param cellnumberlist, cell number list
     * @param sms, sms body
     * @param APIKey, APIKey
     * @param livetestflag, flag of transaction
    */
    router.route("/sendsms*").handler(BodyHandler.create());
    router.post("/sendsms").handler((RoutingContext routingContext) -> {
        HttpServerResponse response = routingContext.response();
        ResultEvent resultEvent = new ResultEvent();
        SMSTransactionInfo smsTransactionInfo = new SMSTransactionInfo();
        String cellNumberList = routingContext.request().getParam("cellnumberlist");
        String sms = routingContext.request().getParam("sms");
        String APIKey = routingContext.request().getParam("APIKey");
        String liveTestFlag = routingContext.request().getParam("livetestflag");
        smsTransactionInfo.setLiveTestFlag(liveTestFlag);
        smsTransactionInfo.setSms(sms);
        smsTransactionInfo.setAPIKey(APIKey);
        JsonArray cellNumberArray = new JsonArray(cellNumberList);
        //JsonArray ja = new JsonArray();
        for (int counter = 0; counter < cellNumberArray.size(); counter++) {
            JsonObject jsonObject = new JsonObject(cellNumberArray.getValue(counter).toString());
            String id = jsonObject.getString("id");
            String cellNo = jsonObject.getString("cell_no");
            smsTransactionInfo.getCellNumberList().add(cellNo);

            //System.out.println(id);
            //System.out.println(cellNo);

            //JsonObject jO = new JsonObject();
            //jO.put("id", id);
            //jO.put("cell_no", cellNo);

            //ja.add(jO);
        }
        try {
            TransactionManager transactionManager = new TransactionManager();
            transactionManager.addSMSTransaction(smsTransactionInfo);
            int responseCode = transactionManager.getResponseCode();
            resultEvent.setResponseCode(responseCode);
            if (responseCode == ResponseCodes.SUCCESS) {
                smsTransactionInfo.setTransactionId(transactionManager.getTransactionId());
                resultEvent.setResult(smsTransactionInfo);
            }
        } catch (Exception ex) {
            resultEvent.setResponseCode(ResponseCodes.ERROR_CODE_WEBSERVICE_PROCESS_EXCEPTION);
            logger.error(ex.toString());
        }
        response.end(resultEvent.toString());
    });

    router.route("/sendemail*").handler(BodyHandler.create());
    router.post("/sendemail").handler((RoutingContext routingContext) -> {
        HttpServerResponse response = routingContext.response();
        ResultEvent resultEvent = new ResultEvent();
        String receiverEmail = routingContext.request().getParam("email");
        String message = routingContext.request().getParam("message");
        Email email = new Email();
        email.sendEmail(receiverEmail, message);
        response.end(resultEvent.toString());
    });

    server.requestHandler(router::accept).listen(3030);
}

From source file:org.eclipse.hono.deviceregistry.FileBasedCredentialsService.java

License:Open Source License

private void parseCredentials(final JsonArray credentialsObject) {
    final AtomicInteger credentialsCount = new AtomicInteger();

    log.debug("trying to load credentials for {} tenants", credentialsObject.size());
    for (Object obj : credentialsObject) {
        JsonObject tenant = (JsonObject) obj;
        String tenantId = tenant.getString(FIELD_TENANT);
        Map<String, JsonArray> credentialsMap = new HashMap<>();
        for (Object credentialsObj : tenant.getJsonArray(ARRAY_CREDENTIALS)) {
            JsonObject credentials = (JsonObject) credentialsObj;
            JsonArray authIdCredentials;
            if (credentialsMap.containsKey(credentials.getString(FIELD_AUTH_ID))) {
                authIdCredentials = credentialsMap.get(credentials.getString(FIELD_AUTH_ID));
            } else {
                authIdCredentials = new JsonArray();
            }//  w w w.  j ava2s . c  o  m
            authIdCredentials.add(credentials);
            credentialsMap.put(credentials.getString(FIELD_AUTH_ID), authIdCredentials);
            credentialsCount.incrementAndGet();
        }
        credentials.put(tenantId, credentialsMap);
    }
    log.info("successfully loaded {} credentials from file [{}]", credentialsCount.get(),
            getConfig().getCredentialsFilename());
}

From source file:org.eclipse.hono.deviceregistry.FileBasedTenantService.java

License:Open Source License

Future<Void> saveToFile() {

    if (!getConfig().isSaveToFile()) {
        return Future.succeededFuture();
    } else if (dirty) {
        return checkFileExists(true).compose(s -> {

            final JsonArray tenantsJson = new JsonArray();
            tenants.values().stream().forEach(tenant -> {
                tenantsJson.add(JsonObject.mapFrom(tenant));
            });/*  w w  w  .ja va2  s .c  om*/

            final Future<Void> writeHandler = Future.future();
            vertx.fileSystem().writeFile(getConfig().getFilename(),
                    Buffer.factory.buffer(tenantsJson.encodePrettily()), writeHandler.completer());
            return writeHandler.map(ok -> {
                dirty = false;
                log.trace("successfully wrote {} tenants to file {}", tenantsJson.size(),
                        getConfig().getFilename());
                return (Void) null;
            }).otherwise(t -> {
                log.warn("could not write tenants to file {}", getConfig().getFilename(), t);
                return (Void) null;
            });
        });
    } else {
        log.trace("tenants registry does not need to be persisted");
        return Future.succeededFuture();
    }
}

From source file:org.eclipse.hono.service.auth.impl.FileBasedAuthenticationService.java

License:Open Source License

private void parseRoles(final JsonObject rolesObject) {
    rolesObject.stream().filter(entry -> entry.getValue() instanceof JsonArray).forEach(entry -> {
        final String roleName = entry.getKey();
        final JsonArray authSpecs = (JsonArray) entry.getValue();
        log.debug("adding role [{}] with {} authorities", roleName, authSpecs.size());
        roles.put(roleName, toAuthorities(authSpecs));
    });//from ww  w. ja  va2  s  . c  om
}

From source file:org.eclipse.hono.service.credentials.BaseCredentialsService.java

License:Open Source License

private boolean containsValidSecretValue(final JsonObject credentials) {

    final Object obj = credentials.getValue(FIELD_SECRETS);

    if (JsonArray.class.isInstance(obj)) {

        JsonArray secrets = (JsonArray) obj;
        if (secrets.isEmpty()) {

            log.debug("credentials request contains empty {} object in payload - not supported", FIELD_SECRETS);
            return false;

        } else {//from   ww w .  ja va2 s  .co  m

            for (int i = 0; i < secrets.size(); i++) {
                JsonObject currentSecret = secrets.getJsonObject(i);
                if (!containsValidTimestampIfPresentForField(currentSecret, FIELD_SECRETS_NOT_BEFORE)
                        || !containsValidTimestampIfPresentForField(currentSecret, FIELD_SECRETS_NOT_AFTER)) {
                    log.debug("credentials request did contain invalid timestamp values in payload");
                    return false;
                }
            }

            return true;
        }

    } else {

        log.debug("credentials request does not contain a {} array in payload - not supported", FIELD_SECRETS);
        return false;

    }
}

From source file:org.eclipse.hono.service.tenant.BaseTenantService.java

License:Open Source License

/**
 * Check the request payload for validity.
 *
 * @param payload The payload to check./*from w  ww .  j a  va 2  s .co  m*/
 * @return boolean The result of the check : {@link Boolean#TRUE} if the payload is valid, {@link Boolean#FALSE} otherwise.
 * @throws NullPointerException If the payload is {@code null}.
 */
private boolean isValidRequestPayload(final JsonObject payload) {

    final Object adaptersObj = payload.getValue(TenantConstants.FIELD_ADAPTERS);
    if (adaptersObj == null) {
        // all adapters enabled with default config
        return true;
    } else if (adaptersObj instanceof JsonArray) {

        final JsonArray adapters = (JsonArray) adaptersObj;
        if (adapters.size() == 0) {
            // if given, adapters config array must not be empty
            return false;
        } else {
            return !adapters.stream().anyMatch(obj -> {
                return !(obj instanceof JsonObject)
                        || !((JsonObject) obj).containsKey(TenantConstants.FIELD_ADAPTERS_TYPE);
            });
        }
    } else {
        // malformed payload
        return false;
    }
}