Example usage for com.vaadin.ui Button getListeners

List of usage examples for com.vaadin.ui Button getListeners

Introduction

In this page you can find the example usage for com.vaadin.ui Button getListeners.

Prototype

public Collection<?> getListeners(Class<?> eventType) 

Source Link

Document

Returns all listeners that are registered for the given event type or one of its subclasses.

Usage

From source file:com.openhris.timekeeping.AttendanceTableContainerWindow.java

VerticalLayout generateAttendanceTable() {
    VerticalLayout vlayout = new VerticalLayout();
    vlayout.setSizeFull();//from ww w .  jav  a2 s. com
    vlayout.setSpacing(true);

    final Table table = new Table();
    table.removeAllItems();
    table.setEnabled(true);
    table.setSizeFull();
    table.setImmediate(true);
    table.setColumnCollapsingAllowed(true);

    table.addContainerProperty("date", String.class, null);
    table.addContainerProperty("policy", ComboBox.class, null);
    table.addContainerProperty("holidays", ComboBox.class, null);
    table.addContainerProperty("premium", CheckBox.class, null);
    table.addContainerProperty("lates", TextField.class, null);
    table.addContainerProperty("undertime", TextField.class, null);
    table.addContainerProperty("overtime", TextField.class, null);
    table.addContainerProperty("night differential", TextField.class, null);
    table.addContainerProperty("duty manager", TextField.class, null);
    table.addContainerProperty("l/min", Double.class, null);
    table.addContainerProperty("u/min", Double.class, null);
    table.addContainerProperty("o/min", Double.class, null);
    table.addContainerProperty("nd/min", Double.class, null);
    table.addContainerProperty("dm/min", Double.class, null);
    table.addContainerProperty("lholiday", Double.class, null);
    table.addContainerProperty("sholiday", Double.class, null);
    table.addContainerProperty("wdo", Double.class, null);
    table.addContainerProperty("psday", Double.class, null); //paid non-working holiday
    table.addContainerProperty("latesLH", Double.class, null);
    table.addContainerProperty("latesSH", Double.class, null);
    table.addContainerProperty("latesWO", Double.class, null);
    table.addContainerProperty("undertimeLH", Double.class, null);
    table.addContainerProperty("undertimeSH", Double.class, null);
    table.addContainerProperty("undertimeWO", Double.class, null);

    table.setColumnAlignment("date", Table.ALIGN_CENTER);
    table.setColumnAlignment("policy", Table.ALIGN_CENTER);
    table.setColumnAlignment("premium", Table.ALIGN_CENTER);
    table.setColumnAlignment("lates", Table.ALIGN_CENTER);
    table.setColumnAlignment("undertime", Table.ALIGN_CENTER);
    table.setColumnAlignment("overtime", Table.ALIGN_CENTER);
    table.setColumnAlignment("night differential", Table.ALIGN_CENTER);
    table.setColumnAlignment("duty manager", Table.ALIGN_CENTER);
    table.setColumnAlignment("l/min", Table.ALIGN_RIGHT);
    table.setColumnAlignment("u/min", Table.ALIGN_RIGHT);
    table.setColumnAlignment("o/min", Table.ALIGN_RIGHT);
    table.setColumnAlignment("nd/min", Table.ALIGN_RIGHT);
    table.setColumnAlignment("dm/min", Table.ALIGN_RIGHT);
    table.setColumnAlignment("lholiday", Table.ALIGN_RIGHT);
    table.setColumnAlignment("sholiday", Table.ALIGN_RIGHT);
    table.setColumnAlignment("wdo", Table.ALIGN_RIGHT);
    table.setColumnAlignment("psday", Table.ALIGN_RIGHT);
    table.setColumnAlignment("latesLH", Table.ALIGN_RIGHT);
    table.setColumnAlignment("latesSH", Table.ALIGN_RIGHT);
    table.setColumnAlignment("latesWO", Table.ALIGN_RIGHT);
    table.setColumnAlignment("undertimeLH", Table.ALIGN_RIGHT);
    table.setColumnAlignment("undertimeSH", Table.ALIGN_RIGHT);
    table.setColumnAlignment("undertimeWO", Table.ALIGN_RIGHT);

    table.setColumnWidth("date", 70);
    table.setColumnWidth("policy", 125);
    table.setColumnWidth("holidays", 125);
    table.setColumnWidth("premium", 60);
    table.setColumnWidth("lates", 50);
    table.setColumnWidth("undertime", 60);
    table.setColumnWidth("overtime", 50);
    table.setColumnWidth("night differential", 110);
    table.setColumnWidth("duty manager", 80);
    table.setColumnWidth("l/min", 40);
    table.setColumnWidth("u/min", 40);
    table.setColumnWidth("o/min", 40);
    table.setColumnWidth("nd/min", 50);

    table.setColumnCollapsed("latesLH", true);
    table.setColumnCollapsed("latesSH", true);
    table.setColumnCollapsed("latesWO", true);
    table.setColumnCollapsed("undertimeLH", true);
    table.setColumnCollapsed("undertimeSH", true);
    table.setColumnCollapsed("undertimeWO", true);

    final String[] holidayList = { "legal-holiday", "special-holiday" };
    if (getEmploymentWageEntry().equals("monthly")) {
        employmentWage = utilities.roundOffToTwoDecimalPlaces((employmentWage * 12) / 314);
    }

    for (int i = 0; i < dateList.size(); i++) {
        Object itemId = new Integer(i);
        final ComboBox holidays = dropDown.populateAttendanceHolidayDropDownList(new ComboBox());
        holidays.setEnabled(false);
        holidays.setWidth("120px");
        holidays.setNullSelectionAllowed(false);
        holidays.setData(itemId);

        final CheckBox premium = new CheckBox();
        premium.setData(itemId);
        premium.setImmediate(true);

        final TextField lates = new TextField();
        lates.setWidth("100%");
        lates.setValue("0");
        lates.addStyleName("numerical");
        lates.setEnabled(true);
        lates.setData(itemId);
        lates.setImmediate(true);

        final TextField undertime = new TextField();
        undertime.setWidth("100%");
        undertime.setValue("0");
        undertime.addStyleName("numerical");
        undertime.setEnabled(true);
        undertime.setData(itemId);
        undertime.setImmediate(true);

        final TextField overtime = new TextField();
        overtime.setWidth("100%");
        overtime.setValue("0");
        overtime.addStyleName("numerical");
        overtime.setEnabled(true);
        overtime.setData(itemId);
        overtime.setImmediate(true);

        final TextField nightDifferential = new TextField();
        nightDifferential.setWidth("70%");
        nightDifferential.setValue("0");
        nightDifferential.addStyleName("numerical");
        nightDifferential.setEnabled(true);
        nightDifferential.setData(itemId);
        nightDifferential.setImmediate(true);

        final TextField dutyManager = new TextField();
        dutyManager.setWidth("80%");
        dutyManager.setValue("0");
        dutyManager.addStyleName("numerical");
        dutyManager.setEnabled(true);
        dutyManager.setData(itemId);
        dutyManager.setImmediate(true);

        final ComboBox policy = dropDown.populateAttendancePolicyDropDownList(new ComboBox());
        policy.setWidth("120px");
        policy.setNullSelectionAllowed(true);
        policy.setData(itemId);
        policy.addListener(new Property.ValueChangeListener() {

            @Override
            public void valueChange(Property.ValueChangeEvent event) {
                Object itemId = policy.getData();
                Item item = table.getItem(itemId);
                double additionalWorkingDayOffPay = 0;

                holidays.removeAllItems();
                for (String temp : holidayList) {
                    holidays.addItem(temp);
                }

                premium.setValue(false);
                lates.setValue("0");
                undertime.setValue("0");
                overtime.setValue("0");
                nightDifferential.setValue("0");
                item.getItemProperty("l/min").setValue(0.0);
                item.getItemProperty("u/min").setValue(0.0);
                item.getItemProperty("o/min").setValue(0.0);
                item.getItemProperty("nd/min").setValue(0.0);
                item.getItemProperty("dm/min").setValue(0.0);
                item.getItemProperty("sholiday").setValue(0.0);
                item.getItemProperty("lholiday").setValue(0.0);
                item.getItemProperty("wdo").setValue(0.0);
                item.getItemProperty("psday").setValue(0.0);
                item.getItemProperty("psday").setValue(0.0);
                item.getItemProperty("latesLH").setValue(0.0);
                item.getItemProperty("latesSH").setValue(0.0);
                item.getItemProperty("latesWO").setValue(0.0);
                item.getItemProperty("undertimeLH").setValue(0.0);
                item.getItemProperty("undertimeSH").setValue(0.0);
                item.getItemProperty("undertimeWO").setValue(0.0);

                if (event.getProperty().getValue() == null) {
                    holidays.setEnabled(false);
                    lates.setEnabled(true);
                    undertime.setEnabled(true);
                    overtime.setEnabled(true);
                    nightDifferential.setEnabled(true);
                    dutyManager.setEnabled(true);
                } else if (event.getProperty().getValue().equals("holiday")) {
                    holidays.setEnabled(true);
                    lates.setEnabled(false);
                    undertime.setEnabled(false);
                    overtime.setEnabled(false);
                    nightDifferential.setEnabled(false);
                    dutyManager.setEnabled(false);
                } else if (event.getProperty().getValue().equals("working-holiday")) {
                    holidays.setEnabled(true);
                    lates.setEnabled(true);
                    undertime.setEnabled(true);
                    overtime.setEnabled(true);
                    nightDifferential.setEnabled(true);
                    dutyManager.setEnabled(true);
                } else if (event.getProperty().getValue().equals("working-day-off")) {
                    holidays.setEnabled(true);
                    lates.setEnabled(true);
                    undertime.setEnabled(true);
                    overtime.setEnabled(true);
                    nightDifferential.setEnabled(true);
                    dutyManager.setEnabled(true);

                    additionalWorkingDayOffPay = computation.processAdditionalWorkingDayOff(getEmploymentWage(),
                            getEmploymentWageEntry());
                    System.out.println("wdo: " + additionalWorkingDayOffPay);
                    if (getBranch().equals("on-call and trainees")) {
                        item.getItemProperty("wdo")
                                .setValue(utilities.roundOffToTwoDecimalPlaces(getEmploymentWage()));
                    } else {
                        item.getItemProperty("wdo")
                                .setValue(utilities.roundOffToTwoDecimalPlaces(additionalWorkingDayOffPay));
                    }
                } else {
                    holidays.setEnabled(false);
                    lates.setEnabled(false);
                    undertime.setEnabled(false);
                    overtime.setEnabled(false);
                    nightDifferential.setEnabled(false);
                    dutyManager.setEnabled(false);
                }
            }
        });
        policy.setImmediate(true);

        holidays.addListener(new ComboBox.ValueChangeListener() {

            @Override
            public void valueChange(Property.ValueChangeEvent event) {
                Object itemId = holidays.getData();
                Item item = table.getItem(itemId);

                String policyStr = item.getItemProperty("policy").toString();
                double additionalHolidayPay = 0;
                double multiplePremiumPay = 0;
                double additionalWorkingDayOffPay = 0;

                premium.setValue(false);
                lates.setValue("0");
                undertime.setValue("0");
                overtime.setValue("0");
                nightDifferential.setValue("0");
                item.getItemProperty("sholiday").setValue(0.0);
                item.getItemProperty("lholiday").setValue(0.0);
                item.getItemProperty("latesLH").setValue(0.0);
                item.getItemProperty("latesSH").setValue(0.0);
                item.getItemProperty("latesWO").setValue(0.0);
                item.getItemProperty("undertimeLH").setValue(0.0);
                item.getItemProperty("undertimeSH").setValue(0.0);
                item.getItemProperty("undertimeWO").setValue(0.0);

                if (policyStr == null) {
                } else {
                    if (policyStr.equals("working-holiday")) {
                        if (event.getProperty().getValue().equals("legal-holiday")) {
                            additionalHolidayPay = computation.processAdditionalHolidayPay(
                                    event.getProperty().getValue().toString(), getEmploymentWage());
                            item.getItemProperty("lholiday")
                                    .setValue(utilities.roundOffToTwoDecimalPlaces(additionalHolidayPay));
                            item.getItemProperty("sholiday").setValue(0.0);
                        } else {
                            additionalHolidayPay = computation.processAdditionalHolidayPay(
                                    event.getProperty().getValue().toString(), getEmploymentWage());
                            item.getItemProperty("sholiday")
                                    .setValue(utilities.roundOffToTwoDecimalPlaces(additionalHolidayPay));
                            item.getItemProperty("lholiday").setValue(0.0);
                        }
                    } else if (policyStr.equals("holiday")) {
                        if (event.getProperty().getValue().equals("legal-holiday")) {
                            if (getEmploymentWageEntry().equals("daily")) {
                                additionalHolidayPay = computation.processAdditionalHolidayPay(
                                        event.getProperty().getValue().toString(), getEmploymentWage());
                                item.getItemProperty("psday")
                                        .setValue(utilities.roundOffToTwoDecimalPlaces(additionalHolidayPay));
                            } else {
                                item.getItemProperty("psday").setValue(0.0);
                            }
                        } else {
                            item.getItemProperty("psday").setValue(0.0);
                        }
                    } else if (policyStr.equals("working-day-off")) {
                        if (event.getProperty().getValue() == null) {
                            item.getItemProperty("psday").setValue(0.0);
                        } else if (event.getProperty().getValue().equals("legal-holiday")) {
                            additionalWorkingDayOffPay = computation.processAdditionalWorkingDayOff(
                                    getEmploymentWage(), getEmploymentWageEntry());
                            item.getItemProperty("wdo")
                                    .setValue(utilities.roundOffToTwoDecimalPlaces(additionalWorkingDayOffPay));
                            multiplePremiumPay = computation.processMultiplePremiumPay(
                                    event.getProperty().getValue().toString(), getEmploymentWage());
                            item.getItemProperty("lholiday").setValue(multiplePremiumPay);
                            item.getItemProperty("sholiday").setValue(0.0);
                        } else {
                            additionalWorkingDayOffPay = computation.processAdditionalWorkingDayOff(
                                    getEmploymentWage(), getEmploymentWageEntry());
                            item.getItemProperty("wdo")
                                    .setValue(utilities.roundOffToTwoDecimalPlaces(additionalWorkingDayOffPay));
                            multiplePremiumPay = computation.processMultiplePremiumPay(
                                    event.getProperty().getValue().toString(), getEmploymentWage());
                            item.getItemProperty("sholiday").setValue(multiplePremiumPay);
                            item.getItemProperty("lholiday").setValue(0.0);
                        }
                    }
                }
            }
        });
        holidays.setImmediate(true);

        premium.addListener(new Button.ClickListener() {

            @Override
            public void buttonClick(Button.ClickEvent event) {
                Object itemId = lates.getData();
                Item item = table.getItem(itemId);

                lates.setValue("0");
                undertime.setValue("0");
                overtime.setValue("0");
                nightDifferential.setValue("0");
                dutyManager.setValue("0");

                item.getItemProperty("l/min").setValue(0.0);
                item.getItemProperty("u/min").setValue(0.0);
                item.getItemProperty("o/min").setValue(0.0);
                item.getItemProperty("nd/min").setValue(0.0);
                item.getItemProperty("dm/min").setValue(0.0);

                if (event.getButton().booleanValue() == true) {
                    premiumRate = 0.1;
                } else {
                    premiumRate = 0.0;
                }

                item.getItemProperty("wdo")
                        .setValue(utilities.roundOffToTwoDecimalPlaces(
                                Double.parseDouble(item.getItemProperty("wdo").getValue().toString())
                                        + (Double.parseDouble(item.getItemProperty("wdo").getValue().toString())
                                                * premiumRate)));

                item.getItemProperty("lholiday")
                        .setValue(utilities.roundOffToTwoDecimalPlaces(Double
                                .parseDouble(item.getItemProperty("lholiday").getValue().toString())
                                + (Double.parseDouble(item.getItemProperty("lholiday").getValue().toString())
                                        * premiumRate)));

                item.getItemProperty("sholiday")
                        .setValue(utilities.roundOffToTwoDecimalPlaces(Double
                                .parseDouble(item.getItemProperty("sholiday").getValue().toString())
                                + (Double.parseDouble(item.getItemProperty("sholiday").getValue().toString())
                                        * premiumRate)));
            }
        });

        lates.addListener(new FieldEvents.TextChangeListener() {

            @Override
            public void textChange(FieldEvents.TextChangeEvent event) {
                Object itemId = lates.getData();
                Item item = table.getItem(itemId);
                String policyStr = item.getItemProperty("policy").toString();
                String holidayStr = item.getItemProperty("holidays").toString();
                double lateDeduction;

                boolean checkIfInputIsInteger = utilities.checkInputIfInteger(event.getText().trim());
                if (!checkIfInputIsInteger) {
                    getWindow().showNotification("Enter numeric format for lates!",
                            Window.Notification.TYPE_WARNING_MESSAGE);
                    return;
                }

                if (!event.getText().isEmpty()) {
                    if (getBranch().equals("on-call and trainees")) {
                        lateDeduction = computation.processEmployeesLatesForOnCall(policyStr, holidayStr,
                                utilities.convertStringToInteger(event.getText().trim()), getEmploymentWage());
                        item.getItemProperty("l/min")
                                .setValue(utilities.roundOffToTwoDecimalPlaces(lateDeduction));
                    } else {
                        if (utilities.convertStringToInteger(event.getText().trim()) > 5) {
                            lateDeduction = computation.processEmployeesLates(policyStr, holidayStr,
                                    utilities.convertStringToInteger(event.getText().trim()),
                                    getEmploymentWage());
                            if (policyStr == null || policyStr.isEmpty()) {
                                item.getItemProperty("l/min")
                                        .setValue(utilities.roundOffToTwoDecimalPlaces(lateDeduction));
                            } else if (policyStr.equals("working-holiday")
                                    && holidayStr.equals("legal-holiday")) {
                                item.getItemProperty("latesLH")
                                        .setValue(utilities.roundOffToTwoDecimalPlaces(lateDeduction));
                                item.getItemProperty("latesSH").setValue(0.0);
                                item.getItemProperty("latesWO").setValue(0.0);
                                item.getItemProperty("l/min").setValue(0.0);
                            } else if (policyStr.equals("working-holiday")
                                    && holidayStr.equals("special-holiday")) {
                                item.getItemProperty("latesLH").setValue(0.0);
                                item.getItemProperty("latesSH")
                                        .setValue(utilities.roundOffToTwoDecimalPlaces(lateDeduction * 0.3));
                                item.getItemProperty("latesWO").setValue(0.0);
                                if (getEmploymentWageEntry().equals("daily")) {
                                    item.getItemProperty("l/min").setValue(lateDeduction);
                                } else {
                                    item.getItemProperty("l/min").setValue(0.0);
                                }
                            } else if (policyStr.equals("working-day-off")) {
                                item.getItemProperty("latesLH").setValue(0.0);
                                item.getItemProperty("latesSH").setValue(0.0);

                                if (getEmploymentWageEntry().equals("daily")) {
                                    item.getItemProperty("latesWO")
                                            .setValue(utilities.roundOffToTwoDecimalPlaces(lateDeduction * .3));
                                    item.getItemProperty("l/min").setValue(lateDeduction);
                                } else {
                                    item.getItemProperty("latesWO")
                                            .setValue(utilities.roundOffToTwoDecimalPlaces(lateDeduction * .3));
                                    item.getItemProperty("l/min").setValue(0.0);
                                }
                            }
                        } else {
                            item.getItemProperty("l/min").setValue(0.0);
                        }
                    }

                } else {
                    item.getItemProperty("l/min").setValue(0.0);
                }

            }
        });

        undertime.addListener(new FieldEvents.TextChangeListener() {

            @Override
            public void textChange(FieldEvents.TextChangeEvent event) {
                Object itemId = lates.getData();
                Item item = table.getItem(itemId);
                String policyStr = item.getItemProperty("policy").toString();
                String holidayStr = item.getItemProperty("holidays").toString();
                double undertimeDeduction;

                boolean checkIfInputIsInteger = utilities.checkInputIfInteger(event.getText().trim());
                if (!checkIfInputIsInteger) {
                    getWindow().showNotification("Enter numeric format for undertime!",
                            Window.Notification.TYPE_WARNING_MESSAGE);
                    return;
                }

                if (!event.getText().isEmpty()) {
                    if (getBranch().equals("on-call and trainees")) {
                        undertimeDeduction = computation.processEmployeesUndertimeForOnCall(policyStr,
                                holidayStr, utilities.convertStringToInteger(event.getText().trim()),
                                getEmploymentWage());
                        item.getItemProperty("u/min")
                                .setValue(utilities.roundOffToTwoDecimalPlaces(undertimeDeduction));
                    } else {
                        undertimeDeduction = computation.processEmployeesUndertime(policyStr, holidayStr,
                                utilities.convertStringToInteger(event.getText().trim()), getEmploymentWage());
                        if (policyStr == null || policyStr.isEmpty()) {
                            item.getItemProperty("u/min")
                                    .setValue(utilities.roundOffToTwoDecimalPlaces(undertimeDeduction));
                        } else if (policyStr.equals("working-holiday") && holidayStr.equals("legal-holiday")) {
                            item.getItemProperty("undertimeLH")
                                    .setValue(utilities.roundOffToTwoDecimalPlaces(undertimeDeduction));
                            item.getItemProperty("undertimeSH").setValue(0.0);
                            item.getItemProperty("undertimeWO").setValue(0.0);
                            item.getItemProperty("u/min").setValue(0.0);
                        } else if (policyStr.equals("working-holiday")
                                && holidayStr.equals("special-holiday")) {
                            item.getItemProperty("undertimeLH").setValue(0.0);
                            item.getItemProperty("undertimeSH")
                                    .setValue(utilities.roundOffToTwoDecimalPlaces(undertimeDeduction * 0.3));
                            item.getItemProperty("undertimeWO").setValue(0.0);
                            if (getEmploymentWageEntry().equals("daily")) {
                                item.getItemProperty("u/min").setValue(undertimeDeduction);
                            } else {
                                item.getItemProperty("u/min").setValue(0.0);
                            }

                        } else if (policyStr.equals("working-day-off")) {
                            item.getItemProperty("undertimeLH").setValue(0.0);
                            item.getItemProperty("undertimeSH").setValue(0.0);
                            item.getItemProperty("undertimeWO")
                                    .setValue(utilities.roundOffToTwoDecimalPlaces(undertimeDeduction));
                            item.getItemProperty("u/min").setValue(0.0);
                            if (getEmploymentWageEntry().equals("daily")) {
                                item.getItemProperty("undertimeWO").setValue(
                                        utilities.roundOffToTwoDecimalPlaces(undertimeDeduction * .3));
                                item.getItemProperty("u/min").setValue(undertimeDeduction);
                            } else {
                                item.getItemProperty("undertimeWO").setValue(
                                        utilities.roundOffToTwoDecimalPlaces(undertimeDeduction * .3));
                                item.getItemProperty("u/min").setValue(0.0);
                            }
                        }
                    }

                } else {
                    item.getItemProperty("u/min").setValue(0.0);
                }
            }
        });

        overtime.addListener(new FieldEvents.TextChangeListener() {

            @Override
            public void textChange(FieldEvents.TextChangeEvent event) {
                Object itemId = lates.getData();
                Item item = table.getItem(itemId);
                String policyStr = item.getItemProperty("policy").toString();
                String holidayStr = item.getItemProperty("holidays").toString();
                double overtimeAddition;

                boolean checkIfInputIsInteger = utilities.checkInputIfInteger(event.getText().trim());
                if (!checkIfInputIsInteger) {
                    getWindow().showNotification("Enter numeric format for undertime!",
                            Window.Notification.TYPE_WARNING_MESSAGE);
                    return;
                }

                if (!event.getText().isEmpty()) {
                    String branch = getBranch().replaceAll("\\(.*?\\)", "");
                    if (branch.trim().equals("on-call and trainees")) {
                        overtimeAddition = computation.processEmployeesOvertimeForOnCall(policyStr, holidayStr,
                                utilities.convertStringToInteger(event.getText().trim()), getEmploymentWage());
                        item.getItemProperty("o/min")
                                .setValue(utilities.roundOffToTwoDecimalPlaces(overtimeAddition));
                    } else {
                        overtimeAddition = computation.processEmployeesOvertime(policyStr, holidayStr,
                                utilities.convertStringToInteger(event.getText().trim()), getEmploymentWage());
                        item.getItemProperty("o/min").setValue(utilities.roundOffToTwoDecimalPlaces(
                                overtimeAddition + (overtimeAddition * premiumRate)));
                    }

                } else {
                    item.getItemProperty("o/min").setValue(0.0);
                }
            }
        });

        nightDifferential.addListener(new FieldEvents.TextChangeListener() {

            @Override
            public void textChange(FieldEvents.TextChangeEvent event) {
                Object itemId = lates.getData();
                Item item = table.getItem(itemId);
                String policyStr = item.getItemProperty("policy").toString();
                String holidayStr = item.getItemProperty("holidays").toString();
                double nightDifferentialAddition;

                boolean checkIfInputIsInteger = utilities.checkInputIfInteger(event.getText().trim());
                if (!checkIfInputIsInteger) {
                    getWindow().showNotification("Enter numeric format for undertime!",
                            Window.Notification.TYPE_WARNING_MESSAGE);
                    return;
                }

                if (!event.getText().isEmpty()) {
                    if (getBranch().equals("on-call and trainees")) {
                        nightDifferentialAddition = computation.processEmployeesNightDifferentialForOnCall(
                                policyStr, holidayStr, utilities.convertStringToInteger(event.getText().trim()),
                                getEmploymentWage());
                        item.getItemProperty("nd/min").setValue(utilities.roundOffToTwoDecimalPlaces(
                                nightDifferentialAddition + (nightDifferentialAddition * premiumRate)));
                    } else {
                        nightDifferentialAddition = computation.processEmployeesNightDifferential(policyStr,
                                holidayStr, utilities.convertStringToInteger(event.getText().trim()),
                                getEmploymentWage());
                        item.getItemProperty("nd/min").setValue(utilities.roundOffToTwoDecimalPlaces(
                                nightDifferentialAddition + (nightDifferentialAddition * premiumRate)));
                    }

                } else {
                    item.getItemProperty("nd/min").setValue(0.0);
                }
            }
        });

        dutyManager.addListener(new FieldEvents.TextChangeListener() {

            @Override
            public void textChange(FieldEvents.TextChangeEvent event) {
                Object itemId = lates.getData();
                Item item = table.getItem(itemId);
                String policyStr = item.getItemProperty("policy").toString();
                String holidayStr = item.getItemProperty("holidays").toString();
                double dutyManagerAddition;

                boolean checkIfInputIsInteger = utilities.checkInputIfInteger(event.getText().trim());
                if (!checkIfInputIsInteger) {
                    getWindow().showNotification("Enter numeric format for Duty Manager!",
                            Window.Notification.TYPE_WARNING_MESSAGE);
                    return;
                }

                if (!event.getText().isEmpty()) {
                    if (getBranch().equals("on-call and trainees")) {
                        dutyManagerAddition = computation.processEmployeeDutyManagerForOnCall(policyStr,
                                holidayStr, utilities.convertStringToInteger(event.getText().trim()),
                                getEmploymentWage());
                        item.getItemProperty("dm/min")
                                .setValue(utilities.roundOffToTwoDecimalPlaces(dutyManagerAddition));
                    } else {
                        dutyManagerAddition = computation.processEmployeeDutyManager(policyStr, holidayStr,
                                utilities.convertStringToInteger(event.getText().trim()), getEmploymentWage());
                        item.getItemProperty("dm/min")
                                .setValue(utilities.roundOffToTwoDecimalPlaces(dutyManagerAddition));
                    }

                } else {
                    item.getItemProperty("dm/min").setValue(0.0);
                }
            }
        });

        table.addItem(new Object[] { utilities.convertDateFormat(dateList.get(i).toString()), policy, holidays,
                premium, lates, undertime, overtime, nightDifferential, dutyManager, 0.0, 0.0, 0.0, 0.0, 0.0,
                0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, //lates from legal & special holiday 
                0.0, 0.0, 0.0 //undertime from legal & special holiday
        }, i);
    }
    table.setPageLength(table.size());

    vlayout.addComponent(table);

    final Button button = new Button();
    button.setCaption("Save Attendance Data");
    vlayout.addComponent(button);

    for (Object listener : button.getListeners(Button.ClickListener.class)) {
        button.removeListener(Button.ClickListener.class, listener);
    }

    button.addListener(new Button.ClickListener() {

        @Override
        public void buttonClick(Button.ClickEvent event) {
            try {
                Collection attendanceTableCollection = table.getContainerDataSource().getItemIds();
                List<Timekeeping> attendanceList = new ArrayList<Timekeeping>();
                for (int i = 0; i < attendanceTableCollection.size(); i++) {
                    String str = table.getItem(i).toString();
                    String[] attStr = str.split(" ");
                    List<String> tkeepList = new ArrayList<String>(Arrays.asList(attStr));

                    Timekeeping t = new Timekeeping();
                    t.setAttendanceDate(utilities.parsingDate(tkeepList.get(0)));
                    t.setPolicy(tkeepList.get(1));
                    t.setHoliday(tkeepList.get(2));
                    t.setPremium(utilities.convertStringToBoolean(tkeepList.get(3)));
                    t.setLates(utilities.convertStringToDouble(tkeepList.get(4)));
                    t.setUndertime(utilities.convertStringToDouble(tkeepList.get(5)));
                    t.setOvertime(utilities.convertStringToDouble(tkeepList.get(6)));
                    t.setNightDifferential(utilities.convertStringToDouble(tkeepList.get(7)));
                    t.setDutyManager(utilities.convertStringToDouble(tkeepList.get(8)));
                    t.setLateDeduction(utilities.convertStringToDouble(tkeepList.get(9)));
                    t.setUndertimeDeduction(utilities.convertStringToDouble(tkeepList.get(10)));
                    t.setOvertimePaid(utilities.convertStringToDouble(tkeepList.get(11)));
                    t.setNightDifferentialPaid(utilities.convertStringToDouble(tkeepList.get(12)));
                    t.setDutyManagerPaid(utilities.convertStringToDouble(tkeepList.get(13)));
                    t.setLegalHolidayPaid(utilities.convertStringToDouble(tkeepList.get(14)));
                    t.setSpecialHolidayPaid(utilities.convertStringToDouble(tkeepList.get(15)));
                    t.setWorkingDayOffPaid(utilities.convertStringToDouble(tkeepList.get(16)));
                    t.setNonWorkingHolidayPaid(utilities.convertStringToDouble(tkeepList.get(17)));
                    t.setLatesLegalHolidayDeduction(utilities.convertStringToDouble(tkeepList.get(18)));
                    t.setLatesSpecialHolidayDeduction(utilities.convertStringToDouble(tkeepList.get(19)));
                    t.setLatesWorkingDayOffDeduction(utilities.convertStringToDouble(tkeepList.get(20)));
                    t.setUndertimeLegalHolidayDeduction(utilities.convertStringToDouble(tkeepList.get(21)));
                    t.setUndertimeSpecialHolidayDeduction(utilities.convertStringToDouble(tkeepList.get(22)));
                    t.setUndertimeWorkingDayOffDeduction(utilities.convertStringToDouble(tkeepList.get(23)));
                    attendanceList.add(t);
                }

                ProcessPayrollComputation processPayroll = new ProcessPayrollComputation(employeeId,
                        getBranchId());
                processPayroll.initVariables();
                processPayroll.initVariablesForComputation(attendanceList);
                boolean result = processPayroll.processPayrollComputation(payrollDate, payrollPeriod,
                        attendancePeriodFrom, attendancePeriodTo, 0);
                if (result) {
                    close();
                } else {
                    getWindow().showNotification("SQL ERROR");
                }
            } catch (Exception e) {
                e.getMessage();
            }
        }

    });

    return vlayout;
}

From source file:com.openhris.timekeeping.EditAttendanceTableContainerWindow.java

VerticalLayout generateAttendanceTable() {
    VerticalLayout vlayout = new VerticalLayout();
    vlayout.setSizeFull();/*from  w w  w . j ava2 s .co  m*/
    vlayout.setSpacing(true);

    if (getEmploymentWageEntry().equals("monthly")) {
        employmentWage = utilities.roundOffToTwoDecimalPlaces((employmentWage * 12) / 314);
    }

    final Table table = new Table();
    table.removeAllItems();
    table.setEnabled(true);
    table.setWidth("100%");
    table.setImmediate(true);
    table.setColumnCollapsingAllowed(true);

    table.addContainerProperty("edit", CheckBox.class, null);
    table.addContainerProperty("date", String.class, null);
    table.addContainerProperty("policy", String.class, null);
    table.addContainerProperty("holidays", String.class, null);
    table.addContainerProperty("premium", CheckBox.class, null);
    table.addContainerProperty("lates", TextField.class, null);
    table.addContainerProperty("undertime", TextField.class, null);
    table.addContainerProperty("overtime", TextField.class, null);
    table.addContainerProperty("night differential", TextField.class, null);
    table.addContainerProperty("l/min", Double.class, null);
    table.addContainerProperty("u/min", Double.class, null);
    table.addContainerProperty("o/min", Double.class, null);
    table.addContainerProperty("nd/min", Double.class, null);
    table.addContainerProperty("lholiday", Double.class, null);
    table.addContainerProperty("sholiday", Double.class, null);
    table.addContainerProperty("wdo", Double.class, null);
    table.addContainerProperty("psday", Double.class, null); //paid non-working holiday
    table.addContainerProperty("latesLH", Double.class, null);
    table.addContainerProperty("latesSH", Double.class, null);
    table.addContainerProperty("latesWO", Double.class, null);
    table.addContainerProperty("undertimeLH", Double.class, null);
    table.addContainerProperty("undertimeSH", Double.class, null);
    table.addContainerProperty("undertimeWO", Double.class, null);

    table.setColumnAlignment("edit", Table.ALIGN_CENTER);
    table.setColumnAlignment("date", Table.ALIGN_CENTER);
    table.setColumnAlignment("policy", Table.ALIGN_CENTER);
    table.setColumnAlignment("premium", Table.ALIGN_CENTER);
    table.setColumnAlignment("lates", Table.ALIGN_CENTER);
    table.setColumnAlignment("undertime", Table.ALIGN_CENTER);
    table.setColumnAlignment("overtime", Table.ALIGN_CENTER);
    table.setColumnAlignment("night differential", Table.ALIGN_CENTER);
    table.setColumnAlignment("l/min", Table.ALIGN_RIGHT);
    table.setColumnAlignment("u/min", Table.ALIGN_RIGHT);
    table.setColumnAlignment("o/min", Table.ALIGN_RIGHT);
    table.setColumnAlignment("nd/min", Table.ALIGN_RIGHT);
    table.setColumnAlignment("lholiday", Table.ALIGN_RIGHT);
    table.setColumnAlignment("sholiday", Table.ALIGN_RIGHT);
    table.setColumnAlignment("wdo", Table.ALIGN_RIGHT);
    table.setColumnAlignment("psday", Table.ALIGN_RIGHT);
    table.setColumnAlignment("latesLH", Table.ALIGN_RIGHT);
    table.setColumnAlignment("latesSH", Table.ALIGN_RIGHT);
    table.setColumnAlignment("latesWO", Table.ALIGN_RIGHT);
    table.setColumnAlignment("undertimeLH", Table.ALIGN_RIGHT);
    table.setColumnAlignment("undertimeSH", Table.ALIGN_RIGHT);
    table.setColumnAlignment("undertimeWO", Table.ALIGN_RIGHT);

    table.setColumnCollapsed("latesLH", true);
    table.setColumnCollapsed("latesSH", true);
    table.setColumnCollapsed("latesWO", true);
    table.setColumnCollapsed("undertimeLH", true);
    table.setColumnCollapsed("undertimeSH", true);
    table.setColumnCollapsed("undertimeWO", true);

    final String[] holidayList = { "legal-holiday", "special-holiday" };
    for (int i = 0; i < getDateList().size(); i++) {
        Object itemId = new Integer(i);

        final CheckBox edit = new CheckBox();
        edit.setData(i);
        edit.setEnabled(UserAccessControl.isEditAttendance());
        edit.setImmediate(true);

        final CheckBox premium = new CheckBox();
        premium.setData(itemId);
        premium.setEnabled(false);
        premium.setImmediate(true);

        final TextField lates = new TextField();
        lates.setWidth("50px");
        lates.setValue("0");
        lates.setEnabled(true);
        lates.setData(itemId);
        lates.setEnabled(false);
        lates.setImmediate(true);

        final TextField undertime = new TextField();
        undertime.setWidth("50px");
        undertime.setValue("0");
        undertime.setEnabled(true);
        undertime.setData(itemId);
        undertime.setEnabled(false);
        undertime.setImmediate(true);

        final TextField overtime = new TextField();
        overtime.setWidth("50px");
        overtime.setValue("0");
        overtime.setEnabled(true);
        overtime.setData(itemId);
        overtime.setEnabled(false);
        overtime.setImmediate(true);

        final TextField nightDifferential = new TextField();
        nightDifferential.setWidth("50px");
        nightDifferential.setValue("0");
        nightDifferential.setEnabled(true);
        nightDifferential.setData(itemId);
        nightDifferential.setEnabled(false);
        nightDifferential.setImmediate(true);

        edit.addListener(new Button.ClickListener() {

            @Override
            public void buttonClick(Button.ClickEvent event) {
                premium.setEnabled(event.getButton().booleanValue());
                lates.setEnabled(event.getButton().booleanValue());
                undertime.setEnabled(event.getButton().booleanValue());
                overtime.setEnabled(event.getButton().booleanValue());
                nightDifferential.setEnabled(event.getButton().booleanValue());
            }
        });

        premium.addListener(new Button.ClickListener() {

            @Override
            public void buttonClick(Button.ClickEvent event) {
                Object itemId = lates.getData();
                Item item = table.getItem(itemId);

                lates.setValue("0");
                undertime.setValue("0");
                overtime.setValue("0");
                nightDifferential.setValue("0");

                item.getItemProperty("l/min").setValue(0.0);
                item.getItemProperty("u/min").setValue(0.0);
                item.getItemProperty("o/min").setValue(0.0);
                item.getItemProperty("nd/min").setValue(0.0);

                if (event.getButton().booleanValue() == true) {
                    premiumRate = 0.1;
                } else {
                    premiumRate = 0.0;
                }

                item.getItemProperty("wdo")
                        .setValue(utilities.roundOffToTwoDecimalPlaces(
                                Double.parseDouble(item.getItemProperty("wdo").getValue().toString())
                                        + (Double.parseDouble(item.getItemProperty("wdo").getValue().toString())
                                                * premiumRate)));

                item.getItemProperty("lholiday")
                        .setValue(utilities.roundOffToTwoDecimalPlaces(Double
                                .parseDouble(item.getItemProperty("lholiday").getValue().toString())
                                + (Double.parseDouble(item.getItemProperty("lholiday").getValue().toString())
                                        * premiumRate)));

                item.getItemProperty("sholiday")
                        .setValue(utilities.roundOffToTwoDecimalPlaces(Double
                                .parseDouble(item.getItemProperty("sholiday").getValue().toString())
                                + (Double.parseDouble(item.getItemProperty("sholiday").getValue().toString())
                                        * premiumRate)));
            }
        });

        lates.addListener(new FieldEvents.TextChangeListener() {

            @Override
            public void textChange(FieldEvents.TextChangeEvent event) {
                Object itemId = lates.getData();
                Item item = table.getItem(itemId);
                String policyStr = item.getItemProperty("policy").toString();
                String holidayStr = item.getItemProperty("holidays").toString();
                double lateDeduction;

                boolean checkIfInputIsInteger = utilities.checkInputIfInteger(event.getText().trim());
                if (!checkIfInputIsInteger) {
                    getWindow().showNotification("Enter numeric format for lates!",
                            Window.Notification.TYPE_WARNING_MESSAGE);
                    return;
                }

                if (!event.getText().isEmpty()) {
                    if (utilities.convertStringToInteger(event.getText().trim()) > 5) {
                        lateDeduction = computation.processEmployeesLates(policyStr, holidayStr,
                                utilities.convertStringToInteger(event.getText().trim()), getEmploymentWage());
                        if (policyStr == null || policyStr.isEmpty()) {
                            item.getItemProperty("l/min")
                                    .setValue(utilities.roundOffToTwoDecimalPlaces(lateDeduction));
                        } else if (policyStr.equals("working-holiday") && holidayStr.equals("legal-holiday")) {
                            item.getItemProperty("latesLH")
                                    .setValue(utilities.roundOffToTwoDecimalPlaces(lateDeduction));
                            item.getItemProperty("latesSH").setValue(0.0);
                            item.getItemProperty("latesWO").setValue(0.0);
                            item.getItemProperty("l/min").setValue(0.0);
                        } else if (policyStr.equals("working-holiday")
                                && holidayStr.equals("special-holiday")) {
                            item.getItemProperty("latesLH").setValue(0.0);
                            item.getItemProperty("latesSH")
                                    .setValue(utilities.roundOffToTwoDecimalPlaces(lateDeduction));
                            item.getItemProperty("latesWO").setValue(0.0);
                            item.getItemProperty("l/min").setValue(0.0);
                        } else if (policyStr.equals("working-day-off")) {
                            item.getItemProperty("latesLH").setValue(0.0);
                            item.getItemProperty("latesSH").setValue(0.0);
                            item.getItemProperty("latesWO")
                                    .setValue(utilities.roundOffToTwoDecimalPlaces(lateDeduction));
                            item.getItemProperty("l/min").setValue(0.0);
                        }
                    } else {
                        item.getItemProperty("l/min").setValue(0.0);
                    }
                } else {
                    item.getItemProperty("l/min").setValue(0.0);
                }

            }
        });

        undertime.addListener(new FieldEvents.TextChangeListener() {

            @Override
            public void textChange(FieldEvents.TextChangeEvent event) {
                Object itemId = lates.getData();
                Item item = table.getItem(itemId);
                String policyStr = item.getItemProperty("policy").toString();
                String holidayStr = item.getItemProperty("holidays").toString();
                double undertimeDeduction;

                boolean checkIfInputIsInteger = utilities.checkInputIfInteger(event.getText().trim());
                if (!checkIfInputIsInteger) {
                    getWindow().showNotification("Enter numeric format for undertime!",
                            Window.Notification.TYPE_WARNING_MESSAGE);
                    return;
                }

                if (!event.getText().isEmpty()) {
                    undertimeDeduction = computation.processEmployeesUndertime(policyStr, holidayStr,
                            utilities.convertStringToInteger(event.getText().trim()), getEmploymentWage());
                    if (policyStr == null || policyStr.isEmpty()) {
                        item.getItemProperty("u/min")
                                .setValue(utilities.roundOffToTwoDecimalPlaces(undertimeDeduction));
                    } else if (policyStr.equals("working-holiday") && holidayStr.equals("legal-holiday")) {
                        item.getItemProperty("undertimeLH")
                                .setValue(utilities.roundOffToTwoDecimalPlaces(undertimeDeduction));
                        item.getItemProperty("undertimeSH").setValue(0.0);
                        item.getItemProperty("undertimeWO").setValue(0.0);
                        item.getItemProperty("u/min").setValue(0.0);
                    } else if (policyStr.equals("working-holiday") && holidayStr.equals("special-holiday")) {
                        item.getItemProperty("undertimeLH").setValue(0.0);
                        item.getItemProperty("undertimeSH")
                                .setValue(utilities.roundOffToTwoDecimalPlaces(undertimeDeduction));
                        item.getItemProperty("undertimeWO").setValue(0.0);
                        item.getItemProperty("u/min").setValue(0.0);
                    } else if (policyStr.equals("working-day-off")) {
                        item.getItemProperty("undertimeLH").setValue(0.0);
                        item.getItemProperty("undertimeSH").setValue(0.0);
                        item.getItemProperty("undertimeWO")
                                .setValue(utilities.roundOffToTwoDecimalPlaces(undertimeDeduction));
                        item.getItemProperty("u/min").setValue(0.0);
                    }
                } else {
                    item.getItemProperty("u/min").setValue(0.0);
                }
            }
        });

        overtime.addListener(new FieldEvents.TextChangeListener() {

            @Override
            public void textChange(FieldEvents.TextChangeEvent event) {
                Object itemId = lates.getData();
                Item item = table.getItem(itemId);
                String policyStr = item.getItemProperty("policy").toString();
                String holidayStr = item.getItemProperty("holidays").toString();
                double overtimeAddition;

                boolean checkIfInputIsInteger = utilities.checkInputIfInteger(event.getText().trim());
                if (!checkIfInputIsInteger) {
                    getWindow().showNotification("Enter numeric format for undertime!",
                            Window.Notification.TYPE_WARNING_MESSAGE);
                    return;
                }

                if (!event.getText().isEmpty()) {
                    overtimeAddition = computation.processEmployeesOvertime(policyStr, holidayStr,
                            Integer.parseInt(event.getText().trim()), getEmploymentWage());
                    item.getItemProperty("o/min").setValue(utilities
                            .roundOffToTwoDecimalPlaces(overtimeAddition + (overtimeAddition * premiumRate)));
                } else {
                    item.getItemProperty("o/min").setValue(0.0);
                }
            }
        });

        nightDifferential.addListener(new FieldEvents.TextChangeListener() {

            @Override
            public void textChange(FieldEvents.TextChangeEvent event) {
                Object itemId = lates.getData();
                Item item = table.getItem(itemId);
                String policyStr = item.getItemProperty("policy").toString();
                String holidayStr = item.getItemProperty("holidays").toString();
                double nightDifferentialAddition;

                boolean checkIfInputIsInteger = utilities.checkInputIfInteger(event.getText().trim());
                if (!checkIfInputIsInteger) {
                    getWindow().showNotification("Enter numeric format for undertime!",
                            Window.Notification.TYPE_WARNING_MESSAGE);
                    return;
                }

                if (!event.getText().isEmpty()) {
                    nightDifferentialAddition = computation.processEmployeesNightDifferential(policyStr,
                            holidayStr, Integer.parseInt(event.getText().trim()), getEmploymentWage());
                    item.getItemProperty("nd/min").setValue(utilities.roundOffToTwoDecimalPlaces(
                            nightDifferentialAddition + (nightDifferentialAddition * premiumRate)));
                } else {
                    item.getItemProperty("nd/min").setValue(0.0);
                }
            }
        });

        List<Timekeeping> timekeepingListByRowData = timekeepingService.getTimekeepingRowData(
                utilities.convertDateFormat(getDateList().get(i).toString()), getPayrollId());

        for (Timekeeping t : timekeepingListByRowData) {
            String policy;
            String holiday;
            if (!t.getPolicy().equals("null")) {
                policy = t.getPolicy();
            } else {
                policy = "";
            }

            if (!t.getHoliday().equals("null")) {
                holiday = t.getHoliday();
            } else {
                holiday = "";
            }

            premium.setValue(t.isPremium());

            lates.setValue(t.getLates());
            undertime.setValue(t.getUndertime());
            overtime.setValue(t.getOvertime());
            nightDifferential.setValue(t.getNightDifferential());
            table.addItem(
                    new Object[] { edit, utilities.convertDateFormat(getDateList().get(i).toString()), policy,
                            holiday, premium, lates, undertime, overtime, nightDifferential,
                            t.getLateDeduction(), t.getUndertimeDeduction(), t.getOvertimePaid(),
                            t.getNightDifferentialPaid(), t.getLegalHolidayPaid(), t.getSpecialHolidayPaid(),
                            t.getWorkingDayOffPaid(), t.getNonWorkingHolidayPaid(),
                            t.getLatesLegalHolidayDeduction(), t.getLatesSpecialHolidayDeduction(),
                            t.getLatesWorkingDayOffDeduction(), t.getUndertimeLegalHolidayDeduction(),
                            t.getUndertimeSpecialHolidayDeduction(), t.getUndertimeWorkingDayOffDeduction() },
                    new Integer(i));
        }
    }
    table.setPageLength(table.size());

    for (Object listener : table.getListeners(ItemClickEvent.class)) {
        table.removeListener(ItemClickEvent.class, listener);
    }

    table.addListener(new ItemClickEvent.ItemClickListener() {

        @Override
        public void itemClick(ItemClickEvent event) {
            final Object itemId = event.getItemId();
            final Item item = table.getItem(itemId);

            Boolean editRow = Boolean.valueOf(item.getItemProperty("edit").getValue().toString());

            if (event.getPropertyId().equals("policy")) {
                if (editRow) {
                    Window sub = new AttendancePolicyWindow(holidayList, item, getEmploymentWageEntry(),
                            getEmploymentWage());
                    if (sub.getParent() == null) {
                        getApplication().getMainWindow().addWindow(sub);
                    }
                } else {
                    getWindow().showNotification("Click Edit!", Window.Notification.TYPE_WARNING_MESSAGE);
                }
            }
        }
    });

    vlayout.addComponent(table);

    final Button saveButton = new Button();
    saveButton.setWidth("200px");
    saveButton.setCaption("UPDATE ATTENDANCE DATA");
    saveButton.setEnabled(UserAccessControl.isEditAttendance());

    for (Object listener : saveButton.getListeners(Button.ClickListener.class)) {
        saveButton.removeListener(Button.ClickListener.class, listener);
    }

    GridLayout glayout = new GridLayout(2, 1);
    glayout.setSizeFull();
    glayout.setSpacing(true);

    saveButton.addListener(new Button.ClickListener() {

        @Override
        public void buttonClick(Button.ClickEvent event) {
            try {
                Collection attendanceTableCollection = table.getContainerDataSource().getItemIds();
                List<Timekeeping> attendanceList = new ArrayList<>();
                Iterator iterator = attendanceTableCollection.iterator();
                while (iterator.hasNext()) {
                    String str = table.getItem(iterator.next()).toString();
                    String[] attStr = str.split(" ");
                    List<String> tkeepList = new ArrayList<>(Arrays.asList(attStr));

                    Timekeeping t = new Timekeeping();
                    t.setAttendanceDate(utilities.parsingDate(tkeepList.get(1)));
                    t.setPolicy(tkeepList.get(2));
                    t.setHoliday(tkeepList.get(3));
                    t.setPremium(utilities.convertStringToBoolean(tkeepList.get(4)));
                    t.setLates(utilities.convertStringToDouble(tkeepList.get(5)));
                    t.setUndertime(utilities.convertStringToDouble(tkeepList.get(6)));
                    t.setOvertime(utilities.convertStringToDouble(tkeepList.get(7)));
                    t.setNightDifferential(utilities.convertStringToDouble(tkeepList.get(8)));
                    t.setLateDeduction(utilities.convertStringToDouble(tkeepList.get(9)));
                    t.setUndertimeDeduction(utilities.convertStringToDouble(tkeepList.get(10)));
                    t.setOvertimePaid(utilities.convertStringToDouble(tkeepList.get(11)));
                    t.setNightDifferentialPaid(utilities.convertStringToDouble(tkeepList.get(12)));
                    t.setLegalHolidayPaid(utilities.convertStringToDouble(tkeepList.get(13)));
                    t.setSpecialHolidayPaid(utilities.convertStringToDouble(tkeepList.get(14)));
                    t.setWorkingDayOffPaid(utilities.convertStringToDouble(tkeepList.get(15)));
                    t.setNonWorkingHolidayPaid(utilities.convertStringToDouble(tkeepList.get(16)));
                    t.setLatesLegalHolidayDeduction(utilities.convertStringToDouble(tkeepList.get(17)));
                    t.setLatesSpecialHolidayDeduction(utilities.convertStringToDouble(tkeepList.get(18)));
                    t.setLatesWorkingDayOffDeduction(utilities.convertStringToDouble(tkeepList.get(19)));
                    t.setUndertimeLegalHolidayDeduction(utilities.convertStringToDouble(tkeepList.get(20)));
                    t.setUndertimeSpecialHolidayDeduction(utilities.convertStringToDouble(tkeepList.get(21)));
                    t.setUndertimeWorkingDayOffDeduction(utilities.convertStringToDouble(tkeepList.get(22)));
                    attendanceList.add(t);
                }

                ProcessPayrollComputation processPayroll = new ProcessPayrollComputation(getEmployeeId(),
                        getBranchId());
                processPayroll.initVariables();
                processPayroll.initVariablesForComputation(attendanceList);
                boolean result = processPayroll.processPayrollComputation(payrollDate, payrollPeriod,
                        attendancePeriodFrom, attendancePeriodTo, getPayrollId());
                if (result) {
                    close();
                } else {
                    getWindow().showNotification("SQL ERROR");
                }
            } catch (Exception e) {
                e.getMessage();
            }
        }

    });
    glayout.addComponent(saveButton, 0, 0);
    glayout.setComponentAlignment(saveButton, Alignment.MIDDLE_LEFT);
    //        vlayout.addComponent(saveButton);

    Button printButton = new Button("PRINT ATTENDANCE");
    printButton.setWidth("200px");
    printButton.addListener(new Button.ClickListener() {

        @Override
        public void buttonClick(Button.ClickEvent event) {
            OpenHrisReports reports = new OpenHrisReports(0, null);
            String fileName = "IndividualAttendanceReport_";
            reports.deleteFile(fileName);
            Window reportWindow = new IndividualAttendanceReport(getPayrollId(), getApplication());
        }
    });
    glayout.addComponent(printButton, 1, 0);
    glayout.setComponentAlignment(printButton, Alignment.MIDDLE_RIGHT);

    vlayout.addComponent(glayout);

    return vlayout;
}