package shst.medicina.fichasclinicas.webservices.jaxrs; import java.io.File; import java.io.FileNotFoundException; import java.sql.Timestamp; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Scanner; import javax.servlet.http.HttpServletRequest; import javax.ws.rs.Consumes; import javax.ws.rs.DefaultValue; import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import pt.evolute.data.ProviderSpringBean; import shst.medicina.fichasclinicas.beans.EvoMessageBean; import shst.medicina.fichasclinicas.beans.EvoMessageTypeBean; import shst.medicina.fichasclinicas.beans.EvoResponseBean; import shst.medicina.fichasclinicas.beans.FichaEAdmissaoInicialBean; import shst.medicina.fichasclinicas.beans.FichaEMCurativaEnfBean; import shst.medicina.fichasclinicas.beans.FichaEOcasionalBean; import shst.medicina.fichasclinicas.beans.FichaEPeriodicoBean; import shst.medicina.fichasclinicas.beans.FichaResumeBean; import shst.medicina.fichasclinicas.beans.TrabalhadorResumeBean; import shst.medicina.fichasclinicas.beans.fichasclinicas.FcFichaAbsentismoBeanData; import shst.medicina.fichasclinicas.beans.fichasclinicas.FcFichaActividadeBeanData; import shst.medicina.fichasclinicas.beans.fichasclinicas.FcFichaAntecedentesFamiliaresBeanData; import shst.medicina.fichasclinicas.beans.fichasclinicas.FcFichaAntecedentesOcupacionaisAcidentesTrabalhoBeanData; import shst.medicina.fichasclinicas.beans.fichasclinicas.FcFichaAntecedentesOcupacionaisActividadesAnterioresBeanData; import shst.medicina.fichasclinicas.beans.fichasclinicas.FcFichaAntecedentesOcupacionaisBeanData; import shst.medicina.fichasclinicas.beans.fichasclinicas.FcFichaAntecedentesOcupacionaisDoencasProfissionaisBeanData; import shst.medicina.fichasclinicas.beans.fichasclinicas.FcFichaBeanData; import shst.medicina.fichasclinicas.beans.fichasclinicas.FcFichaClassificacaoIndividualSaudeBeanData; import shst.medicina.fichasclinicas.beans.fichasclinicas.FcFichaConclusoesBeanData; import shst.medicina.fichasclinicas.beans.fichasclinicas.FcFichaDoencasBeanData; import shst.medicina.fichasclinicas.beans.fichasclinicas.FcFichaEsquemaVacinalBeanData; import shst.medicina.fichasclinicas.beans.fichasclinicas.FcFichaExameObjectivoBeanData; import shst.medicina.fichasclinicas.beans.fichasclinicas.FcFichaHabitosBeanData; import shst.medicina.fichasclinicas.beans.fichasclinicas.FcFichaProblemasSolucoesBeanData; import shst.medicina.fichasclinicas.beans.fichasclinicas.FcTipoFichaBeanData; import shst.medicina.fichasclinicas.beans.shst.EmpresasBeanData; import shst.medicina.fichasclinicas.beans.shst.EstabelecimentosBeanData; import shst.medicina.fichasclinicas.beans.shst.TrabalhadoresBeanData; import shst.medicina.fichasclinicas.data.fichasclinicas.FcFichaAbsentismoData; import shst.medicina.fichasclinicas.data.fichasclinicas.FcFichaActividadeData; import shst.medicina.fichasclinicas.data.fichasclinicas.FcFichaAntecedentesFamiliaresData; import shst.medicina.fichasclinicas.data.fichasclinicas.FcFichaAntecedentesOcupacionaisAcidentesTrabalhoData; import shst.medicina.fichasclinicas.data.fichasclinicas.FcFichaAntecedentesOcupacionaisActividadesAnterioresData; import shst.medicina.fichasclinicas.data.fichasclinicas.FcFichaAntecedentesOcupacionaisData; import shst.medicina.fichasclinicas.data.fichasclinicas.FcFichaAntecedentesOcupacionaisDoencasProfissionaisData; import shst.medicina.fichasclinicas.data.fichasclinicas.FcFichaClassificacaoIndividualSaudeData; import shst.medicina.fichasclinicas.data.fichasclinicas.FcFichaConclusoesData; import shst.medicina.fichasclinicas.data.fichasclinicas.FcFichaData; import shst.medicina.fichasclinicas.data.fichasclinicas.FcFichaDoencasData; import shst.medicina.fichasclinicas.data.fichasclinicas.FcFichaEsquemaVacinalData; import shst.medicina.fichasclinicas.data.fichasclinicas.FcFichaExameObjectivoData; import shst.medicina.fichasclinicas.data.fichasclinicas.FcFichaHabitosData; import shst.medicina.fichasclinicas.data.fichasclinicas.FcFichaProblemasSolucoesData; import shst.medicina.fichasclinicas.data.fichasclinicas.FcTipoFichaData; import shst.medicina.fichasclinicas.data.fichasclinicas.inner.FcTipoFicha; import shst.medicina.fichasclinicas.data.shst.EmpresasData; import shst.medicina.fichasclinicas.data.shst.EstabelecimentosData; import shst.medicina.fichasclinicas.data.shst.TrabalhadoresData; import com.evolute.module.utilizadores.data.EvoUsrUserData; import com.evolute.module.utilizadores.users.provider.UsersDataProvider; import com.evolute.utils.error.ErrorLogger; import com.evolute.utils.sql.Expression; import com.evolute.utils.sql.Field; import com.googlecode.htmlcompressor.compressor.HtmlCompressor; @Path("/fichasclinicas") public class FichasClinicasImpl { @Autowired(required = true) @Qualifier("defaultProvider") ProviderSpringBean fichasProvidersBean; @Autowired(required = true) @Qualifier("siprpProvider") ProviderSpringBean siprpProvidersBean; @GET @Path("/getEmpresas") @Produces(MediaType.APPLICATION_JSON) public Response getEmpresas(@Context HttpServletRequest req, @DefaultValue("") @QueryParam("filter") String filter) { EvoResponseBean rsp = new EvoResponseBean(); if(req.getSession().getAttribute("user") != null) { Collection result = new LinkedList(); Expression dataFilter = new Field(EmpresasData.INACTIVO).isDifferent("y").and(new Field(EmpresasData.DATA_CANCELAMENTO).isEqual(null)); if(!filter.isEmpty()) { dataFilter = dataFilter.and(new Field(EmpresasData.DESIGNACAO_SOCIAL).isILike("%"+filter+"%")) ; } try { Collection bdLoad = siprpProvidersBean .getENTITY_PROVIDER() .listLoad(EmpresasData.class, dataFilter, new String[]{EmpresasData.DESIGNACAO_SOCIAL}, null); for(EmpresasData bdElem : bdLoad) { EmpresasBeanData resultElem = new EmpresasBeanData(); resultElem.setMapData(bdElem.getPropertiesValues(new String[]{EmpresasData.ID,EmpresasData.DESIGNACAO_SOCIAL})); result.add(resultElem); } } catch (Exception ex) { ErrorLogger.logException(ex); } rsp.setSuccess(true); rsp.setData(result); } else { rsp.setSuccess(false); EvoMessageBean mb = new EvoMessageBean(); mb.setType(EvoMessageTypeBean.SESSIONTIMEOUT); mb.setMessageData("sessão expirada"); rsp.addMessage(mb); } return Response.status(200).entity(rsp).build(); } @GET @Path("/getEstabelecimentos") @Produces(MediaType.APPLICATION_JSON) public Response getEstabelecimentos(@Context HttpServletRequest req, @DefaultValue("0") @QueryParam("empresaID") int empresaID,@DefaultValue("") @QueryParam("filter") String filter) { EvoResponseBean rsp = new EvoResponseBean(); if(req.getSession().getAttribute("user") != null) { Collection result = new LinkedList(); Expression dataFilter = new Field(EstabelecimentosData.INACTIVO).isDifferent("y").and(new Field(EstabelecimentosData.EMPRESA_ID).isEqual(empresaID)); if(!filter.isEmpty()) { dataFilter = dataFilter.and(new Field(EstabelecimentosData.NOME).isILike("%"+filter+"%")) ; } try { Collection bdLoad = siprpProvidersBean .getENTITY_PROVIDER() .listLoad(EstabelecimentosData.class, dataFilter, new String[]{EstabelecimentosData.NOME}, null); for(EstabelecimentosData bdElem : bdLoad) { EstabelecimentosBeanData resultElem = new EstabelecimentosBeanData(); resultElem.setMapData(bdElem.getPropertiesValues(new String[]{EstabelecimentosData.ID,EstabelecimentosData.NOME})); result.add(resultElem); } } catch (Exception ex) { ErrorLogger.logException(ex); } rsp.setSuccess(true); rsp.setData(result); } else { rsp.setSuccess(false); EvoMessageBean mb = new EvoMessageBean(); mb.setType(EvoMessageTypeBean.SESSIONTIMEOUT); mb.setMessageData("sessão expirada"); rsp.addMessage(mb); } return Response.status(200).entity(rsp).build(); } @GET @Path("/getTrabalhadores") @Produces(MediaType.APPLICATION_JSON) public Response getTrabalhadores(@Context HttpServletRequest req, @DefaultValue("0") @QueryParam("estabelecimentoID") int estabelecimentoID,@DefaultValue("") @QueryParam("filter") String filter) { EvoResponseBean rsp = new EvoResponseBean(); if(req.getSession().getAttribute("user") != null) { Collection result = new LinkedList(); Expression dataFilter = new Field(TrabalhadoresData.INACTIVO).isDifferent("y").and(new Field(TrabalhadoresData.ESTABELECIMENTO_ID).isEqual(estabelecimentoID)).and(new Field(TrabalhadoresData.DATA_DEMISSAO).isEqual(null)); if(!filter.isEmpty()) { dataFilter = dataFilter.and(new Field("PLAIN("+TrabalhadoresData.NOME+")").isILike("%"+filter+"%")) ; } try { Collection bdLoad = siprpProvidersBean .getENTITY_PROVIDER() .listLoad(TrabalhadoresData.class, dataFilter, new String[]{TrabalhadoresData.NOME}, null); for(TrabalhadoresData bdElem : bdLoad) { TrabalhadoresBeanData resultElem = new TrabalhadoresBeanData(); resultElem.setMapData(bdElem.getPropertiesValues(new String[]{TrabalhadoresData.ID,TrabalhadoresData.NOME})); result.add(resultElem); } } catch (Exception ex) { ErrorLogger.logException(ex); } rsp.setSuccess(true); rsp.setData(result); } else { rsp.setSuccess(false); EvoMessageBean mb = new EvoMessageBean(); mb.setType(EvoMessageTypeBean.SESSIONTIMEOUT); mb.setMessageData("sessão expirada"); rsp.addMessage(mb); } return Response.status(200).entity(rsp).build(); } @GET @Path("/getFichaEAdmissaoInicial") @Produces(MediaType.APPLICATION_JSON) public Response getFichaEAdmissaoInicial(@Context HttpServletRequest req, @DefaultValue("0") @QueryParam("fichaID") int fichaID) { EvoResponseBean rsp = new EvoResponseBean(); if(req.getSession().getAttribute("user") != null) { FcFichaData ficha=null; try { ficha = fichasProvidersBean.getENTITY_PROVIDER().load(FcFichaData.class, new Object[]{fichaID,null}, new String[]{FcFichaData.ID,FcFichaData.DELETED_STAMP}); if(ficha != null) { FichaEAdmissaoInicialBean var = new FichaEAdmissaoInicialBean(); FcFichaBeanData fichaBean = new FcFichaBeanData(); fichaBean.setMapData(ficha.getPropertiesValues(fichaBean.getMapData().keySet().toArray(new String[]{}))); var.setFicha(fichaBean); FcFichaAbsentismoData abs = ficha.toAbsentismo_id(); if(abs != null) { FcFichaAbsentismoBeanData absBean = new FcFichaAbsentismoBeanData(); absBean.setMapData(abs.getPropertiesValues(absBean.getMapData().keySet().toArray(new String[]{}))); var.setAbsentismo(absBean); } FcFichaActividadeData act = ficha.toActividade_id(); if(act != null) { FcFichaActividadeBeanData actBean = new FcFichaActividadeBeanData(); actBean.setMapData(act.getPropertiesValues(actBean.getMapData().keySet().toArray(new String[]{}))); var.setActividade(actBean); } FcFichaAntecedentesFamiliaresData antf = ficha.toAntecedentes_familiares_id(); if(antf != null) { FcFichaAntecedentesFamiliaresBeanData antfBean = new FcFichaAntecedentesFamiliaresBeanData(); antfBean.setMapData(antf.getPropertiesValues(antfBean.getMapData().keySet().toArray(new String[]{}))); var.setAntecedentesFamiliares(antfBean); } FcFichaDoencasData antp = ficha.toAntecedentes_pessoais_id(); if(antp != null) { FcFichaDoencasBeanData antpBean = new FcFichaDoencasBeanData(); antpBean.setMapData(antp.getPropertiesValues(antpBean.getMapData().keySet().toArray(new String[]{}))); var.setAntecedentesPessoais(antpBean); } FcFichaAntecedentesOcupacionaisData anto =ficha.toAntecedentes_ocupacionais_id(); if(anto != null) { FcFichaAntecedentesOcupacionaisBeanData antoBean = new FcFichaAntecedentesOcupacionaisBeanData(); antoBean.setMapData(anto.getPropertiesValues(antoBean.getMapData().keySet().toArray(new String[]{}))); var.setAntecentesOcupacionais(antoBean); List antoat = anto.fromFcFichaAntecedentesOcupacionaisAcidentesTrabalho_antecedentes_ocupacionais_id(); LinkedList antoatBean = new LinkedList(); for(FcFichaAntecedentesOcupacionaisAcidentesTrabalhoData at : antoat) { if(at.getDeleted_stamp() == null) { FcFichaAntecedentesOcupacionaisAcidentesTrabalhoBeanData atBean = new FcFichaAntecedentesOcupacionaisAcidentesTrabalhoBeanData(); atBean.setMapData(at.getPropertiesValues(atBean.getMapData().keySet().toArray(new String[]{}))); antoatBean.add(atBean); } } var.setAntecentesOcupacionaisAcidentesTrabalho(antoatBean); List antoaa = anto.fromFcFichaAntecedentesOcupacionaisActividadesAnteriores_antecedentes_ocupacionais_id(); LinkedList antoaaBean = new LinkedList(); for(FcFichaAntecedentesOcupacionaisActividadesAnterioresData at : antoaa) { if(at.getDeleted_stamp() == null) { FcFichaAntecedentesOcupacionaisActividadesAnterioresBeanData atBean = new FcFichaAntecedentesOcupacionaisActividadesAnterioresBeanData(); atBean.setMapData(at.getPropertiesValues(atBean.getMapData().keySet().toArray(new String[]{}))); antoaaBean.add(atBean); } } var.setAntecentesOcupacionaisActividadesAnteriores(antoaaBean); List antodp = anto.fromFcFichaAntecedentesOcupacionaisDoencasProfissionais_antecedentes_ocupacionais_id(); LinkedList antodpBean = new LinkedList(); for(FcFichaAntecedentesOcupacionaisDoencasProfissionaisData at : antodp) { if(at.getDeleted_stamp() == null) { FcFichaAntecedentesOcupacionaisDoencasProfissionaisBeanData atBean = new FcFichaAntecedentesOcupacionaisDoencasProfissionaisBeanData(); atBean.setMapData(at.getPropertiesValues(atBean.getMapData().keySet().toArray(new String[]{}))); antodpBean.add(atBean); } } var.setAntecentesOcupacionaisDoencasProfissionais(antodpBean); } FcFichaClassificacaoIndividualSaudeData cis = ficha.toClassificacao_individual_saude_id(); if(cis != null) { FcFichaClassificacaoIndividualSaudeBeanData cisBean = new FcFichaClassificacaoIndividualSaudeBeanData(); cisBean.setMapData(cis.getPropertiesValues(cisBean.getMapData().keySet().toArray(new String[]{}))); var.setClassificacaoIndividualSaude(cisBean); } FcFichaConclusoesData cr = ficha.toConclusoes_id(); if(cr != null) { FcFichaConclusoesBeanData crBean = new FcFichaConclusoesBeanData(); crBean.setMapData(cr.getPropertiesValues(crBean.getMapData().keySet().toArray(new String[]{}))); var.setConclusoesResumo(crBean); } FcFichaDoencasData da = ficha.toDoencas_activas_id(); if(da != null) { FcFichaDoencasBeanData daBean = new FcFichaDoencasBeanData(); daBean.setMapData(da.getPropertiesValues(daBean.getMapData().keySet().toArray(new String[]{}))); var.setDoencasActivas(daBean); } FcFichaEsquemaVacinalData ev = ficha.toEsquema_vacinal_id(); if(ev != null) { FcFichaEsquemaVacinalBeanData evBean = new FcFichaEsquemaVacinalBeanData(); evBean.setMapData(ev.getPropertiesValues(evBean.getMapData().keySet().toArray(new String[]{}))); var.setEsquemaVacinal(evBean); } FcFichaExameObjectivoData eo = ficha.toExame_objectivo_id(); if(eo != null) { FcFichaExameObjectivoBeanData eoBean = new FcFichaExameObjectivoBeanData(); eoBean.setMapData(eo.getPropertiesValues(eoBean.getMapData().keySet().toArray(new String[]{}))); var.setExameObjectivo(eoBean); } FcFichaHabitosData fh = ficha.toHabitos_id(); if(fh != null) { FcFichaHabitosBeanData fhBean = new FcFichaHabitosBeanData(); fhBean.setMapData(fh.getPropertiesValues(fhBean.getMapData().keySet().toArray(new String[]{}))); var.setHabitos(fhBean); } FcFichaProblemasSolucoesData ps = ficha.toProblemas_solucoes_id(); if(ps != null) { FcFichaProblemasSolucoesBeanData psBean = new FcFichaProblemasSolucoesBeanData(); psBean.setMapData(ps.getPropertiesValues(psBean.getMapData().keySet().toArray(new String[]{}))); var.setProblemasSolucoes(psBean); } rsp.setSuccess(true); rsp.setData(var); } else { rsp.setSuccess(false); EvoMessageBean mb = new EvoMessageBean(); mb.setType(EvoMessageTypeBean.ERROR); mb.setMessageData("ID de ficha inválido!"); rsp.addMessage(mb); } } catch(Exception ex) { rsp.setSuccess(false); EvoMessageBean mb = new EvoMessageBean(); mb.setType(EvoMessageTypeBean.ERROR); mb.setMessageData("Erro ao carregar a Ficha!"); rsp.addMessage(mb); } } else { rsp.setSuccess(false); EvoMessageBean mb = new EvoMessageBean(); mb.setType(EvoMessageTypeBean.SESSIONTIMEOUT); mb.setMessageData("sessão expirada"); rsp.addMessage(mb); } return Response.status(200).entity(rsp).build(); } private static Map mapCleaner(Map in) { Map out = new HashMap(); for(Entry e : in.entrySet()) { if(!(e.getKey().equals("id")||(e.getValue() == null))) { out.put(e.getKey(), e.getValue()); } } return out; } @POST @Path("/sendFichaEAdmissaoInicial") @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) public Response sendFichaEAdmissaoInicial(@Context HttpServletRequest req, FichaEAdmissaoInicialBean ficha) throws Exception { EvoResponseBean rsp = new EvoResponseBean(); EvoUsrUserData user = (EvoUsrUserData) req.getSession().getAttribute("user") ; // EvoUsrUserData user = new EvoUsrUserData(); // user.setName("fake admin"); // user.setId(1); if( user != null) { Object trx = null; try { if(ficha.getFicha() != null) { String operation = null; FichaEAdmissaoInicialBean rspdata = new FichaEAdmissaoInicialBean(); trx = fichasProvidersBean.getENTITY_PROVIDER().begin(); FcFichaData ff = null; if(ficha.getFicha().getId() != null) { ff = fichasProvidersBean.getENTITY_PROVIDER().load(FcFichaData.class, ficha.getFicha().getId()); operation = "Actualização"; } if(ff == null) { ff = new FcFichaData(); ff.setProvider(fichasProvidersBean.getENTITY_PROVIDER()); ff.setCreated_user_name(user.getName()); ff.setCreated_user_id(user.getId()); operation = "Criação"; } ff.setHashData(mapCleaner(ficha.getFicha().getMapData())); if(ficha.getAntecentesOcupacionais() != null ) { FcFichaAntecedentesOcupacionaisData fd = null; if(ficha.getAntecentesOcupacionais().getId() != null) { fd = fichasProvidersBean.getENTITY_PROVIDER().load(FcFichaAntecedentesOcupacionaisData.class, ficha.getAntecentesOcupacionais().getId()); } if(fd == null) { fd = new FcFichaAntecedentesOcupacionaisData(); fd.setProvider(fichasProvidersBean.getENTITY_PROVIDER()); fd.setCreated_user_name(user.getName()); fd.setCreated_user_id(user.getId()); } fd.setHashData(mapCleaner(ficha.getAntecentesOcupacionais().getMapData())); fd.save(trx); ficha.getAntecentesOcupacionais().setId(fd.getId()); ff.setAntecedentes_ocupacionais_id(fd.getId()); FcFichaAntecedentesOcupacionaisBeanData fdb = new FcFichaAntecedentesOcupacionaisBeanData(); fdb.setId(fd.getId()); rspdata.setAntecentesOcupacionais(fdb); if(ficha.getAntecentesOcupacionaisAcidentesTrabalho() != null) { List aoat = new LinkedList(); List notDel = new LinkedList(); for(FcFichaAntecedentesOcupacionaisAcidentesTrabalhoBeanData item : ficha.getAntecentesOcupacionaisAcidentesTrabalho()) { FcFichaAntecedentesOcupacionaisAcidentesTrabalhoData itemBD = null; if(item.getId() != null) { itemBD = fichasProvidersBean.getENTITY_PROVIDER().load(FcFichaAntecedentesOcupacionaisAcidentesTrabalhoData.class, item.getId()); } if(itemBD == null) { itemBD = new FcFichaAntecedentesOcupacionaisAcidentesTrabalhoData(); itemBD.setProvider(fichasProvidersBean.getENTITY_PROVIDER()); itemBD.setCreated_user_name(user.getName()); itemBD.setCreated_user_id(user.getId()); } itemBD.setHashData(mapCleaner(item.getMapData())); itemBD.setAntecedentes_ocupacionais_id(fd.getId()); itemBD.setDeleted_stamp(null); itemBD.save(trx); item.setId(itemBD.getId()); notDel.add(itemBD.getId()); FcFichaAntecedentesOcupacionaisAcidentesTrabalhoBeanData itemb = new FcFichaAntecedentesOcupacionaisAcidentesTrabalhoBeanData(); itemb.setId(itemBD.getId()); aoat.add(itemb); } List toDel = fichasProvidersBean.getENTITY_PROVIDER().listLoad(FcFichaAntecedentesOcupacionaisAcidentesTrabalhoData.class, new Field(FcFichaAntecedentesOcupacionaisAcidentesTrabalhoData.ANTECEDENTES_OCUPACIONAIS_ID).isEqual(fd.getId()).and(new Field(FcFichaAntecedentesOcupacionaisAcidentesTrabalhoData.ID).notIn(notDel)), null, null); for(FcFichaAntecedentesOcupacionaisAcidentesTrabalhoData del : toDel) { del.setDeleted_stamp(new Timestamp(System.currentTimeMillis())); del.setDeleted_user_name(user.getName()); del.setDeleted_user_id(user.getId()); del.save(trx); } rspdata.setAntecentesOcupacionaisAcidentesTrabalho(aoat); } if(ficha.getAntecentesOcupacionaisActividadesAnteriores() != null) { List aoaa = new LinkedList(); List notDel = new LinkedList(); for(FcFichaAntecedentesOcupacionaisActividadesAnterioresBeanData item : ficha.getAntecentesOcupacionaisActividadesAnteriores()) { FcFichaAntecedentesOcupacionaisActividadesAnterioresData itemBD = null; if(item.getId() != null) { itemBD = fichasProvidersBean.getENTITY_PROVIDER().load(FcFichaAntecedentesOcupacionaisActividadesAnterioresData.class, item.getId()); } if(itemBD == null) { itemBD = new FcFichaAntecedentesOcupacionaisActividadesAnterioresData(); itemBD.setProvider(fichasProvidersBean.getENTITY_PROVIDER()); itemBD.setCreated_user_name(user.getName()); itemBD.setCreated_user_id(user.getId()); } itemBD.setHashData(mapCleaner(item.getMapData())); itemBD.setAntecedentes_ocupacionais_id(fd.getId()); itemBD.setDeleted_stamp(null); itemBD.save(trx); item.setId(itemBD.getId()); notDel.add(itemBD.getId()); FcFichaAntecedentesOcupacionaisActividadesAnterioresBeanData itemb = new FcFichaAntecedentesOcupacionaisActividadesAnterioresBeanData(); itemb.setId(itemBD.getId()); aoaa.add(itemb); } List toDel = fichasProvidersBean.getENTITY_PROVIDER().listLoad(FcFichaAntecedentesOcupacionaisActividadesAnterioresData.class, new Field(FcFichaAntecedentesOcupacionaisActividadesAnterioresData.ANTECEDENTES_OCUPACIONAIS_ID).isEqual(fd.getId()).and(new Field(FcFichaAntecedentesOcupacionaisActividadesAnterioresData.ID).notIn(notDel)), null, null); for(FcFichaAntecedentesOcupacionaisActividadesAnterioresData del : toDel) { del.setDeleted_stamp(new Timestamp(System.currentTimeMillis())); del.setDeleted_user_name(user.getName()); del.setDeleted_user_id(user.getId()); del.save(trx); } rspdata.setAntecentesOcupacionaisActividadesAnteriores(aoaa); } if(ficha.getAntecentesOcupacionaisDoencasProfissionais() != null) { List aodp = new LinkedList(); List notDel = new LinkedList(); for(FcFichaAntecedentesOcupacionaisDoencasProfissionaisBeanData item : ficha.getAntecentesOcupacionaisDoencasProfissionais()) { FcFichaAntecedentesOcupacionaisDoencasProfissionaisData itemBD = null; if(item.getId() != null) { itemBD = fichasProvidersBean.getENTITY_PROVIDER().load(FcFichaAntecedentesOcupacionaisDoencasProfissionaisData.class, item.getId()); } if(itemBD == null) { itemBD = new FcFichaAntecedentesOcupacionaisDoencasProfissionaisData(); itemBD.setProvider(fichasProvidersBean.getENTITY_PROVIDER()); itemBD.setCreated_user_name(user.getName()); itemBD.setCreated_user_id(user.getId()); } itemBD.setHashData(mapCleaner(item.getMapData())); itemBD.setAntecedentes_ocupacionais_id(fd.getId()); itemBD.setDeleted_stamp(null); itemBD.save(trx); item.setId(itemBD.getId()); notDel.add(itemBD.getId()); FcFichaAntecedentesOcupacionaisDoencasProfissionaisBeanData itemb = new FcFichaAntecedentesOcupacionaisDoencasProfissionaisBeanData(); itemb.setId(itemBD.getId()); aodp.add(itemb); } List toDel = fichasProvidersBean.getENTITY_PROVIDER().listLoad(FcFichaAntecedentesOcupacionaisDoencasProfissionaisData.class, new Field(FcFichaAntecedentesOcupacionaisDoencasProfissionaisData.ANTECEDENTES_OCUPACIONAIS_ID).isEqual(fd.getId()).and(new Field(FcFichaAntecedentesOcupacionaisDoencasProfissionaisData.ID).notIn(notDel)), null, null); for(FcFichaAntecedentesOcupacionaisDoencasProfissionaisData del : toDel) { del.setDeleted_stamp(new Timestamp(System.currentTimeMillis())); del.setDeleted_user_name(user.getName()); del.setDeleted_user_id(user.getId()); del.save(trx); } rspdata.setAntecentesOcupacionaisDoencasProfissionais(aodp); } } if(ficha.getAbsentismo() != null ) { FcFichaAbsentismoData fd = null; if(ficha.getAbsentismo().getId() != null) { fd = fichasProvidersBean.getENTITY_PROVIDER().load(FcFichaAbsentismoData.class,ficha.getAbsentismo().getId()); } if(fd == null) { fd = new FcFichaAbsentismoData(); fd.setProvider(fichasProvidersBean.getENTITY_PROVIDER()); fd.setCreated_user_name(user.getName()); fd.setCreated_user_id(user.getId()); } fd.setHashData(mapCleaner(ficha.getAbsentismo().getMapData())); fd.save(trx); ficha.getAbsentismo().setId(fd.getId()); ff.setAbsentismo_id(fd.getId()); FcFichaAbsentismoBeanData fdb = new FcFichaAbsentismoBeanData(); fdb.setId(fd.getId()); rspdata.setAbsentismo(fdb); } if(ficha.getActividade() != null ) { FcFichaActividadeData fd = null; if(ficha.getActividade().getId() != null) { fd = fichasProvidersBean.getENTITY_PROVIDER().load(FcFichaActividadeData.class,ficha.getActividade().getId()); } if(fd == null) { fd = new FcFichaActividadeData(); fd.setProvider(fichasProvidersBean.getENTITY_PROVIDER()); fd.setCreated_user_name(user.getName()); fd.setCreated_user_id(user.getId()); } fd.setHashData(mapCleaner(ficha.getActividade().getMapData())); fd.save(trx); ficha.getActividade().setId(fd.getId()); ff.setActividade_id(fd.getId()); FcFichaActividadeBeanData fdb = new FcFichaActividadeBeanData(); fdb.setId(fd.getId()); rspdata.setActividade(fdb); } if(ficha.getAntecedentesFamiliares() != null ) { FcFichaAntecedentesFamiliaresData fd = null; if(ficha.getAntecedentesFamiliares().getId() != null) { fd = fichasProvidersBean.getENTITY_PROVIDER().load(FcFichaAntecedentesFamiliaresData.class,ficha.getAntecedentesFamiliares().getId()); } if(fd == null) { fd = new FcFichaAntecedentesFamiliaresData(); fd.setProvider(fichasProvidersBean.getENTITY_PROVIDER()); fd.setCreated_user_name(user.getName()); fd.setCreated_user_id(user.getId()); } fd.setHashData(mapCleaner(ficha.getAntecedentesFamiliares().getMapData())); fd.save(trx); ficha.getAntecedentesFamiliares().setId(fd.getId()); ff.setAntecedentes_familiares_id(fd.getId()); FcFichaAntecedentesFamiliaresBeanData fdb = new FcFichaAntecedentesFamiliaresBeanData(); fdb.setId(fd.getId()); rspdata.setAntecedentesFamiliares(fdb); } if(ficha.getAntecedentesPessoais() != null ) { FcFichaDoencasData fd = null; if(ficha.getAntecedentesPessoais().getId() != null) { fd = fichasProvidersBean.getENTITY_PROVIDER().load(FcFichaDoencasData.class,ficha.getAntecedentesPessoais().getId()); } if(fd == null) { fd = new FcFichaDoencasData(); fd.setProvider(fichasProvidersBean.getENTITY_PROVIDER()); fd.setCreated_user_name(user.getName()); fd.setCreated_user_id(user.getId()); } fd.setHashData(mapCleaner(ficha.getAntecedentesPessoais().getMapData())); fd.save(trx); ficha.getAntecedentesPessoais().setId(fd.getId()); ff.setAntecedentes_pessoais_id(fd.getId()); FcFichaDoencasBeanData fdb = new FcFichaDoencasBeanData(); fdb.setId(fd.getId()); rspdata.setAntecedentesPessoais(fdb); } if(ficha.getClassificacaoIndividualSaude() != null ) { FcFichaClassificacaoIndividualSaudeData fd = null; if(ficha.getClassificacaoIndividualSaude().getId() != null) { fd = fichasProvidersBean.getENTITY_PROVIDER().load(FcFichaClassificacaoIndividualSaudeData.class,ficha.getClassificacaoIndividualSaude().getId()); } if(fd == null) { fd = new FcFichaClassificacaoIndividualSaudeData(); fd.setProvider(fichasProvidersBean.getENTITY_PROVIDER()); fd.setCreated_user_name(user.getName()); fd.setCreated_user_id(user.getId()); } fd.setHashData(mapCleaner(ficha.getClassificacaoIndividualSaude().getMapData())); fd.save(trx); ficha.getClassificacaoIndividualSaude().setId(fd.getId()); ff.setClassificacao_individual_saude_id(fd.getId()); FcFichaClassificacaoIndividualSaudeBeanData fdb = new FcFichaClassificacaoIndividualSaudeBeanData(); fdb.setId(fd.getId()); rspdata.setClassificacaoIndividualSaude(fdb); } if(ficha.getConclusoesResumo() != null ) { FcFichaConclusoesData fd = null; if(ficha.getConclusoesResumo().getId() != null) { fd = fichasProvidersBean.getENTITY_PROVIDER().load(FcFichaConclusoesData.class,ficha.getConclusoesResumo().getId()); } if(fd == null) { fd = new FcFichaConclusoesData(); fd.setProvider(fichasProvidersBean.getENTITY_PROVIDER()); fd.setCreated_user_name(user.getName()); fd.setCreated_user_id(user.getId()); } fd.setHashData(mapCleaner(ficha.getConclusoesResumo().getMapData())); fd.save(trx); ficha.getConclusoesResumo().setId(fd.getId()); ff.setConclusoes_id(fd.getId()); FcFichaConclusoesBeanData fdb = new FcFichaConclusoesBeanData(); fdb.setId(fd.getId()); rspdata.setConclusoesResumo(fdb); } if(ficha.getDoencasActivas() != null ) { FcFichaDoencasData fd = null; if(ficha.getDoencasActivas().getId() != null) { fd = fichasProvidersBean.getENTITY_PROVIDER().load(FcFichaDoencasData.class,ficha.getDoencasActivas().getId()); } if(fd == null) { fd = new FcFichaDoencasData(); fd.setProvider(fichasProvidersBean.getENTITY_PROVIDER()); fd.setCreated_user_name(user.getName()); fd.setCreated_user_id(user.getId()); } fd.setHashData(mapCleaner(ficha.getDoencasActivas().getMapData())); fd.save(trx); ficha.getDoencasActivas().setId(fd.getId()); ff.setDoencas_activas_id(fd.getId()); FcFichaDoencasBeanData fdb = new FcFichaDoencasBeanData(); fdb.setId(fd.getId()); rspdata.setDoencasActivas(fdb); } if(ficha.getEsquemaVacinal() != null ) { FcFichaEsquemaVacinalData fd = null; if(ficha.getEsquemaVacinal().getId() != null) { fd = fichasProvidersBean.getENTITY_PROVIDER().load(FcFichaEsquemaVacinalData.class,ficha.getEsquemaVacinal().getId()); } if(fd == null) { fd = new FcFichaEsquemaVacinalData(); fd.setProvider(fichasProvidersBean.getENTITY_PROVIDER()); fd.setCreated_user_name(user.getName()); fd.setCreated_user_id(user.getId()); } fd.setHashData(mapCleaner(ficha.getEsquemaVacinal().getMapData())); fd.save(trx); ficha.getEsquemaVacinal().setId(fd.getId()); ff.setEsquema_vacinal_id(fd.getId()); FcFichaEsquemaVacinalBeanData fdb = new FcFichaEsquemaVacinalBeanData(); fdb.setId(fd.getId()); rspdata.setEsquemaVacinal(fdb); } if(ficha.getExameObjectivo() != null ) { FcFichaExameObjectivoData fd = null; if(ficha.getExameObjectivo().getId() != null) { fd = fichasProvidersBean.getENTITY_PROVIDER().load(FcFichaExameObjectivoData.class,ficha.getExameObjectivo().getId()); } if(fd == null) { fd = new FcFichaExameObjectivoData(); fd.setProvider(fichasProvidersBean.getENTITY_PROVIDER()); fd.setCreated_user_name(user.getName()); fd.setCreated_user_id(user.getId()); } fd.setHashData(mapCleaner(ficha.getExameObjectivo().getMapData())); fd.save(trx); ficha.getExameObjectivo().setId(fd.getId()); ff.setExame_objectivo_id(fd.getId()); FcFichaExameObjectivoBeanData fdb = new FcFichaExameObjectivoBeanData(); fdb.setId(fd.getId()); rspdata.setExameObjectivo(fdb); } if(ficha.getHabitos() != null ) { FcFichaHabitosData fd = null; if(ficha.getHabitos().getId() != null) { fd = fichasProvidersBean.getENTITY_PROVIDER().load(FcFichaHabitosData.class,ficha.getHabitos().getId()); } if(fd == null) { fd = new FcFichaHabitosData(); fd.setProvider(fichasProvidersBean.getENTITY_PROVIDER()); fd.setCreated_user_name(user.getName()); fd.setCreated_user_id(user.getId()); } fd.setHashData(mapCleaner(ficha.getHabitos().getMapData())); fd.save(trx); ficha.getHabitos().setId(fd.getId()); ff.setHabitos_id(fd.getId()); FcFichaHabitosBeanData fdb = new FcFichaHabitosBeanData(); fdb.setId(fd.getId()); rspdata.setHabitos(fdb); } if(ficha.getProblemasSolucoes() != null ) { FcFichaProblemasSolucoesData fd = null; if(ficha.getProblemasSolucoes().getId() != null) { fd = fichasProvidersBean.getENTITY_PROVIDER().load(FcFichaProblemasSolucoesData.class,ficha.getProblemasSolucoes().getId()); } if(fd == null) { fd = new FcFichaProblemasSolucoesData(); fd.setProvider(fichasProvidersBean.getENTITY_PROVIDER()); fd.setCreated_user_name(user.getName()); fd.setCreated_user_id(user.getId()); } fd.setHashData(mapCleaner(ficha.getProblemasSolucoes().getMapData())); fd.save(trx); ficha.getProblemasSolucoes().setId(fd.getId()); ff.setProblemas_solucoes_id(fd.getId()); FcFichaProblemasSolucoesBeanData fdb = new FcFichaProblemasSolucoesBeanData(); fdb.setId(fd.getId()); rspdata.setProblemasSolucoes(fdb); } ///TODO get timestamp da bd if(ficha.getFicha().getData_conclusao() != null) { ff.setData_conclusao(new Timestamp(System.currentTimeMillis())); ficha.getFicha().setData_conclusao(new Timestamp(System.currentTimeMillis())); } ff.save(trx); ficha.getFicha().setId(ff.getId()); FcFichaBeanData rspdata_ficha = new FcFichaBeanData(); rspdata.setFicha(rspdata_ficha); rspdata_ficha.setId(ff.getId()); fichasProvidersBean.getENTITY_PROVIDER().commit(trx); rsp.setSuccess(true); // rsp.setData(rspdata); rsp.setData(ficha); EvoMessageBean mb = new EvoMessageBean(); rsp.setSuccess(true); mb.setType(EvoMessageTypeBean.INFO); mb.setMessageData(operation+" da ficha com sucesso!"); rsp.addMessage(mb); } else { rsp.setSuccess(false); EvoMessageBean mb = new EvoMessageBean(); mb.setType(EvoMessageTypeBean.ERROR); mb.setMessageData("Erro Ficha Inválida!"); rsp.addMessage(mb); } } catch(Exception ex) { if(trx != null) { fichasProvidersBean.getENTITY_PROVIDER().rollback(trx); } rsp.setSuccess(false); EvoMessageBean mb = new EvoMessageBean(); mb.setType(EvoMessageTypeBean.ERROR); mb.setMessageData("Erro ao gravar Ficha!"+ex); rsp.addMessage(mb); ex.printStackTrace(); } } else { rsp.setSuccess(false); EvoMessageBean mb = new EvoMessageBean(); mb.setType(EvoMessageTypeBean.SESSIONTIMEOUT); mb.setMessageData("sessão expirada"); rsp.addMessage(mb); } return Response.status(200).entity(rsp).build(); } @GET @Path("/getFichaEMCurativaEnf") @Produces(MediaType.APPLICATION_JSON) public Response getFichaEMCurativaEnf(@Context HttpServletRequest req, @DefaultValue("0") @QueryParam("fichaID") int fichaID) { // TODO Auto-generated method stub return null; } @POST @Path("/sendFichaEMCurativaEnf") @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) public Response sendFichaEMCurativaEnf(FichaEMCurativaEnfBean ficha) { // TODO Auto-generated method stub return null; } @GET @Path("/getFichaEOcasional") @Produces(MediaType.APPLICATION_JSON) public Response getFichaEOcasional(@DefaultValue("0") @QueryParam("fichaID") int fichaID,@DefaultValue("0") @QueryParam("trabalhadorID") int trabalhadorID) { // TODO Auto-generated method stub return null; } @POST @Path("/sendFichaEOcasional") @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) public Response sendFichaEOcasional(FichaEOcasionalBean ficha) { // TODO Auto-generated method stub return null; } @GET @Path("/getFichaEPeriodico") @Produces(MediaType.APPLICATION_JSON) public Response getFichaEPeriodico(@DefaultValue("0") @QueryParam("fichaID") int fichaID,@DefaultValue("0") @QueryParam("trabalhadorID") int trabalhadorID) { // TODO Auto-generated method stub return null; } @POST @Path("/sendFichaEPeriodico") @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) public Response sendFichaEPeriodico(FichaEPeriodicoBean ficha) { // TODO Auto-generated method stub return null; } @POST @Path("/doLogin") @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) public Response doLogin(@Context HttpServletRequest req, Map auth) { String login = (String) auth.get("user"); String pass = (String) auth.get("pass"); EvoResponseBean rsp = new EvoResponseBean(); EvoMessageBean mb = new EvoMessageBean(); rsp.addMessage(mb); EvoUsrUserData user = null; try { ///TODO integração com o springsecurity que esta em falta devido a nao ser usado de momento ///TODO adicionar o envio de permissoes para o interface grafico poder ligar/desligar funcionalidades user = UsersDataProvider.getProvider().loadUserByUsernamePasswordActive(login, pass, null); if(user != null ) { user.setLast_login(new Timestamp(System.currentTimeMillis())); user.save(); req.getSession().setAttribute("user", user); Map loginData = new HashMap(); loginData.put("username", user.getName()); List tfl = fichasProvidersBean.getENTITY_PROVIDER().listLoad(FcTipoFichaData.class, new Field(FcTipoFichaData.DELETED_STAMP).isEqual(null), new String[]{FcTipoFichaData.DESCRICAO}, null); List tflBean = new LinkedList(); for(FcTipoFichaData i : tfl) { FcTipoFichaBeanData ib = new FcTipoFichaBeanData(); ib.setMapData(i.getPropertiesValues(new String[]{FcTipoFichaData.ID,FcTipoFichaData.DESCRICAO})); tflBean.add(ib); } loginData.put("tipoFichas", tflBean); rsp.setData(loginData); rsp.setSuccess(true); mb.setType(EvoMessageTypeBean.INFO); mb.setMessageData("login com sucesso"); } else { rsp.setData(false); rsp.setSuccess(false); mb.setType(EvoMessageTypeBean.SECURITYEXCEPTION); mb.setMessageData("utilizador e/ou password inválidos"); } } catch (Exception e) { rsp.setData(false); rsp.setSuccess(false); mb.setType(EvoMessageTypeBean.ERROR); mb.setMessageData("Erro no processo de validação do login!"); } return Response.status(200).entity(rsp).build(); } @GET @Path("/checkLogin") @Produces(MediaType.APPLICATION_JSON) public Response checkLogin(@Context HttpServletRequest req) { EvoResponseBean rsp = new EvoResponseBean(); EvoMessageBean mb = new EvoMessageBean(); rsp.addMessage(mb); if(req.getSession().getAttribute("user") != null ) { try { EvoUsrUserData user = (EvoUsrUserData) req.getSession().getAttribute("user"); Map loginData = new HashMap(); loginData.put("username", user.getName()); List tfl = fichasProvidersBean.getENTITY_PROVIDER().listLoad(FcTipoFichaData.class, new Field(FcTipoFichaData.DELETED_STAMP).isEqual(null), new String[]{FcTipoFichaData.DESCRICAO}, null); List tflBean = new LinkedList(); for(FcTipoFichaData i : tfl) { FcTipoFichaBeanData ib = new FcTipoFichaBeanData(); ib.setMapData(i.getPropertiesValues(new String[]{FcTipoFichaData.ID,FcTipoFichaData.DESCRICAO})); tflBean.add(ib); } loginData.put("tipoFichas", tflBean); rsp.setData(loginData); rsp.setSuccess(true); mb.setType(EvoMessageTypeBean.INFO); mb.setMessageData("sessão activa"); } catch (Exception e) { rsp.setData(false); rsp.setSuccess(false); mb.setType(EvoMessageTypeBean.ERROR); mb.setMessageData("Erro no processo de validação do login!"); } } else { rsp.setData(false); rsp.setSuccess(false); mb.setType(EvoMessageTypeBean.SECURITYEXCEPTION); mb.setMessageData("sem sessão ou sessão expirada"); } return Response.status(200).entity(rsp).build(); } @POST @Path("/doLogout") @Produces(MediaType.APPLICATION_JSON) public Response doLogout(@Context HttpServletRequest req) { EvoResponseBean rsp = new EvoResponseBean(); EvoMessageBean mb = new EvoMessageBean(); rsp.addMessage(mb); req.getSession().removeAttribute("user"); rsp.setData(true); rsp.setSuccess(true); mb.setType(EvoMessageTypeBean.INFO); mb.setMessageData("logout com sucesso"); return Response.status(200).entity(rsp).build(); } @GET @Path("/getResumoTrabalhador") @Produces(MediaType.APPLICATION_JSON) public Response getResumoTrabalhador(@Context HttpServletRequest req, @DefaultValue("0") @QueryParam("trabalhadorID") int trabalhadorID) { EvoResponseBean rsp = new EvoResponseBean(); EvoMessageBean mb = new EvoMessageBean(); if(req.getSession().getAttribute("user") != null ) { try { TrabalhadorResumeBean tr = new TrabalhadorResumeBean(); TrabalhadoresData trab = siprpProvidersBean.getENTITY_PROVIDER().load(TrabalhadoresData.class, trabalhadorID); FcFichaBeanData dadosTrab = new FcFichaBeanData(); dadosTrab.setTrabalhador_id(trab.getId()); dadosTrab.setTrabalhador_nome(trab.getNome()); dadosTrab.setTrabalhador_sexo(trab.getSexo().toUpperCase()); dadosTrab.setTrabalhador_data_nascimento(trab.getData_nascimento()); dadosTrab.setTrabalhador_data_admissao(trab.getData_admissao()); dadosTrab.setTrabalhador_funcao_actual(trab.getFuncao_proposta()); dadosTrab.setTrabalhador_posto(trab.getLocal_trabalho()); dadosTrab.setEstabelecimento_id(trab.getEstabelecimento_id()); EstabelecimentosData est = trab.toEstabelecimento_id(); dadosTrab.setEstabelecimento_localidade(est.getLocalidade()); dadosTrab.setEstabelecimento_nome(est.getNome()); dadosTrab.setEmpresa_id(est.getEmpresa_id()); EmpresasData emp = est.toEmpresa_id(); dadosTrab.setEmpresa_designacao_social(emp.getDesignacao_social()); dadosTrab.setEmpresa_ramo_actividade(emp.getActividade()); tr.setDadosTrabalhador(dadosTrab); List fichasBD = fichasProvidersBean.getENTITY_PROVIDER().listLoad(FcFichaData.class, new Field(FcFichaData.TRABALHADOR_ID).isEqual(trabalhadorID).and(new Field(FcFichaData.DELETED_STAMP).isEqual(null)), null, null); List fichas = new LinkedList(); for(FcFichaData fbd : fichasBD) { FichaResumeBean fichaR = new FichaResumeBean(); fichaR.setId(fbd.getId()); fichaR.setData(fbd.getCreated_stamp()); String tipo_str = "-INDEFINIDO-"; FcTipoFicha tipo = fbd.toTipo_ficha_id() ; if(tipo != null) { tipo_str = tipo.getDescricao(); } fichaR.setTipo(tipo_str); fichaR.setResponsavel(fbd.getCreated_user_name()); fichaR.setEditable(true); fichaR.setConcluido(fbd.getData_conclusao()!=null); fichas.add(fichaR); } tr.setFichas(fichas); rsp.setSuccess(true); rsp.setData(tr); } catch (Exception e) { rsp.setSuccess(false); mb.setType(EvoMessageTypeBean.ERROR); mb.setMessageData("Ocorreu um erro ao carregar os dados do Trabalhador"); rsp.addMessage(mb); e.printStackTrace(); } } else { rsp.setData(false); rsp.setSuccess(false); mb.setType(EvoMessageTypeBean.SECURITYEXCEPTION); mb.setMessageData("Sem sessão ou sessão expirada"); rsp.addMessage(mb); } return Response.status(200).entity(rsp).build(); } @GET @Path("/getViews") @Produces(MediaType.TEXT_HTML) public Response getViews(@Context HttpServletRequest req) { String html = ""; try { DirectoryFileUtils dff = new DirectoryFileUtils(); //TODO: check the alternative to getRealPath String basePath = req.getRealPath("/static/html/app"); File baseFolder = new File(basePath); List foundFiles = dff.getFilesContents(baseFolder, ".html"); for(int i=0; i < foundFiles.toArray().length; i++){ html += foundFiles.get(i); } //https://code.google.com/p/htmlcompressor/#Using_HTML_Compressor_from_Java_API HtmlCompressor compressor = new HtmlCompressor(); html = compressor.compress(html); } catch (Exception e) { } return Response.status(200).entity(html).build(); } //TODO: place this class elsewhere public class DirectoryFileUtils { private List fileContents = new ArrayList(); private String content; private Scanner scanner; public List getFilesContents(File file, String extension) throws FileNotFoundException { if (file.isFile() && file.getName().endsWith(extension)) { scanner = new Scanner(new File(file.getAbsoluteFile().toString())); content = scanner.useDelimiter("\\Z").next(); fileContents.add(content); } else if (file.isDirectory()) { File[] listOfFiles = file.listFiles(); if (listOfFiles != null) { for (int i = 0; i < listOfFiles.length; i++){ getFilesContents(listOfFiles[i], extension); } } else { System.out.println("[ACCESS DENIED]"); } } return fileContents; } } }