com.bellkenz.modules.PersonalInformation.java Source code

Java tutorial

Introduction

Here is the source code for com.bellkenz.modules.PersonalInformation.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 com.bellkenz.modules;

import com.bellkenz.authenticate.HRISCredentials;
import com.bellkenz.common.ConstantValue;
import com.bellkenz.common.ConvertionUtilities;
import com.bellkenz.common.DropDownBoxList;
import com.bellkenz.entities.EmployeeInformation.EmployeePersonalInformation;
import com.bellkenz.entities.EmployeeInformation.EmployeePositionHistory;
import com.bellkenz.queries.BranchDAO;
import com.bellkenz.queries.DepartmentDAO;
import com.bellkenz.queries.EmployeeInformationDAO;
import com.bellkenz.queries.EmployeesDAO;
import com.vaadin.Application;
import com.vaadin.data.Property;
import com.vaadin.terminal.Sizeable;
import com.vaadin.terminal.StreamResource;
import com.vaadin.terminal.ThemeResource;
import com.vaadin.ui.AbstractLayout;
import com.vaadin.ui.Alignment;
import com.vaadin.ui.Button;
import com.vaadin.ui.ComboBox;
import com.vaadin.ui.ComponentContainer;
import com.vaadin.ui.DateField;
import com.vaadin.ui.Embedded;
import com.vaadin.ui.GridLayout;
import com.vaadin.ui.Panel;
import com.vaadin.ui.PopupDateField;
import com.vaadin.ui.TextField;
import com.vaadin.ui.VerticalLayout;
import com.vaadin.ui.Window;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 *
 * @author jet
 */
public class PersonalInformation extends VerticalLayout {

    HRISCredentials getConnection = new HRISCredentials();
    DropDownBoxList dropDownBoxList = new DropDownBoxList();
    ConstantValue constantValue = new ConstantValue();
    ConvertionUtilities conUtil = new ConvertionUtilities();

    BranchDAO branchDAO = new BranchDAO();
    DepartmentDAO departmentDAO = new DepartmentDAO();
    EmployeesDAO employeesDAO = new EmployeesDAO();
    EmployeeInformationDAO employeeInformationDAO;

    String employeeId = null;
    Application application;
    Embedded employeeImage;
    Integer divisionId;
    Integer departmentId;
    List<EmployeePersonalInformation> epiList;
    EmployeePersonalInformation employeePersonalInformation;

    TextField firstname;
    private static String str;

    //    public TextField firstname;

    public PersonalInformation() {
    }

    public PersonalInformation(String employeeId, Application application) {
        this.employeeId = employeeId;
        this.application = application;

        addComponent(personalInformation());
    }

    public ComponentContainer personalInformation() {
        employeeInformationDAO = new EmployeeInformationDAO(getEmployeeId());
        employeePersonalInformation = new EmployeePersonalInformation();

        GridLayout glayout = new GridLayout(5, 9);
        glayout.setSpacing(true);
        glayout.setMargin(true);

        final Panel imagePanel = new Panel();
        imagePanel.setStyleName("light");
        AbstractLayout panelLayout = (AbstractLayout) imagePanel.getContent();
        panelLayout.setMargin(false);
        imagePanel.setSizeFull();

        employeeImage = new Embedded(null, new ThemeResource("../myTheme/images/ronnie.jpg"));
        employeeImage.setImmediate(true);
        employeeImage.setWidth(90, Sizeable.UNITS_PIXELS);
        employeeImage.setHeight(90, Sizeable.UNITS_PIXELS);
        employeeImage.setStyleName("logo-img");
        imagePanel.addComponent(employeeImage);
        glayout.addComponent(employeeImage, 0, 0, 0, 1);
        glayout.setComponentAlignment(imagePanel, Alignment.MIDDLE_CENTER);

        firstname = createTextField("Firstname: ");
        glayout.addComponent(firstname, 1, 0, 2, 0);

        final TextField middlename = createTextField("Middlename: ");
        glayout.addComponent(middlename, 3, 0);

        final TextField lastname = createTextField("Lastname: ");
        glayout.addComponent(lastname, 4, 0);

        final TextField houseNo = createTextField("No: ");
        houseNo.setWidth("40px");
        glayout.addComponent(houseNo, 1, 1);

        final TextField street = createTextField("Street: ");
        street.setWidth("118");
        glayout.addComponent(street, 2, 1);

        final TextField city = createTextField("City: ");
        glayout.addComponent(city, 3, 1);

        final TextField zipCode = createTextField("Zip Code:");
        glayout.addComponent(zipCode, 4, 1);

        final TextField nickname = createTextField("Nickname: ");
        nickname.setWidth("90px");
        glayout.addComponent(nickname, 0, 2);

        final TextField permanentAddress = createTextField("Permanent/Provincial Address: ");
        permanentAddress.setWidth("533px");
        glayout.addComponent(permanentAddress, 1, 2, 4, 2);

        Button uploadPicture = new Button("Upload...");
        uploadPicture.setWidth("100%");
        uploadPicture.addListener(new Button.ClickListener() {

            @Override
            public void buttonClick(Button.ClickEvent event) {
                if (employeeId == null) {
                    getWindow().showNotification("You did not select and Employee!",
                            Window.Notification.TYPE_WARNING_MESSAGE);
                    return;
                }

                Window uploadImage = new UploadImage(imagePanel, employeeImage, employeeId);
                uploadImage.setWidth("450px");
                if (uploadImage.getParent() == null) {
                    getWindow().addWindow(uploadImage);
                }
                uploadImage.setModal(true);
                uploadImage.center();
            }
        });
        glayout.addComponent(uploadPicture, 0, 3);

        final TextField landline = createTextField("Landline #: ");
        glayout.addComponent(landline, 1, 3, 2, 3);

        final TextField mobileNo = createTextField("Mobile #: ");
        glayout.addComponent(mobileNo, 3, 3);

        final TextField age = createTextField("Age: ");
        glayout.addComponent(age, 4, 3);

        final TextField emailAddress = createTextField("Email Address: ");
        glayout.addComponent(emailAddress, 1, 4, 2, 4);

        final PopupDateField dob = (PopupDateField) createDateField("Date of Birth: ");
        glayout.addComponent(dob, 3, 4);

        final TextField height = createTextField("Height: ");
        glayout.addComponent(height, 4, 4);

        final ComboBox civilStatus = new ComboBox("Civil Status: ");
        civilStatus.setWidth("100%");
        dropDownBoxList.populateCivilStatusList(civilStatus);
        glayout.addComponent(civilStatus, 1, 5, 2, 5);

        final ComboBox gender = new ComboBox("Gender: ");
        gender.setWidth("100%");
        dropDownBoxList.populateGenderList(gender);
        glayout.addComponent(gender, 3, 5);

        final TextField weight = createTextField("Weigth: ");
        glayout.addComponent(weight, 4, 5);

        final TextField driversLicenseNo = createTextField("Drivers License: ");
        glayout.addComponent(driversLicenseNo, 1, 6, 2, 6);

        final TextField restrictionCode = createTextField("Restriction Code: ");
        glayout.addComponent(restrictionCode, 3, 6);

        final TextField religion = createTextField("Religion: ");
        glayout.addComponent(religion, 4, 6);

        final ComboBox division = new ComboBox("Division: ");
        division.setWidth("100%");
        dropDownBoxList.populateBranchComboBox(division);
        glayout.addComponent(division, 1, 7, 2, 7);

        final ComboBox department = dropDownBoxList.populateDepartment(new ComboBox());
        department.setWidth("100%");
        division.addListener(new Property.ValueChangeListener() {

            @Override
            public void valueChange(Property.ValueChangeEvent event) {
                if (division.getValue() == null) {
                } else {
                    divisionId = branchDAO.getBranchId(division.getValue().toString());
                }
            }

        });
        glayout.addComponent(department, 3, 7);

        final TextField position = createTextField("Position: ");
        glayout.addComponent(position, 4, 7);
        //glayout.setComponentAlignment(position, Alignment.BOTTOM_LEFT);

        Button transferButton = new Button("Transfer Employee");
        transferButton.setWidth("100%");
        transferButton.addListener(new Button.ClickListener() {

            @Override
            public void buttonClick(Button.ClickEvent event) {
                if (getEmployeeId() == null) {
                    getWindow().showNotification("You did not select an Employee!",
                            Window.Notification.TYPE_WARNING_MESSAGE);
                    return;
                }

                Window subWindow = transferEmployee(getEmployeeId(), division, department, position);
                if (subWindow.getParent() == null) {
                    getWindow().addWindow(subWindow);
                }
                subWindow.setModal(true);
                subWindow.center();
            }
        });
        glayout.addComponent(transferButton, 1, 8, 2, 8);
        glayout.setComponentAlignment(transferButton, Alignment.BOTTOM_CENTER);

        if (employeeId != null) {
            epiList = employeeInformationDAO.employeePersonalInformation();
            for (EmployeePersonalInformation epi : epiList) {
                final byte[] image = epi.getImage();
                if (image != null) {
                    StreamResource.StreamSource imageSource = new StreamResource.StreamSource() {

                        @Override
                        public InputStream getStream() {
                            return new ByteArrayInputStream(image);
                        }

                    };

                    StreamResource imageResource = new StreamResource(imageSource, epi.getFirstname() + ".jpg",
                            getApplication());
                    imageResource.setCacheTime(0);
                    employeeImage.setSource(imageResource);
                }
                firstname.setValue(epi.getFirstname());
                middlename.setValue(epi.getMiddlename());
                lastname.setValue(epi.getLastname());
                houseNo.setValue(epi.getHouseNumber());

                street.setValue(epi.getStreet());
                city.setValue(epi.getStreet());
                zipCode.setValue(epi.getZipCode());
                nickname.setValue(epi.getNickname());
                permanentAddress.setValue(epi.getPermanentAddress());
                landline.setValue(epi.getLandlineNumber());
                mobileNo.setValue(epi.getMobileNumber());
                age.setValue(epi.getAge());
                emailAddress.setValue(epi.getEmailAddress());

                if (epi.getDob() != null) {
                    dob.setValue(conUtil.parsingDate(epi.getDob()));
                } else {
                    dob.setValue(null);
                }

                height.setValue(epi.getHeight());

                if (epi.getCivilStatus() != null) {
                    Object civilStatusId = civilStatus.addItem();
                    civilStatus.setItemCaption(civilStatusId, epi.getCivilStatus());
                    civilStatus.setValue(civilStatusId);
                }

                if (epi.getGender() != null) {
                    Object genderId = gender.addItem();
                    gender.setItemCaption(genderId, epi.getGender());
                    gender.setValue(genderId);
                }

                weight.setValue(epi.getWeight());
                driversLicenseNo.setValue(epi.getDriversLicense());
                restrictionCode.setValue(epi.getRestrictionCode());
                religion.setValue(epi.getReligion());
                position.setValue(epi.getPosition());

                Object divisionObjectId = division.addItem();
                division.setItemCaption(divisionObjectId, epi.getDivision());
                division.setValue(divisionObjectId);

                Object departmentObjectId = department.addItem();
                department.setItemCaption(departmentObjectId, epi.getDepartment());
                department.setValue(departmentObjectId);
            }
        }

        firstname.addListener(new Property.ValueChangeListener() {

            @Override
            public void valueChange(Property.ValueChangeEvent event) {
                employeePersonalInformation.setFirstname(event.getProperty().getValue().toString());
            }
        });
        firstname.setImmediate(true);
        setInformation(employeePersonalInformation);

        return glayout;
    }

    public Window transferEmployee(final String employeeId, final ComboBox div, final ComboBox dept,
            final TextField post) {
        VerticalLayout vlayout = new VerticalLayout();
        vlayout.setMargin(true);
        vlayout.setSpacing(true);

        final Window subWindow = new Window("Transfer Employee", vlayout);
        subWindow.setWidth("200px");

        final ComboBox division = new ComboBox("Division: ");
        division.setWidth("100%");
        dropDownBoxList.populateBranchComboBox(division);
        subWindow.addComponent(division);

        final ComboBox department = dropDownBoxList.populateDepartment(new ComboBox());
        department.setWidth("100%");
        division.addListener(new Property.ValueChangeListener() {

            @Override
            public void valueChange(Property.ValueChangeEvent event) {
                if (division.getValue() == null) {
                } else {
                    divisionId = branchDAO.getBranchId(division.getValue().toString());
                }
            }

        });
        subWindow.addComponent(department);

        final TextField position = createTextField("Position: ");
        position.setWidth("100%");
        subWindow.addComponent(position);

        final PopupDateField entryDate = (PopupDateField) createDateField("Date of Entry: ");
        subWindow.addComponent(entryDate);

        Button updateButton = new Button("UPDATE");
        updateButton.setWidth("100%");
        updateButton.addListener(new Button.ClickListener() {

            @Override
            public void buttonClick(Button.ClickEvent event) {
                if (division.getValue() == null) {
                    getWindow().showNotification("Select Division!", Window.Notification.TYPE_WARNING_MESSAGE);
                    return;
                }

                if (department.getValue() == null) {
                    getWindow().showNotification("Select Department!", Window.Notification.TYPE_WARNING_MESSAGE);
                    return;
                }

                if (position.getValue() == null || position.getValue().toString().trim().isEmpty()) {
                    getWindow().showNotification("Enter Position!", Window.Notification.TYPE_WARNING_MESSAGE);
                    return;
                }

                if (entryDate.getValue() == null) {
                    getWindow().showNotification("Select Entry Date!", Window.Notification.TYPE_WARNING_MESSAGE);
                    return;
                }

                List<EmployeePositionHistory> ephList = new ArrayList<EmployeePositionHistory>();
                EmployeePositionHistory eph = new EmployeePositionHistory();
                eph.setBranch(division.getValue().toString());
                eph.setDepartment(department.getValue().toString());
                eph.setPosition(position.getValue().toString().trim().toLowerCase());
                eph.setEntryDate(conUtil.convertDateFormat(entryDate.getValue().toString()));
                ephList.add(eph);
                Integer deptId = departmentDAO.getDepartmentId(divisionId, department.getValue().toString());
                Boolean result = employeeInformationDAO.transferEmployee(ephList, deptId);
                if (result) {
                    Object divObjectId = div.addItem();
                    div.setItemCaption(divObjectId, division.getValue().toString());
                    div.setValue(divObjectId);

                    Object deptObjectId = dept.addItem();
                    dept.setItemCaption(deptObjectId, department.getValue().toString());
                    dept.setValue(deptObjectId);

                    post.setValue(position.getValue().toString().trim().toLowerCase());

                    (subWindow.getParent()).removeWindow(subWindow);
                } else {
                    getWindow().showNotification("Cannot Transfer employee",
                            Window.Notification.TYPE_ERROR_MESSAGE);
                }
            }
        });
        subWindow.addComponent(updateButton);

        return subWindow;
    }

    private TextField createTextField(String caption) {
        TextField f = new TextField(caption);
        f.setWidth("170px");
        f.setNullRepresentation("");
        return f;
    }

    private DateField createDateField(String caption) {
        PopupDateField f = new PopupDateField(caption);
        f.addStyleName("mydate");
        f.setValue(new Date());
        f.setWidth("100%");
        f.setDateFormat("EEE - MMM dd, yyyy");
        f.setLenient(true);
        f.setResolution(DateField.RESOLUTION_DAY);
        return f;
    }

    public String getEmployeeId() {
        return employeeId;
    }

    public Application getApplication() {
        return application;
    }

    public List<EmployeePersonalInformation> getEmployeePersonalInformationList() {
        return epiList;
    }

    public TextField getTextFieldFirstname() {
        return firstname;
    }

    public void setInformation(EmployeePersonalInformation employeePersonalInformation) {
        this.employeePersonalInformation = employeePersonalInformation;
    }

    public EmployeePersonalInformation getInformation() {
        return employeePersonalInformation;
    }

}