hsa.awp.usergui.CampaignPreviewPanel.java Source code

Java tutorial

Introduction

Here is the source code for hsa.awp.usergui.CampaignPreviewPanel.java

Source

/*
 * Copyright (c) 2010-2012 Matthias Klass, Johannes Leimer,
 *               Rico Lieback, Sebastian Gabriel, Lothar Gesslein,
 *               Alexander Rampp, Kai Weidner
 *
 * This file is part of the Physalix Enrollment System
 *
 * Foobar is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * Foobar 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.
 *
 * You should have received a copy of the GNU General Public License
 * along with Foobar.  If not, see <http://www.gnu.org/licenses/>.
 */

package hsa.awp.usergui;

import hsa.awp.campaign.model.Campaign;
import hsa.awp.campaign.model.DrawProcedure;
import hsa.awp.campaign.model.FifoProcedure;
import hsa.awp.campaign.model.Procedure;
import hsa.awp.usergui.controller.IUserGuiController;
import hsa.awp.usergui.prioritylistselectors.NewPriorityListSelector;
import hsa.awp.usergui.prioritylistselectors.PriorityListSelector;

import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxFallbackLink;
import org.apache.wicket.extensions.ajax.markup.html.AjaxLazyLoadPanel;
import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.link.Link;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.Model;
import org.apache.wicket.spring.injection.annot.SpringBean;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class CampaignPreviewPanel extends Panel {

    /**
      * 
      */
    private static final long serialVersionUID = 3158911913605383361L;
    /**
       * {@link hsa.awp.usergui.controller.IUserGuiController}.
       */
    @SpringBean(name = "usergui.controller")
    private IUserGuiController controller;

    public CampaignPreviewPanel(String id, final Campaign campaign) {
        super(id);
        Link<String> campaignDetail = createCampaignDetail(campaign);
        campaignDetail.setEnabled(isCampaignActive(campaign.findCurrentProcedure()));
        add(campaignDetail);
        final ModalWindow detailWindow = new ModalWindow("campaignListPanel.detailWindow");
        detailWindow.setContent(new AjaxLazyLoadPanel(detailWindow.getContentId()) {
            /**
             *
             */
            private static final long serialVersionUID = -822132746613326567L;

            @Override
            public Component getLazyLoadComponent(String markupId) {

                return new CampaignDetailPanel(markupId, campaign.getDetailText());
            }
        });
        detailWindow.setTitle(new Model<String>("Kampagnendetails"));
        detailWindow.setInitialWidth(450);

        add(detailWindow);

        add(new AjaxFallbackLink<Object>("campaignListPanel.infoLink") {
            /**
             * unique serialization id.
             */
            private static final long serialVersionUID = 543607735730300949L;

            @Override
            public void onClick(AjaxRequestTarget target) {

                detailWindow.show(target);
            }
        });

    }

    private boolean isCampaignActive(Procedure currentProcedure) {
        if (currentProcedure instanceof DrawProcedure) {

            DrawProcedure drawProcedure = controller.getDrawProcedureById(currentProcedure.getId());

            if (controller.isAlreadyDrawn(drawProcedure)) {
                return false;
            } else {
                return drawProcedure.isActive();
            }

        } else if (currentProcedure instanceof FifoProcedure) {
            FifoProcedure fifoProcedure = (FifoProcedure) currentProcedure;
            return fifoProcedure.isActive();
        }
        throw new IllegalStateException("undefinded state");
    }

    private Link<String> createCampaignDetail(final Campaign camp) {

        final Procedure currentProcedure = camp.findCurrentProcedure();

        Link<String> link = new Link<String>("campaignListPanel.link") {
            /**
             * generated UID.
             */
            private static final long serialVersionUID = 3425455511638833341L;

            @Override
            public void onClick() {

                if (camp.findCurrentProcedure() instanceof FifoProcedure) {
                    setResponsePage(new OnePanelPage(new FlatListPanel("p1", camp)));
                } else if (camp.findCurrentProcedure() instanceof DrawProcedure
                        && !controller.isAlreadyDrawn((DrawProcedure) currentProcedure)) {
                    if (camp.findCurrentProcedure().getRuleBased() == 0)
                        setResponsePage(new OnePanelPage(
                                new PriorityListSelector("p1", (DrawProcedure) camp.findCurrentProcedure())));
                    else if (camp.findCurrentProcedure().getRuleBased() == 1)
                        setResponsePage(new OnePanelPage(
                                new NewPriorityListSelector("p1", camp.findCurrentProcedure().getId())));
                }
            }
        };
        link.add(new Label("campaignListPanel.name", camp.getName()));
        DateFormat df = new SimpleDateFormat("dd.MM.yyyy HH:mm");

        link.add(new Label("campaignListPanel.timeSpan", "vom " + df.format(camp.getStartShow().getTime()) + " bis "
                + df.format(camp.getEndShow().getTime())));

        ListView<Procedure> procedureListView = new ListView<Procedure>("campaignListPanel.procedureList",
                createProcedureList(camp)) {
            /**
             * 
             */
            private static final long serialVersionUID = -6278807028608347383L;

            @Override
            protected void populateItem(ListItem<Procedure> procedureListItem) {
                procedureListItem.add(
                        new ProcedureDetailView("campaignListPanel.procedure", procedureListItem.getModelObject()));
            }
        };

        link.add(procedureListView);
        return link;
    }

    private List<Procedure> createProcedureList(Campaign campaign) {

        List<Procedure> procedures = new ArrayList<Procedure>(campaign.getAppliedProcedures());

        Collections.sort(procedures, new Comparator<Procedure>() {
            @Override
            public int compare(Procedure procedure, Procedure procedure1) {
                return procedure.getStartDate().compareTo(procedure1.getStartDate());
            }
        });

        return procedures;
    }

}