com.hilotec.elexis.messwerte.v2.views.ExportDialog.java Source code

Java tutorial

Introduction

Here is the source code for com.hilotec.elexis.messwerte.v2.views.ExportDialog.java

Source

/*******************************************************************************
 * 
 * The authorship of this code and the accompanying materials is held by 
 * medshare GmbH, Switzerland. All rights reserved. 
 * http://medshare.net
 * 
 * This code and the accompanying materials are made available under 
 * the terms of the Eclipse Public License v1.0
 * 
 * Year of publication: 2012
 * 
 *******************************************************************************/

package com.hilotec.elexis.messwerte.v2.views;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Cursor;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.layout.RowData;
import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;

import ch.elexis.data.Patient;
import ch.elexis.data.Query;
import ch.rgw.tools.TimeTool;

import com.hilotec.elexis.messwerte.v2.data.ExportData;
import com.tiff.common.ui.datepicker.DatePickerCombo;

public class ExportDialog extends Dialog {

    private ExportData expData;
    private Text patNumberFrom;
    private Text patNumberTo;
    private DatePickerCombo dateFrom;
    private DatePickerCombo dateTo;
    private Button btnPatAll;
    private Button btnPatFromTo;
    private Button btnDateAll;
    private Button btnDateFromTo;
    private final Shell parent;
    private int patNrMin = -1;
    private int patNrMax = -1;

    public ExportDialog(Shell parent) {
        super(parent);
        this.parent = parent;
        // TODO Auto-generated constructor stub
    }

    /**
     * @wbp.parser.constructor
     */
    public ExportDialog(Shell parent, ExportData exportData) {
        super(parent);
        this.parent = parent;
        expData = exportData;

    }

    @Override
    protected Control createDialogArea(Composite parent) {
        Composite composite = (Composite) super.createDialogArea(parent);
        composite.setLayout(new GridLayout(1, true));

        Label lblPatient = new Label(composite, SWT.NONE);
        lblPatient.setText(Messages.ExportDialog_lblPatient);

        Composite compPatient = new Composite(composite, SWT.NONE);
        compPatient.setLayout(new RowLayout(SWT.HORIZONTAL));

        btnPatAll = new Button(compPatient, SWT.RADIO);
        btnPatAll.setLayoutData(new RowData(110, SWT.DEFAULT));
        btnPatAll.setText(Messages.ExportDialog_btnPatAll);

        btnPatFromTo = new Button(compPatient, SWT.RADIO);
        btnPatFromTo.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                if (btnPatFromTo.getSelection()) {
                    patNumberFrom.setEnabled(true);
                    patNumberTo.setEnabled(true);
                    patNumberFrom.setText(Integer.toString(expData.getPatientNumberFrom()));
                    patNumberTo.setText(Integer.toString(expData.getPatientNumberTo()));
                } else {
                    patNumberFrom.setEnabled(false);
                    patNumberTo.setEnabled(false);
                    if (patNrMin == -1 || patNrMax == -1) {
                        calcMinMaxPatNumbers();
                    }
                    patNumberFrom.setText(Integer.toString(patNrMin));
                    patNumberTo.setText(Integer.toString(patNrMax));
                }
            }
        });
        btnPatFromTo.setLayoutData(new RowData(140, SWT.DEFAULT));
        btnPatFromTo.setText(Messages.ExportDialog_btnPatFromTo);
        btnPatFromTo.setSelection(true);
        // btnPatFromTo.addListener(eventType, new Lis)

        patNumberFrom = new Text(compPatient, SWT.BORDER | SWT.RIGHT);
        patNumberFrom.setLayoutData(new RowData(74, SWT.DEFAULT));
        patNumberFrom.setText(Integer.toString(expData.getPatientNumberFrom()));

        Label lblPatTo = new Label(compPatient, SWT.CENTER);
        lblPatTo.setLayoutData(new RowData(30, SWT.DEFAULT));
        lblPatTo.setText(Messages.ExportDialog_lblPatTo);

        patNumberTo = new Text(compPatient, SWT.BORDER | SWT.RIGHT);
        patNumberTo.setLayoutData(new RowData(74, SWT.DEFAULT));
        patNumberTo.setText(Integer.toString(expData.getPatientNumberTo()));

        Label lblDate = new Label(composite, SWT.NONE);
        lblDate.setText(Messages.ExportDialog_lblDate);

        Composite compDate = new Composite(composite, SWT.NONE);
        compDate.setLayout(new RowLayout(SWT.HORIZONTAL));

        btnDateAll = new Button(compDate, SWT.RADIO);
        btnDateAll.setLayoutData(new RowData(110, SWT.DEFAULT));
        btnDateAll.setSelection(true);
        btnDateAll.setText(Messages.ExportDialog_btnDateAll);

        btnDateFromTo = new Button(compDate, SWT.RADIO);
        btnDateFromTo.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                if (btnDateFromTo.getSelection()) {
                    dateFrom.setEnabled(true);
                    dateTo.setEnabled(true);
                    dateFrom.setDate(expData.getDateFrom().getTime());
                    dateTo.setDate(expData.getDateTo().getTime());
                } else {
                    dateFrom.setEnabled(false);
                    dateTo.setEnabled(false);
                    expData.setDateFrom(new TimeTool(dateFrom.getDate().getTime()));
                    expData.setDateTo(new TimeTool(dateTo.getDate().getTime()));
                    dateFrom.setDate(null);
                    dateTo.setDate(null);
                }
            }
        });
        btnDateFromTo.setLayoutData(new RowData(140, SWT.DEFAULT));
        btnDateFromTo.setText(Messages.ExportDialog_btnDateFromTo);
        btnDateFromTo.setSelection(false);

        TimeTool date = new TimeTool();
        expData.setDateFrom(date);
        expData.setDateTo(date);

        dateFrom = new DatePickerCombo(compDate, SWT.BORDER);
        dateFrom.setEnabled(false);
        dateFrom.setLayoutData(new RowData(60, SWT.DEFAULT));
        dateFrom.setFormat(new SimpleDateFormat("dd.MM.yyyy")); //$NON-NLS-1$

        Label lblDatetTo = new Label(compDate, SWT.CENTER);
        lblDatetTo.setLayoutData(new RowData(30, SWT.DEFAULT));
        lblDatetTo.setText(Messages.ExportDialog_lblDateTo);

        dateTo = new DatePickerCombo(compDate, SWT.BORDER);
        dateTo.setEnabled(false);
        dateTo.setLayoutData(new RowData(60, SWT.DEFAULT));
        dateTo.setFormat(new SimpleDateFormat("dd.MM.yyyy")); //$NON-NLS-1$

        return composite;
    }

    @Override
    protected void okPressed() {
        try {
            if (btnPatFromTo.getSelection()) {
                int from = Integer.parseInt(patNumberFrom.getText());
                int to = Integer.parseInt(patNumberTo.getText());
                if (to < from) {
                    throw new Exception(Messages.ExportDialog_Exception_PatNumber);
                }
                expData.setPatientNumberFrom(from);
                expData.setPatientNumberTo(to);
            } else {
                if (patNrMin == -1 || patNrMax == -1) {
                    calcMinMaxPatNumbers();
                }

                expData.setPatientNumberFrom(patNrMin);
                expData.setPatientNumberTo(patNrMax);
            }

            if (btnDateFromTo.getSelection()) {
                Date from = dateFrom.getDate();
                Date to = dateTo.getDate();
                if (to.before(from)) {
                    throw new Exception(Messages.ExportDialog_Exception_Datum);
                }

                expData.setDateFrom(new TimeTool(from.getTime()));
                expData.setDateTo(new TimeTool(to.getTime()));
                expData.setCheckDate(true);

            } else {
                expData.setDateFrom(new TimeTool(TimeTool.BEGINNING_OF_UNIX_EPOCH));
                expData.setDateTo(new TimeTool(TimeTool.END_OF_UNIX_EPOCH));
                expData.setCheckDate(false);
            }

            close();
        } catch (Exception e) {
            MessageDialog md = new MessageDialog(parent, Messages.ExportDialog_ExceptionDialog, null,
                    e.getMessage(), MessageDialog.WARNING, new String[] { "Ok" //$NON-NLS-1$
                    }, 0);
            md.open();
        }
    }

    @Override
    protected void configureShell(Shell newShell) {
        super.configureShell(newShell);
        newShell.setText(Messages.ExportDialog_CSV_Export);
    }

    private void calcMinMaxPatNumbers() {
        this.getShell().setCursor(new Cursor(Display.getCurrent(), SWT.CURSOR_WAIT));
        Query<Patient> qpat = new Query<Patient>(Patient.class);
        qpat.add(Patient.FLD_PATID, Query.NOT_EQUAL, ""); //$NON-NLS-1$
        List<Patient> listPatient = qpat.execute();
        if (listPatient != null) {
            int minPatNr = Integer.MAX_VALUE;
            int maxPatNr = 0;
            for (Patient patient : listPatient) {
                int patNr = Integer.parseInt(patient.getPatCode());
                if (patNr < minPatNr) {
                    minPatNr = patNr;
                }
                if (patNr > maxPatNr) {
                    maxPatNr = patNr;
                }
            }
            patNrMin = minPatNr;
            patNrMax = maxPatNr;
        } else {
            patNrMin = -1;
            patNrMax = -1;
        }
        this.getShell().setCursor(null);
    }
}