diff --git a/trunk/SIPRPSoft/src/siprp/data/BaseObject.java b/trunk/SIPRPSoft/src/siprp/data/BaseObject.java index 0989a2d2..dc9da5b9 100644 --- a/trunk/SIPRPSoft/src/siprp/data/BaseObject.java +++ b/trunk/SIPRPSoft/src/siprp/data/BaseObject.java @@ -1,10 +1,14 @@ package siprp.data; +import java.sql.Timestamp; import java.text.DateFormat; +import java.util.Arrays; +import java.util.Date; import java.util.LinkedList; import java.util.List; import java.util.Locale; +import com.evolute.adt.Pair; import com.evolute.entity.evo.EvoDataException; import com.evolute.entity.evo.EvoDataObject; import com.evolute.utils.strings.UnicodeChecker; @@ -19,6 +23,8 @@ public abstract class BaseObject extends EvoDataObject private static final long serialVersionUID = 1L; + private static final String [] SOFT_DELETE_KEYS = new String[]{ "deleted_stamp", "deleted_date", "inactivo" }; + public static final DateFormat DATE_FORMAT = DateFormat.getDateInstance( DateFormat.SHORT, new Locale( "pt", "PT" ) ); protected static final String isNewMessage = " "; @@ -39,4 +45,58 @@ public abstract class BaseObject extends EvoDataObject return result; } + private Object getSoftDeleteObject( Class returnClass ) + { + Object result = null; + if( Timestamp.class.isAssignableFrom( returnClass ) ) + { + result = new Timestamp( System.currentTimeMillis() ); + } + else if( Date.class.isAssignableFrom( returnClass ) ) + { + result = new Date(); + } + else if( String.class.isAssignableFrom( returnClass ) ) + { + result = "y"; + } + else if( Boolean.class.isAssignableFrom( returnClass ) ) + { + result = true; + } + return result; + } + + private Pair getSoftDelete() + { + String resultKey = null; + Object resultObject = null; + List keys = Arrays.asList( getFieldNames() ); + for( String key : SOFT_DELETE_KEYS ) + { + if( keys.contains( key ) ) + { + resultKey = key; + resultObject = getSoftDeleteObject( getFieldClass( key ) ); + break; + } + } + return resultKey == null ? null : new Pair(resultKey,resultObject); + } + + @Override + public void delete() throws EvoDataException + { + Pair softDelete = getSoftDelete(); + if( softDelete != null ) + { + set( softDelete.getLeft(), softDelete.getRight() ); + save(); + } + else + { + super.delete(); + } + } + } diff --git a/trunk/SIPRPSoft/src/siprp/higiene/relatorio/GerirMedidasRelatorioPanel.java b/trunk/SIPRPSoft/src/siprp/higiene/relatorio/GerirMedidasRelatorioPanel.java index 0f8e55d0..1edef8e9 100644 --- a/trunk/SIPRPSoft/src/siprp/higiene/relatorio/GerirMedidasRelatorioPanel.java +++ b/trunk/SIPRPSoft/src/siprp/higiene/relatorio/GerirMedidasRelatorioPanel.java @@ -11,7 +11,6 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Collections; import java.util.Comparator; -import java.util.Date; import java.util.List; import javax.swing.JOptionPane; @@ -383,7 +382,9 @@ public class GerirMedidasRelatorioPanel extends JPanel HsRelatorioPostoMedidaData rel = selection == null ? null : (HsRelatorioPostoMedidaData) ((MedidaRelatorioNode) selection).getUserObject(); if( confirm("Tem a certeza que deseja remover o requisito '" + shortenString( rel.toMedida_id().toString() ) + "'?") ) { - rel.toMedida_id().setDeleted_date( new java.sql.Timestamp( new Date().getTime() ) ); + HsRelatorioMedidaData medidaData = rel.toMedida_id(); + medidaData.delete(); + rel.delete(); outcome = true; } @@ -393,24 +394,18 @@ public class GerirMedidasRelatorioPanel extends JPanel HsRelatorioPostoRiscoData rel = (HsRelatorioPostoRiscoData) ((RiscoRelatorioNode)selection).getUserObject(); if( confirm("Tem a certeza que deseja remover o risco '" + shortenString( rel.toRisco_id().toString() ) + "'?") ) { - for( HsRelatorioMedidaData medida : rel.toRisco_id().fromHsRelatorioMedida_risco_id() ) + HsRelatorioRiscoData riscoData = rel.toRisco_id(); + for( HsRelatorioMedidaData medida : riscoData.fromHsRelatorioMedida_risco_id() ) { - while( true ) + List< HsRelatorioPostoMedidaData > list = medida.fromHsRelatorioPostoMedida_medida_id(); + for ( HsRelatorioPostoMedidaData relMedida : list ) { - List list = medida.fromHsRelatorioPostoMedida_medida_id(); - HsRelatorioPostoMedidaData relMedida = list.isEmpty() ? null : list.get(0); - if( relMedida != null ) - { - relMedida.delete(); - } - else - { - break; - } + relMedida.delete(); } - medida.setDeleted_date( new java.sql.Timestamp( new Date().getTime() ) ); + medida.delete(); } - rel.toRisco_id().setDeleted_date( new java.sql.Timestamp( new Date().getTime() ) ); + riscoData.delete(); + outcome = true; } }