package br.com.citframework.tld;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Collection;
import java.util.Locale;
import java.util.Properties;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyTagSupport;
import br.com.centralit.citcorpore.bean.ReleaseDTO;
import br.com.centralit.citcorpore.util.CITCorporeUtil;
import br.com.centralit.citcorpore.util.CitCorporeConstantes;
import br.com.centralit.citcorpore.versao.Versao;
import br.com.centralit.citgerencial.util.Util;
import br.com.citframework.util.HistoricoAtualizacoesCitsmart;
import br.com.citframework.util.Mensagens;
import br.com.citframework.util.UtilI18N;
/**
* Imprime as informa��es relacionadas a vers�o
*
* @author flavio.santana
* @since 23/10/2013
*/
public class SobreCitsmart extends BodyTagSupport {
private static final long serialVersionUID = 1L;
private static Properties props;
@Override
public int doStartTag() throws JspException {
/*
* Recupera a propriedade do locale
*/
final HttpSession session = ((HttpServletRequest) pageContext.getRequest()).getSession();
final StringBuilder stringBuilder = new StringBuilder();
String locale = UtilI18N.PORTUGUESE_SIGLA;
if (session.getAttribute("locale") != null) {
this.getProperties(new Locale(session.getAttribute("locale").toString()));
locale = session.getAttribute("locale").toString();
} else {
this.getProperties(new Locale(""));
locale = UtilI18N.PORTUGUESE_SIGLA;
}
if (locale.equals("")) {
locale = UtilI18N.PORTUGUESE_SIGLA;
}
try {
final String separator = System.getProperty("file.separator");
final String path = CITCorporeUtil.CAMINHO_REAL_APP + "XMLs" + separator + "release_" + locale + ".xml";
HistoricoAtualizacoesCitsmart hc = null;
Collection<ReleaseDTO> listRelease = null;
try {
hc = new HistoricoAtualizacoesCitsmart();
listRelease = hc.lerXML(path);
} catch (final FileNotFoundException e) {
e.printStackTrace();
}
final String passoInstalacao = (String) session.getAttribute("passoInstalacao");
final ServletContext context = ((HttpServletRequest) pageContext.getRequest()).getSession().getServletContext();
if (passoInstalacao != null || context.getAttribute("instalacao") != null) {
stringBuilder.append("<form name='formSobre' id='formSobre' action='" + CitCorporeConstantes.CAMINHO_SERVIDOR
+ ((HttpServletRequest) pageContext.getRequest()).getContextPath() + "/pages/start/start'>");
} else {
stringBuilder.append("<form name='formSobre' id='formSobre' action='" + CitCorporeConstantes.CAMINHO_SERVIDOR
+ ((HttpServletRequest) pageContext.getRequest()).getContextPath() + "/pages/index/index'>");
}
stringBuilder.append(" <div id='sobre-container'>");
stringBuilder.append(" <img src='" + CitCorporeConstantes.CAMINHO_SERVIDOR + ((HttpServletRequest) pageContext.getRequest()).getContextPath()
+ "/imagens/logo/iconeLogo.png'>");
stringBuilder.append(" <div id='produto-descricao'>");
stringBuilder.append(" <h2>Citsmart</h2>");
stringBuilder.append(" <span>" + this.getInternacionalizado("sobre.citsmart") + "</span>");
stringBuilder.append(" </div>");
stringBuilder.append(" </div>");
stringBuilder.append(" <div id='versao-container'>");
stringBuilder.append(" <div>" + this.getInternacionalizado("login.versao") + "<b>" + Versao.getDataAndVersao() + "</b></div>");
stringBuilder.append(" <div><a href='javascript:;' class='openHistorico'>" + this.getInternacionalizado("sobre.oQueHaDeNovoNestaVersao") + "</a></b></div>");
stringBuilder.append(" <div id='historico'>");
stringBuilder.append(" <h2>" + this.getInternacionalizado("release.historicoAtualizacoes") + "</h2>");
stringBuilder.append(" <select name='versao' id='versao' onchange='buscaHistoricoPorVersao()'>");
if (listRelease != null && !listRelease.isEmpty()) {
for (final ReleaseDTO releaseDto : listRelease) {
stringBuilder.append(" <option value='" + releaseDto.getVersao() + "'>" + releaseDto.getVersao() + "</option>");
}
}
stringBuilder.append(" </select>");
stringBuilder.append(" <div class='slim-scroll box-generic'>");
stringBuilder.append(" <div id='divRelease'>");
if (listRelease != null && !listRelease.isEmpty()) {
stringBuilder.append(" <div id='historicoRelease' style='overflow: auto; text-align: justify;'>");
int countRelease = 0;
for (final ReleaseDTO releaseDto : listRelease) {
stringBuilder.append(" <div id='release" + countRelease + "'>");
stringBuilder.append(" <div>");
stringBuilder.append(" <br>");
if (releaseDto.getConteudo() != null && !releaseDto.getConteudo().isEmpty()) {
int i = 0;
for (final String item : releaseDto.getConteudo()) {
++i;
stringBuilder.append(" <div>");
stringBuilder.append(" <span style='font-weight:bold;'>");
stringBuilder.append(i);
stringBuilder.append(" ");
stringBuilder.append(" </span>");
stringBuilder.append(Util.encodeHTML(item));
stringBuilder.append(" </div>");
stringBuilder.append(" <br>");
}
}
stringBuilder.append(" </div>");
stringBuilder.append(" </div>");
++countRelease;
break;
}
stringBuilder.append(" </div>");
}
stringBuilder.append(" </div>");
stringBuilder.append(" </div>");
stringBuilder.append(" </div>");
stringBuilder.append(" </div>");
stringBuilder.append(" <div id='produto-container'>");
stringBuilder.append(" <div><a target='_blank' href='http://www.citsmart.com.br'>Citsmart</a></div>");
stringBuilder.append(" <div>� 2014 - " + UtilI18N.internacionaliza((HttpServletRequest) pageContext.getRequest(), "citcorpore.todosDireitosReservados") + "</div>");
stringBuilder.append(" </div>");
stringBuilder.append("</form>");
pageContext.getOut().println(stringBuilder.toString());
} catch (final Exception e) {
e.printStackTrace();
}
return SKIP_BODY;
}
private String getInternacionalizado(final String texto) {
String traduzido = props.getProperty(texto);
if (traduzido == null || traduzido.length() <= 0) {
traduzido = texto;
}
return traduzido;
}
private Properties getProperties(final Locale locale) {
String fileName = "";
try {
if (locale != null && !locale.toString().equals("") && !locale.toString().equals("pt_BR")) {
fileName = "Mensagens_" + locale.toString() + ".properties";
} else {
fileName = "Mensagens.properties";
}
props = new Properties();
final ClassLoader load = Mensagens.class.getClassLoader();
InputStream is = load.getResourceAsStream(fileName);
if (is == null) {
is = ClassLoader.getSystemResourceAsStream(fileName);
}
if (is == null) {
is = ClassLoader.getSystemClassLoader().getResourceAsStream(fileName);
}
try {
if (is != null) {
props.load(is);
}
} catch (final IOException e) {
e.printStackTrace();
}
} catch (final SecurityException e1) {
e1.printStackTrace();
}
return props;
}
}