/**
* CentralIT - CITSmart.
*/
package br.com.centralit.citcorpore.ajaxForms;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import br.com.centralit.citajax.html.AjaxFormAction;
import br.com.centralit.citajax.html.DocumentHTML;
import br.com.centralit.citajax.html.HTMLForm;
import br.com.centralit.citajax.html.HTMLSelect;
import br.com.centralit.citajax.html.HTMLTable;
import br.com.centralit.citcorpore.bean.CaracteristicaDTO;
import br.com.centralit.citcorpore.bean.TipoItemConfiguracaoDTO;
import br.com.centralit.citcorpore.negocio.CaracteristicaService;
import br.com.centralit.citcorpore.negocio.CaracteristicaTipoItemConfiguracaoService;
import br.com.centralit.citcorpore.negocio.TipoItemConfiguracaoService;
import br.com.centralit.citcorpore.util.CITCorporeUtil;
import br.com.centralit.citcorpore.util.Enumerados;
import br.com.citframework.dto.IDto;
import br.com.citframework.excecao.ServiceException;
import br.com.citframework.service.ServiceLocator;
import br.com.citframework.util.UtilDatas;
import br.com.citframework.util.UtilI18N;
import br.com.citframework.util.WebUtil;
/**
* Action de TipoItemConfiguracao.
*
* @author valdoilo.damasceno
* @author flavio.santana
* @since 15/05/2013
*
*/
public class TipoItemConfiguracao extends AjaxFormAction {
/** Bean de TipoItemConfiguracao. */
private TipoItemConfiguracaoDTO tipoItemConfiguracaoBean;
@Override
public void load(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
/*Combo de status*/
HTMLSelect comboCategoria = (HTMLSelect) document.getSelectById("categoria");
comboCategoria.removeAllOptions();
for (Enumerados.CategoriaTipoItemConfiguracao st : Enumerados.CategoriaTipoItemConfiguracao.values()) {
comboCategoria.addOption(st.getItem().toString(), st.getDescricao());
}
List<String> listaImagens = listDirectorioImagens(new File(CITCorporeUtil.CAMINHO_REAL_APP +"/pages/tipoItemConfiguracao/imagens/48/"));
StringBuilder sb = new StringBuilder();
for (String imagem : listaImagens) {
sb.append(
"<label>" +
"<img style='vertical-align: top;' src='" + br.com.citframework.util.Constantes.getValue("CONTEXTO_APLICACAO") + "/pages/tipoItemConfiguracao/imagens/48/"+imagem+"' />" +
"<input class='' type='radio' name='imagem' value='"+imagem+"' /></label>" +
"");
}
document.getElementById("imagens").setInnerHTML(sb.toString());
}
/**
* Inclui Novo Item de Configura��o.
*
* @param document
* @param request
* @param response
* @throws Exception
* @author valdoilo.damasceno
*/
@SuppressWarnings("rawtypes")
public void save(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
this.setTipoItemConfiguracaoBean((TipoItemConfiguracaoDTO) document.getBean());
this.getTipoItemConfiguracaoBean().setCaracteristicas(
(List) WebUtil.deserializeCollectionFromRequest(CaracteristicaDTO.class, "caracteristicasSerializadas", request));
if (this.getTipoItemConfiguracaoBean().getId() == null || this.getTipoItemConfiguracaoBean().getId().intValue() == 0) {
if(getTipoItemConfiguracaoService().verificarSeTipoItemConfiguracaoExiste(getTipoItemConfiguracaoBean())){
document.alert(UtilI18N.internacionaliza(request, "MSE01") );
return;
}
this.getTipoItemConfiguracaoService().create(this.getTipoItemConfiguracaoBean(), request);
document.alert(UtilI18N.internacionaliza(request, "MSG05") );
} else {
if(getTipoItemConfiguracaoService().verificarSeTipoItemConfiguracaoExiste(getTipoItemConfiguracaoBean())){
document.alert(UtilI18N.internacionaliza(request, "MSE01") );
return;
}
this.getTipoItemConfiguracaoService().update(this.getTipoItemConfiguracaoBean());
document.alert(UtilI18N.internacionaliza(request, "MSG06") );
}
CITCorporeUtil.limparFormulario(document);
document.executeScript("ocultaGrid()");
HTMLTable tabelaCaracteristica = document.getTableById("tabelaCaracteristica");
tabelaCaracteristica.deleteAllRows();
}
/**
* Restaura Tela de Tipo Item Configura��o.
*
* @param document
* @param request
* @param response
* @throws Exception
* @author valdoilo.damasceno
*/
public void restore(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
this.setTipoItemConfiguracaoBean((TipoItemConfiguracaoDTO) document.getBean());
this.setTipoItemConfiguracaoBean(this.getTipoItemConfiguracaoService().restore(this.getTipoItemConfiguracaoBean()));
document.executeScript("deleteAllRows()");
HTMLForm form = CITCorporeUtil.limparFormulario(document);
form.setValues(this.getTipoItemConfiguracaoBean());
this.bloquearDesbloquearTag(document);
if (this.getTipoItemConfiguracaoBean() != null) {
this.getTipoItemConfiguracaoService().restaurarGridCaracteristicas(document,
this.getCaracteristicaService().consultarCaracteristicasAtivas(this.getTipoItemConfiguracaoBean().getId()));
}
document.executeScript("JANELA_AGUARDE_MENU.hide();");
}
/**
* Bloquea ou desbloqueia TAG.
*
* @param document
* @author valdoilo.damasceno
*/
private void bloquearDesbloquearTag(DocumentHTML document) {
if (this.getTipoItemConfiguracaoBean().getSistema() != "N") {
document.executeScript("bloquearTag(+" + true + ")");
} else {
document.executeScript("bloquearTag(+" + false + ")");
}
}
/**
* Exclui Tipo Item Configura��o e suas caracter�sticas.
*
* @param document
* @param request
* @param response
* @throws Exception
* @author valdoilo.damasceno
*/
public void excluirTipoItemConfiguracao(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
this.setTipoItemConfiguracaoBean((TipoItemConfiguracaoDTO) document.getBean());
if (!this.verificaAssociacaoItemConfiguracao()){
if (this.getTipoItemConfiguracaoBean().getId() != null && this.getTipoItemConfiguracaoBean().getId() != 0) {
this.getTipoItemConfiguracaoBean().setDataFim(UtilDatas.getDataAtual());
this.getTipoItemConfiguracaoService().update(this.getTipoItemConfiguracaoBean());
this.getCaracteristicaTipoItemConfiguracaoService().excluirAssociacaoCaracteristicaTipoItemConfiguracao(
this.getTipoItemConfiguracaoBean().getId(), null);
CITCorporeUtil.limparFormulario(document);
document.executeScript("ocultaGrid()");
document.alert(UtilI18N.internacionaliza(request, "MSG07"));
}
} else {
document.alert(UtilI18N.internacionaliza(request, "grupo.deletar.tipoItemConfiguracao"));
}
}
/**
* Exclui caracter�stica do Tipo Item Configura��o.
*
* @param document
* @param request
* @param response
* @throws Exception
* @author valdoilo.damasceno
*/
public void excluirAssociacaoCaracteristicaTipoItemConfiguracao(DocumentHTML document, HttpServletRequest request, HttpServletResponse response)
throws Exception {
Integer idCaracteristica = !request.getParameter("caracteristicaSerializada").isEmpty() ? Integer.parseInt(request
.getParameter("caracteristicaSerializada")) : null;
CaracteristicaDTO caracteristica = new CaracteristicaDTO();
if(idCaracteristica != null) {
caracteristica.setIdCaracteristica(idCaracteristica);
caracteristica = (CaracteristicaDTO) this.getCaracteristicaService().restore(caracteristica);
/*
* Retirado da rotina para valida��o da pink elephant
* && caracteristica.getSistema() == "N";
* */
if (caracteristica != null ){
this.setTipoItemConfiguracaoBean((TipoItemConfiguracaoDTO) document.getBean());
this.getCaracteristicaTipoItemConfiguracaoService().excluirAssociacaoCaracteristicaTipoItemConfiguracao(this.getTipoItemConfiguracaoBean().getId(), idCaracteristica);
document.alert(UtilI18N.internacionaliza(request, "MSG07"));
}
}
}
/**
* Retorna Service de TipoItemConfiguracao.
*
* @return TipoItemConfiguracaoService
* @throws ServiceException
* @throws Exception
* @author valdoilo.damasceno
*/
public TipoItemConfiguracaoService getTipoItemConfiguracaoService() throws ServiceException, Exception {
return (TipoItemConfiguracaoService) ServiceLocator.getInstance().getService(TipoItemConfiguracaoService.class, null);
}
/**
* Retorna Service de Caracter�stica.
*
* @return CaracteristicaService
* @throws ServiceException
* @throws Exception
* @author valdoilo.damasceno
*/
public CaracteristicaService getCaracteristicaService() throws ServiceException, Exception {
return (CaracteristicaService) ServiceLocator.getInstance().getService(CaracteristicaService.class, null);
}
/**
* Retorna Service de CaracteristicaTipoItemConfiguracao.
*
* @return CaracteristicaTipoItemConfiguracaoService
* @throws ServiceException
* @throws Exception
* @author valdoilo.damasceno
*/
public CaracteristicaTipoItemConfiguracaoService getCaracteristicaTipoItemConfiguracaoService() throws ServiceException, Exception {
return (CaracteristicaTipoItemConfiguracaoService) ServiceLocator.getInstance().getService(CaracteristicaTipoItemConfiguracaoService.class,
null);
}
/**
* Retorna Tipo Item Configura��o.
*
* @return TipoItemConfiguracaoDTO
* @author valdoilo.damasceno
*/
public TipoItemConfiguracaoDTO getTipoItemConfiguracaoBean() {
return this.tipoItemConfiguracaoBean;
}
/**
* Configura Tipo Item Configura��o.
*
* @param tipoItemConfiguracao
* - IDto
* @author valdoilo.damasceno
*/
public void setTipoItemConfiguracaoBean(IDto tipoItemConfiguracao) {
this.tipoItemConfiguracaoBean = (TipoItemConfiguracaoDTO) tipoItemConfiguracao;
}
/*
* (non-Javadoc)
*
* @see br.com.centralit.citajax.html.AjaxFormAction#getBeanClass()
*/
@SuppressWarnings("rawtypes")
@Override
public Class getBeanClass() {
return TipoItemConfiguracaoDTO.class;
}
public static java.util.List<String> listDirectorioImagens(File dir) {
List<String> lista = new ArrayList<String>();
if (dir.isDirectory()) {
String[] filhos = dir.list();
for (int i = 0; i < filhos.length; i++) {
File nome = new File(dir, filhos[i]);
if (nome.isFile()) {
if (nome.getName().endsWith(".png")) {
lista.add(nome.getName());
}
}
}
}
return lista;
}
/**
* Verifica se o Tipo Item Configura��o est� associado a algum Item Configura��o
* @return
* @throws Exception
* @throws ServiceException
* @author thyen.chang
*/
public boolean verificaAssociacaoItemConfiguracao() throws ServiceException, Exception{
return this.getTipoItemConfiguracaoService().verificaAssociacaoItemConfiguracao(this.getTipoItemConfiguracaoBean());
}
}