com.liferay.document.library.repository.cmis.internal.BaseCMISRepositoryDefiner.java Source code

Java tutorial

Introduction

Here is the source code for com.liferay.document.library.repository.cmis.internal.BaseCMISRepositoryDefiner.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.document.library.repository.cmis.internal;

import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.language.LanguageUtil;
import com.liferay.portal.kernel.repository.DocumentRepository;
import com.liferay.portal.kernel.repository.capabilities.CommentCapability;
import com.liferay.portal.kernel.repository.capabilities.PortalCapabilityLocator;
import com.liferay.portal.kernel.repository.capabilities.ProcessorCapability;
import com.liferay.portal.kernel.repository.model.FileEntry;
import com.liferay.portal.kernel.repository.model.FileVersion;
import com.liferay.portal.kernel.repository.registry.BaseRepositoryDefiner;
import com.liferay.portal.kernel.repository.registry.CapabilityRegistry;
import com.liferay.portal.kernel.util.CacheResourceBundleLoader;
import com.liferay.portal.kernel.util.ClassResourceBundleLoader;
import com.liferay.portal.kernel.util.ResourceBundleLoader;
import com.liferay.portal.kernel.util.ResourceBundleUtil;

import java.util.Locale;
import java.util.ResourceBundle;

import org.apache.chemistry.opencmis.client.api.Document;

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

/**
 * @author Adolfo Prez
 */
public abstract class BaseCMISRepositoryDefiner extends BaseRepositoryDefiner {

    @Override
    public String getRepositoryTypeLabel(Locale locale) {
        ResourceBundle resourceBundle = _resourceBundleLoader
                .loadResourceBundle(LanguageUtil.getLanguageId(locale));

        return ResourceBundleUtil.getString(resourceBundle, _MODEL_RESOURCE_NAME_PREFIX + getClassName());
    }

    @Override
    public void registerCapabilities(CapabilityRegistry<DocumentRepository> capabilityRegistry) {

        DocumentRepository documentRepository = capabilityRegistry.getTarget();

        PortalCapabilityLocator portalCapabilityLocator = getPortalCapabilityLocator();

        capabilityRegistry.addExportedCapability(CommentCapability.class,
                portalCapabilityLocator.getCommentCapability(documentRepository));
        capabilityRegistry.addSupportedCapability(ProcessorCapability.class, new RefreshingProcessorCapability(
                portalCapabilityLocator.getProcessorCapability(documentRepository)));
    }

    protected PortalCapabilityLocator getPortalCapabilityLocator() {
        return _portalCapabilityLocator;
    }

    protected ResourceBundleLoader getResourceBundleLoader() {
        return _resourceBundleLoader;
    }

    @Reference(unbind = "-")
    protected void setPortalCapabilityLocator(PortalCapabilityLocator portalCapabilityLocator) {

        _portalCapabilityLocator = portalCapabilityLocator;
    }

    private static final String _MODEL_RESOURCE_NAME_PREFIX = "model.resource.";

    private PortalCapabilityLocator _portalCapabilityLocator;
    private final ResourceBundleLoader _resourceBundleLoader = new CacheResourceBundleLoader(
            new ClassResourceBundleLoader("content.Language", BaseCMISRepositoryDefiner.class));

    private static class RefreshingProcessorCapability implements ProcessorCapability {

        public RefreshingProcessorCapability(ProcessorCapability processorCapability) {

            _processorCapability = processorCapability;
        }

        @Override
        public void cleanUp(FileEntry fileEntry) throws PortalException {
            _refresh(fileEntry);

            _processorCapability.cleanUp(fileEntry);
        }

        @Override
        public void cleanUp(FileVersion fileVersion) throws PortalException {
            _refresh(fileVersion);

            _processorCapability.cleanUp(fileVersion);
        }

        @Override
        public void copy(FileEntry fileEntry, FileVersion fileVersion) throws PortalException {

            _refresh(fileEntry);
            _refresh(fileVersion);

            _processorCapability.copy(fileEntry, fileVersion);
        }

        @Override
        public void generateNew(FileEntry fileEntry) throws PortalException {
            _refresh(fileEntry);

            _processorCapability.generateNew(fileEntry);
        }

        private void _refresh(FileEntry fileEntry) {
            Document document = (Document) fileEntry.getModel();

            document.refresh();
        }

        private void _refresh(FileVersion fileVersion) throws PortalException {
            Document document = (Document) fileVersion.getModel();

            document.refresh();

            _refresh(fileVersion.getFileEntry());
        }

        private final ProcessorCapability _processorCapability;

    }

}