package siprp.logic; import java.util.HashMap; import java.util.List; import javax.swing.tree.DefaultMutableTreeNode; 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.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.higiene.relatorio.AreaRelatorioNode; import siprp.higiene.relatorio.PostoRelatorioNode; import siprp.logic.node.AreaNode; import siprp.logic.node.NodeMedida; import siprp.logic.node.NodeRisco; import siprp.logic.node.NodeRiscoTema; import siprp.logic.node.PostoNode; 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 ) { 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(); } } } 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 ); } } } }