diff --git a/trunk/PlanosActuacao/src/java/db/entidades/Area.java b/trunk/PlanosActuacao/src/java/db/entidades/Area.java index c96d70fb..d5d24be9 100644 --- a/trunk/PlanosActuacao/src/java/db/entidades/Area.java +++ b/trunk/PlanosActuacao/src/java/db/entidades/Area.java @@ -12,7 +12,7 @@ import java.util.List; * * @author lluis */ -public class Area implements Serializable +public class Area implements Serializable, Comparable< Area > { private Integer id; private Integer area_id; //from relatorios @@ -81,4 +81,22 @@ public class Area implements Serializable { return is_principal; } + + @Override + public int compareTo( Area o ) + { + if( is_principal && !( ( Area ) o ).is_principal ) + { + return -1; + } + else if( !is_principal && ( ( Area ) o ).is_principal ) + { + return 1; + } + if( ordem != null ) + { + return ( ( ( Area ) o ).ordem == null ) ? -1 : ordem.compareTo( ( ( Area ) o ).ordem ); + } + return 0; + } } diff --git a/trunk/PlanosActuacao/src/java/db/entidades/Risco.java b/trunk/PlanosActuacao/src/java/db/entidades/Risco.java index 64036c3e..f242a8b2 100644 --- a/trunk/PlanosActuacao/src/java/db/entidades/Risco.java +++ b/trunk/PlanosActuacao/src/java/db/entidades/Risco.java @@ -13,7 +13,7 @@ public class Risco implements Serializable private Integer valorQuantitativo; private Integer valorQualitativoID; - + private String valorQualitativo; private String responsavel_execucao; private String por; private String recursos_necessarios; @@ -207,5 +207,14 @@ public class Risco implements Serializable { this.isPatrimonial = isPatrimonial; } - + + public String getValorQualitativo() + { + return valorQualitativo; + } + + public void setValorQualitativo( String valorQualitativo ) + { + this.valorQualitativo = valorQualitativo; + } } diff --git a/trunk/PlanosActuacao/src/java/db/providers/PlanosDataProvider.java b/trunk/PlanosActuacao/src/java/db/providers/PlanosDataProvider.java index 64147746..c33d3506 100644 --- a/trunk/PlanosActuacao/src/java/db/providers/PlanosDataProvider.java +++ b/trunk/PlanosActuacao/src/java/db/providers/PlanosDataProvider.java @@ -19,8 +19,8 @@ import db.data.siprp.outer.PlanoAreasData; import db.data.siprp.outer.PlanoMedidasData; import db.data.siprp.outer.PlanoPostosTrabalhoData; import db.data.siprp.outer.PlanoRiscosData; +import db.data.siprp.outer.PlanoValoresQualitativosData; import db.data.siprp.outer.PlanosActuacaoData; -import db.data.siprp_local.outer.HsRelatorioRiscoValorQualitativoData; import db.entidades.Area; import db.entidades.EstadoMedida; import db.entidades.Medida; @@ -29,8 +29,11 @@ import db.entidades.PostoTrabalho; import db.entidades.Risco; import db.entidades.Utilizador; import java.sql.Timestamp; +import java.util.Collections; +import java.util.Comparator; import utils.Global; import java.util.Date; +import java.util.HashMap; import java.util.LinkedList; import java.util.List; import utils.Utils; @@ -39,6 +42,17 @@ import utils.Utils; public class PlanosDataProvider extends GenericDataProvider { private static PlanosDataProvider INSTANCE = null; + protected static final String UNCONTROLLED = "Incontrolado"; + protected static final String CONTROLLED = "Controlado"; + protected static final String INDETERMINATE = "Indeterminado"; + protected static final String NAO_VALORAVEL = "N\u00E3o Valor\u00E1vel"; + protected static final String NAO_VALORAVEL_SHORT = "N/V"; + protected static final String MUITO_ALTO = "Muito Alto"; + protected static final String ALTO = "Alto"; + protected static final String MEDIO = "M\u00e9dio"; + protected static final String BAIXO = "Baixo"; + + protected HashMap VALORES_QUALITATIVOS_BY_ID = new HashMap(); private PlanosDataProvider() throws Exception { @@ -726,7 +740,8 @@ public class PlanosDataProvider extends GenericDataProvider { Select2 query = new Select2( PlanoAreasData.TABLENAME, new Field( PlanoAreasData.PLANO_ID_FULL ).isEqual( planoID ), - new String[] { PlanoAreasData.ID_FULL, PlanoAreasData.PLANO_ID_FULL, PlanoAreasData.DESCRICAO_FULL }, + new String[] { PlanoAreasData.ID_FULL, PlanoAreasData.PLANO_ID_FULL, PlanoAreasData.DESCRICAO_FULL, + PlanoAreasData.ORDEM_FULL, PlanoAreasData.IS_PRINCIPAL_FULL }, new String[] { PlanoAreasData.DESCRICAO_FULL } ); Virtual2DArray array = getExecuter().executeQuery( query ); @@ -737,11 +752,15 @@ public class PlanosDataProvider extends GenericDataProvider Integer areaID = array.get( i, 0 ); Integer pID = array.get( i, 1 ); String descricao = array.get( i, 2 ); + Integer ordem = array.get( i, 3 ); + Boolean isPrincipal = array.get( i, 4 ); Area area = new Area(); area.setId( areaID ); area.setPlano_id( pID ); area.setDescricao( Utils.unicodeToHTML( descricao ) ); + area.setOrdem( ordem ); + area.setIs_principal( isPrincipal ); area.setRiscos( getRiscosByArea( area ) ); list.add( area ); } @@ -751,6 +770,7 @@ public class PlanosDataProvider extends GenericDataProvider { ErrorLogger.logException( e ); } + Collections.sort( list ); return list; } @@ -814,11 +834,72 @@ public class PlanosDataProvider extends GenericDataProvider r.setMedidas( getMedidasByRisco( r ) ); r.setIsPatrimonial( isPatrimonial ); r.setValorQualitativoID( valorQualitativoID ); - + if( valorQualitativoID != null ) + { + r.setValorQualitativo( loadValorQualitativoByID( valorQualitativoID ).getDescricao() ); + } list.add( r ); } } + Collections.sort( list, new Comparator(){ + @Override + public int compare( Risco o1, Risco o2 ) + { + Integer o1Value = 1000; + Integer o2Value = 1000; + if( o1.getValorQuantitativo() != null ) + { + o1Value = -o1.getValorQuantitativo(); + } + else if(o1.getValorQualitativo() == null) + { + o1Value = 300; + } + else if(o1.getValorQualitativo().equals(UNCONTROLLED) || o1.getValorQualitativo().equals(MUITO_ALTO)) + { + o1Value = 100; + } + else if(o1.getValorQualitativo().equals(CONTROLLED) || o1.getValorQualitativo().equals(ALTO)) + { + o1Value = 200; + } + else if(o1.getValorQualitativo().equals(INDETERMINATE) || o1.getValorQualitativo().equals(MEDIO)) + { + o1Value = 300; + } + else if(o1.getValorQualitativo().equals(BAIXO)) + { + o1Value = 400; + } + if( o2.getValorQuantitativo() != null ) + { + o2Value = -o2.getValorQuantitativo(); + } + else if(o2.getValorQualitativo() == null ) + { + o2Value = 300; + } + else if(o2.getValorQualitativo().equals(UNCONTROLLED) || o2.getValorQualitativo().equals(MUITO_ALTO)) + { + o2Value = 100; + } + else if(o2.getValorQualitativo().equals(CONTROLLED) || o2.getValorQualitativo().equals(ALTO)) + { + o2Value = 200; + } + else if(o2.getValorQualitativo().equals(INDETERMINATE) || o2.getValorQualitativo().equals(MEDIO)) + { + o2Value = 300; + } + else if(o2.getValorQualitativo().equals(BAIXO)) + { + o2Value = 400; + } + return o1Value.compareTo(o2Value); + } + + } ); return list; } @@ -862,7 +943,8 @@ public class PlanosDataProvider extends GenericDataProvider Select2 query = new Select2( PlanoPostosTrabalhoData.TABLENAME, new Field( PlanoPostosTrabalhoData.MEDIDA_ID_FULL ).isEqual( m.getId() ), - new String[] { PlanoPostosTrabalhoData.ID_FULL, PlanoPostosTrabalhoData.MEDIDA_ID_FULL, PlanoPostosTrabalhoData.DESCRICAO_FULL }, + new String[] { PlanoPostosTrabalhoData.ID_FULL, PlanoPostosTrabalhoData.MEDIDA_ID_FULL, + PlanoPostosTrabalhoData.DESCRICAO_FULL, PlanoPostosTrabalhoData.IS_PRINCIPAL_FULL }, new String[] { PlanoPostosTrabalhoData.ID_FULL } ); Virtual2DArray array = getExecuter().executeQuery( query ); @@ -873,12 +955,13 @@ public class PlanosDataProvider extends GenericDataProvider Integer planoPostoTrabalhoID = array.get( i, 0 ); Integer medidaID = array.get( i, 1 ); String descricao = array.get( i, 2 ); + Boolean isPrincipal = array.get( i, 3 ); PostoTrabalho p = new PostoTrabalho(); p.setId( planoPostoTrabalhoID ); p.setMedida_id( medidaID ); p.setDescricao( Utils.unicodeToHTML( descricao ) ); - + p.setIs_principal( isPrincipal ); list.add( p ); } } @@ -954,10 +1037,34 @@ public class PlanosDataProvider extends GenericDataProvider return list; } +// public HsRelatorioRiscoValorQualitativoData loadValorQualitativoByID( Integer valorID ) throws Exception +// { +// return getLocalProvider().load( HsRelatorioRiscoValorQualitativoData.class, valorID, HsRelatorioRiscoValorQualitativoData.ID ); +// } - public HsRelatorioRiscoValorQualitativoData loadValorQualitativoByID( Integer valorID ) throws Exception + public void loadValoresQualitativos() throws Exception + { + VALORES_QUALITATIVOS_BY_ID.clear(); + List valores = getAllValoresQualitativos(); + for( PlanoValoresQualitativosData valor : valores ) + { + VALORES_QUALITATIVOS_BY_ID.put( valor.getId(), valor); + } + } + + public List getAllValoresQualitativos() throws Exception + { + return getProvider().listLoad( PlanoValoresQualitativosData.class, PlanoValoresQualitativosData.ID ); + } + + public PlanoValoresQualitativosData loadValorQualitativoByID( Integer valorID ) throws Exception { - return getLocalProvider().load( HsRelatorioRiscoValorQualitativoData.class, valorID, HsRelatorioRiscoValorQualitativoData.ID ); +// return getProvider().load( PlanoValoresQualitativosData.class, valorID, PlanoValoresQualitativosData.ID ); + if( !VALORES_QUALITATIVOS_BY_ID.containsKey( valorID) ) + { + loadValoresQualitativos(); + } + return VALORES_QUALITATIVOS_BY_ID.get( valorID ); } public List getDistinctYears( Integer excludeYear ) throws Exception diff --git a/trunk/PlanosActuacao/src/java/db/providers/RiscoLogic.java b/trunk/PlanosActuacao/src/java/db/providers/RiscoLogic.java index 1bd881cb..bf86295d 100644 --- a/trunk/PlanosActuacao/src/java/db/providers/RiscoLogic.java +++ b/trunk/PlanosActuacao/src/java/db/providers/RiscoLogic.java @@ -6,7 +6,7 @@ package db.providers; import com.evolute.utils.error.ErrorLogger; -import db.data.siprp_local.outer.HsRelatorioRiscoValorQualitativoData; +import db.data.siprp.outer.PlanoValoresQualitativosData; import db.entidades.Medida; import db.entidades.Risco; import db.entidades.Utilizador; @@ -155,10 +155,10 @@ public class RiscoLogic String result = null; try { - HsRelatorioRiscoValorQualitativoData valor = PlanosDataProvider.getInstance().loadValorQualitativoByID( id ); + PlanoValoresQualitativosData valor = PlanosDataProvider.getInstance().loadValorQualitativoByID( id ); if ( valor != null ) { - result = valor.getDescription(); + result = valor.getDescricao(); } } catch ( Exception e )