forked from Coded/SIPRP
				
			
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							218 lines
						
					
					
						
							6.7 KiB
						
					
					
				
			
		
		
	
	
							218 lines
						
					
					
						
							6.7 KiB
						
					
					
				| /*
 | |
|  * HigieneDataProvider.java
 | |
|  *
 | |
|  * Created on February 1, 2006, 10:49 PM
 | |
|  *
 | |
|  * To change this template, choose Tools | Template Manager
 | |
|  * and open the template in the editor.
 | |
|  */
 | |
| 
 | |
| package siprp.impressaofichas;
 | |
| 
 | |
| import java.text.*;
 | |
| import java.util.*;
 | |
| 
 | |
| import com.evolute.utils.*;
 | |
| import com.evolute.utils.arrays.*;
 | |
| import com.evolute.utils.data.*;
 | |
| import com.evolute.utils.db.*;
 | |
| import com.evolute.utils.metadb.*;
 | |
| import com.evolute.utils.sql.*;
 | |
| import com.evolute.utils.strings.*;
 | |
| import com.evolute.utils.tables.*;
 | |
| 
 | |
| import siprp.*;
 | |
| import siprp.data.*;
 | |
| 
 | |
| /**
 | |
|  *
 | |
|  * @author fpalma
 | |
|  */
 | |
| public class ImpressaoFichasDataProvider extends MetaProvider
 | |
| {
 | |
| 	private static final DateFormat DATE_FORMAT =
 | |
| 			DateFormat.getDateInstance( DateFormat.SHORT, new Locale( "PT", "pt" ) );
 | |
| 	
 | |
| 	private static final Object LOCK = new Object();
 | |
| 	private static ImpressaoFichasDataProvider instance = null;
 | |
| 	private final Executer executer;
 | |
| 	
 | |
| 	/** Creates a new instance of HigieneDataProvider */
 | |
| 	public ImpressaoFichasDataProvider()
 | |
| 		throws Exception
 | |
| 	{
 | |
| 		DBManager dbm = ( DBManager ) Singleton.getInstance( Singleton.DEFAULT_DBMANAGER /*SingletonConstants.DBMANAGER*/ );
 | |
| 		executer = dbm.getSharedExecuter( this );
 | |
| 	}
 | |
| 	
 | |
| 	public static MetaProvider getProvider()
 | |
| 		throws Exception
 | |
| 	{
 | |
| 		synchronized( LOCK )
 | |
| 		{
 | |
| 			if( instance == null )
 | |
| 			{
 | |
| 				instance = new ImpressaoFichasDataProvider();
 | |
| 			}
 | |
| 		}
 | |
| 		return instance;
 | |
| 	}
 | |
| 	
 | |
| 	public ColumnizedMappable[] getAllEmpresas()
 | |
| 		throws Exception
 | |
| 	{
 | |
| 		Select select =
 | |
| 				new Select( new String[]{ "empresas" },
 | |
| 							new String[]{ "id", "designacao_social", "designacao_social_plain" },
 | |
| 							new Field( "inactivo" ).isDifferent( "y" ),
 | |
| 							new String[]{ "designacao_social_plain" },
 | |
| 							null );
 | |
| 		Virtual2DArray array = executer.executeQuery( select );
 | |
| 		ColumnizedMappable empresas[] = new ColumnizedMappable[ array.columnLength() ];
 | |
| 		for( int n = 0; n < empresas.length; n++ )
 | |
| 		{
 | |
| 			Integer id = ( Integer ) array.get( n, 0 );
 | |
| 			String designacao = ( String ) array.get( n, 1 );
 | |
| 			empresas[ n ] = new ColumnizedMappable( id, designacao );
 | |
| 		}
 | |
| 		return empresas;
 | |
| 	}
 | |
| 	
 | |
| 	public ColumnizedMappable[] getAllEstabelecimentosForEmpresa( Integer empresaID )
 | |
| 		throws Exception
 | |
| 	{
 | |
| 		Select select =
 | |
| 				new Select( new String[]{ "estabelecimentos" },
 | |
| 							new String[]{ "id", "nome", "nome_plain" },
 | |
| 							new Field( "empresa_id" ).isEqual( empresaID ).and( 
 | |
| 							new Field( "inactivo" ).isDifferent( "y" ) ),
 | |
| 							new String[]{ "nome_plain" },
 | |
| 							null );
 | |
| 		Virtual2DArray array = executer.executeQuery( select );
 | |
| 		ColumnizedMappable estabelecimentos[] = new ColumnizedMappable[ array.columnLength() ];
 | |
| 		for( int n = 0; n < estabelecimentos.length; n++ )
 | |
| 		{
 | |
| 			Integer id = ( Integer ) array.get( n, 0 );
 | |
| 			String nome = ( String ) array.get( n, 1 );
 | |
| 			estabelecimentos[ n ] = new ColumnizedMappable( id, nome );
 | |
| 		}
 | |
| 		return estabelecimentos;
 | |
| 	}
 | |
| 	
 | |
| 	public Object [][]getAllFichasForEstabelecimentoAndDatas( Integer estabelecimentoID, Date dataInicio, Date dataFim )
 | |
| 		throws Exception
 | |
| 	{
 | |
| 		Vector fichas = new Vector();
 | |
| 		Select select = 
 | |
| 			new Select( new String[]{ "trabalhadores" },
 | |
| 						new String[]{ "id", "nome", "nome_plain" },
 | |
| 						new Field( "estabelecimento_id" ).isEqual( estabelecimentoID ),
 | |
| 						new String[]{ "nome_plain" },
 | |
| 						null );
 | |
| 		Virtual2DArray array = executer.executeQuery( select );
 | |
| 		for( int n = 0; n < array.columnLength(); n++ )
 | |
| 		{
 | |
| 			Integer id = ( Integer ) array.get( n, 0 );
 | |
| 			String nome = ( String ) array.get( n, 1 );
 | |
| 			String nomePlain = ( String ) array.get( n, 2 );
 | |
| 			MappableObject fichasTrabalhador[] = getAllFichasForTrabalhadorAndDatas( id, dataInicio, dataFim );
 | |
| 			for( int f = 0; f < fichasTrabalhador.length; f++ )
 | |
| 			{
 | |
| 				fichas.add( new Object[]{ fichasTrabalhador[ f ].getID(), nome, fichasTrabalhador[ f ].getValue(), nomePlain } );
 | |
| 			}
 | |
| 		}
 | |
| 		Object fichasArray[][] = ( Object[][] )fichas.toArray( new Object[ fichas.size() ][] );
 | |
| 		Arrays.sort( fichasArray, new Comparator(){
 | |
| 			public int compare( Object o1, Object o2 )
 | |
| 			{
 | |
| 				Object arr1[] = ( Object[] )o1;
 | |
| 				Object arr2[] = ( Object[] )o2;
 | |
| 				int res = 0;
 | |
| 				if( arr1[ 2 ] == null && arr2[ 2 ] == null )
 | |
| 				{
 | |
| 					res = 0;
 | |
| 				}
 | |
| 				else if( arr1[ 2 ] == null )
 | |
| 				{
 | |
| 					res = -1;
 | |
| 				}
 | |
| 				else if( arr2[ 2 ] == null )
 | |
| 				{
 | |
| 					res = 1;
 | |
| 				}
 | |
| 				else
 | |
| 				{
 | |
| 					res = ( (Date)arr1[ 2 ]).compareTo( (Date)arr2[ 2 ] );
 | |
| 				}
 | |
| 				
 | |
| 				if( res == 0 )
 | |
| 				{
 | |
| 					res = ( (String)arr1[ 3 ]).compareTo( (String)arr2[ 3 ] );
 | |
| 				}
 | |
| 				return res;
 | |
| 			}
 | |
| 		} );
 | |
| 		for( int n = 0; n < fichasArray.length; n++ )
 | |
| 		{
 | |
| 			fichasArray[ n ][ 2 ] = fichasArray[ n ][ 2 ] != null? DATE_FORMAT.format( (Date)fichasArray[ n ][ 2 ] ): "";
 | |
| 		}
 | |
| 		return fichasArray;
 | |
| 	}
 | |
| 	
 | |
| 	public MappableObject []getAllFichasForTrabalhadorAndDatas( Integer trabalhadorID, Date dataInicio, Date dataFim )
 | |
| 		throws Exception
 | |
| 	{
 | |
| 		Select select = 
 | |
| 				new Select( new String[]{ "exames" }, new String[]{ "MAX(id)", "data" },
 | |
| 							new Field( "trabalhador_id" ).isEqual( trabalhadorID ).and(
 | |
| 							new Field( "inactivo" ).isEqual( "n" ) ).and(
 | |
| 							new Field( "data" ).between( new Object[]{ dataInicio, dataFim } ) ),
 | |
| 							new String[]{ "data DESC" }, new String[]{ "data" } );
 | |
| 		Virtual2DArray array = executer.executeQuery( select );
 | |
| 		MappableObject exames[] = new MappableObject[ array.columnLength() ];
 | |
| 		for( int n = 0; n < exames.length; n++ )
 | |
| 		{
 | |
| 			Date date = (Date)array.get( n, 1 );
 | |
| 			Integer id = new Integer( ((Number)array.get( n, 0 )).intValue() );
 | |
| 			exames[ n ] = new MappableObject( id, date );
 | |
| 		}
 | |
| 		return exames;
 | |
| 	}
 | |
| 	
 | |
| 	public byte[] getPDF( Integer exameID )
 | |
| 		throws Exception
 | |
| 	{
 | |
| 		Select select = 
 | |
| 			new Select( new String[]{ "exames" },
 | |
| 						new String[]{ "pdf" },
 | |
| 						new Field( "id" ).isEqual( exameID ) );
 | |
| 		Virtual2DArray array = executer.executeQuery( select );
 | |
| 		byte pdf[] = ( byte[] ) array.get( 0, 0 );
 | |
| 		return pdf;
 | |
| 	}
 | |
| 	
 | |
| 	public String getNomeTrabalhadorForExameID( Integer exameID )
 | |
| 		throws Exception
 | |
| 	{
 | |
| 		Select select =
 | |
| 			new Select( new String[]{ "exames", "trabalhadores" },
 | |
| 						new String[]{ "trabalhadores.nome_plain" },
 | |
| 						new Field( "exames.id" ).isEqual( exameID ).and(
 | |
| 						new Field( "exames.trabalhador_id" ).isEqual( new Field( "trabalhadores.id" ) ) ) );
 | |
| 		Virtual2DArray array = executer.executeQuery( select );
 | |
| 		return ( String ) array.get( 0, 0 );
 | |
| 	}
 | |
| 	
 | |
| 	public Object[] getDadosForExameID( Integer exameID )
 | |
| 		throws Exception
 | |
| 	{
 | |
| 		Select select =
 | |
| 			new Select( new String[]{ "exames", "trabalhadores" },
 | |
| 						new String[]{ "trabalhadores.nome", "exames.data", "exames.proximo_exame" },
 | |
| 						new Field( "exames.id" ).isEqual( exameID ).and(
 | |
| 						new Field( "exames.trabalhador_id" ).isEqual( new Field( "trabalhadores.id" ) ) ) );
 | |
| 		Virtual2DArray array = executer.executeQuery( select );
 | |
| 		return array.getObjects()[ 0 ];
 | |
| 	}
 | |
| }
 |