/**
* 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.dashboard.dto;
import java.io.Serializable;
import org.joda.time.DateTime;
import br.gov.camara.edemocracia.portlets.dashboard.Recurso;
import br.gov.camara.edemocracia.portlets.dashboard.VisualizacaoDados;
import com.liferay.portal.kernel.json.JSONException;
import com.liferay.portal.kernel.json.JSONFactoryUtil;
import com.liferay.portal.kernel.json.JSONObject;
import com.liferay.portal.kernel.json.JSONSerializer;
public class Configuracao implements Serializable {
private static final long serialVersionUID = 4249879871902474946L;
public static final int QUANTIDADE_DE_RECURSOS_PADRAO = 5;
public static final long GROUPID_COMUNIDADE_PADRAO = 0l;
public static final int PERIODO_PADRAO = 1;
public static final int TODAS_COMUNIDADES = 0;
public static final int SOMENTE_COMUNIDADES_PUBLICAS = -1;
public static final int SOMENTE_COMUNIDADES_PRIVADAS = -2;
public static final int SOMENTE_COMUNIDADES_RESTRITAS = -3;
private long comunidadeSelecionada;
private int periodoEmDias;
private int qtdDeRecursos;
private int modoVisualizacao;
private int recurso;
public Configuracao(Long comunidadeSelecionada, int periodoEmDias, int qtdDeRecursos, int modoVisualizacao, int recurso) {
this.comunidadeSelecionada = comunidadeSelecionada;
this.periodoEmDias = periodoEmDias;
this.qtdDeRecursos = qtdDeRecursos;
this.modoVisualizacao = modoVisualizacao;
this.recurso = recurso;
}
public Long getComunidadeSelecionada() {
return comunidadeSelecionada;
}
public void setComunidadeSelecionada(Long comunidadeSelecionada) {
this.comunidadeSelecionada = comunidadeSelecionada;
}
public int getPeriodoEmDias() {
return periodoEmDias;
}
public void setPeriodoEmDias(int periodoEmDias) {
this.periodoEmDias = periodoEmDias;
}
public int getQtdDeRecursos() {
return qtdDeRecursos;
}
public void setQtdDeRecursos(int qtdDeRecursos) {
this.qtdDeRecursos = qtdDeRecursos;
}
public int getModoVisualizacao() {
return modoVisualizacao;
}
public void setModoVisualizacao(int modoVisualizacao) {
this.modoVisualizacao = modoVisualizacao;
}
public int getRecurso() {
return recurso;
}
public void setRecurso(int recurso) {
this.recurso = recurso;
}
public String convertToJSON() {
JSONSerializer jsonSerializer = JSONFactoryUtil.createJSONSerializer();
jsonSerializer.exclude("class");
return jsonSerializer.serialize(this);
}
public static Configuracao createFromJSON(String json) throws JSONException {
JSONObject jsonObj = JSONFactoryUtil.createJSONObject(json);
long comunidadeSelecionada = jsonObj.getLong("comunidadeSelecionada");
int periodoEmDias = jsonObj.getInt("periodoEmDias");
int qtdDeRecursos = jsonObj.getInt("qtdDeRecursos");
int modoVisualizacao = jsonObj.getInt("modoVisualizacao");
int recurso = jsonObj.getInt("recurso");
return new Configuracao(comunidadeSelecionada, periodoEmDias, qtdDeRecursos, modoVisualizacao, recurso);
}
/**
* Uma nova instância de Configuracao com os valores padrão
* @return
*/
public static Configuracao getConfiguracaoPadrao() {
return new Configuracao(GROUPID_COMUNIDADE_PADRAO, PERIODO_PADRAO, QUANTIDADE_DE_RECURSOS_PADRAO, VisualizacaoDados.Tabela.getValue(),
Recurso.TOPICO.getId());
}
public long getDataInicioPeriodoEmMillis() {
DateTime dataInicio = new DateTime();
DateTime temp = dataInicio.minusDays(periodoEmDias).withHourOfDay(0).withMinuteOfHour(0).withSecondOfMinute(0).withMillisOfSecond(0);
return temp.getMillis();
}
public long getDataFimPeriodoEmMillis() {
DateTime dataFim = new DateTime();
DateTime temp = dataFim.withHourOfDay(23).withMinuteOfHour(59).withSecondOfMinute(59).withMillisOfSecond(0);
return temp.getMillis();
}
}