/**
* Copyright (c) 2009-2014 Câmara dos Deputados. Todos os direitos reservados.
*
* e-Democracia é um software livre; você pode redistribuí-lo e/ou modificá-lo dentro
* dos termos da Licença Pública Geral Menor GNU como publicada pela Fundação do
* Software Livre (FSF); na versão 2.1 da Licença, ou (na sua opinião) qualquer versão.
*
* Este programa é distribuído na esperança de que possa ser útil, mas SEM NENHUMA GARANTIA;
* sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou APLICAÇÃO EM PARTICULAR.
* Veja a Licença Pública Geral Menor GNU para maiores detalhes.
*/
package br.gov.camara.edemocracia.portlets.graficos;
import java.io.IOException;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;
import javax.portlet.PortletException;
import javax.portlet.PortletMode;
import javax.portlet.PortletModeException;
import javax.portlet.PortletPreferences;
import javax.portlet.ReadOnlyException;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;
import javax.portlet.ValidatorException;
import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;
import com.liferay.portal.kernel.util.CalendarUtil;
import com.liferay.portal.kernel.util.ParamUtil;
import com.liferay.portal.kernel.util.WebKeys;
import com.liferay.portal.theme.ThemeDisplay;
import com.liferay.util.bridges.mvc.MVCPortlet;
/**
* Portlet implementation class UsuariosData
*/
public class Graficos extends MVCPortlet {
private static Log _log = LogFactoryUtil.getLog(Graficos.class);
@Override
public void doView(RenderRequest renderRequest,
RenderResponse renderResponse) throws IOException, PortletException {
PortletPreferences pp = renderRequest.getPreferences();
Integer tipoGrafico = Integer.parseInt(pp.getValue("tipoGrafico", "1"));
EDemocraciaGraph report;
ThemeDisplay td = (ThemeDisplay) renderRequest.getAttribute(WebKeys.THEME_DISPLAY);
DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
df.setTimeZone(td.getTimeZone());
// Pega a data inicial e final
Date end = CalendarUtil.getLTDate(Calendar.getInstance(td.getTimeZone()));
Calendar cal = Calendar.getInstance(td.getTimeZone());
cal.setTime(end);
cal.add(Calendar.MONTH, -1);
Date start = CalendarUtil.getGTDate(cal);
String paramStart = ParamUtil.getString(renderRequest, "start");
String paramEnd = ParamUtil.getString(renderRequest, "end");
Date pStart, pEnd;
try {
pStart = df.parse(paramStart);
pEnd = df.parse(paramEnd);
} catch (ParseException e) {
pStart = start;
pEnd = end;
}
// Verifica se o há mais que um mês entre data inicial e final
cal.setTime(pEnd);
cal.add(Calendar.MONTH, -1);
if(pStart.before(cal.getTime())) {
pStart = cal.getTime();
}
boolean showTimeRange = true;
switch(tipoGrafico) {
case 2:
showTimeRange = false;
report = new UsersByUFGraph(td.getCompanyId());
break;
case 3:
report = new UsageGraph(td.getCompanyId(), td.getTimeZone(), pStart, pEnd);
break;
default: // case 1
report = new UsersByDateGraph(td.getCompanyId(), td.getTimeZone(), pStart, pEnd);
break;
}
renderRequest.setAttribute("start", df.format(pStart));
renderRequest.setAttribute("end", df.format(pEnd));
renderRequest.setAttribute("url", report.getURL());
renderRequest.setAttribute("showTimeRange", showTimeRange);
super.doView(renderRequest, renderResponse);
}
@Override
public void doEdit(RenderRequest renderRequest, RenderResponse renderResponse) throws IOException ,PortletException {
PortletPreferences pp = renderRequest.getPreferences();
Integer tipoGrafico = Integer.parseInt(pp.getValue("tipoGrafico", "1"));
renderRequest.setAttribute("tipoGrafico", tipoGrafico);
super.doEdit(renderRequest, renderResponse);
};
public void updateDateRange(ActionRequest request, ActionResponse response) {
DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
Date today = new Date();
String strStart = ParamUtil.getString(request, "start", df.format(today));
String strEnd = ParamUtil.getString(request, "end", df.format(today));
response.setRenderParameter("start", strStart);
response.setRenderParameter("end", strEnd);
}
public void updateGraphType(ActionRequest request, ActionResponse response) {
PortletPreferences pp = request.getPreferences();
Integer tipoGrafico = ParamUtil.getInteger(request, "tipografico",1);
try {
pp.setValue("tipoGrafico", Integer.toString(tipoGrafico));
pp.store();
response.setPortletMode(PortletMode.VIEW);
} catch (ReadOnlyException e) {
_log.error(e);
} catch (ValidatorException e) {
_log.error(e);
} catch (IOException e) {
_log.error(e);
} catch (PortletModeException e) {
_log.error(e);
}
}
}