com.liferay.bookmarks.internal.exportimport.data.handler.BookmarksPortletDataHandler.java Source code

Java tutorial

Introduction

Here is the source code for com.liferay.bookmarks.internal.exportimport.data.handler.BookmarksPortletDataHandler.java

Source

/**
 * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
 *
 * 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.
 */

package com.liferay.bookmarks.internal.exportimport.data.handler;

import com.liferay.bookmarks.constants.BookmarksPortletKeys;
import com.liferay.bookmarks.model.BookmarksEntry;
import com.liferay.bookmarks.model.BookmarksFolder;
import com.liferay.bookmarks.service.permission.BookmarksResourcePermissionChecker;
import com.liferay.exportimport.kernel.lar.BasePortletDataHandler;
import com.liferay.exportimport.kernel.lar.PortletDataContext;
import com.liferay.exportimport.kernel.lar.PortletDataHandler;
import com.liferay.exportimport.kernel.lar.PortletDataHandlerBoolean;
import com.liferay.exportimport.kernel.lar.StagedModelDataHandlerUtil;
import com.liferay.exportimport.kernel.lar.StagedModelType;
import com.liferay.exportimport.staged.model.repository.StagedModelRepository;
import com.liferay.portal.kernel.dao.orm.ActionableDynamicQuery;
import com.liferay.portal.kernel.dao.orm.ExportActionableDynamicQuery;
import com.liferay.portal.kernel.module.framework.ModuleServiceLifecycle;
import com.liferay.portal.kernel.xml.Element;

import java.util.List;

import javax.portlet.PortletPreferences;

import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;

/**
 * @author Jorge Ferrer
 * @author Bruno Farache
 * @author Raymond Aug
 * @author Juan Fernndez
 * @author Mate Thurzo
 * @author Daniel Kocsis
 */
@Component(immediate = true, property = { "javax.portlet.name=" + BookmarksPortletKeys.BOOKMARKS,
        "javax.portlet.name=" + BookmarksPortletKeys.BOOKMARKS_ADMIN }, service = PortletDataHandler.class)
public class BookmarksPortletDataHandler extends BasePortletDataHandler {

    public static final String NAMESPACE = "bookmarks";

    public static final String SCHEMA_VERSION = "1.0.0";

    @Override
    public String getSchemaVersion() {
        return SCHEMA_VERSION;
    }

    @Activate
    protected void activate() {
        setDataPortletPreferences("rootFolderId");
        setDeletionSystemEventStagedModelTypes(new StagedModelType(BookmarksEntry.class),
                new StagedModelType(BookmarksFolder.class));
        setExportControls(new PortletDataHandlerBoolean(NAMESPACE, "entries", true, false, null,
                BookmarksEntry.class.getName()));
        setImportControls(getExportControls());
    }

    @Override
    protected PortletPreferences doDeleteData(PortletDataContext portletDataContext, String portletId,
            PortletPreferences portletPreferences) throws Exception {

        if (portletDataContext.addPrimaryKey(BookmarksPortletDataHandler.class, "deleteData")) {

            return portletPreferences;
        }

        _bookmarksEntryStagedModelRepository.deleteStagedModels(portletDataContext);
        _bookmarksFolderStagedModelRepository.deleteStagedModels(portletDataContext);

        return portletPreferences;
    }

    @Override
    protected String doExportData(final PortletDataContext portletDataContext, String portletId,
            PortletPreferences portletPreferences) throws Exception {

        Element rootElement = addExportDataRootElement(portletDataContext);

        if (!portletDataContext.getBooleanParameter(NAMESPACE, "entries")) {
            return getExportDataRootElementString(rootElement);
        }

        portletDataContext.addPortletPermissions(BookmarksResourcePermissionChecker.RESOURCE_NAME);

        rootElement.addAttribute("group-id", String.valueOf(portletDataContext.getScopeGroupId()));

        ExportActionableDynamicQuery folderActionableDynamicQuery = _bookmarksFolderStagedModelRepository
                .getExportActionableDynamicQuery(portletDataContext);

        folderActionableDynamicQuery.performActions();

        ActionableDynamicQuery entryActionableDynamicQuery = _bookmarksEntryStagedModelRepository
                .getExportActionableDynamicQuery(portletDataContext);

        entryActionableDynamicQuery.performActions();

        return getExportDataRootElementString(rootElement);
    }

    @Override
    protected PortletPreferences doImportData(PortletDataContext portletDataContext, String portletId,
            PortletPreferences portletPreferences, String data) throws Exception {

        if (!portletDataContext.getBooleanParameter(NAMESPACE, "entries")) {
            return null;
        }

        portletDataContext.importPortletPermissions(BookmarksResourcePermissionChecker.RESOURCE_NAME);

        Element foldersElement = portletDataContext.getImportDataGroupElement(BookmarksFolder.class);

        List<Element> folderElements = foldersElement.elements();

        for (Element folderElement : folderElements) {
            StagedModelDataHandlerUtil.importStagedModel(portletDataContext, folderElement);
        }

        Element entriesElement = portletDataContext.getImportDataGroupElement(BookmarksEntry.class);

        List<Element> entryElements = entriesElement.elements();

        for (Element entryElement : entryElements) {
            StagedModelDataHandlerUtil.importStagedModel(portletDataContext, entryElement);
        }

        return null;
    }

    @Override
    protected void doPrepareManifestSummary(PortletDataContext portletDataContext,
            PortletPreferences portletPreferences) throws Exception {

        ActionableDynamicQuery entryExportActionableDynamicQuery = _bookmarksEntryStagedModelRepository
                .getExportActionableDynamicQuery(portletDataContext);

        entryExportActionableDynamicQuery.performCount();

        ActionableDynamicQuery folderExportActionableDynamicQuery = _bookmarksFolderStagedModelRepository
                .getExportActionableDynamicQuery(portletDataContext);

        folderExportActionableDynamicQuery.performCount();
    }

    @Reference(target = "(model.class.name=com.liferay.bookmarks.model.BookmarksEntry)", unbind = "-")
    protected void setBookmarksEntryStagedModelRepository(
            StagedModelRepository<BookmarksEntry> bookmarksEntryStagedModelRepository) {

        _bookmarksEntryStagedModelRepository = bookmarksEntryStagedModelRepository;
    }

    @Reference(target = "(model.class.name=com.liferay.bookmarks.model.BookmarksFolder)", unbind = "-")
    protected void setBookmarksFolderStagedModelRepository(
            StagedModelRepository<BookmarksFolder> bookmarksFolderStagedModelRepository) {

        _bookmarksFolderStagedModelRepository = bookmarksFolderStagedModelRepository;
    }

    @Reference(target = ModuleServiceLifecycle.PORTAL_INITIALIZED, unbind = "-")
    protected void setModuleServiceLifecycle(ModuleServiceLifecycle moduleServiceLifecycle) {
    }

    private StagedModelRepository<BookmarksEntry> _bookmarksEntryStagedModelRepository;
    private StagedModelRepository<BookmarksFolder> _bookmarksFolderStagedModelRepository;

}