/** * 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.portal.kernel.util; import java.io.Serializable; import java.util.HashMap; import java.util.Map; import javax.portlet.PortletRequest; import javax.portlet.PortletSession; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; /** * @author Jorge Ferrer * @author Sergio González */ public class ProgressTracker implements Serializable { public static final String PERCENT = ProgressTracker.class.getName() + "_PERCENT"; public ProgressTracker(String progressId) { _progressId = progressId; addProgress(ProgressStatusConstants.PREPARED, 0, StringPool.BLANK); } public void addProgress(int status, int percent, String message) { Tuple tuple = new Tuple(percent, message); _progress.put(status, tuple); } public void finish(HttpServletRequest request) { finish(request.getSession()); } public void finish(HttpSession session) { session.removeAttribute(PERCENT + _progressId); } public void finish(PortletRequest portletRequest) { finish(portletRequest.getPortletSession()); } public void finish(PortletSession portletSession) { portletSession.removeAttribute( PERCENT + _progressId, PortletSession.APPLICATION_SCOPE); } public String getMessage() { Tuple tuple = _progress.get(_status); String message = GetterUtil.getString(tuple.getObject(1)); return message; } public int getPercent() { return _percent; } public int getStatus() { return _status; } public void initialize(HttpServletRequest request) { initialize(request.getSession()); } public void initialize(HttpSession session) { session.setAttribute(PERCENT + _progressId, this); } public void initialize(PortletRequest portletRequest) { initialize(portletRequest.getPortletSession()); } public void initialize(PortletSession portletSession) { portletSession.setAttribute( PERCENT + _progressId, this, PortletSession.APPLICATION_SCOPE); } public void setPercent(int percent) { _percent = percent; } public void setStatus(int status) { _status = status; Tuple tuple = _progress.get(_status); _percent = GetterUtil.getInteger(tuple.getObject(0)); } public void start(HttpServletRequest request) { start(request.getSession()); } public void start(HttpSession session) { initialize(session); setPercent(1); } public void start(PortletRequest portletRequest) { start(portletRequest.getPortletSession()); } public void start(PortletSession portletSession) { initialize(portletSession); setPercent(1); } private int _percent; private final Map<Integer, Tuple> _progress = new HashMap<>(); private final String _progressId; private int _status = ProgressStatusConstants.PREPARED; }