package siprp.logic; import java.util.HashMap; import java.util.List; import javax.swing.tree.DefaultMutableTreeNode; import leaf.ui.LeafError; import leaf.ui.TreeTools; import siprp.database.cayenne.objects.Empresas; import siprp.database.cayenne.objects.Estabelecimentos; import siprp.database.cayenne.objects.HsArea; import siprp.database.cayenne.objects.HsEquipamento; import siprp.database.cayenne.objects.HsLegislacao; import siprp.database.cayenne.objects.HsLegislacaoCategoria; import siprp.database.cayenne.objects.HsLegislacaoEmpresa; import siprp.database.cayenne.objects.HsLegislacaoEstabelecimento; import siprp.database.cayenne.objects.HsNormalizacao; import siprp.database.cayenne.objects.HsNormalizacaoEmpresa; import siprp.database.cayenne.objects.HsNormalizacaoEstabelecimento; import siprp.database.cayenne.objects.HsPosto; import siprp.database.cayenne.objects.HsPostoEstabelecimento; import siprp.database.cayenne.objects.HsPostoRisco; import siprp.database.cayenne.objects.HsRelatorio; import siprp.database.cayenne.objects.HsRelatorioArea; import siprp.database.cayenne.objects.HsRelatorioMedida; import siprp.database.cayenne.objects.HsRelatorioPosto; import siprp.database.cayenne.objects.HsRelatorioPostoMedida; import siprp.database.cayenne.objects.HsRelatorioPostoRisco; import siprp.database.cayenne.objects.HsRelatorioRisco; import siprp.database.cayenne.objects.HsRelatorioRiscoValorQualitativo; import siprp.database.cayenne.objects.HsRisco; import siprp.database.cayenne.objects.HsRiscoEmpresa; import siprp.database.cayenne.objects.HsRiscoMedida; import siprp.database.cayenne.objects.HsRiscoTema; import siprp.database.cayenne.providers.MedicinaDAO; import siprp.database.cayenne.providers.PlanoActuacaoDAO; import siprp.logic.node.AreaNode; import siprp.logic.node.AreaRelatorioNode; import siprp.logic.node.NodeMedida; import siprp.logic.node.NodeRisco; import siprp.logic.node.NodeRiscoTema; import siprp.logic.node.PostoNode; import siprp.logic.node.PostoRelatorioNode; import static com.evolute.utils.strings.UnicodeLatin1Map.*; public class HigieneSegurancaLogic { private static final PlanoActuacaoDAO planoProvider = new PlanoActuacaoDAO(); private static final MedicinaDAO medicinaProvider = new MedicinaDAO(); public static DefaultMutableTreeNode getRiscosTree() { DefaultMutableTreeNode result = new DefaultMutableTreeNode(); List temas = planoProvider.getAllRiscoTemas(); if( temas != null ) { for( HsRiscoTema tema : temas ) { NodeRiscoTema temaNode = new NodeRiscoTema( tema ); for( HsRisco risco : tema.getHsRiscoArray() ) { NodeRisco riscoNode = new NodeRisco( risco ); for( HsRiscoMedida rel : risco.getHsRiscoMedidaArray() ) { riscoNode.add( new NodeMedida( rel ) ); } temaNode.add( riscoNode ); } result.add( temaNode ); } } return result; } public static DefaultMutableTreeNode getRiscosTree( Empresas empresa ) { DefaultMutableTreeNode result = new DefaultMutableTreeNode(); for( HsRiscoEmpresa rel : empresa.getHsRiscoEmpresaArray() ) { HsRisco risco = rel.getToHsRisco(); HsRiscoTema tema = risco.getToHsRiscoTema(); DefaultMutableTreeNode temaNode = TreeTools.findNodeWithUserObject( tema, result ); if( temaNode == null ) { temaNode = new NodeRiscoTema( tema ); result.add(temaNode); } temaNode.add( new NodeRisco( risco ) ); } return result; } public static DefaultMutableTreeNode getAreasTree( Empresas empresa ) { DefaultMutableTreeNode result = new DefaultMutableTreeNode(); if( empresa != null ) { for( HsArea area : empresa.getHsAreaArray() ) { AreaNode areaNode = new AreaNode(area); for( HsPosto posto : area.getHsPostoArray() ) { areaNode.add( new PostoNode( posto ) ); } result.add( areaNode ); } } return result; } public static DefaultMutableTreeNode getAreasTree( Estabelecimentos estabelecimento ) { DefaultMutableTreeNode result = new DefaultMutableTreeNode(); if( estabelecimento != null ) { List postos = estabelecimento.getHsPostoEstabelecimentoArray(); for( HsPostoEstabelecimento rel : postos ) { HsPosto posto = rel.getToHsPosto(); HsArea area = posto.getToHsArea(); DefaultMutableTreeNode areaNode = TreeTools.findNodeWithUserObject( area, result ); if( areaNode == null ) { areaNode = new AreaNode( area ); result.add( areaNode ); } areaNode.add( new PostoNode( posto ) ); } } return result; } public static DefaultMutableTreeNode getPostosTree( Estabelecimentos estabelecimento ) { DefaultMutableTreeNode result = new DefaultMutableTreeNode(); if( estabelecimento != null ) { List postos = estabelecimento.getHsPostoEstabelecimentoArray(); for( HsPostoEstabelecimento rel : postos ) { result.add( new PostoNode( rel.getToHsPosto() ) ); } } return result; } public static List getAllEmpresas() { return medicinaProvider.getAllEmpresas(); } public static List getAllValoresQualitativos() { return planoProvider.getAllValoresQualitativos(); } public static DefaultMutableTreeNode getAreasRelatorioTree( HsRelatorio relatorio ) { DefaultMutableTreeNode result = new DefaultMutableTreeNode(); if( relatorio != null ) { for( HsRelatorioArea area : relatorio.getHsRelatorioArea() ) { AreaRelatorioNode areaNode = new AreaRelatorioNode(area); for( HsRelatorioPosto posto : area.getHsRelatorioPostoArray() ) { areaNode.add( new PostoRelatorioNode( posto ) ); } result.add( areaNode ); } } return result; } public static void reverterRelatorio( HsRelatorio relatorio ) { try { if(relatorio != null) { List areas = relatorio.getHsRelatorioArea(); int areasSize = areas == null ? 0 : areas.size(); for( int i = 0; i < areasSize; ++i ) { areas.get( 0 ).delete(); } relatorio.save(); Estabelecimentos estabelecimento = relatorio.getToHsMarcacoesEstabelecimento() == null ? null : relatorio.getToHsMarcacoesEstabelecimento().getToEstabelecimentos(); if( estabelecimento != null ) { List postos = estabelecimento.getHsPostoEstabelecimentoArray(); reverterPostos(relatorio,postos); relatorio.save(); } } } catch( Exception e ) { LeafError.error(e); } } private static void reverterPostos( HsRelatorio relatorio, List postos ) { HashMap areasInserted = new HashMap(); for( HsPostoEstabelecimento rel : postos ) { HsPosto posto = rel.getToHsPosto(); HsRelatorioPosto rPosto = new HsRelatorioPosto(); rPosto.setDescription( posto.getDescription() ); HsArea area = posto.getToHsArea(); HsRelatorioArea rArea = areasInserted.get( area ); if( rArea == null ) { rArea = new HsRelatorioArea(); rArea.setDescription( area.getDescription() ); rArea.setToHsRelatorio( relatorio ); areasInserted.put(area,rArea); } rPosto.setToHsRelatorioArea( rArea ); addMedidasAndRiscos(posto,rPosto); } } private static void addMedidasAndRiscos(HsPosto posto, HsRelatorioPosto rPosto) { for( HsPostoRisco postoRisco : posto.getHsPostoRiscoArray() ) { HsRelatorioRisco rRelatorioRisco = new HsRelatorioRisco(); rRelatorioRisco.setToHsRelatorio( rPosto.getToHsRelatorioArea().getToHsRelatorio() ); rRelatorioRisco.setDescription( postoRisco.getToHsRisco().getDescription() ); HsRelatorioPostoRisco rPostoRisco = new HsRelatorioPostoRisco(); rPostoRisco.setToHsRelatorioPosto( rPosto ); rPostoRisco.setToHsRelatorioRisco( rRelatorioRisco ); for( HsRiscoMedida riscoMedida : postoRisco.getToHsRisco().getHsRiscoMedidaArray() ) { HsRelatorioMedida rMedida = new HsRelatorioMedida(); rMedida.setDescription( riscoMedida.getToHsMedida().getDescription() ); rMedida.setRequesitosLegais( riscoMedida.getToHsMedida().getRequesitosLegais() ); rMedida.setToHsRelatorioRisco( rRelatorioRisco ); HsRelatorioPostoMedida rPostoMedida = new HsRelatorioPostoMedida(); rPostoMedida.setIsPlanoActuacao( false ); rPostoMedida.setToHsRelatorioMedida( rMedida ); rPostoMedida.setToHsRelatorioPosto( rPosto ); } } } public static boolean isProbabilidadeValida( Integer probabilidade ) { return probabilidade != null && probabilidade > 0 && probabilidade < 17; } public static boolean isSeveridadeValida( Integer severidade ) { return severidade != null && severidade > 0 && severidade < 17; } public static boolean isRelatorioRiscoPreenchido( HsRelatorioPostoRisco rel ) { boolean hasQual = rel.getToHsRelatorioRiscoValorQualitativo() != null; boolean hasQuant = false; if( !hasQual ) { hasQuant = HigieneSegurancaLogic.isSeveridadeValida( rel.getSeveridade() ); hasQuant &= HigieneSegurancaLogic.isProbabilidadeValida( rel.getSeveridade() ); } return hasQual || hasQuant; } public static DefaultMutableTreeNode getLegislacaoGeral() { DefaultMutableTreeNode result = new DefaultMutableTreeNode(); for( HsLegislacao legislacao : planoProvider.getAllLegislacaoGeral() ) { DefaultMutableTreeNode legislacaoNode = new DefaultMutableTreeNode( legislacao ); result.add( legislacaoNode ); } return result; } public static DefaultMutableTreeNode getLegislacaoEspecifica() { DefaultMutableTreeNode result = new DefaultMutableTreeNode(); for( HsLegislacaoCategoria categoria : planoProvider.getAllLegislacaoCategorias() ) { DefaultMutableTreeNode categoriaNode = new DefaultMutableTreeNode( categoria ); for( HsLegislacao legislacao: categoria.getHsLegislacaoArray() ) { DefaultMutableTreeNode legislacaoNode = new DefaultMutableTreeNode( legislacao ); categoriaNode.add( legislacaoNode ); } result.add( categoriaNode ); } return result; } public static DefaultMutableTreeNode getNormalizacaoTree( boolean portuguesa ) { DefaultMutableTreeNode result = new DefaultMutableTreeNode("Normaliza" + ccedil + atilde + "o " + ( portuguesa ? "Portuguesa" : "Internacional" ) ); for( HsNormalizacao normalizacao : planoProvider.getNormalizacao( portuguesa ) ) { DefaultMutableTreeNode normalizacaoNode = new DefaultMutableTreeNode( normalizacao ); result.add( normalizacaoNode ); } return result; } public static DefaultMutableTreeNode getNormalizacaoTreeForEmpresa( Empresas empresa ) { DefaultMutableTreeNode result = new DefaultMutableTreeNode(); DefaultMutableTreeNode portuguesa = new DefaultMutableTreeNode("Normaliza" + ccedil + atilde + "o Portuguesa" ); DefaultMutableTreeNode internacional = new DefaultMutableTreeNode("Normaliza" + ccedil + atilde + "o Internacional" ); for( HsNormalizacao normalizacao : planoProvider.getNormalizacao( true ) ) { if( empresa == null || hasEmpresa( normalizacao, empresa ) ) { DefaultMutableTreeNode normalizacaoNode = new DefaultMutableTreeNode( normalizacao ); portuguesa.add( normalizacaoNode ); } } for( HsNormalizacao normalizacao : planoProvider.getNormalizacao( false ) ) { if( empresa == null || hasEmpresa( normalizacao, empresa ) ) { DefaultMutableTreeNode normalizacaoNode = new DefaultMutableTreeNode( normalizacao ); internacional.add( normalizacaoNode ); } } result.add( portuguesa ); result.add( internacional ); return result; } private static boolean hasEmpresa( HsNormalizacao normalizacao, Empresas empresa ) { boolean result = false; if( normalizacao != null && empresa != null ) { for( HsNormalizacaoEmpresa rel : normalizacao.getHsNormalizacaoEmpresaArray()) { result = empresa.equals( rel.getToEmpresa() ); if( result ) { break; } } } return result; } public static DefaultMutableTreeNode getNormalizacaoTreeForEstabelecimento( Estabelecimentos estabelecimento ) { DefaultMutableTreeNode result = new DefaultMutableTreeNode(); DefaultMutableTreeNode portuguesa = new DefaultMutableTreeNode("Normaliza" + ccedil + atilde + "o Portuguesa" ); DefaultMutableTreeNode internacional = new DefaultMutableTreeNode("Normaliza" + ccedil + atilde + "o Internacional" ); for( HsNormalizacao normalizacao : planoProvider.getNormalizacao( true ) ) { if( estabelecimento == null || hasEstabelecimento( normalizacao, estabelecimento ) ) { DefaultMutableTreeNode normalizacaoNode = new DefaultMutableTreeNode( normalizacao ); portuguesa.add( normalizacaoNode ); } } for( HsNormalizacao normalizacao : planoProvider.getNormalizacao( false ) ) { if( estabelecimento == null || hasEstabelecimento( normalizacao, estabelecimento ) ) { DefaultMutableTreeNode normalizacaoNode = new DefaultMutableTreeNode( normalizacao ); internacional.add( normalizacaoNode ); } } result.add( portuguesa ); result.add( internacional ); return result; } private static boolean hasEstabelecimento( HsNormalizacao normalizacao, Estabelecimentos estabelecimento ) { boolean result = false; if( normalizacao != null && estabelecimento != null ) { for( HsNormalizacaoEstabelecimento rel : normalizacao.getHsNormalizacaoEstabelecimentoArray()) { result = estabelecimento.equals( rel.getToEstabelecimento() ); if( result ) { break; } } } return result; } public static DefaultMutableTreeNode getLegislacaoTreeForEmpresa( Empresas empresa ) { DefaultMutableTreeNode result = new DefaultMutableTreeNode(); DefaultMutableTreeNode geral = new DefaultMutableTreeNode( "Legisla" + ccedil + atilde + "o de aplica" + ccedil + atilde + "o geral" ); DefaultMutableTreeNode especifica = new DefaultMutableTreeNode( "Legisla" + ccedil + atilde + "o espec" + iacute + "fica" ); for( HsLegislacao legislacao : planoProvider.getAllLegislacaoGeral() ) { if( empresa == null || hasEmpresa( legislacao, empresa ) ) { DefaultMutableTreeNode legislacaoNode = new DefaultMutableTreeNode( legislacao ); geral.add( legislacaoNode ); } } for( HsLegislacaoCategoria categoria : planoProvider.getAllLegislacaoCategorias( ) ) { boolean addCategory = false; DefaultMutableTreeNode categoriaNode = new DefaultMutableTreeNode( categoria ); for( HsLegislacao legislacao : categoria.getHsLegislacaoArray() ) { if( empresa == null || hasEmpresa( legislacao, empresa ) ) { DefaultMutableTreeNode legislacaoNode = new DefaultMutableTreeNode( legislacao ); categoriaNode.add( legislacaoNode ); addCategory = true; } } if( addCategory) { especifica.add( categoriaNode ); } } result.add( geral ); result.add( especifica ); return result; } private static boolean hasEmpresa( HsLegislacao legislacao, Empresas empresa ) { boolean result = false; if( legislacao != null && empresa != null ) { for( HsLegislacaoEmpresa rel : legislacao.getHsLegislacaoEmpresaArray() ) { result = empresa.equals( rel.getToHsEmpresa() ); if( result ) { break; } } } return result; } public static DefaultMutableTreeNode getLegislacaoTreeForEstabelecimento( Estabelecimentos estabelecimento ) { DefaultMutableTreeNode result = new DefaultMutableTreeNode(); DefaultMutableTreeNode geral = new DefaultMutableTreeNode( "Legisla" + ccedil + atilde + "o de aplica" + ccedil + atilde + "o geral" ); DefaultMutableTreeNode especifica = new DefaultMutableTreeNode( "Legisla" + ccedil + atilde + "o espec" + iacute + "fica" ); for( HsLegislacao legislacao : planoProvider.getAllLegislacaoGeral() ) { if( estabelecimento == null || hasEstabelecimento( legislacao, estabelecimento ) ) { DefaultMutableTreeNode legislacaoNode = new DefaultMutableTreeNode( legislacao ); geral.add( legislacaoNode ); } } for( HsLegislacaoCategoria categoria : planoProvider.getAllLegislacaoCategorias( ) ) { boolean addCategory = false; DefaultMutableTreeNode categoriaNode = new DefaultMutableTreeNode( categoria ); for( HsLegislacao legislacao : categoria.getHsLegislacaoArray() ) { if( estabelecimento == null || hasEstabelecimento( legislacao, estabelecimento ) ) { DefaultMutableTreeNode legislacaoNode = new DefaultMutableTreeNode( legislacao ); categoriaNode.add( legislacaoNode ); addCategory = true; } } if( addCategory) { especifica.add( categoriaNode ); } } result.add( geral ); result.add( especifica ); return result; } private static boolean hasEstabelecimento( HsLegislacao legislacao, Estabelecimentos estabelecimento ) { boolean result = false; if( legislacao != null && estabelecimento != null ) { for( HsLegislacaoEstabelecimento rel : legislacao.getHsLegislacaoEstabelecimentoArray() ) { result = estabelecimento.equals( rel.getToHsEstabelecimento()); if( result ) { break; } } } return result; } public static DefaultMutableTreeNode getEquipamentosTree() { DefaultMutableTreeNode result = new DefaultMutableTreeNode(); List equipamentos = planoProvider.getAllEquipamentos(); if( equipamentos != null ) { for( HsEquipamento equipamento : equipamentos ) { result.add( new DefaultMutableTreeNode( equipamento ) ); } } return result; } }