de.arago.rike.svg.SVG.java Source code

Java tutorial

Introduction

Here is the source code for de.arago.rike.svg.SVG.java

Source

/**
 * Copyright (c) 2010 arago AG, http://www.arago.de/
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
 * documentation files (the "Software"), to deal in the Software without restriction, including without limitation the
 * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
 * permit persons to whom the Software is furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the
 * Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
 * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
 * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 */
package de.arago.rike.svg;

import de.arago.portlet.AragoPortlet;
import de.arago.portlet.util.SecurityHelper;
import de.arago.data.IDataWrapper;
import de.arago.rike.commons.data.ActivityLog;
import de.arago.rike.commons.util.TaskListFilter;
import de.arago.rike.commons.data.DataHelperRike;
import de.arago.rike.commons.data.GlobalConfig;
import static de.arago.rike.commons.data.GlobalConfig.CHECK_PERIOD_SECONDS;
import de.arago.rike.commons.data.Milestone;
import de.arago.rike.report.Report;
import de.arago.rike.commons.util.PortletTitleWithMilestone;
import java.util.Date;
import java.util.List;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;

public class SVG extends AragoPortlet {
    private static final long CHECK_PERIOD_MILLIS = 60 * 1000;

    @Override
    protected boolean checkViewData(IDataWrapper data) {
        if (!SecurityHelper.isLoggedIn(data.getUser()))
            return false;

        if (data.getSessionAttribute("taskListFilter") == null) {
            data.setSessionAttribute("taskListFilter", new TaskListFilter() {
                @Override
                public void setDefaultOptions() {
                    super.setDefaultOptions();

                    DataHelperRike<Milestone> helper = new DataHelperRike<Milestone>(Milestone.class);
                    List<Milestone> list = helper.list(helper
                            .filter().addOrder(Order.asc("dueDate")).add(Restrictions
                                    .and(Restrictions.isNotNull("dueDate"), Restrictions.ge("dueDate", new Date())))
                            .setMaxResults(1));

                    if (list.size() > 0) {
                        setIsActive(true);
                        setMilestone("milestone_" + list.get(0).getId().toString());
                    }
                }
            });
        }

        Long nextUpdate = (Long) data.getSessionAttribute("nextUpdate");
        if (nextUpdate == null || nextUpdate < System.currentTimeMillis()
                || data.getSessionAttribute("lastActivity") == null) {
            data.setSessionAttribute("nextUpdate",
                    System.currentTimeMillis() + Long.parseLong(GlobalConfig.get(CHECK_PERIOD_SECONDS)) * 1000);
            data.setSessionAttribute("lastActivity", lastChange());
        }
        if (data.getSessionAttribute("portletTitle") == null) {
            String milestone = ((TaskListFilter) data.getSessionAttribute("taskListFilter")).getMilestone();
            data.setSessionAttribute("portletTitle", new PortletTitleWithMilestone(milestone, "Dependencies"));
        }

        return true;
    }

    static public String lastChange() {
        Date current = new Date();
        String update = "" + current.getTime();
        DataHelperRike<ActivityLog> helper = new DataHelperRike<ActivityLog>(ActivityLog.class);
        List<ActivityLog> last = helper.list(helper.filter().addOrder(Order.desc("id")).setMaxResults(1));
        if (!last.isEmpty()) {
            update = "_" + last.get(0).getId();
        }
        return update;
    }
}