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.
256 lines
8.3 KiB
256 lines
8.3 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.higiene;
|
|
|
|
import java.awt.*;
|
|
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 HigieneDataProvider extends MetaProvider
|
|
{
|
|
public static final int ESTADO_POR_REALIZAR = 0;
|
|
public static final int ESTADO_REALIZADO = 2;
|
|
public static final int ESTADO_DESMARCADO_TRABALHADOR = 3;
|
|
public static final int ESTADO_DESMARCADO_EMPRESA = 4;
|
|
public static final int ESTADO_FALTOU = 5;
|
|
|
|
public static final String ESTADOS_STR[] =
|
|
new String[]{ "Por realizar", "", "Realizada",
|
|
"Desmarcada empresa",
|
|
"Desmarcada " + Singleton.getInstance( SingletonConstants.COMPANY_ACRONYM ),
|
|
"Faltou" };
|
|
|
|
public static final Color CORES_TECNICOS[] =
|
|
new Color[]{ Color.white, Color.red.darker(), Color.blue,
|
|
Color.green.darker(), Color.yellow.darker(),
|
|
Color.gray, Color.pink.darker() };
|
|
|
|
private static final Object LOCK = new Object();
|
|
private static HigieneDataProvider instance = null;
|
|
private final Executer executer;
|
|
|
|
/** Creates a new instance of HigieneDataProvider */
|
|
public HigieneDataProvider()
|
|
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 HigieneDataProvider();
|
|
}
|
|
}
|
|
return instance;
|
|
}
|
|
|
|
public Object[][] getAllTecnicosHST()
|
|
throws Exception
|
|
{
|
|
Select select =
|
|
new Select( new String[]{ "marcacoes_tecnicos_hst" },
|
|
new String[]{ "id", "nome", "iniciais", "identificador", "nome_plain" },
|
|
new Field( "inactivo" ).isDifferent( "y" ),
|
|
new String[]{ "nome_plain" },
|
|
null );
|
|
Virtual2DArray array = executer.executeQuery( select );
|
|
return array.getObjects();
|
|
}
|
|
|
|
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 String getEmpresa( Integer empresaID )
|
|
throws Exception
|
|
{
|
|
String nomes[] = new String[ 2 ];
|
|
Select select = new Select( new String[]{ "empresas" },
|
|
new String[]{ "designacao_social" },
|
|
new Field( "id" ).isEqual( empresaID ) );
|
|
Virtual2DArray array = executer.executeQuery( select );
|
|
return ( String ) array.get( 0, 0 );
|
|
}
|
|
|
|
public Object[][] getVisitasEstabelecimento( Integer estabelecimentoID )
|
|
throws Exception
|
|
{
|
|
Select select =
|
|
new Select( new String[]{ "marcacoes_estabelecimento" },
|
|
new String[]{ "id", "data", "estado" },
|
|
new Field( "estabelecimento_id" ).isEqual( estabelecimentoID ),
|
|
new String[]{ "data desc" },
|
|
null );
|
|
Virtual2DArray array = executer.executeQuery( select );
|
|
Object data[][] = array.getObjects();
|
|
for( int n = 0; n < data.length; n++ )
|
|
{
|
|
int estado = ( ( Integer ) data[ n ][ 2 ] ).intValue();
|
|
data[ n ][ 2 ] = ESTADOS_STR[ estado ];
|
|
}
|
|
return data;
|
|
}
|
|
|
|
public Vector[][] getMapaAnual( Integer ano )
|
|
throws Exception
|
|
{
|
|
String deleted = "__DELETED__";
|
|
Select select =
|
|
new Select( new String[]{ "marcacoes_tecnicos_hst" },
|
|
new String[]{ "id", "nome", "iniciais", "identificador", "nome_plain" },
|
|
new Field( "inactivo" ).isDifferent( "y" ),
|
|
new String[]{ "nome_plain" },
|
|
null );
|
|
Virtual2DArray array = executer.executeQuery( select );
|
|
Object tecnicosArr[][] = array.getObjects();
|
|
Hashtable tecnicos = new Hashtable();
|
|
for( int n = 0; n < tecnicosArr.length; n++ )
|
|
{
|
|
tecnicos.put( tecnicosArr[ n ][ 0 ], tecnicosArr[ n ] );
|
|
}
|
|
Hashtable empresas = new Hashtable();
|
|
Hashtable estabelecimentos = new Hashtable();
|
|
Hashtable empresasEstabelecimentos = new Hashtable();
|
|
Vector data[][] = new Vector[ 31 ][ 12 ];
|
|
select = new Select( new String[]{ "marcacoes_estabelecimento" },
|
|
new String[]{ "data", "estabelecimento_id", "tecnico_hst" },
|
|
new Field( "data" ).between( new Object[]{ ano + "-01-01", ano + "-12-31" } ).and(
|
|
new Field( "estado" ).in( new Integer[]{ new Integer( 0 ), new Integer( 2 ) } ) ) );
|
|
array = executer.executeQuery( select );
|
|
for( int n = 0; n < array.columnLength(); n++ )
|
|
{
|
|
Date dataVisita = ( Date ) array.get( n, 0 );
|
|
Integer estabelecimentoID = ( Integer ) array.get( n, 1 );
|
|
Integer tecnicoID = ( Integer ) array.get( n, 2 );
|
|
Integer empresaID = null;
|
|
if( !estabelecimentos.containsKey( estabelecimentoID ) )
|
|
{
|
|
Select estabelecimentoSelect =
|
|
new Select( new String[]{ "estabelecimentos" },
|
|
new String[]{ "nome", "empresa_id", "inactivo" },
|
|
new Field( "id" ).isEqual( estabelecimentoID ) );
|
|
Virtual2DArray estabelecimentoArray = executer.executeQuery( estabelecimentoSelect );
|
|
if( "y".equals( estabelecimentoArray.get( 0, 2 ) ) )
|
|
{
|
|
estabelecimentos.put( estabelecimentoID, deleted );
|
|
}
|
|
else
|
|
{
|
|
estabelecimentos.put( estabelecimentoID, estabelecimentoArray.get( 0, 0 ) );
|
|
}
|
|
empresaID = ( Integer ) estabelecimentoArray.get( 0, 1 );
|
|
empresasEstabelecimentos.put( estabelecimentoID, empresaID );
|
|
if( !empresas.containsKey( empresaID ) )
|
|
{
|
|
Select empresaSelect =
|
|
new Select( new String[]{ "empresas" },
|
|
new String[]{ "designacao_social", "inactivo" },
|
|
new Field( "id" ).isEqual( empresaID ) );
|
|
Virtual2DArray empresaArray = executer.executeQuery( empresaSelect );
|
|
if( "y".equals( empresaArray.get( 0, 1 ) ) )
|
|
{
|
|
empresas.put( empresaID, deleted );
|
|
}
|
|
else
|
|
{
|
|
empresas.put( empresaID, empresaArray.get( 0, 0 ) );
|
|
}
|
|
}
|
|
}
|
|
String nomeEstabelecimento = ( String ) estabelecimentos.get( estabelecimentoID );
|
|
empresaID = ( Integer ) empresasEstabelecimentos.get( estabelecimentoID );
|
|
String nomeEmpresa = ( String ) empresas.get( empresaID );
|
|
String nomeTecnico = " ";
|
|
Integer indiceCor = null;
|
|
Color cor = null;
|
|
if( tecnicoID != null )
|
|
{
|
|
Object tecnico[] = ( Object[] ) tecnicos.get( tecnicoID );
|
|
nomeTecnico = ( String ) tecnico[ 1 ];
|
|
indiceCor = ( Integer ) tecnico[ 3 ];
|
|
cor = CORES_TECNICOS[ indiceCor.intValue() ];
|
|
}
|
|
Calendar cal = Calendar.getInstance();
|
|
cal.setTime( dataVisita );
|
|
int dia = cal.get( Calendar.DAY_OF_MONTH ) - 1;
|
|
int mes = cal.get( Calendar.MONTH );
|
|
if( data[ dia ][ mes ] == null )
|
|
{
|
|
data[ dia ][ mes ] = new Vector();
|
|
data[ dia ][ mes ].add( new Object[]{ new Integer( dia + 1 ) } );
|
|
}
|
|
if( nomeEmpresa != deleted && nomeEstabelecimento != deleted )
|
|
{
|
|
data[ dia ][ mes ].add( new Object[]{ nomeEmpresa, nomeEstabelecimento, nomeTecnico, cor } );
|
|
}
|
|
}
|
|
|
|
return data;
|
|
}
|
|
}
|