com.idetronic.subur.portlet.SuburAdmin.java Source code

Java tutorial

Introduction

Here is the source code for com.idetronic.subur.portlet.SuburAdmin.java

Source

package com.idetronic.subur.portlet;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;

import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;

import com.idetronic.subur.NoSuchConfigException;
import com.idetronic.subur.model.ItemType;
import com.idetronic.subur.service.DownloadSummaryLocalServiceUtil;
import com.idetronic.subur.service.ItemTypeLocalServiceUtil;
import com.idetronic.subur.service.SuburConfigLocalServiceUtil;
import com.idetronic.subur.service.ViewSummaryLocalServiceUtil;
import com.idetronic.subur.util.SuburConfiguration;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.kernel.language.LanguageUtil;
import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;
import com.liferay.portal.kernel.upload.UploadPortletRequest;
import com.liferay.portal.kernel.util.Constants;
import com.liferay.portal.kernel.util.LocaleUtil;
import com.liferay.portal.kernel.util.ParamUtil;
import com.liferay.portal.kernel.util.StringPool;
import com.liferay.portal.kernel.util.StringUtil;
import com.liferay.portal.kernel.util.WebKeys;
import com.liferay.portal.service.ServiceContext;
import com.liferay.portal.service.ServiceContextFactory;
import com.liferay.portal.theme.ThemeDisplay;
import com.liferay.portal.util.PortalUtil;
import com.liferay.portlet.asset.model.AssetCategory;
import com.liferay.portlet.asset.model.AssetVocabulary;
import com.liferay.portlet.asset.service.AssetCategoryLocalServiceUtil;
import com.liferay.portlet.asset.service.AssetVocabularyLocalServiceUtil;
import com.liferay.util.bridges.mvc.MVCPortlet;

/**
 * Portlet implementation class SuburAdmin
 */
public class SuburAdmin extends MVCPortlet {

    public void editItemType(ActionRequest request, ActionResponse response)
            throws PortalException, SystemException, IOException {
        String cmd = ParamUtil.getString(request, "cmd");
        ThemeDisplay themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY);
        long itemTypeId = ParamUtil.getLong(request, "itemTypeId");
        ItemType itemType = null;
        String redirect = ParamUtil.getString(request, "redirect");
        if (cmd.equalsIgnoreCase(Constants.UPDATE))
            itemType = ItemTypeLocalServiceUtil.getItemType(itemTypeId);

        String typeName = ParamUtil.getString(request, "itemTypeName");

        if (cmd.equalsIgnoreCase(Constants.ADD)) {

            itemType = ItemTypeLocalServiceUtil.add(typeName, themeDisplay.getCompanyId(),
                    themeDisplay.getScopeGroupId());
        } else {
            itemType = ItemTypeLocalServiceUtil.getItemType(itemTypeId);
            itemType.setItemTypeName(typeName);
            ItemTypeLocalServiceUtil.updateItemType(itemType);
        }
        response.sendRedirect(redirect);
    }

    public void saveConfig(ActionRequest actionRequest, ActionResponse actionResponse)
            throws SystemException, IOException {

        UploadPortletRequest uploadRequest = PortalUtil.getUploadPortletRequest(actionRequest);

        String authorSalutation = ParamUtil.getString(uploadRequest, "authorSalutation");
        String authorSite = ParamUtil.getString(uploadRequest, "authorSite");
        String itemIdentifier = ParamUtil.getString(uploadRequest, "itemIdentifier");

        File file = uploadRequest.getFile("license");

        BufferedReader br = new BufferedReader(new FileReader(file));
        StringBuffer licenseContents = new StringBuffer();
        String line = br.readLine();
        while (line != null) {
            licenseContents.append(line);
            line = br.readLine();
        }
        br.close();

        SuburConfigLocalServiceUtil.updateConfig(SuburConfiguration.AUTHOR_SALUTATION, authorSalutation);
        SuburConfigLocalServiceUtil.updateConfig(SuburConfiguration.AUTHOR_SITES, authorSite);
        SuburConfigLocalServiceUtil.updateConfig(SuburConfiguration.ITEM_IDENTIFIERS, itemIdentifier);
        SuburConfigLocalServiceUtil.updateConfig(SuburConfiguration.PUBLICATION_LICENSE,
                licenseContents.toString());

    }

    public void saveNotificationRole(ActionRequest actionRequest, ActionResponse actionResponse)
            throws SystemException {
        String notificationRoleArray[] = actionRequest.getParameterValues("notificationRole");

        String notificationRoles = StringUtil.merge(notificationRoleArray);

        SuburConfigLocalServiceUtil.updateConfig(SuburConfiguration.NOTIFICATION_ROLES, notificationRoles);
    }

    public void updateStats(ActionRequest request, ActionResponse response)
            throws PortalException, SystemException {
        ThemeDisplay themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY);

        LOGGER.info(themeDisplay.getCompanyId() + "::" + themeDisplay.getScopeGroupId());
        ViewSummaryLocalServiceUtil.updateStats(themeDisplay.getCompanyId(), themeDisplay.getScopeGroupId());
        DownloadSummaryLocalServiceUtil.updateStats();
    }

    public void importSubject(ActionRequest actionRequest, ActionResponse actionResponse) {

        ThemeDisplay themeDisplay = (ThemeDisplay) actionRequest
                .getAttribute(com.liferay.portal.kernel.util.WebKeys.THEME_DISPLAY);

        try {
            ServiceContext serviceContext = ServiceContextFactory.getInstance(AssetCategory.class.getName(),
                    actionRequest);

            UploadPortletRequest uploadRequest = PortalUtil.getUploadPortletRequest(actionRequest);

            long userId = themeDisplay.getUserId();
            File file = uploadRequest.getFile("file");
            String vocabTitle = ParamUtil.getString(uploadRequest, "title");
            FileInputStream fis = new FileInputStream(file);

            BufferedReader br = new BufferedReader(new InputStreamReader(fis));

            HashMap categoryMap = new HashMap();

            //create vocab
            AssetVocabulary parentVocab = createVocabulary(vocabTitle, themeDisplay.getUserId(), serviceContext);

            String line = null;

            while ((line = br.readLine()) != null) {
                //LOGGER.info(line);
                String[] subject = StringUtil.split(line, ":");
                String subjectCode = subject[0];
                String subjectName = subject[1];
                String subjectParent = subject[2];
                String subjectParentKey = subject[3];
                LOGGER.info(subjectCode + ":" + subjectName + ":" + subjectParent + ":" + subjectParentKey);

                if (subjectCode.equalsIgnoreCase("subjects"))
                    continue;

                if (subjectParent.equalsIgnoreCase("subjects")) {
                    //level 1 subject add category here
                    AssetCategory category = createParentCategory(parentVocab.getVocabularyId(), subjectName,
                            userId, serviceContext);
                    categoryMap.put(subjectCode, category);
                } else {
                    //create sub category
                    AssetCategory parentCategory = (AssetCategory) categoryMap.get(subjectParent);
                    AssetCategory subCategory = createSubCategory(actionRequest, subjectName, userId,
                            parentVocab.getVocabularyId(), parentCategory.getCategoryId(), serviceContext);

                    categoryMap.put(subjectCode, subCategory);
                }

                //LOGGER.info(subjectCode +":"+ subjectName + ":"+subjectParent+":"+subjectParentKey);

            }
        } catch (Exception e) {
            LOGGER.error(e);
        }

    }

    private AssetCategory createSubCategory(ActionRequest actionRequest, String title, long userId,
            long vocabularyId, long parentCategoryId, ServiceContext serviceContext)
            throws PortalException, SystemException {
        //List<AssetCategoryProperty> categoryProperties = Collections.emptyList();
        //LOGGER.info("subCategry:"+title);

        String[] categoryProperties = new String[0];

        Map<Locale, String> titleMap = getLocalizationMap(title);

        String[] permissions = { "VIEW" };
        serviceContext.setGuestPermissions(permissions);

        Map<Locale, String> descriptionMap = getLocalizationMap(StringPool.BLANK);

        return AssetCategoryLocalServiceUtil.addCategory(userId, parentCategoryId, titleMap, descriptionMap,
                vocabularyId, categoryProperties, serviceContext);
    }

    private AssetVocabulary createVocabulary(String title, long userId, ServiceContext serviceContext)
            throws PortalException, SystemException {
        AssetVocabulary vocab = null;
        String[] permissions = { "VIEW" };
        serviceContext.setGuestPermissions(permissions);

        vocab = AssetVocabularyLocalServiceUtil.addVocabulary(userId, title, serviceContext);
        return vocab;
    }

    private AssetCategory createParentCategory(long vocabularyId, String title, long userId,
            ServiceContext serviceContext) throws PortalException, SystemException {
        //LOGGER.info("Categry:"+title);
        String[] permissions = { "VIEW" };
        serviceContext.setGuestPermissions(permissions);

        return AssetCategoryLocalServiceUtil.addCategory(userId, title, vocabularyId, serviceContext);

    }

    private Map<Locale, String> getLocalizationMap(String parameter)

    {

        Locale[] locales = LanguageUtil.getAvailableLocales();

        Map<Locale, String> map = new HashMap<Locale, String>();

        for (Locale locale : locales) {
            String languageId = LocaleUtil.toLanguageId(locale);

            String localeParameter = parameter.concat(StringPool.UNDERLINE).concat(languageId);

            map.put(locale, parameter);
        }

        return map;
    }

    private static Log LOGGER = LogFactoryUtil.getLog(SuburAdmin.class);
}