diff --git a/trunk/SIPRPSoft/src/siprp/higiene/relatorio/GerirMedidasRelatorioPanel.java b/trunk/SIPRPSoft/src/siprp/higiene/relatorio/GerirMedidasRelatorioPanel.java index 89c07677..4cbfa188 100644 --- a/trunk/SIPRPSoft/src/siprp/higiene/relatorio/GerirMedidasRelatorioPanel.java +++ b/trunk/SIPRPSoft/src/siprp/higiene/relatorio/GerirMedidasRelatorioPanel.java @@ -29,14 +29,20 @@ import javax.swing.tree.TreeSelectionModel; import leaf.ui.LeafButton; import leaf.ui.LeafDialog; import leaf.ui.LeafIconButton; +import leaf.ui.TreeInserterDialog; import leaf.ui.TreeTools; +import siprp.database.cayenne.objects.BaseObject; +import siprp.database.cayenne.objects.HsPostoRisco; 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.HsRisco; +import siprp.database.cayenne.objects.HsRiscoEmpresa; import siprp.logic.HigieneSegurancaLogic; import siprp.logic.node.MedidaRelatorioNode; +import siprp.logic.node.NodeRisco; import siprp.logic.node.RiscoRelatorioNode; public class GerirMedidasRelatorioPanel extends JPanel @@ -245,27 +251,68 @@ public class GerirMedidasRelatorioPanel extends JPanel { try { - HsRelatorioPostoRisco postoRisco = getSelectedRisco(); - if( posto != null ) + DefaultMutableTreeNode allRiscos = getAllRiscos(); + TreeTools.removeAll( allRiscos, getRiscosTree() ); + TreeInserterDialog dialog = new TreeInserterDialog( "Adicionar Riscos", allRiscos ); + DefaultMutableTreeNode result = dialog.getResult(); + if( result != null ) { - HsRelatorioMedida medida = new HsRelatorioMedida(); - medida.setDescription( "" ); - medida.setRequesitosLegais( "" ); - medida.setToHsRelatorioRisco( postoRisco.getToHsRelatorioRisco() ); - HsRelatorioPostoMedida rel = new HsRelatorioPostoMedida(); - rel.setToHsRelatorioMedida( medida ); - rel.setToHsRelatorioPosto( posto ); - rel.save(); - selectedMedida = rel; + addResult( result ); + refresh(); } - refresh(); setEnabled(); - } catch( Exception e ) + } + catch( Exception e ) { LeafDialog.error( e ); } } + private DefaultMutableTreeNode getAllRiscos() + { + DefaultMutableTreeNode result = new DefaultMutableTreeNode(); + if( posto != null ) + { + result = HigieneSegurancaLogic.getRiscosTree( posto.getToHsRelatorioArea().getToHsRelatorio().getToHsMarcacoesEstabelecimento().getToEstabelecimentos().getToEmpresas() ); + } + return result; + } + + private DefaultMutableTreeNode getRiscosTree() + { + DefaultMutableTreeNode result = new DefaultMutableTreeNode(); + for( int i = 0; i < root.getChildCount(); ++i ) + { + DefaultMutableTreeNode childNode = (DefaultMutableTreeNode) root.getChildAt( i ); + HsRelatorioPostoRisco relPostoRisco = null; + if( childNode instanceof RiscoRelatorioNode ) + { + relPostoRisco = (HsRelatorioPostoRisco) ((RiscoRelatorioNode) childNode).getUserObject(); + } + HsRelatorioRisco relRisco = relPostoRisco == null ? null : relPostoRisco.getToHsRelatorioRisco(); + if( relRisco != null ) + { + HsRisco risco = HigieneSegurancaLogic.findHsRiscoFor( relRisco ); + if( risco != null ) + { + result.add( new NodeRisco( risco ) ); + } + } + } + return result; + } + + private void addResult( DefaultMutableTreeNode root ) + { + if( root != null ) + { + if( root instanceof NodeRisco ) + { + //TODO + } + } + } + private boolean confirm( String message ) { return JOptionPane.YES_OPTION == JOptionPane.showConfirmDialog( this, message, "Confirma"+ccedil+atilde+"o", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null ); @@ -316,7 +363,8 @@ public class GerirMedidasRelatorioPanel extends JPanel } refresh(); setEnabled(); - } catch( Exception e ) + } + catch( Exception e ) { LeafDialog.error( e ); } diff --git a/trunk/common/src/siprp/database/cayenne/providers/PlanoActuacaoDAO.java b/trunk/common/src/siprp/database/cayenne/providers/PlanoActuacaoDAO.java index 0ffed7bd..94f5d7d7 100644 --- a/trunk/common/src/siprp/database/cayenne/providers/PlanoActuacaoDAO.java +++ b/trunk/common/src/siprp/database/cayenne/providers/PlanoActuacaoDAO.java @@ -18,6 +18,7 @@ import siprp.database.cayenne.objects.HsNormalizacao; import siprp.database.cayenne.objects.HsPosto; import siprp.database.cayenne.objects.HsPostoRisco; import siprp.database.cayenne.objects.HsRelatorio; +import siprp.database.cayenne.objects.HsRelatorioRisco; import siprp.database.cayenne.objects.HsRelatorioRiscoValorQualitativo; import siprp.database.cayenne.objects.HsRisco; import siprp.database.cayenne.objects.HsRiscoTema; @@ -184,4 +185,11 @@ public class PlanoActuacaoDAO extends MainDAO return context.performQuery( query ); } + public List findHsRiscosFor( HsRelatorioRisco relatorioRisco ) + { + SelectQuery query = new SelectQuery( HsRisco.class ); + query.andQualifier( ExpressionFactory.likeIgnoreCaseExp( HsRisco.DESCRIPTION_PROPERTY, relatorioRisco.getDescription() ) ); + return context.performQuery( query ); + } + } diff --git a/trunk/common/src/siprp/logic/HigieneSegurancaLogic.java b/trunk/common/src/siprp/logic/HigieneSegurancaLogic.java index 5af5b138..e892c8bf 100644 --- a/trunk/common/src/siprp/logic/HigieneSegurancaLogic.java +++ b/trunk/common/src/siprp/logic/HigieneSegurancaLogic.java @@ -594,5 +594,17 @@ public class HigieneSegurancaLogic } return result; } + + public static HsRisco findHsRiscoFor( HsRelatorioRisco relatorioRisco ) + { + HsRisco risco = null; + List riscos = planoProvider.findHsRiscosFor( relatorioRisco ); + if( !riscos.isEmpty() ) + { + risco = riscos.get( 0 ); + } + return risco; + } + }