Java tutorial
/* * 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 com.inkubator.hrm.web.personalia; import com.google.gson.Gson; import com.google.gson.JsonArray; import com.google.gson.JsonObject; import com.google.gson.JsonParser; import com.google.gson.reflect.TypeToken; import com.inkubator.exception.BussinessException; import com.inkubator.hrm.HRMConstant; import com.inkubator.hrm.entity.ApprovalActivity; import com.inkubator.hrm.entity.BusinessTravel; import com.inkubator.hrm.entity.BusinessTravelComponent; import com.inkubator.hrm.entity.EmpData; import com.inkubator.hrm.json.util.JsonUtil; import com.inkubator.hrm.service.ApprovalActivityService; import com.inkubator.hrm.service.BusinessTravelService; import com.inkubator.hrm.service.EmpDataService; import com.inkubator.securitycore.util.UserInfoUtil; import com.inkubator.webcore.controller.BaseController; import com.inkubator.webcore.util.FacesUtil; import com.inkubator.webcore.util.MessagesResourceUtil; import java.io.IOException; import java.util.List; import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; import javax.faces.application.FacesMessage; import javax.faces.bean.ManagedBean; import javax.faces.bean.ManagedProperty; import javax.faces.bean.ViewScoped; import javax.faces.context.ExternalContext; import org.apache.commons.lang3.StringUtils; /** * * @author rizkykojek */ @ManagedBean(name = "businessTravelApprovalFormController") @ViewScoped public class BusinessTravelApprovalFormController extends BaseController { private Double totalAmount = 0.0; private BusinessTravel selectedBusinessTravel; private List<BusinessTravelComponent> businessTravelComponents; private String comment; private Boolean isWaitingApproval; private Boolean isWaitingRevised; private Boolean isApprover; private Boolean isRequester; private ApprovalActivity currentActivity; private ApprovalActivity askingRevisedActivity; @ManagedProperty(value = "#{businessTravelService}") private BusinessTravelService businessTravelService; @ManagedProperty(value = "#{approvalActivityService}") private ApprovalActivityService approvalActivityService; @ManagedProperty(value = "#{empDataService}") private EmpDataService empDataService; @PostConstruct @Override public void initialization() { try { super.initialization(); String id = FacesUtil.getRequestParameter("execution"); /*selectedApprovalActivity = approvalActivityService.getEntiyByPK(Long.parseLong(id.substring(1))); isWaitingApproval = selectedApprovalActivity.getApprovalStatus() == HRMConstant.APPROVAL_STATUS_WAITING_APPROVAL; isApprover = StringUtils.equals(UserInfoUtil.getUserName(), selectedApprovalActivity.getApprovedBy()); isRequester = StringUtils.equals(UserInfoUtil.getUserName(), selectedApprovalActivity.getRequestBy());*/ currentActivity = approvalActivityService.getEntiyByPK(Long.parseLong(id.substring(1))); askingRevisedActivity = approvalActivityService.getEntityByActivityNumberAndSequence( currentActivity.getActivityNumber(), currentActivity.getSequence() - 1); isWaitingApproval = currentActivity.getApprovalStatus() == HRMConstant.APPROVAL_STATUS_WAITING_APPROVAL; isWaitingRevised = currentActivity.getApprovalStatus() == HRMConstant.APPROVAL_STATUS_WAITING_REVISED; isApprover = StringUtils.equals(UserInfoUtil.getUserName(), currentActivity.getApprovedBy()); isRequester = StringUtils.equals(UserInfoUtil.getUserName(), currentActivity.getRequestBy()); Gson gson = JsonUtil.getHibernateEntityGsonBuilder().create(); JsonObject jsonObject = gson.fromJson(currentActivity.getPendingData(), JsonObject.class); businessTravelComponents = gson.fromJson(jsonObject.get("businessTravelComponents"), new TypeToken<List<BusinessTravelComponent>>() { }.getType()); selectedBusinessTravel = gson.fromJson(currentActivity.getPendingData(), BusinessTravel.class); EmpData empData = empDataService.getByIdWithDetail(selectedBusinessTravel.getEmpData().getId()); selectedBusinessTravel.setEmpData(empData); for (BusinessTravelComponent btc : businessTravelComponents) { totalAmount = totalAmount + btc.getPayByAmount(); } } catch (Exception ex) { LOGGER.error("Error", ex); } } @PreDestroy public void cleanAndExit() { businessTravelComponents = null; selectedBusinessTravel = null; businessTravelService = null; currentActivity = null; askingRevisedActivity = null; totalAmount = null; approvalActivityService = null; comment = null; empDataService = null; isWaitingApproval = null; isWaitingRevised = null; isApprover = null; isRequester = null; } public String doBack() { return "/protected/home.htm?faces-redirect=true"; } public String doApproved() { try { Gson gson = JsonUtil.getHibernateEntityGsonBuilder().create(); JsonParser parser = new JsonParser(); JsonArray arrayComponents = new JsonArray(); JsonObject jsonObject = gson.fromJson(currentActivity.getPendingData(), JsonObject.class); for (BusinessTravelComponent btc : businessTravelComponents) { JsonObject component = (JsonObject) parser.parse(gson.toJson(btc)); arrayComponents.add(component); } jsonObject.add("businessTravelComponents", arrayComponents); businessTravelService.approved(currentActivity.getId(), gson.toJson(jsonObject), comment); MessagesResourceUtil.setMessagesFlas(FacesMessage.SEVERITY_INFO, "global.approval_info", "global.approved_successfully", FacesUtil.getSessionAttribute(HRMConstant.BAHASA_ACTIVE).toString()); return "/protected/home.htm?faces-redirect=true"; } catch (BussinessException ex) { MessagesResourceUtil.setMessages(FacesMessage.SEVERITY_ERROR, "global.error", ex.getErrorKeyMessage(), FacesUtil.getSessionAttribute(HRMConstant.BAHASA_ACTIVE).toString()); } catch (Exception e) { LOGGER.error("Error when approved process ", e); } return null; } public String doRejected() { try { businessTravelService.rejected(currentActivity.getId(), comment); MessagesResourceUtil.setMessagesFlas(FacesMessage.SEVERITY_INFO, "global.approval_info", "global.rejected_successfully", FacesUtil.getSessionAttribute(HRMConstant.BAHASA_ACTIVE).toString()); return "/protected/home.htm?faces-redirect=true"; } catch (BussinessException ex) { MessagesResourceUtil.setMessages(FacesMessage.SEVERITY_ERROR, "global.error", ex.getErrorKeyMessage(), FacesUtil.getSessionAttribute(HRMConstant.BAHASA_ACTIVE).toString()); } catch (Exception e) { LOGGER.error("Error when rejected process ", e); } return null; } public String doCancelled() { try { businessTravelService.cancelled(currentActivity.getId(), comment); MessagesResourceUtil.setMessagesFlas(FacesMessage.SEVERITY_INFO, "global.approval_info", "global.cancelled_successfully", FacesUtil.getSessionAttribute(HRMConstant.BAHASA_ACTIVE).toString()); return "/protected/home.htm?faces-redirect=true"; } catch (BussinessException ex) { MessagesResourceUtil.setMessages(FacesMessage.SEVERITY_ERROR, "global.error", ex.getErrorKeyMessage(), FacesUtil.getSessionAttribute(HRMConstant.BAHASA_ACTIVE).toString()); } catch (Exception e) { LOGGER.error("Error when rejected process ", e); } return null; } public void doRevised() { try { ExternalContext red = FacesUtil.getExternalContext(); red.redirect(red.getRequestContextPath() + "/flow-protected/business_travel?activity=" + currentActivity.getId()); } catch (IOException ex) { LOGGER.error("Erorr", ex); } } public String doAskingRevised() { try { businessTravelService.askingRevised(currentActivity.getId(), comment); MessagesResourceUtil.setMessagesFlas(FacesMessage.SEVERITY_INFO, "global.approval_info", "global.process_successfully", FacesUtil.getSessionAttribute(HRMConstant.BAHASA_ACTIVE).toString()); return "/protected/personalia/business_travel_view.htm?faces-redirect=true"; } catch (BussinessException ex) { MessagesResourceUtil.setMessages(FacesMessage.SEVERITY_ERROR, "global.error", ex.getErrorKeyMessage(), FacesUtil.getSessionAttribute(HRMConstant.BAHASA_ACTIVE).toString()); } catch (Exception e) { LOGGER.error("Error ", e); } return null; } public void doAdjustPayByAmount() { totalAmount = 0.0; for (BusinessTravelComponent btc : businessTravelComponents) { totalAmount = totalAmount + btc.getPayByAmount(); } } public Boolean getIsPaginator() { return businessTravelComponents.size() > 11; } public Double getTotalAmount() { return totalAmount; } public void setTotalAmount(Double totalAmount) { this.totalAmount = totalAmount; } public BusinessTravel getSelectedBusinessTravel() { return selectedBusinessTravel; } public void setSelectedBusinessTravel(BusinessTravel selectedBusinessTravel) { this.selectedBusinessTravel = selectedBusinessTravel; } public List<BusinessTravelComponent> getBusinessTravelComponents() { return businessTravelComponents; } public void setBusinessTravelComponents(List<BusinessTravelComponent> businessTravelComponents) { this.businessTravelComponents = businessTravelComponents; } public String getComment() { return comment; } public void setComment(String comment) { this.comment = comment; } public Boolean getIsWaitingApproval() { return isWaitingApproval; } public void setIsWaitingApproval(Boolean isWaitingApproval) { this.isWaitingApproval = isWaitingApproval; } public Boolean getIsWaitingRevised() { return isWaitingRevised; } public void setIsWaitingRevised(Boolean isWaitingRevised) { this.isWaitingRevised = isWaitingRevised; } public Boolean getIsApprover() { return isApprover; } public void setIsApprover(Boolean isApprover) { this.isApprover = isApprover; } public Boolean getIsRequester() { return isRequester; } public void setIsRequester(Boolean isRequester) { this.isRequester = isRequester; } public ApprovalActivity getCurrentActivity() { return currentActivity; } public void setCurrentActivity(ApprovalActivity currentActivity) { this.currentActivity = currentActivity; } public ApprovalActivity getAskingRevisedActivity() { return askingRevisedActivity; } public void setAskingRevisedActivity(ApprovalActivity askingRevisedActivity) { this.askingRevisedActivity = askingRevisedActivity; } public BusinessTravelService getBusinessTravelService() { return businessTravelService; } public void setBusinessTravelService(BusinessTravelService businessTravelService) { this.businessTravelService = businessTravelService; } public ApprovalActivityService getApprovalActivityService() { return approvalActivityService; } public void setApprovalActivityService(ApprovalActivityService approvalActivityService) { this.approvalActivityService = approvalActivityService; } public EmpDataService getEmpDataService() { return empDataService; } public void setEmpDataService(EmpDataService empDataService) { this.empDataService = empDataService; } }