org.milleni.dunning.ui.prcstart.TaskViewPanel.java Source code

Java tutorial

Introduction

Here is the source code for org.milleni.dunning.ui.prcstart.TaskViewPanel.java

Source

/* Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.milleni.dunning.ui.prcstart;

import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

import org.activiti.engine.IdentityService;
import org.activiti.engine.ManagementService;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl;
import org.activiti.engine.management.TableMetaData;
import org.activiti.engine.management.TablePageQuery;
import org.activiti.engine.runtime.Execution;
import org.activiti.explorer.ExplorerApp;
import org.activiti.explorer.I18nManager;
import org.activiti.explorer.Messages;
import org.activiti.explorer.NotificationManager;
import org.activiti.explorer.data.LazyLoadingContainer;
import org.activiti.explorer.data.LazyLoadingQuery;
import org.activiti.explorer.data.MapItem;
import org.activiti.explorer.identity.LoggedInUser;
import org.activiti.explorer.ui.Images;
import org.activiti.explorer.ui.custom.DetailPanel;
import org.activiti.explorer.ui.mainlayout.ExplorerLayout;
import org.activiti.explorer.ui.management.db.TableDataQuery;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.CellStyle;
import org.milleni.dunning.datamodel.dao.DunningProcessMasterRepository;
import org.milleni.dunning.datamodel.model.Customer;
import org.milleni.dunning.datamodel.model.DunningPolicy;
import org.milleni.dunning.datamodel.model.DunningProcessDetail;
import org.milleni.dunning.datamodel.model.DunningProcessMaster;
import org.milleni.dunning.datamodel.model.ProcessSteps;
import org.milleni.dunning.datamodel.util.Constants;
import org.milleni.dunning.datamodel.util.DaoHelper;
import org.milleni.dunning.ui.customer.component.DunningStepTableComponent;
import org.milleni.dunning.ui.customer.form.ProcessDetailPopupWindow;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;

import com.vaadin.addon.tableexport.ExcelExport;
import com.vaadin.data.Item;
import com.vaadin.data.Property;
import com.vaadin.data.Property.ValueChangeEvent;
import com.vaadin.data.Property.ValueChangeListener;
import com.vaadin.data.util.BeanItemContainer;
import com.vaadin.terminal.ThemeResource;
import com.vaadin.ui.Alignment;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Button.ClickListener;
import com.vaadin.ui.CheckBox;
import com.vaadin.ui.ComboBox;
import com.vaadin.ui.DateField;
import com.vaadin.ui.Embedded;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.Label;
import com.vaadin.ui.Table;
import com.vaadin.ui.TextArea;
import com.vaadin.ui.VerticalLayout;
import com.vaadin.ui.themes.BaseTheme;
import com.vaadin.ui.themes.Reindeer;

public class TaskViewPanel extends DetailPanel {

    @Autowired
    DunningProcessMasterRepository dunningProcessMasterRepository;

    private static final long serialVersionUID = 1L;

    protected transient IdentityService identityService;
    protected I18nManager i18nManager;

    protected ProcessEngineConfigurationImpl engineConfiguration;
    protected VerticalLayout panelLayout;
    protected HorizontalLayout detailLayout;

    protected HorizontalLayout queryActionLayout;
    protected VerticalLayout queryLayout;
    protected VerticalLayout actionLayout;
    protected TextArea textArea;
    protected CheckBox check = null;
    private ComboBox taskDefCombo;
    private LoggedInUser loggedInUser;
    protected RuntimeService runtimeService;
    private Label lblEntityCount;

    protected NotificationManager notificationManager;

    private ManagementService managementService;

    private String tableName = "DUNNING_MANUAL_CHANGE";

    private Table lastChangesTable;

    private static List<TaskDefObject> taskDefs = new ArrayList<TaskDefObject>();
    private TaskDefObject selectedTaskDef = null;

    public TaskViewPanel() {
        taskDefs.add(new TaskDefObject("taskYasal", "Finans Kontrol"));
        taskDefs.add(new TaskDefObject("taskYasalProblemli", "Finans Yasal Oncesi Problemli Aboneler"));

        runtimeService = ProcessEngines.getDefaultProcessEngine().getRuntimeService();
        this.i18nManager = ExplorerApp.get().getI18nManager();
        loggedInUser = ExplorerApp.get().getLoggedInUser();
        this.notificationManager = ExplorerApp.get().getNotificationManager();
        this.managementService = ProcessEngines.getDefaultProcessEngine().getManagementService();
        this.dunningProcessMasterRepository = DaoHelper.getInstance().getDunningProcessMasterRepository();
        init();
    }

    protected void init() {
        setSizeFull();
        addStyleName(Reindeer.PANEL_LIGHT);

        initPageTitle();
        initDatabaseSettingsDetails();
        //addDunningProcessMaster();
    }

    protected void initPageTitle() {
        HorizontalLayout layout = createHorizontalLayout();
        addDetailComponent(layout);

        Embedded databaseImage = new Embedded(null, Images.DATABASE_50);
        layout.addComponent(databaseImage);

        Label groupName = new Label("Task Durum Sorgula");
        groupName.setSizeUndefined();
        groupName.addStyleName(Reindeer.LABEL_H2);
        layout.addComponent(groupName);
        layout.setComponentAlignment(groupName, Alignment.MIDDLE_LEFT);
        layout.setExpandRatio(groupName, 1.0f);

        BeanItemContainer<DunningPolicy> objects = new BeanItemContainer(TaskDefObject.class, taskDefs);

        taskDefCombo = new ComboBox("Tasklar", objects);
        taskDefCombo.setItemCaptionPropertyId("desc");

        taskDefCombo.addListener(new ValueChangeListener() {
            @Override
            public void valueChange(ValueChangeEvent event) {
                selectedTaskDef = (TaskDefObject) event.getProperty().getValue();
            }
        });

    }

    private HorizontalLayout createHorizontalLayout() {
        HorizontalLayout layout = new HorizontalLayout();
        layout.setWidth(100, UNITS_PERCENTAGE);
        layout.addStyleName(ExplorerLayout.STYLE_TITLE_BLOCK);
        layout.setSpacing(true);
        layout.setMargin(false, false, true, false);
        return layout;
    }

    protected void initDatabaseSettingsDetails() {
        Label settingsHeader = new Label("");
        settingsHeader.addStyleName(ExplorerLayout.STYLE_H3);
        settingsHeader.addStyleName(ExplorerLayout.STYLE_DETAIL_BLOCK);

        addDetailComponent(settingsHeader);

        detailLayout = new HorizontalLayout();
        detailLayout.setSpacing(true);
        detailLayout.setMargin(true, false, true, false);
        addDetailComponent(detailLayout);

        initSettingsProperties();
    }

    protected void initSettingsProperties() {
        detailLayout.setMargin(true, true, true, false);
        panelLayout = new VerticalLayout();
        detailLayout.addComponent(panelLayout);

        queryActionLayout = createHorizontalLayout();
        panelLayout.addComponent(queryActionLayout);

        queryLayout = new VerticalLayout();
        queryLayout.setSpacing(true);
        actionLayout = new VerticalLayout();
        actionLayout.setSpacing(true);
        queryActionLayout.addComponent(queryLayout);
        queryActionLayout.addComponent(actionLayout);

        panelLayout.setSpacing(true);

        queryLayout.addComponent(taskDefCombo);

        Button cmdRetrieve = new Button("Getir");

        final Button cmdRetrieveCustomers = new Button("Sonuclari Getir");

        lblEntityCount = new Label("Kayit Sayisi");
        lblEntityCount.addStyleName(ExplorerLayout.STYLE_H3);
        lblEntityCount.addStyleName(ExplorerLayout.STYLE_DETAIL_BLOCK);

        cmdRetrieveCustomers.setIcon(Images.EXECUTE);
        cmdRetrieve.setIcon(Images.EXECUTE);
        cmdRetrieve.addListener(new ClickListener() {
            private static final long serialVersionUID = 1L;

            public void buttonClick(ClickEvent event) {
                long entityCount = runtimeService.createNativeExecutionQuery().sql(
                        "SELECT count([PROC_INST_ID_])  FROM [dunning_migration].[dbo].[ACT_RU_TASK] where [TASK_DEF_KEY_] ='taskYasalProblemli'")
                        .count();
                lblEntityCount.setValue(entityCount);
                if (entityCount > 0) {
                    queryLayout.addComponent(cmdRetrieveCustomers);
                } else {
                    queryLayout.removeComponent(cmdRetrieveCustomers);
                }
            }
        });

        cmdRetrieveCustomers.addListener(new ClickListener() {
            private static final long serialVersionUID = 1L;

            public void buttonClick(ClickEvent event) {
                try {
                    addDunningProcessMaster();
                } catch (Exception ex) {
                    notificationManager.showErrorNotification("Hata", "" + ex.getMessage());
                }
            }
        });
        queryLayout.addComponent(cmdRetrieve);
        queryLayout.addComponent(lblEntityCount);

    }

    protected void addDunningProcessMaster() {

        List<Object[]> objects = dunningProcessMasterRepository.listTaskAndProcDefs();

        // dunningProcessLayout.addComponent(tasksHeader);

        lastChangesTable = new Table();
        lastChangesTable.addStyleName(ExplorerLayout.STYLE_PROCESS_INSTANCE_TASK_LIST);
        lastChangesTable.setWidth(100, UNITS_PERCENTAGE);
        lastChangesTable.setHeight(250, UNITS_PIXELS);
        lastChangesTable.setEditable(false);
        lastChangesTable.setImmediate(true);
        lastChangesTable.setSelectable(true);
        lastChangesTable.setNullSelectionAllowed(false);
        lastChangesTable.setSortDisabled(true);

        lastChangesTable.addContainerProperty("CustomerId", String.class, null, "Musteri", null, Table.ALIGN_LEFT);
        lastChangesTable.addContainerProperty("Desc", String.class, null, "Durum", null, Table.ALIGN_LEFT);

        for (Object[] obj : objects) {
            Object newItemId = lastChangesTable.addItem();
            Item row1 = lastChangesTable.getItem(newItemId);
            row1.getItemProperty("CustomerId").setValue(obj[0]);
            row1.getItemProperty("Desc").setValue(obj[1]);
        }

        /*
        List<Map<String, Object>> rows = query.toArray();
         List<Item> items = new ArrayList<Item>();
         for (Map<String, Object> row : query) {
        Item tbItem = lastChangesTable.addItem(row);
        HashMap<String, Object> newRow = new HashMap<String, Object>();
        System.out.println(newRow);
         }
         panelLayout.addComponent(lastChangesTable);
         */

        final ThemeResource export = new ThemeResource("../images/table-excel.png");
        final Button excelExportButton = new Button();
        excelExportButton.setIcon(export);
        excelExportButton.setStyleName(BaseTheme.BUTTON_LINK);

        excelExportButton.addListener(new ClickListener() {
            private static final long serialVersionUID = -73954695086117200L;
            private ExcelExport excelExport;

            public void buttonClick(final ClickEvent event) {
                excelExport = new ExcelExport(lastChangesTable);
                excelExport.excludeCollapsedColumns();
                excelExport.setDisplayTotals(false);
                excelExport.setRowHeaders(true);
                CellStyle cs = excelExport.getTitleStyle();
                cs.setFillBackgroundColor(HSSFColor.GREY_25_PERCENT.index);
                excelExport.setTitleStyle(cs);
                excelExport.setDoubleDataFormat("0.00");
                excelExport.setExcelFormatOfProperty("konto", "0");
                excelExport.export();
            }
        });

        panelLayout.addComponent(excelExportButton);
        panelLayout.addComponent(lastChangesTable);
    }

}