at.rc.tacos.client.providers.JournalViewLabelProvider.java Source code

Java tutorial

Introduction

Here is the source code for at.rc.tacos.client.providers.JournalViewLabelProvider.java

Source

/*******************************************************************************
 * Copyright (c) 2008, 2009 Internettechnik, FH JOANNEUM
 * http://www.fh-joanneum.at/itm
 * 
 *    Licenced under the GNU GENERAL PUBLIC LICENSE Version 2;
 *    You may obtain a copy of the License at
 *    http://www.gnu.org/licenses/gpl-2.0.txt
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *******************************************************************************/
package at.rc.tacos.client.providers;

import java.text.SimpleDateFormat;
import java.util.Calendar;

import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.jface.viewers.ITableColorProvider;
import org.eclipse.jface.viewers.ITableFontProvider;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.Image;

import at.rc.tacos.client.modelManager.LockManager;
import at.rc.tacos.client.modelManager.ModelFactory;
import at.rc.tacos.client.util.CustomColors;
import at.rc.tacos.common.ITransportStatus;
import at.rc.tacos.factory.ImageFactory;
import at.rc.tacos.model.Transport;

public class JournalViewLabelProvider
        implements ITableLabelProvider, ITableColorProvider, ITransportStatus, ITableFontProvider {

    // define the columns
    public static final int COLUMN_LOCK = 0;
    public static final int COlUMN_OS = 1;
    public static final int COLUMN_TRANSPORT_NUMBER = 2;
    public static final int COLUMN_PRIORITY = 3;
    public static final int COLUMN_TRANSPORT_FROM = 4;
    public static final int COLUMN_PATIENT = 5;
    public static final int COLUMN_TRANSPORT_TO = 6;
    public static final int COLUMN_ERKR_VERL = 7;
    public static final int COLUMN_AE = 8;
    public static final int COLUMN_S1 = 9;
    public static final int COLUMN_S2 = 10;
    public static final int COLUMN_S3 = 11;
    public static final int COLUMN_S4 = 12;
    public static final int COLUMN_S5 = 13;
    public static final int COLUMN_S6 = 14;
    public static final int COLUMN_FZG = 15;
    public static final int COLUMN_DRIVER = 16;
    public static final int COLUMN_PARAMEDIC_I = 17;
    public static final int COLUMN_PARAMEDIC_II = 18;
    public static final int COLUMN_CALLER_NAME = 19;

    // the lock manager
    private LockManager lockManager = ModelFactory.getInstance().getLockManager();

    @Override
    public Image getColumnImage(Object element, int columnIndex) {
        Transport transport = (Transport) element;

        // determine the colum and return a image if needed
        switch (columnIndex) {
        case COLUMN_LOCK:
            if (lockManager.containsLock(Transport.ID, transport.getTransportId()))
                return ImageFactory.getInstance().getRegisteredImage("resource.lock18");
            else
                return ImageFactory.getInstance().getRegisteredImage("resource.nothing18");
        case COLUMN_TRANSPORT_FROM:
            // return when we do not have the status destination free
            if (!transport.getStatusMessages().containsKey(ITransportStatus.TRANSPORT_STATUS_DESTINATION_FREE))
                return null;
            // display image only on a back transport
            if (!transport.isBackTransport())
                return null;

            // the time of the s5 status
            long s5Time = transport.getStatusMessages().get(ITransportStatus.TRANSPORT_STATUS_DESTINATION_FREE);
            Calendar cal5 = Calendar.getInstance();
            cal5.setTimeInMillis(s5Time);
            cal5.set(1970, 01, 01);// necessary because of the different
            // year/month/day format in the database
            // calculate time window for a possible back transport
            Calendar cal4 = Calendar.getInstance();
            cal4.setTimeInMillis(Calendar.getInstance().getTimeInMillis());
            cal4.set(1970, 01, 01);
            cal4.set(Calendar.HOUR_OF_DAY, cal4.get(Calendar.HOUR_OF_DAY) - 4);// show
            // all
            // possible
            // back
            // transports
            // within
            // 4
            // hours
            // by
            // an
            // arrow
            if (cal5.getTimeInMillis() > cal4.getTimeInMillis())
                return ImageFactory.getInstance().getRegisteredImage("transport.backtransport");
            // no image
            return null;
        // default image -> none
        default:
            return null;
        }
    }

    @Override
    public String getColumnText(Object element, int columnIndex) {
        Transport transport = (Transport) element;
        SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
        Calendar cal = Calendar.getInstance();
        String patient = "";

        switch (columnIndex) {
        // define the columns
        case COLUMN_LOCK:
            return null;
        case COlUMN_OS:
            // return the current station of the vehicle if there is one
            // assigned
            if (transport.getVehicleDetail() != null) {
                if (transport.getVehicleDetail().getCurrentStation().getLocationName()
                        .equalsIgnoreCase("Kapfenberg"))
                    return "KA";
                else if (transport.getVehicleDetail().getCurrentStation().getLocationName()
                        .equalsIgnoreCase("Bruck an der Mur"))
                    return "BM";
                else if (transport.getVehicleDetail().getCurrentStation().getLocationName()
                        .equalsIgnoreCase("St. Marein"))
                    return "MA";
                else if (transport.getVehicleDetail().getCurrentStation().getLocationName()
                        .equalsIgnoreCase("Breitenau"))
                    return "BR";
                else if (transport.getVehicleDetail().getCurrentStation().getLocationName()
                        .equalsIgnoreCase("Thrl")
                        || transport.getVehicleDetail().getCurrentStation().getLocationName()
                                .equalsIgnoreCase("Th?rl"))
                    return "TH";
                else if (transport.getVehicleDetail().getCurrentStation().getLocationName()
                        .equalsIgnoreCase("Turnau"))
                    return "TU";
                else if (transport.getVehicleDetail().getCurrentStation().getLocationName()
                        .equalsIgnoreCase("Bezirk: Bruck - Kapfenberg"))
                    return "BE";
            } else
                return null;
        case COLUMN_TRANSPORT_NUMBER:
            if (transport.getTransportNumber() == Transport.TRANSPORT_CANCLED)
                return "STORNO";
            else if (transport.getTransportNumber() == Transport.TRANSPORT_FORWARD)
                return "WTGL";
            else if (transport.getTransportNumber() == Transport.TRANSPORT_NEF)
                return "NEF";
            else
                return String.valueOf(transport.getTransportNumber());
        case COLUMN_PRIORITY:
            if (transport.getTransportPriority().equalsIgnoreCase("A"))
                return "1";
            else if (transport.getTransportPriority().equalsIgnoreCase("B"))
                return "2";
            else if (transport.getTransportPriority().equalsIgnoreCase("C"))
                return "3";
            else if (transport.getTransportPriority().equalsIgnoreCase("D"))
                return "4";
            else if (transport.getTransportPriority().equalsIgnoreCase("E"))
                return "5";
            else if (transport.getTransportPriority().equalsIgnoreCase("F"))
                return "6";
            else if (transport.getTransportPriority().equalsIgnoreCase("G"))
                return "7";
            else
                return null;
        case COLUMN_TRANSPORT_FROM:
            return transport.getFromStreet() + " / " + transport.getFromCity();
        case COLUMN_PATIENT:
            if (transport.isAssistantPerson())
                patient = "+";
            if (transport.getPatient() != null)
                return patient + " " + transport.getPatient().getLastname() + " "
                        + transport.getPatient().getFirstname();
            else
                return patient;
        case COLUMN_TRANSPORT_TO:
            String label = "";
            if (transport.getToStreet() != null)
                label += transport.getToStreet();
            if (transport.getToCity() != null)
                label += " / " + transport.getToCity();
            return label;
        case COLUMN_ERKR_VERL:
            if (transport.getKindOfIllness() != null)
                return transport.getKindOfIllness().getDiseaseName();
            else
                return "";
        case COLUMN_AE:
            // Status 0
            if (transport.getStatusMessages().containsKey(ITransportStatus.TRANSPORT_STATUS_ORDER_PLACED)) {
                cal.setTimeInMillis(
                        transport.getStatusMessages().get(ITransportStatus.TRANSPORT_STATUS_ORDER_PLACED));
                return sdf.format(cal.getTime());
            } else
                return null;
        case COLUMN_S1:
            // Status 1
            if (transport.getStatusMessages().containsKey(ITransportStatus.TRANSPORT_STATUS_ON_THE_WAY)) {
                cal.setTimeInMillis(
                        transport.getStatusMessages().get(ITransportStatus.TRANSPORT_STATUS_ON_THE_WAY));
                return sdf.format(cal.getTime());
            } else
                return null;
        case COLUMN_S2:
            // Status 2
            if (transport.getStatusMessages().containsKey(ITransportStatus.TRANSPORT_STATUS_AT_PATIENT)) {
                cal.setTimeInMillis(
                        transport.getStatusMessages().get(ITransportStatus.TRANSPORT_STATUS_AT_PATIENT));
                return sdf.format(cal.getTime());
            } else
                return null;
        case COLUMN_S3:
            // Status 3
            if (transport.getStatusMessages().containsKey(ITransportStatus.TRANSPORT_STATUS_START_WITH_PATIENT)) {
                cal.setTimeInMillis(
                        transport.getStatusMessages().get(ITransportStatus.TRANSPORT_STATUS_START_WITH_PATIENT));
                return sdf.format(cal.getTime());
            } else
                return null;
        case COLUMN_S4:
            // Status 4
            if (transport.getStatusMessages().containsKey(ITransportStatus.TRANSPORT_STATUS_AT_DESTINATION)) {
                cal.setTimeInMillis(
                        transport.getStatusMessages().get(ITransportStatus.TRANSPORT_STATUS_AT_DESTINATION));
                return sdf.format(cal.getTime());
            } else
                return null;
        case COLUMN_S5:
            // Status 5
            if (transport.getStatusMessages().containsKey(ITransportStatus.TRANSPORT_STATUS_DESTINATION_FREE)) {
                cal.setTimeInMillis(
                        transport.getStatusMessages().get(ITransportStatus.TRANSPORT_STATUS_DESTINATION_FREE));
                return sdf.format(cal.getTime());
            } else
                return null;
        case COLUMN_S6:
            // Status 6
            if (transport.getStatusMessages().containsKey(ITransportStatus.TRANSPORT_STATUS_CAR_IN_STATION)) {
                cal.setTimeInMillis(
                        transport.getStatusMessages().get(ITransportStatus.TRANSPORT_STATUS_CAR_IN_STATION));
                return sdf.format(cal.getTime());
            } else
                return null;
        case COLUMN_FZG:
            if (transport.getVehicleDetail() != null) {
                return transport.getVehicleDetail().getVehicleName();
            } else
                return "";
        case COLUMN_DRIVER:
            if (transport.getVehicleDetail() != null) {
                if (transport.getVehicleDetail().getDriver() != null) {
                    return transport.getVehicleDetail().getDriver().getLastName() + " "
                            + transport.getVehicleDetail().getDriver().getFirstName();
                }
            } else
                return "";
        case COLUMN_PARAMEDIC_I:
            if (transport.getVehicleDetail() != null) {
                if (transport.getVehicleDetail().getFirstParamedic() != null) {
                    return transport.getVehicleDetail().getFirstParamedic().getLastName() + " "
                            + transport.getVehicleDetail().getFirstParamedic().getFirstName();
                } else
                    return "";
            }
        case COLUMN_PARAMEDIC_II:
            if (transport.getVehicleDetail() != null) {
                if (transport.getVehicleDetail().getSecondParamedic() != null) {
                    return transport.getVehicleDetail().getSecondParamedic().getLastName() + " "
                            + transport.getVehicleDetail().getSecondParamedic().getFirstName();
                } else
                    return "";
            }
        default:
            return null;
        }
    }

    @Override
    public void addListener(ILabelProviderListener arg0) {
    }

    @Override
    public void dispose() {
    }

    @Override
    public boolean isLabelProperty(Object arg0, String arg1) {
        return false;
    }

    @Override
    public void removeListener(ILabelProviderListener arg0) {
    }

    @Override
    public Color getBackground(Object element, int columnIndex) {
        Transport transport = (Transport) element;
        if (transport.getTransportPriority().equalsIgnoreCase("A"))
            return CustomColors.BACKGROUND_RED;
        else if (transport.getTransportPriority().equalsIgnoreCase("B"))
            return CustomColors.BACKGROUND_BLUE;
        // default
        return null;
    }

    @Override
    public Color getForeground(Object element, int columnIndex) {
        return null;
    }

    @Override
    public Font getFont(Object element, int columnIndex) {
        // TODO Auto-generated method stub
        return CustomColors.VEHICLE_TABLE;
    }
}