package br.com.citframework.apresentacao;
import java.util.Collection;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import br.com.citframework.dto.IDto;
import br.com.citframework.excecao.LogicException;
import br.com.citframework.service.CrudService;
import br.com.citframework.util.Constantes;
import br.com.citframework.util.Mensagens;
public abstract class CrudAction extends SecurityAction {
protected ActionForward executar(ActionMapping map, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
if (map.getPath().indexOf("/inserir") > -1) {
return inserir(map, form, request, response);
} else if (map.getPath().indexOf("/alterar") > -1) {
return alterar(map, form, request, response);
} else if (map.getPath().indexOf("/excluir") > -1) {
return excluir(map, form, request, response);
} else if (map.getPath().indexOf("/consultar") > -1) {
return consultar(map, form, request, response);
} else if (map.getPath().indexOf("/listar") > -1) {
return listar(map, form, request, response);
} else if (map.getPath().indexOf("/exibirInsercao") > -1) {
return exibirInsercao(map, form, request, response);
} else if (map.getPath().indexOf("/exibirAlteracao") > -1) {
return exibirAlteracao(map, form, request, response);
} else if (map.getPath().indexOf("/visualizar") > -1) {
return visualizar(map, form, request, response);
} else if (map.getPath().indexOf("/exibirConsulta") > -1) {
return exibirConsulta(map, form, request, response);
} else if (map.getPath().indexOf("/alternarLista") > -1) {
return alternarLista(map, form, request, response);
} else
return null;
}
protected abstract ActionForward alternarLista(ActionMapping map, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception;
protected abstract CrudService getService(HttpServletRequest request) throws Exception;
protected abstract IDto getBean() throws Exception;
protected abstract void validaInsercao(ActionForm form, HttpServletRequest request) throws Exception;
protected abstract void validaAlteracao(ActionForm form, HttpServletRequest request) throws Exception;
protected abstract void validaExclusao(ActionForm form, HttpServletRequest request) throws Exception;
protected abstract void validaConsulta(ActionForm form, HttpServletRequest request) throws Exception;
protected abstract void carregaListasCadastro(ActionForm form, HttpServletRequest request) throws Exception;
protected abstract void carregaListasConsulta(ActionForm form, HttpServletRequest request) throws Exception;
protected abstract void carregaListasVisualizacao(ActionForm form, HttpServletRequest request) throws Exception;
protected ActionForward inserir(ActionMapping map, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
IDto bean = getBean();
validaInsercao(form, request);
CrudService business = getService(request);
copyFormToModel(form, bean, request);
business.create(bean);
gravaMensagem(Mensagens.getValue("MSG05") , request);
// form.reset(map,request);
return map.findForward(Constantes.getValue("SUCESSO"));
}
protected ActionForward alterar(ActionMapping map, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
IDto bean = getBean();
validaAlteracao(form, request);
CrudService business = getService(request);
copyFormToModel(form, bean, request);
business.update(bean);
gravaMensagem(Mensagens.getValue("MSG06"), request);
// form.reset(map,request);
return map.findForward(Constantes.getValue("SUCESSO"));
}
protected ActionForward excluir(ActionMapping map, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
setTipoTela(Constantes.getValue("VISUALIZACAO"), request);
validaExclusao(form, request);
IDto bean = getBean();
CrudService business = getService(request);
copyFormToModel(form, bean, request);
business.delete( bean);
gravaMensagem(Mensagens.getValue("MSG07"), request);
return map.findForward(Constantes.getValue("SUCESSO"));
}
protected ActionForward consultar(ActionMapping map, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
IDto bean = getBean();
validaConsulta(form, request);
CrudService business = getService(request);
copyFormToModel(form, bean, request);
Collection col = business.find(bean);
if (col == null || col.size() == 0) {
throw new LogicException(Mensagens.getValue("MSG04"));
}
request.setAttribute(Constantes.getValue("LISTA_CONSULTA"), col);
carregaListasConsulta(form, request);
return map.findForward(Constantes.getValue("SUCESSO"));
}
protected ActionForward listar(ActionMapping map, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
CrudService business = getService(request);
Collection col = business.list();
request.setAttribute(Constantes.getValue("LISTA"), col);
return map.findForward(Constantes.getValue("SUCESSO"));
}
protected ActionForward exibirInsercao(ActionMapping map, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
setTipoTela(Constantes.getValue("INSERCAO"), request);
carregaListasCadastro(form, request);
return map.findForward(Constantes.getValue("SUCESSO"));
}
protected ActionForward exibirAlteracao(ActionMapping map, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
if (request.getRequestURL().indexOf("/exibirAlteracao.do") > -1) {
IDto bean = getBean();
copyFormToModel(form, bean, request);
CrudService business = getService(request);
bean = business.restore(bean);
copyModelToForm(bean, form, request);
}
setTipoTela(Constantes.getValue("ALTERACAO"), request);
carregaListasCadastro(form, request);
return map.findForward(Constantes.getValue("SUCESSO"));
}
protected ActionForward visualizar(ActionMapping map, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
setTipoTela(Constantes.getValue("VISUALIZACAO"), request);
IDto bean = getBean();
copyFormToModel(form, bean, request);
CrudService business = getService(request);
bean = business.restore(bean);
copyModelToForm(bean, form, request);
carregaListasVisualizacao(form, request);
return map.findForward(Constantes.getValue("SUCESSO"));
}
protected ActionForward exibirConsulta(ActionMapping map, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
carregaListasConsulta(form, request);
form.reset(map, request);
setTipoTela(Constantes.getValue("EXIBIRCONSULTA"), request);
return map.findForward(Constantes.getValue("SUCESSO"));
}
protected void setTipoTela(String tipo, HttpServletRequest req) {
req.setAttribute(Constantes.getValue("TIPO_TELA"), tipo);
}
}