np.com.drose.parkgarau.ws.resource.v1.impl.ParkGarauWSIMPL.java Source code

Java tutorial

Introduction

Here is the source code for np.com.drose.parkgarau.ws.resource.v1.impl.ParkGarauWSIMPL.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package np.com.drose.parkgarau.ws.resource.v1.impl;

import java.math.BigInteger;
import java.security.SecureRandom;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Optional;
import java.util.Random;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
import javax.inject.Named;
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.core.Context;
import np.com.drose.parkgarau.api.ParkGarauService;
import np.com.drose.parkgarau.api.dto.VehicleEntry;

import np.com.drose.parkgarau.api.request.DeviceRegistrationRequest;
import np.com.drose.parkgarau.api.request.SyncCategoryRequest;
import np.com.drose.parkgarau.api.request.UserLoginRequest;
import np.com.drose.parkgarau.api.request.VehicleInRequest;
import np.com.drose.parkgarau.api.response.SyncCategoryResponse;
import np.com.drose.parkgarau.api.response.UserLoginResponse;
import np.com.drose.parkgarau.modules.AuditInfo;
import np.com.drose.parkgarau.modules.company.Company;
import np.com.drose.parkgarau.modules.company.CompanyBranch;
import np.com.drose.parkgarau.modules.device.Device;
import np.com.drose.parkgarau.modules.parkingmanagement.ParkingCharge;
import np.com.drose.parkgarau.modules.parkingmanagement.ParkingChargeSetup;
import np.com.drose.parkgarau.modules.parkingmanagement.VehicleCategory;
import np.com.drose.parkgarau.modules.parkingmanagement.VehicleSubCategory;
import np.com.drose.parkgarau.modules.token.Token;
import np.com.drose.parkgarau.modules.user.User;
import np.com.drose.parkgarau.service.user.control.UserVerification;
import np.com.drose.parkgarau.utils.JSONUtils;

import np.com.drose.parkgarau.ws.resource.v1.ParkGarauWSAPI;
import np.com.drose.parkgarau.ws.resource.v1.httpstatuscode.HTTPStatusCode;
import np.com.drose.parkgarau.ws.resource.v1.response.Response;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateUtils;

/**
 * {Insert class description here}
 *
 * @version $Revision: 1.1.1.1 $
 * @since Build {insert version here} (MM YYYY)
 * @author bibek
 */
@Named
@RequestScoped
public class ParkGarauWSIMPL implements ParkGarauWSAPI {

    @Inject
    ParkGarauService<Device> deviceParkGarauService;
    @Inject
    ParkGarauService<Company> companyParkGarauService;

    @Inject
    ParkGarauService<User> userParkGarauService;

    @Inject
    UserVerification userVerification;

    @Inject
    ParkGarauService<Token> tokenParkGarauService;

    @Inject
    ParkGarauService<CompanyBranch> companyBrancParkGarauService;

    @Inject
    ParkGarauService<VehicleCategory> vehicleCategoryParkGarauService;
    @Inject
    ParkGarauService<VehicleSubCategory> vehicleSubParkGarauService;
    @Inject
    ParkGarauService<np.com.drose.parkgarau.modules.parkingmanagement.VehicleEntry> entryParkGarauService;

    @Inject
    ParkGarauService<ParkingCharge> parkingChargeService;
    @Inject
    ParkGarauService<ParkingChargeSetup> parkCSGarauService;

    @Override
    public int getVersion() {
        return 1;
    }

    private static final Logger LOG = Logger.getLogger(ParkGarauWSIMPL.class.getName());

    @Override
    public Response registerDevice(DeviceRegistrationRequest deviceRegistrationRequest) {
        LOG.info("inside device registration->>>>>>>->>>>>>>>>>>");
        if (StringUtils.isEmpty(deviceRegistrationRequest.getDeviceId())
                && StringUtils.isEmpty(deviceRegistrationRequest.getCompanyCode())) {
            LOG.info("value is empty");
            return new Response(HTTPStatusCode.BADREQUEST.getHttpcode(),
                    "Sorry!! Empty Device ID and Company Code");
        }
        LOG.log(Level.INFO, "HERE IS THE VALUE ->>>>>>{0}: {1}", new Object[] {
                deviceRegistrationRequest.getCompanyCode(), deviceRegistrationRequest.getDeviceId() });
        if (companyParkGarauService.finder(deviceRegistrationRequest.getCompanyCode()) == null) {
            LOG.info("inside the finder--------->");
            return new Response(HTTPStatusCode.UNAUTHORIZED.getHttpcode(), "Sorry !! invalid company Code");
        }
        if (deviceParkGarauService.finder(deviceRegistrationRequest.getDeviceId()) != null) {
            return new Response(HTTPStatusCode.UNAUTHORIZED.getHttpcode(), "Device Already Register");
        }
        Device device = new Device();
        device.setDeviceCode(deviceRegistrationRequest.getDeviceId());
        device.setDeviceType("TAB");
        device.setModel("HUWAI");
        device.setDescription("cool");
        device.setCompanyCode(deviceRegistrationRequest.getCompanyCode());
        device.setAuditInfo(new AuditInfo(new Date(), "Bibek Shakya", "121211", new Date(), "", new Date()));
        this.deviceParkGarauService.add(device);
        return new Response(HTTPStatusCode.OK.getHttpcode(), "Successful",
                JSONUtils
                        .objectToJson(new np.com.drose.parkgarau.ws.resource.v1.response.DeviceRegistrationResponse(
                                device.getCompanyCode(),
                                this.companyParkGarauService.finder(device.getCompanyCode()).getProductName())));
    }

    //@Context HttpServletRequest httpServletRequest;
    @Override
    public Response authenticateUser(UserLoginRequest userLoginRequest) {
        UserLoginResponse userLoginResponse = new UserLoginResponse();
        User validateUser = userVerification.validateUser(userLoginRequest.getUsername(),
                userLoginRequest.getPassword());
        //authenticate user
        if (validateUser == null) {
            return new Response(HTTPStatusCode.UNAUTHORIZED.getHttpcode(), "Sorry, Invalid username and password");

        }
        userLoginResponse.setFullName(validateUser.getUserProfile().getFullname());
        userLoginResponse.setSessionKey(issueToken(validateUser.getUserName()));
        userLoginResponse.setBranchName("dm");
        if (StringUtils.isNotBlank(validateUser.getUserName()) || validateUser.getUserName() != null) {
            // httpServletRequest.getSession(true);
            return new Response(HTTPStatusCode.OK.getHttpcode(), "Successfully Login",
                    JSONUtils.objectToJson(userLoginResponse));
        }
        return new Response(HTTPStatusCode.UNAUTHORIZED.getHttpcode(), "Sorry, Invalid username and password");
    }

    private String issueToken(String userName) {
        Optional<Token> tkn1 = Optional.ofNullable(tokenParkGarauService.findWithAnotherObjectCode(userName));
        if (tkn1.isPresent()) {
            Token tkn = tkn1.get();
            tkn.setActive(false);
            tkn.getAuditInfo().setModifiedOn(new Date());
            tkn.getAuditInfo().setModifiedBy(userName);
            tokenParkGarauService.edit(tkn);
        }
        //String token = UUID.randomUUID().toString();
        Random random = new SecureRandom();
        String token = new BigInteger(130, random).toString(32);
        LOG.log(Level.INFO, "ISSUE TOKEN .....{0}", token);
        this.tokenParkGarauService
                .add(new Token(userName, token, DateUtils.addHours(new Date(), 12), new AuditInfo()));
        LOG.log(Level.INFO, "successfully inserted token {0}", userName);
        return token;
    }

    @Override
    public Response syncCategory(SyncCategoryRequest syncCategoryRequest) {
        if (this.deviceParkGarauService.finder(syncCategoryRequest.getDeviceId()) != null) {
            if (this.companyParkGarauService.finder(syncCategoryRequest.getCompanyCode()) != null) {
                List<VehicleCategory> vehicleCategorys = vehicleCategoryParkGarauService.getList();

                SyncCategoryResponse syncCategoryResponse = new SyncCategoryResponse();
                List<np.com.drose.parkgarau.api.dto.VehicleCategory> vehicleCategorys1 = new ArrayList<>();

                vehicleCategorys.stream().forEach((vc) -> {

                    np.com.drose.parkgarau.api.dto.VehicleCategory vehicleCategory = new np.com.drose.parkgarau.api.dto.VehicleCategory();
                    vehicleCategory.setCode(vc.getCode());
                    vehicleCategory.setDescription(vc.getDescription());
                    vehicleCategory.setName(vc.getName());
                    List<np.com.drose.parkgarau.api.dto.VehicleSubCategory> vehicleSubCategorys1 = new ArrayList<>();
                    vehicleSubParkGarauService.findList(vc.getCode()).stream().forEach((vsc) -> {
                        np.com.drose.parkgarau.api.dto.VehicleSubCategory vehicleSubCategory = new np.com.drose.parkgarau.api.dto.VehicleSubCategory();
                        vehicleSubCategory.setCode(vsc.getCode());
                        vehicleSubCategory.setDescription(vsc.getDescription());
                        vehicleSubCategory.setName(vsc.getName());
                        vehicleSubCategory.setVehicleCategoryCode(vc.getCode());
                        ParkingChargeSetup parkingChargeSetup = parkCSGarauService.finder(parkingChargeService
                                .finder(vehicleSubCategory.getCode()).getParkingChargeSetupCode());
                        if (parkingChargeSetup != null) {

                        }
                        vehicleSubCategorys1.add(vehicleSubCategory);
                    });

                    vehicleCategory.setVehicleSubCategory(vehicleSubCategorys1);
                    vehicleCategorys1.add(vehicleCategory);
                });

                syncCategoryResponse.setVehicleCategoryList(vehicleCategorys1);
                return new Response(HTTPStatusCode.OK.getHttpcode(), "List of Sync Category!!!",
                        JSONUtils.objectToJson(syncCategoryResponse));
            } else {
                return new Response(HTTPStatusCode.BADREQUEST.getHttpcode(), "Company is not found");
            }
        } else {
            return new Response(HTTPStatusCode.BADREQUEST.getHttpcode(), "Device is not registered");
        }
    }

    @Override
    public Response vehicleIn(VehicleInRequest vehicleInRequest) {
        VehicleEntry vehicleEntryDTO = vehicleInRequest.getVehicleIn();
        np.com.drose.parkgarau.modules.parkingmanagement.VehicleEntry vehicleEntry = new np.com.drose.parkgarau.modules.parkingmanagement.VehicleEntry(
                vehicleEntryDTO.getId(), vehicleEntryDTO.getEntredOn(), vehicleEntryDTO.getVehicleNumber(),
                vehicleEntryDTO.getVehicleSubCategory(), vehicleEntryDTO.getEnteredBy(), new AuditInfo());
        LOG.log(Level.INFO, "VehicleEntry ready to persist on database{0}", vehicleEntry.toString());
        this.entryParkGarauService.add(vehicleEntry);
        LOG.info("Successfull on adding record");
        return new Response(HTTPStatusCode.OK.getHttpcode(), "Successfully stored in database");
    }

}