/** * 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.microblogs.web.internal.portlet; import com.liferay.asset.kernel.service.AssetEntryLocalService; import com.liferay.microblogs.constants.MicroblogsPortletKeys; import com.liferay.microblogs.model.MicroblogsEntry; import com.liferay.microblogs.service.MicroblogsEntryLocalService; import com.liferay.microblogs.service.MicroblogsEntryService; import com.liferay.microblogs.util.MicroblogsUtil; import com.liferay.portal.kernel.model.Release; import com.liferay.portal.kernel.portlet.bridges.mvc.MVCPortlet; import com.liferay.portal.kernel.service.ServiceContext; import com.liferay.portal.kernel.service.ServiceContextFactory; import com.liferay.portal.kernel.theme.ThemeDisplay; import com.liferay.portal.kernel.util.ParamUtil; import com.liferay.portal.kernel.util.WebKeys; import java.util.ArrayList; import java.util.List; import javax.portlet.ActionRequest; import javax.portlet.ActionResponse; import javax.portlet.Portlet; import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Reference; /** * @author Adolfo PĂ©rez */ @Component( immediate = true, property = { "com.liferay.portlet.add-default-resource=true", "com.liferay.portlet.css-class-wrapper=microblogs-portlet", "com.liferay.portlet.display-category=category.collaboration", "com.liferay.portlet.footer-portlet-javascript=/microblogs/js/main.js", "com.liferay.portlet.header-portlet-css=/microblogs/css/main.css", "com.liferay.portlet.icon=/microblogs/icons/microblogs.png", "javax.portlet.display-name=Microblogs", "javax.portlet.expiration-cache=0", "javax.portlet.init-param.view-template=/microblogs/view.jsp", "javax.portlet.name=" + MicroblogsPortletKeys.MICROBLOGS, "javax.portlet.portlet-info.keywords=Microblogs", "javax.portlet.portlet-info.short-title=Microblogs", "javax.portlet.portlet-info.title=Microblogs", "javax.portlet.resource-bundle=content.Language", "javax.portlet.security-role-ref=administrator,guest,power-user,user", "javax.portlet.supports.mime-type=text/html" }, service = Portlet.class ) public class MicroblogsPortlet extends MVCPortlet { public void deleteMicroblogsEntry( ActionRequest actionRequest, ActionResponse actionResponse) throws Exception { long microblogsEntryId = ParamUtil.getLong( actionRequest, "microblogsEntryId"); microblogsEntryService.deleteMicroblogsEntry(microblogsEntryId); } public void updateMicroblogsEntry( ActionRequest actionRequest, ActionResponse actionResponse) throws Exception { ThemeDisplay themeDisplay = (ThemeDisplay)actionRequest.getAttribute( WebKeys.THEME_DISPLAY); long microblogsEntryId = ParamUtil.getLong( actionRequest, "microblogsEntryId"); String content = ParamUtil.getString(actionRequest, "content"); int type = ParamUtil.getInteger(actionRequest, "type"); long parentMicroblogsEntryId = ParamUtil.getLong( actionRequest, "parentMicroblogsEntryId"); int socialRelationType = ParamUtil.getInteger( actionRequest, "socialRelationType"); ServiceContext serviceContext = ServiceContextFactory.getInstance( MicroblogsEntry.class.getName(), actionRequest); String[] assetTagNames = getAssetTagNames(content); serviceContext.setAssetTagNames(assetTagNames); if (microblogsEntryId > 0) { microblogsEntryService.updateMicroblogsEntry( microblogsEntryId, content, socialRelationType, serviceContext); } else { microblogsEntryService.addMicroblogsEntry( themeDisplay.getUserId(), content, type, parentMicroblogsEntryId, socialRelationType, serviceContext); } } public void updateMicroblogsEntryViewCount( ActionRequest actionRequest, ActionResponse actionResponse) throws Exception { long microblogsEntryId = ParamUtil.getLong( actionRequest, "microblogsEntryId"); MicroblogsEntry microblogsEntry = microblogsEntryLocalService.fetchMicroblogsEntry(microblogsEntryId); if (microblogsEntry == null) { return; } assetEntryLocalService.incrementViewCounter( 0, MicroblogsEntry.class.getName(), microblogsEntryId, 1); } protected String[] getAssetTagNames(String content) { List<String> assetTagNames = new ArrayList<>(); assetTagNames.addAll(MicroblogsUtil.getHashtags(content)); assetTagNames.addAll(MicroblogsUtil.getScreenNames(content)); return assetTagNames.toArray(new String[assetTagNames.size()]); } @Reference(unbind = "-") protected void setAssetEntryLocalService( AssetEntryLocalService assetEntryLocalService) { this.assetEntryLocalService = assetEntryLocalService; } @Reference(unbind = "-") protected void setMicroblogsEntryLocalService( MicroblogsEntryLocalService microblogsEntryLocalService) { this.microblogsEntryLocalService = microblogsEntryLocalService; } @Reference(unbind = "-") protected void setMicroblogsEntryService( MicroblogsEntryService microblogsEntryService) { this.microblogsEntryService = microblogsEntryService; } @Reference( target = "(&(release.bundle.symbolic.name=com.liferay.microblogs.web)(release.schema.version=1.0.1))", unbind = "-" ) protected void setRelease(Release release) { } protected AssetEntryLocalService assetEntryLocalService; protected MicroblogsEntryLocalService microblogsEntryLocalService; protected MicroblogsEntryService microblogsEntryService; }