Java tutorial
/** * Copyright (c) 2015 by Open eGovPlatform (http://http://openegovplatform.org/). * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.oep.ssomgt.action; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.sql.Blob; import java.util.Date; import javax.portlet.ActionRequest; import javax.portlet.ActionResponse; import javax.portlet.PortletException; import javax.portlet.ResourceRequest; import javax.portlet.ResourceResponse; import org.oep.ssomgt.AppCodeRangeLengthException; import org.oep.ssomgt.AppNameRangeLengthException; import org.oep.ssomgt.AppPinRangeLengthException; import org.oep.ssomgt.AppUrlRangeLengthException; import org.oep.ssomgt.DuplicateAppCodeException; import org.oep.ssomgt.PublicKeyRangeLengthException; import org.oep.ssomgt.model.Application; import org.oep.ssomgt.service.ApplicationLocalServiceUtil; import com.liferay.portal.kernel.dao.jdbc.OutputBlob; import com.liferay.portal.kernel.exception.PortalException; import com.liferay.portal.kernel.exception.SystemException; import com.liferay.portal.kernel.servlet.SessionErrors; import com.liferay.portal.kernel.servlet.SessionMessages; import com.liferay.portal.kernel.upload.UploadRequest; import com.liferay.portal.kernel.util.ParamUtil; import com.liferay.portal.service.ServiceContext; import com.liferay.portal.service.ServiceContextThreadLocal; import com.liferay.portal.util.PortalUtil; import com.liferay.util.bridges.mvc.MVCPortlet; /** * Portlet implementation class ApplicationManagementPortlet */ public class ApplicationManagementPortlet extends MVCPortlet { private void validateParamsIntoSessionError(UploadRequest request, ActionRequest outRequest) { String appName = ParamUtil.getString(request, ApplicationKeys.AddEditAttributes.APP_NAME, PortletKeys.TEXT_BOX); String appCode = ParamUtil.getString(request, ApplicationKeys.AddEditAttributes.APP_CODE, PortletKeys.TEXT_BOX); String appPin = ParamUtil.getString(request, ApplicationKeys.AddEditAttributes.APP_PIN, PortletKeys.TEXT_BOX); String appUrl = ParamUtil.getString(request, ApplicationKeys.AddEditAttributes.APP_URL, PortletKeys.TEXT_BOX); String publicKey = ParamUtil.getString(request, ApplicationKeys.AddEditAttributes.PUBLICKEY, PortletKeys.TEXT_BOX); Long editId = ParamUtil.getLong(request, ApplicationKeys.AddEditAttributes.EDIT_ID, PortletKeys.LONG_DEFAULT); try { ApplicationLocalServiceUtil.validate(editId, appCode, appName, appPin, appUrl, publicKey); } catch (DuplicateAppCodeException dae) { SessionErrors.add(outRequest, ApplicationKeys.ErrorMessageKeys.ORG_OEP_SSOMGT_PORTLET_APPLICATIONMANAGEMENT_APPCODE); } catch (AppCodeRangeLengthException acr) { SessionErrors.add(outRequest, ApplicationKeys.ErrorMessageKeys.ORG_OEP_SSOMGT_PORTLET_APPLICATIONMANAGEMENT_APPCODE); } catch (AppNameRangeLengthException anr) { SessionErrors.add(outRequest, ApplicationKeys.ErrorMessageKeys.ORG_OEP_SSOMGT_PORTLET_APPLICATIONMANAGEMENT_APPNAME); } catch (AppPinRangeLengthException apr) { SessionErrors.add(outRequest, ApplicationKeys.ErrorMessageKeys.ORG_OEP_SSOMGT_PORTLET_APPLICATIONMANAGEMENT_APPPIN); } catch (AppUrlRangeLengthException aur) { SessionErrors.add(outRequest, ApplicationKeys.ErrorMessageKeys.ORG_OEP_SSOMGT_PORTLET_APPLICATIONMANAGEMENT_APPURL); } catch (PublicKeyRangeLengthException pkr) { SessionErrors.add(outRequest, ApplicationKeys.ErrorMessageKeys.ORG_OEP_SSOMGT_PORTLET_APPLICATIONMANAGEMENT_PUBLICKEY); } } public void addEditApplication(ActionRequest request, ActionResponse response) throws SystemException, PortalException, IOException { UploadRequest uploadRequest = PortalUtil.getUploadPortletRequest(request); validateParamsIntoSessionError(uploadRequest, request); String appName = null; String appCode = null; String appPin = null; String appUrl = null; String publicKey = null; if (SessionErrors.isEmpty(request)) { ServiceContext serviceContext = ServiceContextThreadLocal.getServiceContext(); appName = ParamUtil.getString(uploadRequest, ApplicationKeys.AddEditAttributes.APP_NAME, PortletKeys.TEXT_BOX); appCode = ParamUtil.getString(uploadRequest, ApplicationKeys.AddEditAttributes.APP_CODE, PortletKeys.TEXT_BOX); appPin = ParamUtil.getString(uploadRequest, ApplicationKeys.AddEditAttributes.APP_PIN, PortletKeys.TEXT_BOX); appUrl = ParamUtil.getString(uploadRequest, ApplicationKeys.AddEditAttributes.APP_URL, PortletKeys.TEXT_BOX); publicKey = ParamUtil.getString(uploadRequest, ApplicationKeys.AddEditAttributes.PUBLICKEY, PortletKeys.TEXT_BOX); Long editId = ParamUtil.getLong(uploadRequest, ApplicationKeys.AddEditAttributes.EDIT_ID, PortletKeys.LONG_DEFAULT); OutputBlob bigIconBlob = null; OutputBlob smallIconBlob = null; try { File bigIconFile = uploadRequest.getFile(ApplicationKeys.AddEditAttributes.APP_BIGICON); File smallIconFile = uploadRequest.getFile(ApplicationKeys.AddEditAttributes.APP_SMALLICON); InputStream bigIconStream = new FileInputStream(bigIconFile); InputStream smallIconStream = new FileInputStream(smallIconFile); bigIconBlob = new OutputBlob(bigIconStream, bigIconFile.length()); smallIconBlob = new OutputBlob(smallIconStream, smallIconFile.length()); } catch (NullPointerException ex) { SessionErrors.add(request, ApplicationKeys.ErrorMessageKeys.ORG_OEP_SSOMGT_PORTLET_APPLICATIONMANAGEMENT_APPICONNULL); } catch (FileNotFoundException ex) { } Date pingTime = new Date(); if (editId == PortletKeys.LONG_DEFAULT) { if (smallIconBlob != null && bigIconBlob != null) { ApplicationLocalServiceUtil.addApplication(appCode, appName, appPin, appUrl, bigIconBlob, smallIconBlob, pingTime, publicKey, serviceContext); SessionMessages.add(request, ApplicationKeys.SuccessMessageKeys.ORG_OEP_SSOMGT_PORTLET_APPLICATION_SUCCESS_ADDNEW); } else { ApplicationLocalServiceUtil.addApplication(appCode, appName, appPin, appUrl, pingTime, publicKey, serviceContext); SessionMessages.add(request, ApplicationKeys.SuccessMessageKeys.ORG_OEP_SSOMGT_PORTLET_APPLICATION_SUCCESS_ADDNEW); } } else { Application application = ApplicationLocalServiceUtil.getApplication(editId); if (smallIconBlob != null) { application.setAppSmallIcon(smallIconBlob); } if (bigIconBlob != null) { application.setAppBigIcon(bigIconBlob); } application.setAppCode(appCode); application.setAppPin(appPin); application.setAppUrl(appUrl); application.setPingTime(pingTime); ApplicationLocalServiceUtil.updateApplication(application, serviceContext); SessionMessages.add(request, ApplicationKeys.SuccessMessageKeys.ORG_OEP_SSOMGT_PORTLET_APPLICATION_SUCCESS_UPDATE); } } SessionMessages.add(request, PortalUtil.getPortletId(request) + SessionMessages.KEY_SUFFIX_HIDE_DEFAULT_ERROR_MESSAGE); if (!SessionErrors.isEmpty(request)) { appName = ParamUtil.getString(uploadRequest, ApplicationKeys.AddEditAttributes.APP_NAME, PortletKeys.TEXT_BOX); appCode = ParamUtil.getString(uploadRequest, ApplicationKeys.AddEditAttributes.APP_CODE, PortletKeys.TEXT_BOX); appPin = ParamUtil.getString(uploadRequest, ApplicationKeys.AddEditAttributes.APP_PIN, PortletKeys.TEXT_BOX); appUrl = ParamUtil.getString(uploadRequest, ApplicationKeys.AddEditAttributes.APP_URL, PortletKeys.TEXT_BOX); response.setRenderParameter(ApplicationKeys.AddEditAttributes.APP_NAME, appName); response.setRenderParameter(ApplicationKeys.AddEditAttributes.APP_CODE, appCode); response.setRenderParameter(ApplicationKeys.AddEditAttributes.APP_PIN, appPin); response.setRenderParameter(ApplicationKeys.AddEditAttributes.APP_URL, appUrl); PortalUtil.copyRequestParameters(request, response); } else { response.sendRedirect(ParamUtil.getString(request, PortletKeys.REDIRECT_PAGE)); } } public void deleteApplication(ActionRequest request, ActionResponse response) throws PortalException, SystemException, IOException { long deleteId = ParamUtil.getLong(request, ApplicationKeys.BaseApplicationAttributes.DELETE_ID, PortletKeys.LONG_DEFAULT); try { ApplicationLocalServiceUtil.removeApplication(deleteId); SessionMessages.add(request, ApplicationKeys.SuccessMessageKeys.ORG_OEP_SSOMGT_PORTLET_APPLICATION_SUCCESS_DELETE); } catch (Exception ex) { SessionMessages.add(request, ApplicationKeys.ErrorMessageKeys.ORG_OEP_SSOMGT_PORTLET_APPLICATIONMANAGEMENT_ERROR_DELETE); } response.sendRedirect(ParamUtil.getString(request, PortletKeys.REDIRECT_PAGE)); } public void upApplication(ActionRequest request, ActionResponse response) throws PortalException, SystemException, IOException { long editId = ParamUtil.getLong(request, ApplicationKeys.BaseApplicationAttributes.EDIT_ID, PortletKeys.LONG_DEFAULT); ServiceContext serviceContext = ServiceContextThreadLocal.getServiceContext(); Application app = ApplicationLocalServiceUtil.getApplication(editId); ApplicationLocalServiceUtil.up(app, serviceContext); response.sendRedirect(ParamUtil.getString(request, PortletKeys.REDIRECT_PAGE)); } public void downApplication(ActionRequest request, ActionResponse response) throws PortalException, SystemException, IOException { long editId = ParamUtil.getLong(request, ApplicationKeys.BaseApplicationAttributes.EDIT_ID, PortletKeys.LONG_DEFAULT); ServiceContext serviceContext = ServiceContextThreadLocal.getServiceContext(); Application app = ApplicationLocalServiceUtil.getApplication(editId); ApplicationLocalServiceUtil.down(app, serviceContext); response.sendRedirect(ParamUtil.getString(request, PortletKeys.REDIRECT_PAGE)); } public void editApplication(ActionRequest request, ActionResponse response) throws PortalException, SystemException, IOException { long editId = ParamUtil.getLong(request, ApplicationKeys.BaseApplicationAttributes.EDIT_ID, PortletKeys.LONG_DEFAULT); Application application = ApplicationLocalServiceUtil.getApplication(editId); setParameterIntoResponse(response, application); if (!SessionErrors.isEmpty(request)) { response.sendRedirect(ParamUtil.getString(request, PortletKeys.REDIRECT_PAGE)); } else { PortalUtil.copyRequestParameters(request, response); } } private void setParameterIntoResponse(ActionResponse response, Application application) { response.setRenderParameter(ApplicationKeys.BaseApplicationAttributes.EDIT_ID, String.valueOf(application.getApplicationId())); response.setRenderParameter(ApplicationKeys.AddEditAttributes.APP_NAME, String.valueOf(application.getAppName())); response.setRenderParameter(ApplicationKeys.AddEditAttributes.APP_CODE, String.valueOf(application.getAppCode())); response.setRenderParameter(ApplicationKeys.AddEditAttributes.APP_PIN, String.valueOf(application.getAppPin())); response.setRenderParameter(ApplicationKeys.AddEditAttributes.APP_URL, String.valueOf(application.getAppUrl())); response.setRenderParameter(ApplicationKeys.AddEditAttributes.PUBLICKEY, String.valueOf(application.getPublicKey())); } @Override public void serveResource(ResourceRequest resourceRequest, ResourceResponse resourceResponse) throws IOException, PortletException { try { long editId = ParamUtil.getLong(resourceRequest, ApplicationKeys.AddEditAttributes.EDIT_ID); String iconType = ParamUtil.getString(resourceRequest, "icon", PortletKeys.TEXT_BOX); Application application = ApplicationLocalServiceUtil.getApplication(editId); if (application != null) { if ("smallIcon".equals(iconType)) { Blob image = application.getAppSmallIcon(); byte[] imgData = image.getBytes(1, (int) image.length()); resourceResponse.setContentType("image/jpg"); OutputStream o = resourceResponse.getPortletOutputStream(); o.write(imgData); o.flush(); o.close(); } else { Blob image = application.getAppBigIcon(); byte[] imgData = image.getBytes(1, (int) image.length()); resourceResponse.setContentType("image/jpg"); OutputStream o = resourceResponse.getPortletOutputStream(); o.write(imgData); o.flush(); o.close(); } } } catch (Exception e) { //_log.error(e); } } }