org.opencms.ui.apps.projects.CmsProjectHistoryTable.java Source code

Java tutorial

Introduction

Here is the source code for org.opencms.ui.apps.projects.CmsProjectHistoryTable.java

Source

/*
 * This library is part of OpenCms -
 * the Open Source Content Management System
 *
 * Copyright (c) Alkacon Software GmbH & Co. KG (http://www.alkacon.com)
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library 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
 * Lesser General Public License for more details.
 *
 * For further information about Alkacon Software, please see the
 * company website: http://www.alkacon.com
 *
 * For further information about OpenCms, please see the
 * project website: http://www.opencms.org
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

package org.opencms.ui.apps.projects;

import org.opencms.file.CmsObject;
import org.opencms.file.history.CmsHistoryProject;
import org.opencms.main.CmsException;
import org.opencms.main.OpenCms;
import org.opencms.ui.A_CmsUI;
import org.opencms.ui.CmsVaadinUtils;
import org.opencms.ui.apps.Messages;
import org.opencms.util.CmsUUID;

import java.util.Date;
import java.util.List;
import java.util.Locale;

import com.vaadin.data.Item;
import com.vaadin.data.util.IndexedContainer;
import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.ui.Label;
import com.vaadin.ui.Table;
import com.vaadin.ui.UI;

/**
 * The project history table.<p>
 */
public class CmsProjectHistoryTable extends Table {

    /** The serial version id. */
    private static final long serialVersionUID = 7343623156086839992L;

    /** Publish date property. */
    public static final String PROP_PUBLISH_DATE = "publishDate";

    /** Publish user property. */
    public static final String PROP_PUBLISH_USER = "publishUser";

    /** The data container. */
    IndexedContainer m_container;

    /** The project manager instance. */
    CmsProjectManager m_manager;

    /**
     * Constructor.<p>
     */
    public CmsProjectHistoryTable() {
        setSizeFull();
        m_container = new IndexedContainer();
        m_container.addContainerProperty(CmsProjectsTable.PROP_ID, CmsUUID.class, null);
        m_container.addContainerProperty(CmsProjectsTable.PROP_NAME, String.class, "");
        m_container.addContainerProperty(CmsProjectsTable.PROP_DESCRIPTION, String.class, "");
        m_container.addContainerProperty(PROP_PUBLISH_DATE, Date.class, "");
        m_container.addContainerProperty(PROP_PUBLISH_USER, String.class, "");
        m_container.addContainerProperty(CmsProjectsTable.PROP_ORG_UNIT, String.class, "");
        m_container.addContainerProperty(CmsProjectsTable.PROP_OWNER, String.class, "");
        m_container.addContainerProperty(CmsProjectsTable.PROP_MANAGER, String.class, "");
        m_container.addContainerProperty(CmsProjectsTable.PROP_USER, String.class, "");
        m_container.addContainerProperty(CmsProjectsTable.PROP_DATE_CREATED, Date.class, "");
        m_container.addContainerProperty(CmsProjectsTable.PROP_RESOURCES, Label.class, "");

        setContainerDataSource(m_container);
        setColumnHeader(CmsProjectsTable.PROP_NAME, CmsVaadinUtils.getMessageText(Messages.GUI_PROJECTS_NAME_0));
        setColumnHeader(CmsProjectsTable.PROP_DESCRIPTION,
                CmsVaadinUtils.getMessageText(Messages.GUI_PROJECTS_DESCRIPTION_0));
        setColumnHeader(PROP_PUBLISH_DATE, CmsVaadinUtils.getMessageText(Messages.GUI_PROJECTS_PUBLISH_DATE_0));
        setColumnHeader(PROP_PUBLISH_USER, CmsVaadinUtils.getMessageText(Messages.GUI_PROJECTS_PUBLISHED_BY_0));
        setColumnHeader(CmsProjectsTable.PROP_ORG_UNIT,
                CmsVaadinUtils.getMessageText(Messages.GUI_PROJECTS_ORG_UNIT_0));
        setColumnHeader(CmsProjectsTable.PROP_OWNER, CmsVaadinUtils.getMessageText(Messages.GUI_PROJECTS_OWNER_0));
        setColumnHeader(CmsProjectsTable.PROP_MANAGER,
                CmsVaadinUtils.getMessageText(Messages.GUI_PROJECTS_MANAGER_GROUP_0));
        setColumnHeader(CmsProjectsTable.PROP_USER,
                CmsVaadinUtils.getMessageText(Messages.GUI_PROJECTS_USER_GROUP_0));
        setColumnHeader(CmsProjectsTable.PROP_DATE_CREATED,
                CmsVaadinUtils.getMessageText(Messages.GUI_PROJECTS_DATE_CREATED_0));
        setColumnHeader(CmsProjectsTable.PROP_RESOURCES,
                CmsVaadinUtils.getMessageText(Messages.GUI_PROJECTS_RESOURCES_0));

        setSelectable(true);
        setMultiSelect(true);
        loadProjects();
    }

    /**
     * Loads the projects table.<p>
     */
    public void loadProjects() {

        CmsObject cms = A_CmsUI.getCmsObject();
        Locale locale = UI.getCurrent().getLocale();
        m_container.removeAllItems();
        boolean isMultiOU = false;
        // hide ou column if only one ou exists
        try {
            isMultiOU = !OpenCms.getOrgUnitManager().getOrganizationalUnits(cms, "", true).isEmpty();
        } catch (CmsException e) {
            // noop
        }
        if (isMultiOU) {
            setVisibleColumns(CmsProjectsTable.PROP_NAME, CmsProjectsTable.PROP_DESCRIPTION, PROP_PUBLISH_DATE,
                    PROP_PUBLISH_USER, CmsProjectsTable.PROP_ORG_UNIT, CmsProjectsTable.PROP_OWNER,
                    CmsProjectsTable.PROP_MANAGER, CmsProjectsTable.PROP_USER, CmsProjectsTable.PROP_DATE_CREATED,
                    CmsProjectsTable.PROP_RESOURCES);
        } else {
            setVisibleColumns(CmsProjectsTable.PROP_NAME, CmsProjectsTable.PROP_DESCRIPTION, PROP_PUBLISH_DATE,
                    PROP_PUBLISH_USER, CmsProjectsTable.PROP_OWNER, CmsProjectsTable.PROP_MANAGER,
                    CmsProjectsTable.PROP_USER, CmsProjectsTable.PROP_DATE_CREATED,
                    CmsProjectsTable.PROP_RESOURCES);
        }

        // get content
        try {
            List<CmsHistoryProject> projects = cms.getAllHistoricalProjects();
            for (CmsHistoryProject project : projects) {
                Item item = m_container.addItem(new Integer(project.getPublishTag()));
                if (item != null) {
                    item.getItemProperty(CmsProjectsTable.PROP_ID).setValue(project.getUuid());
                    item.getItemProperty(CmsProjectsTable.PROP_NAME).setValue(project.getSimpleName());
                    item.getItemProperty(CmsProjectsTable.PROP_DESCRIPTION).setValue(project.getDescription());
                    item.getItemProperty(PROP_PUBLISH_DATE).setValue(new Date(project.getPublishingDate()));
                    item.getItemProperty(PROP_PUBLISH_USER).setValue(project.getPublishedByName(cms));
                    try {
                        item.getItemProperty(CmsProjectsTable.PROP_ORG_UNIT).setValue(OpenCms.getOrgUnitManager()
                                .readOrganizationalUnit(cms, project.getOuFqn()).getDisplayName(locale));
                        item.getItemProperty(CmsProjectsTable.PROP_OWNER)
                                .setValue(cms.readUser(project.getOwnerId()).getName());
                        item.getItemProperty(CmsProjectsTable.PROP_MANAGER)
                                .setValue(cms.readGroup(project.getManagerGroupId()).getSimpleName());
                        item.getItemProperty(CmsProjectsTable.PROP_USER)
                                .setValue(cms.readGroup(project.getGroupId()).getSimpleName());
                    } catch (CmsException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    item.getItemProperty(CmsProjectsTable.PROP_DATE_CREATED)
                            .setValue(new Date(project.getDateCreated()));

                    StringBuffer html = new StringBuffer(512);
                    for (String resource : cms.readProjectResources(project)) {
                        html.append(resource);
                        html.append("<br />");
                    }
                    Label resLabel = new Label();
                    resLabel.setContentMode(ContentMode.HTML);
                    resLabel.setValue(html.toString());
                    item.getItemProperty(CmsProjectsTable.PROP_RESOURCES).setValue(resLabel);
                }
            }
            m_container.sort(new Object[] { PROP_PUBLISH_DATE }, new boolean[] { false });
        } catch (CmsException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}