|  |  | @ -17,6 +17,9 @@ import org.apache.velocity.*; | 
			
		
	
		
		
			
				
					
					|  |  |  | import org.apache.velocity.app.*; |  |  |  | import org.apache.velocity.app.*; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | import com.evolute.utils.arrays.*; |  |  |  | import com.evolute.utils.arrays.*; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | import com.evolute.utils.data.*; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | import com.evolute.utils.db.*; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | import com.evolute.utils.sql.*; | 
			
		
	
		
		
			
				
					
					|  |  |  | import com.evolute.utils.strings.*; |  |  |  | import com.evolute.utils.strings.*; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | /** |  |  |  | /** | 
			
		
	
	
		
		
			
				
					|  |  | @ -26,7 +29,10 @@ import com.evolute.utils.strings.*; | 
			
		
	
		
		
			
				
					
					|  |  |  | public class doGetListaTrabalhadoresPendentes |  |  |  | public class doGetListaTrabalhadoresPendentes | 
			
		
	
		
		
			
				
					
					|  |  |  | 	extends siprpServlet |  |  |  | 	extends siprpServlet | 
			
		
	
		
		
			
				
					
					|  |  |  | { |  |  |  | { | 
			
		
	
		
		
			
				
					
					|  |  |  | 	protected static final int ESTADO_NAO_SE_APLICA = 0; |  |  |  | 	private static final int TRES_MESES = 3 * 30 * 24 * 60 * 60 * 1000; | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	private static final int CATORZE_DIAS = 14 * 24 * 60 * 60 * 1000; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	protected static final int ESTADO_NAO_APLICAVEL = 0; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	protected static final int ESTADO_PENDENTE = 1; |  |  |  | 	protected static final int ESTADO_PENDENTE = 1; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	protected static final int ESTADO_MARCADO = 2; |  |  |  | 	protected static final int ESTADO_MARCADO = 2; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	protected static final int ESTADO_TRATADO = 3; |  |  |  | 	protected static final int ESTADO_TRATADO = 3; | 
			
		
	
	
		
		
			
				
					|  |  | @ -40,14 +46,177 @@ public class doGetListaTrabalhadoresPendentes | 
			
		
	
		
		
			
				
					
					|  |  |  | 	protected long todayMillis; |  |  |  | 	protected long todayMillis; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	/** Creates a new instance of doGetListaTrabalhadores */ |  |  |  | 	/** Creates a new instance of doGetListaTrabalhadores */ | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public doGetListaTrabalhadoresPendentes(HttpServletRequest req, HttpServletResponse res, boolean print) throws IOException |  |  |  | //	public doGetListaTrabalhadoresPendentes(HttpServletRequest req, HttpServletResponse res, boolean print)
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //		throws IOException
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //	{
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //		ServletOutputStream out = res.getOutputStream();
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //		Connection con = null ;
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //		Statement stmt = null ;
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //		ResultSet2DArray rs;
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //		StringBuffer dbQuery, sBuffer;
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //		String userRole, empresaId, estabelecimentoId, temp;
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //		HttpSession session = req.getSession(false);
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //		Vector links = new Vector();
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //		Vector desc = new Vector();
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //		Vector descAdicional = new Vector();
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | ////		today = new java.util.Date();
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | ////		todayMillis = today.getTime();
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //		try
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //		{   
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //			stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //			rs = new ResultSet2DArray( stmt.executeQuery( "SELECT CURRENT_DATE" ) );
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //			today = ( java.sql.Date ) rs.get( 0, 0 );
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //			stmt.close();
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //			todayMillis = today.getTime();
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //					
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //			userRole = (String)session.getAttribute(super.sessionUserRole);
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //			empresaId = (String)session.getAttribute(super.sessionEmpresaId);
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //			estabelecimentoId = (String)session.getAttribute(super.sessionEstabelecimentoId);
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //			if ( userRole.equals ( super.superUserRole ) || userRole.equals ( empresaId )  )
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //			{
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //				Class.forName(super.bdDriver);
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //				con = DriverManager.getConnection( bdLocalUrl, bdLocalUsername, bdLocalPassword );   
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //				if ( super.verificaEstabelecimento(con, empresaId, estabelecimentoId) ) // estabelecimento pertence à empresa ??
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //				{
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //					//Class.forName(super.bdDriver);
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //					//con = DriverManager.getConnection( super.bdUrl, super.bdUsername, super.bdPassword );   
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //					dbQuery = new StringBuffer();
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //					dbQuery.append( "SELECT trabalhadores.id, trabalhadores.nome, "
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //					+ "marcacoes_trabalhador.tipo, marcacoes_trabalhador.data, marcacoes_trabalhador.estado, "
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //					+ " trabalhadores.nome_plain, marcacoes_trabalhador.motivo "
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //					+ "FROM trabalhadores LEFT JOIN marcacoes_trabalhador ON (  marcacoes_trabalhador.trabalhador_id = trabalhadores.id )"
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //					+ "WHERE estabelecimento_id = " + estabelecimentoId
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //					+ " AND trabalhadores.inactivo <> 'y' AND data_demissao IS NULL "
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //					+ " AND marcacoes_trabalhador.estado NOT IN ( 3, 4, 5) "
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //					+ "ORDER BY 6, 3, 4 DESC " );
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //					//                        dbQuery.append( "SELECT id, nome, ( ultima_consulta IS NOT NULL AND realizada = 'y' ),"
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //					//										+ " ( ultimo_exame IS NOT NULL AND realizado = 'y' ),"
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //					//										+ " proxima_consulta IS NOT NULL, proximo_exame IS NOT NULL, "
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //					//										+ " ( proxima_consulta IS NOT NULL AND proxima_consulta - current_date <= 14 ), "
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //					//										+ " ( proximo_exame IS NOT NULL AND proximo_exame - current_date <= 14 )"
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //					//										+ " FROM trabalhadores "
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //					//										+ " WHERE estabelecimento_id = '"+estabelecimentoId+"'"
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //					//										+ " AND ( ultima_consulta IS NULL OR realizada = 'n' OR"
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //					//										+ " ( proxima_consulta IS NOT NULL AND proxima_consulta - current_date <= 14 )"
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //					//										+ " OR ( proximo_exame IS NOT NULL AND proximo_exame - current_date <= 14 ) )"
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //					//										+ " ORDER BY nome" );
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //					stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //					rs = new ResultSet2DArray( stmt.executeQuery( dbQuery.toString()) );
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //					int index=0;
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //					int max = rs.columnLength();
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //					Integer trabalhadorID = new Integer( -1 );
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //					String nomeTrabalhador = "";
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //					Vector consultas = new Vector();
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //					Vector exames = new Vector();
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //					for ( index = 0; index <= max; index++ )
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //					{
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //						Integer id = index < max ? ( Integer ) rs.get( index, 0 ) : new Integer( -1 );
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //						if( !id.equals( trabalhadorID ) )
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //						{
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //							Object listaConsultas[][] = ( Object[][] ) consultas.toArray( new Object[consultas.size()][3] );
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //							Object listaExames[][] = ( Object[][] ) exames.toArray( new Object[exames.size()][3] );
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //							if( trabalhadorID.intValue() > -1 &&
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //								verificarTrabalhador( listaConsultas, listaExames ) )
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //							{
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //								temp=""+rs.get(index - 1,0); // converter de int para String
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //								dbQuery = new StringBuffer();
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //								dbQuery.append("/"+super.servletName+"/?"+empresaId+"/"+estabelecimentoId+"/"+temp); // contruir url
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //								links.add(dbQuery.toString());
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //								desc.add( criarDadosTrabalhador( con, trabalhadorID, nomeTrabalhador, listaConsultas, listaExames ) );
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //							}
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //							exames.clear();
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //							consultas.clear();
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //						}
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //						if( index == max )
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //						{
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //							break;
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //						}
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //						Integer tipo = ( Integer ) rs.get( index, 2 );
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //						String nome = ( String ) rs.get( index, 1 );
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //						java.util.Date data = ( java.util.Date ) rs.get( index, 3 );
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //						Integer estado = ( Integer ) rs.get( index, 4 );
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //						Integer motivo = ( Integer ) rs.get( index, 6 );
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //						trabalhadorID = id;
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //						nomeTrabalhador = nome;
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //						Object marcacao[] = new Object[]{ data, estado, motivo };
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //						if( tipo == null )
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //						{
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //							continue;
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //						}
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //						switch( tipo.intValue() )
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //						{
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //							case TIPO_MARCACAO_EXAMES:
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //							exames.add( marcacao );
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //							break;
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //							case TIPO_MARCACAO_CONSULTA:
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //							consultas.add( marcacao );
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //							break;
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //						}
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //					}
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //					stmt.close();
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //					sBuffer = new StringBuffer();
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //					sBuffer.append("<b>"+super.nomeEmpresa(con,empresaId)+"</b><br><br><i>"
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //					+super.nomeEstabelecimento(con, estabelecimentoId)+"</i>" );
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //					HashMap hmValues = new HashMap();
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //					hmValues.put( "empresa_nome", session.getAttribute( sessionCompanyName ) );
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //					hmValues.put( "empresa_id", session.getAttribute( sessionEmpresaId ) );
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //					hmValues.put( "estabelecimento_nome", super.nomeEstabelecimento( con, estabelecimentoId ) );
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //					hmValues.put( "estabelecimento_id", estabelecimentoId );
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //					hmValues.put( "userRole", userRole );
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //					hmValues.put( "userName", session.getAttribute( sessionUser ) );
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //					hmValues.put( msgTemplate , sBuffer.toString() ) ;
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //					hmValues.put( templateUserRole, userRole);
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //					hmValues.put( templateQuery, "trabalhadores_pendentes" );
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //					hmValues.put( templateVector1,links);
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //					hmValues.put( templateVector2,desc);
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //					hmValues.put( templateVector3,null);
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //					if( !print )
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //					{
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //						out.println( mergeTemplate( hmValues, super.authenticatedUserTemplate));  
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //					}
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //					else
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //					{
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //						out.println( mergeTemplate( hmValues, super.authenticatedUserPrintTemplate));  
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //					}
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | ////						out.println( mergeTemplate( sBuffer.toString(), userRole, super.queryStringTrabalhadores, links, desc, null, super.authenticatedUserTemplate) ); 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //				}
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //				else  // est não pertence à empresa
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //				{
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //					out.println( mergeTemplate( super.msgLinkFormatError , userRole, super.errorTemplate) );
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //				}
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //				con.close();
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //			}
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //			else // Role não permite ver esta informação
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //			{
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //				out.println( mergeTemplate( super.msgAcessoNegado , userRole,  super.errorTemplate) );
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //			}
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //		}
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //		catch ( SQLException e )
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //		{
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //			e.printStackTrace();
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //			out.println( mergeTemplate( super.msgErroBd , super.errorTemplate) );
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //		}
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //		catch ( Exception e )
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //		{
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //			e.printStackTrace();
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //			out.println( mergeTemplate( super.msgGenericError , super.errorTemplate) );
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //		}
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //	}
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	public doGetListaTrabalhadoresPendentes(HttpServletRequest req, HttpServletResponse res, boolean print ) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		throws IOException | 
			
		
	
		
		
			
				
					
					|  |  |  | 	{ |  |  |  | 	{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 		ServletOutputStream out = res.getOutputStream(); |  |  |  | 		ServletOutputStream out = res.getOutputStream(); | 
			
		
	
		
		
			
				
					
					|  |  |  | 		Connection con = null ; |  |  |  | 		String userRole, empresaId, estabelecimentoId; | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 		Statement stmt = null ; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 		ResultSet2DArray rs; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 		StringBuffer dbQuery, sBuffer; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 		String userRole, empresaId, estabelecimentoId, temp; |  |  |  |  | 
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 		HttpSession session = req.getSession(false); |  |  |  | 		HttpSession session = req.getSession(false); | 
			
		
	
		
		
			
				
					
					|  |  |  | 		Vector links = new Vector(); |  |  |  | 		Vector links = new Vector(); | 
			
		
	
		
		
			
				
					
					|  |  |  | 		Vector desc = new Vector(); |  |  |  | 		Vector desc = new Vector(); | 
			
		
	
	
		
		
			
				
					|  |  | @ -57,116 +226,92 @@ public class doGetListaTrabalhadoresPendentes | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 		try |  |  |  | 		try | 
			
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); |  |  |  | 			Executer executer = getExecuter(); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			rs = new ResultSet2DArray( stmt.executeQuery( "SELECT CURRENT_DATE" ) ); |  |  |  | 			Virtual2DArray array = executer.executeQuery( new Select( "SELECT CURRENT_DATE" ) ); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			today = ( java.sql.Date ) rs.get( 0, 0 ); |  |  |  | 			today = ( java.sql.Date ) array.get( 0, 0 ); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			stmt.close(); |  |  |  |  | 
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			todayMillis = today.getTime(); |  |  |  | 			todayMillis = today.getTime(); | 
			
		
	
		
		
			
				
					
					|  |  |  | 					 |  |  |  | 					 | 
			
		
	
		
		
			
				
					
					|  |  |  | 			userRole = (String)session.getAttribute(super.sessionUserRole); |  |  |  | 			userRole = (String)session.getAttribute(sessionUserRole); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			empresaId = (String)session.getAttribute(super.sessionEmpresaId); |  |  |  | 			empresaId = (String)session.getAttribute(sessionEmpresaId); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			estabelecimentoId = (String)session.getAttribute(super.sessionEstabelecimentoId); |  |  |  | 			estabelecimentoId = (String)session.getAttribute(sessionEstabelecimentoId); | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 			if ( userRole.equals ( super.superUserRole ) || userRole.equals ( empresaId )  ) |  |  |  | 			if ( userRole.equals ( superUserRole ) || userRole.equals ( empresaId )  ) | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			{ |  |  |  | 			{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 				Class.forName(super.bdDriver); |  |  |  | 				if ( verificaEstabelecimento(null, empresaId, estabelecimentoId) ) // estabelecimento pertence à empresa ??
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 				con = DriverManager.getConnection( bdLocalUrl, bdLocalUsername, bdLocalPassword );    |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 				if ( super.verificaEstabelecimento(con, empresaId, estabelecimentoId) ) // estabelecimento pertence à empresa ??
 |  |  |  |  | 
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 				{ |  |  |  | 				{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 					//Class.forName(super.bdDriver);
 |  |  |  | 					//Class.forName(super.bdDriver);
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 					//con = DriverManager.getConnection( super.bdUrl, super.bdUsername, super.bdPassword );   
 |  |  |  | 					//con = DriverManager.getConnection( super.bdUrl, super.bdUsername, super.bdPassword );   
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 					dbQuery = new StringBuffer(); |  |  |  | 					String query = "( SELECT trabalhadores.id, trabalhadores.nome, " | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 					dbQuery.append( "SELECT trabalhadores.id, trabalhadores.nome, " |  |  |  |  | 
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 						+ "marcacoes_trabalhador.tipo, marcacoes_trabalhador.data, marcacoes_trabalhador.estado, " |  |  |  | 						+ "marcacoes_trabalhador.tipo, marcacoes_trabalhador.data, marcacoes_trabalhador.estado, " | 
			
		
	
		
		
			
				
					
					|  |  |  | 					+ " trabalhadores.nome_plain, marcacoes_trabalhador.motivo " |  |  |  | 						+ " trabalhadores.nome_plain, marcacoes_trabalhador.motivo, marcacoes_trabalhador.data " | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 					+ "FROM trabalhadores LEFT JOIN marcacoes_trabalhador ON (  marcacoes_trabalhador.trabalhador_id = trabalhadores.id )" |  |  |  | 						+ "FROM trabalhadores LEFT JOIN marcacoes_trabalhador ON (  marcacoes_trabalhador.trabalhador_id = trabalhadores.id ) " | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 						+ "WHERE estabelecimento_id = " + estabelecimentoId |  |  |  | 						+ "WHERE estabelecimento_id = " + estabelecimentoId | 
			
		
	
		
		
			
				
					
					|  |  |  | 						+ " AND trabalhadores.inactivo <> 'y' AND data_demissao IS NULL " |  |  |  | 						+ " AND trabalhadores.inactivo <> 'y' AND data_demissao IS NULL " | 
			
		
	
		
		
			
				
					
					|  |  |  | 						+ " AND marcacoes_trabalhador.estado NOT IN ( 3, 4, 5) " |  |  |  | 						+ " AND marcacoes_trabalhador.estado NOT IN ( 3, 4, 5) " | 
			
		
	
		
		
			
				
					
					|  |  |  | 					+ "ORDER BY 6, 3, 4 DESC " ); |  |  |  | 						+ " AND marcacoes_trabalhador.tipo = " + TIPO_MARCACAO_CONSULTA | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 					//                        dbQuery.append( "SELECT id, nome, ( ultima_consulta IS NOT NULL AND realizada = 'y' ),"
 |  |  |  | 						+ " AND marcacoes_trabalhador.motivo <> " + MOTIVO_OCASIONAL + " )" | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 					//										+ " ( ultimo_exame IS NOT NULL AND realizado = 'y' ),"
 |  |  |  | 						+ " UNION "	 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 					//										+ " proxima_consulta IS NOT NULL, proximo_exame IS NOT NULL, "
 |  |  |  | 						+ "( SELECT trabalhadores.id, trabalhadores.nome, " | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 					//										+ " ( proxima_consulta IS NOT NULL AND proxima_consulta - current_date <= 14 ), "
 |  |  |  | 						+ "marcacoes_trabalhador.tipo, marcacoes_trabalhador.data, marcacoes_trabalhador.estado, " | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 					//										+ " ( proximo_exame IS NOT NULL AND proximo_exame - current_date <= 14 )"
 |  |  |  | 						+ " trabalhadores.nome_plain, marcacoes_trabalhador.motivo, marcacoes_trabalhador.data + 90 " | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 					//										+ " FROM trabalhadores "
 |  |  |  | 						+ "FROM trabalhadores LEFT JOIN marcacoes_trabalhador ON (  marcacoes_trabalhador.trabalhador_id = trabalhadores.id ) " | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 					//										+ " WHERE estabelecimento_id = '"+estabelecimentoId+"'"
 |  |  |  | 						+ "WHERE estabelecimento_id = " + estabelecimentoId | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 					//										+ " AND ( ultima_consulta IS NULL OR realizada = 'n' OR"
 |  |  |  | 						+ " AND trabalhadores.inactivo <> 'y' AND data_demissao IS NULL " | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 					//										+ " ( proxima_consulta IS NOT NULL AND proxima_consulta - current_date <= 14 )"
 |  |  |  | 						+ " AND marcacoes_trabalhador.estado NOT IN ( 3, 4, 5) " | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 					//										+ " OR ( proximo_exame IS NOT NULL AND proximo_exame - current_date <= 14 ) )"
 |  |  |  | 						+ " AND marcacoes_trabalhador.tipo = " + TIPO_MARCACAO_EXAMES + " )" | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 					//										+ " ORDER BY nome" );
 |  |  |  | 						+ "ORDER BY 6, 8, 3 DESC "; | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 					stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); |  |  |  | 					array = executer.executeQuery( new Select( query ) ); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 					rs = new ResultSet2DArray( stmt.executeQuery( dbQuery.toString()) ); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 					int index=0; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 					int max = rs.columnLength(); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 					Integer trabalhadorID = new Integer( -1 ); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 					String nomeTrabalhador = ""; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 					Vector consultas = new Vector(); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 					Vector exames = new Vector(); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 					for ( index = 0; index <= max; index++ ) |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 					{ |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 						Integer id = index < max ? ( Integer ) rs.get( index, 0 ) : new Integer( -1 ); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 						if( !id.equals( trabalhadorID ) ) |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 						{ |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 							Object listaConsultas[][] = ( Object[][] ) consultas.toArray( new Object[consultas.size()][3] ); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 							Object listaExames[][] = ( Object[][] ) exames.toArray( new Object[exames.size()][3] ); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 							if( trabalhadorID.intValue() > -1 && |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 								verificarTrabalhador( listaConsultas, listaExames ) ) |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 							{ |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 								temp=""+rs.get(index - 1,0); // converter de int para String
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 								dbQuery = new StringBuffer(); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 								dbQuery.append("/"+super.servletName+"/?"+empresaId+"/"+estabelecimentoId+"/"+temp); // contruir url
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 								links.add(dbQuery.toString()); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 								desc.add( criarDadosTrabalhador( con, trabalhadorID, nomeTrabalhador, listaConsultas, listaExames ) ); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 							} |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 							exames.clear(); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 							consultas.clear(); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 						} |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 						if( index == max ) |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 						{ |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 							break; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 						} |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 						Integer tipo = ( Integer ) rs.get( index, 2 ); |  |  |  |  | 
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 						String nome = ( String ) rs.get( index, 1 ); |  |  |  | 					query = "SELECT trabalhadores.id, trabalhadores.nome, " | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 						java.util.Date data = ( java.util.Date ) rs.get( index, 3 ); |  |  |  | 						+ "marcacoes_trabalhador.tipo, marcacoes_trabalhador.data, marcacoes_trabalhador.estado, " | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 						Integer estado = ( Integer ) rs.get( index, 4 ); |  |  |  | 						+ " trabalhadores.nome_plain, marcacoes_trabalhador.motivo, marcacoes_trabalhador.data " | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 						Integer motivo = ( Integer ) rs.get( index, 6 ); |  |  |  | 						+ "FROM trabalhadores LEFT JOIN marcacoes_trabalhador ON (  marcacoes_trabalhador.trabalhador_id = trabalhadores.id ) " | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 						trabalhadorID = id; |  |  |  | 						+ "WHERE estabelecimento_id = " + estabelecimentoId | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 						nomeTrabalhador = nome; |  |  |  | 						+ " AND trabalhadores.inactivo <> 'y' AND data_demissao IS NULL " | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 						Object marcacao[] = new Object[]{ data, estado, motivo }; |  |  |  | 						+ " AND marcacoes_trabalhador.estado NOT IN ( 3, 4, 5) " | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 						if( tipo == null ) |  |  |  | 						+ " AND marcacoes_trabalhador.tipo = " + TIPO_MARCACAO_CONSULTA | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 						+ " AND marcacoes_trabalhador.motivo = " + MOTIVO_OCASIONAL | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 						+ " ORDER BY 6, 8, 3 DESC"; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 					Virtual2DArray ocasionaisArray = executer.executeQuery( new Select( query ) ); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 					 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 					Hashtable marcacoesPorID = new Hashtable(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 					Hashtable ocasionaisPorID = new Hashtable(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 					Hashtable nomesPorID = new Hashtable(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 					preencherMarcacoes( array, nomesPorID, marcacoesPorID ); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 					preencherMarcacoes( array, nomesPorID, ocasionaisPorID ); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 					 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 					Integer ids[] = ( Integer[] ) nomesPorID.keySet().toArray( new Integer[0] ); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 					IDObject trabalhadores[] = new IDObject[ ids.length ]; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 					for( int n = 0; n < ids.length; n++ ) | 
			
		
	
		
		
			
				
					
					|  |  |  | 					{ |  |  |  | 					{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 							continue; |  |  |  | 						trabalhadores[ n ] = new MappableObject( ids[ n ], nomesPorID.get( ids[ n ] ) ); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 					} |  |  |  | 					} | 
			
		
	
		
		
			
				
					
					|  |  |  | 						switch( tipo.intValue() ) |  |  |  | 					Arrays.sort( trabalhadores, new Comparator(){ | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 						public int compare( Object o1, Object o2 ) | 
			
		
	
		
		
			
				
					
					|  |  |  | 						{ |  |  |  | 						{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 							case TIPO_MARCACAO_EXAMES: |  |  |  | 							String nome1 = StringPlainer.convertString( o1.toString() ); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 							exames.add( marcacao ); |  |  |  | 							String nome2 = StringPlainer.convertString( o2.toString() ); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 							break; |  |  |  | 							return nome1.compareTo( nome2 ); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 							case TIPO_MARCACAO_CONSULTA: |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 							consultas.add( marcacao ); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 							break; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 						} |  |  |  |  | 
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 						} |  |  |  | 						} | 
			
		
	
		
		
			
				
					
					|  |  |  | 					stmt.close(); |  |  |  | 					} ); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 					 |  |  |  | 					 | 
			
		
	
		
		
			
				
					
					|  |  |  | 					sBuffer = new StringBuffer(); |  |  |  | 					for( int n = 0; n < trabalhadores.length; n++ ) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 					sBuffer.append("<b>"+super.nomeEmpresa(con,empresaId)+"</b><br><br><i>" |  |  |  | 					{ | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 					+super.nomeEstabelecimento(con, estabelecimentoId)+"</i>" ); |  |  |  | 						Object marcacoes[][] = ( Object[][] ) marcacoesPorID.get( trabalhadores[ n ].getID() ); | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 						Object ocasionais[][] = ( Object[][] ) ocasionaisPorID.get( trabalhadores[ n ].getID() ); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 						Object agrupadas[][] = agruparMarcacoes( marcacoes, ocasionais ); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 					} | 
			
		
	
		
		
			
				
					
					|  |  |  | 										 |  |  |  | 										 | 
			
		
	
		
		
			
				
					
					|  |  |  | 					HashMap hmValues = new HashMap(); |  |  |  | 					HashMap hmValues = new HashMap(); | 
			
		
	
		
		
			
				
					
					|  |  |  | 					hmValues.put( "empresa_nome", session.getAttribute( sessionCompanyName ) ); |  |  |  | 					hmValues.put( "empresa_nome", session.getAttribute( sessionCompanyName ) ); | 
			
		
	
		
		
			
				
					
					|  |  |  | 					hmValues.put( "empresa_id", session.getAttribute( sessionEmpresaId ) ); |  |  |  | 					hmValues.put( "empresa_id", session.getAttribute( sessionEmpresaId ) ); | 
			
		
	
		
		
			
				
					
					|  |  |  | 					hmValues.put( "estabelecimento_nome", super.nomeEstabelecimento( con, estabelecimentoId ) ); |  |  |  | 					hmValues.put( "estabelecimento_nome", nomeEstabelecimento( null, estabelecimentoId ) ); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 					hmValues.put( "estabelecimento_id", estabelecimentoId ); |  |  |  | 					hmValues.put( "estabelecimento_id", estabelecimentoId ); | 
			
		
	
		
		
			
				
					
					|  |  |  | 					hmValues.put( "userRole", userRole ); |  |  |  | 					hmValues.put( "userRole", userRole ); | 
			
		
	
		
		
			
				
					
					|  |  |  | 					hmValues.put( "userName", session.getAttribute( sessionUser ) ); |  |  |  | 					hmValues.put( "userName", session.getAttribute( sessionUser ) ); | 
			
		
	
		
		
			
				
					
					|  |  |  | 					hmValues.put( msgTemplate , sBuffer.toString() ) ; |  |  |  | 					hmValues.put( msgTemplate , "<b>"+nomeEmpresa(null,empresaId)+"</b><br><br><i>" | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 						+nomeEstabelecimento(null, estabelecimentoId)+"</i>"  ) ; | 
			
		
	
		
		
			
				
					
					|  |  |  | 					hmValues.put( templateUserRole, userRole); |  |  |  | 					hmValues.put( templateUserRole, userRole); | 
			
		
	
		
		
			
				
					
					|  |  |  | 					hmValues.put( templateQuery, "trabalhadores_pendentes" ); |  |  |  | 					hmValues.put( templateQuery, "trabalhadores_pendentes" ); | 
			
		
	
		
		
			
				
					
					|  |  |  | 					hmValues.put( templateVector1,links); |  |  |  | 					hmValues.put( templateVector1,links); | 
			
		
	
	
		
		
			
				
					|  |  | @ -186,7 +331,6 @@ public class doGetListaTrabalhadoresPendentes | 
			
		
	
		
		
			
				
					
					|  |  |  | 				{ |  |  |  | 				{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 					out.println( mergeTemplate( super.msgLinkFormatError , userRole, super.errorTemplate) ); |  |  |  | 					out.println( mergeTemplate( super.msgLinkFormatError , userRole, super.errorTemplate) ); | 
			
		
	
		
		
			
				
					
					|  |  |  | 				} |  |  |  | 				} | 
			
		
	
		
		
			
				
					
					|  |  |  | 				con.close(); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 			} |  |  |  | 			} | 
			
		
	
		
		
			
				
					
					|  |  |  | 			else // Role não permite ver esta informação
 |  |  |  | 			else // Role não permite ver esta informação
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 			{ |  |  |  | 			{ | 
			
		
	
	
		
		
			
				
					|  |  | @ -205,113 +349,222 @@ public class doGetListaTrabalhadoresPendentes | 
			
		
	
		
		
			
				
					
					|  |  |  | 		} |  |  |  | 		} | 
			
		
	
		
		
			
				
					
					|  |  |  | 	} |  |  |  | 	} | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 |  |  |  | 	 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	protected int[] classificarTrabalhador( Object consultas[][], Object exames[][] ) |  |  |  | 	protected void preencherMarcacoes( Virtual2DArray array, Hashtable nomesPorID, Hashtable marcacoesPorID ) | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 	{ |  |  |  | 	{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 		int estado[] = new int[ 2 ]; |  |  |  | 		int max = array.columnLength(); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 		int indiceProximaConsulta = -1; |  |  |  | 		for( int index = 0; index < max; index++ ) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 		int indiceProximaConsultaPeriodica = -1; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 		int indiceConsultaAnterior = -1; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 		int indiceConsultaAnteriorPeriodica = -1; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 		int indiceProximoExame = -1; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 		int indiceExameAnterior = -1; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 		 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 		if( consultas == null ) |  |  |  |  | 
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			estado[ 0 ] = ESTADO_NAO_SE_APLICA; |  |  |  | 			Integer id = index < max ? ( Integer ) array.get( index, 0 ) : new Integer( -1 ); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 		} |  |  |  | 			Integer tipo = ( Integer ) array.get( index, 2 ); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 		else if( consultas.length > 0 ) |  |  |  | 			String nome = ( String ) array.get( index, 1 ); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 			java.util.Date data = ( java.util.Date ) array.get( index, 3 ); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			if( !today.after( (java.util.Date) consultas[ 0 ][ 0 ] ) ) |  |  |  | 			Integer estado = ( Integer ) array.get( index, 4 ); | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 			Integer motivo = ( Integer ) array.get( index, 6 ); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 			if( !marcacoesPorID.containsKey( id ) ) | 
			
		
	
		
		
			
				
					
					|  |  |  | 			{ |  |  |  | 			{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 				indiceProximaConsulta = 0; |  |  |  | 				nomesPorID.put( id, nome ); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 				if( ( ( Integer ) consultas[ 0 ][ 2 ] ).intValue() != MOTIVO_OCASIONAL ) |  |  |  | 				marcacoesPorID.put( id, new Vector() ); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 				{ |  |  |  | 			} | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 					indiceProximaConsultaPeriodica = 0; |  |  |  | 			Object marcacao[] = new Object[]{ data, estado, motivo, tipo }; | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 			( ( Vector ) marcacoesPorID.get( id ) ).add( marcacao ); | 
			
		
	
		
		
			
				
					
					|  |  |  | 		} |  |  |  | 		} | 
			
		
	
		
		
			
				
					
					|  |  |  | 	} |  |  |  | 	} | 
			
		
	
		
		
			
				
					
					|  |  |  | 			for( int n = indiceProximaConsulta + 1; n < consultas.length; n++ ) |  |  |  | 	 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	protected Object[][] agruparMarcacoes( Object marcacoes[][], Object ocasionais[][] ) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	{ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		int tresMeses = TRES_MESES; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		java.util.Date dataExame = null; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		Integer estadoExame = null; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		java.util.Date dataConsulta = null; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		Integer motivoConsulta = null; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		Integer estadoConsulta = null; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		Object grupo[] = null; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		Vector grupos = new Vector(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		if( marcacoes != null ) | 
			
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 				if( today.after( (java.util.Date) consultas[ 0 ][ 0 ] ) && |  |  |  | 			for( int n = 0; n < marcacoes.length; n++ ) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 						( ( Integer ) consultas[ 0 ][ 1 ] ).intValue() == 2 ) |  |  |  |  | 
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			{ |  |  |  | 			{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 					if( indiceConsultaAnterior == -1 ) |  |  |  | 				if( grupo == null ) | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 				{ |  |  |  | 				{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 						indiceConsultaAnterior = n; |  |  |  | 					grupo = new Object[ 5 ]; | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 					dataExame = null; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 					estadoExame = null; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 					dataConsulta = null; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 					motivoConsulta = null; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 					estadoConsulta = null; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 					grupos.add( grupo ); | 
			
		
	
		
		
			
				
					
					|  |  |  | 				} |  |  |  | 				} | 
			
		
	
		
		
			
				
					
					|  |  |  | 					if( ( ( Integer ) consultas[ 0 ][ 2 ] ).intValue() != MOTIVO_OCASIONAL ) |  |  |  | 
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				java.util.Date data = ( java.util.Date ) marcacoes[ n ][ 0 ]; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				Integer estado = ( Integer ) marcacoes[ n ][ 1 ]; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				Integer motivo = ( Integer ) marcacoes[ n ][ 2 ]; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				Integer tipo = ( Integer ) marcacoes[ n ][ 3 ]; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				switch( tipo.intValue() ) | 
			
		
	
		
		
			
				
					
					|  |  |  | 				{ |  |  |  | 				{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 						indiceConsultaAnteriorPeriodica = n; |  |  |  | 					case TIPO_MARCACAO_EXAMES: | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 						break; |  |  |  | 						if( dataConsulta == null &&  | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 								( dataExame == null || estadoExame.intValue() < 2 ) ) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 						{ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 							dataExame = data; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 							estadoExame = estado; | 
			
		
	
		
		
			
				
					
					|  |  |  | 						} |  |  |  | 						} | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 						else if( Math.abs( dataConsulta.getTime() - data.getTime() ) < tresMeses ) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 						{ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 							dataExame = data; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 							estadoExame = estado; | 
			
		
	
		
		
			
				
					
					|  |  |  | 						} |  |  |  | 						} | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 						else | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 						{ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 							grupo = null; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 							n--; | 
			
		
	
		
		
			
				
					
					|  |  |  | 						} |  |  |  | 						} | 
			
		
	
		
		
			
				
					
					|  |  |  | //			estadoConsultas = anterior >= 0 && "y".equals( consultas[ anterior ][ 1 ] ) &&
 |  |  |  | 						if( grupo != null ) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | //			( proxima == -1 || ( ( ( java.util.Date )consultas[ proxima ][ 0 ] ).getTime() - todayMillis ) / 86400000 > 14 );
 |  |  |  | 						{ | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 							grupo[ 3 ] = dataExame; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 							grupo[ 4 ] = estadoExame; | 
			
		
	
		
		
			
				
					
					|  |  |  | 						} |  |  |  | 						} | 
			
		
	
		
		
			
				
					
					|  |  |  | 		if( exames == null ) |  |  |  | 						break; | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 					case TIPO_MARCACAO_CONSULTA: | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 						if( dataExame == null || Math.abs( dataExame.getTime() - data.getTime() ) < tresMeses ) | 
			
		
	
		
		
			
				
					
					|  |  |  | 						{ |  |  |  | 						{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			estado[ 1 ] = ESTADO_NAO_SE_APLICA; |  |  |  | 							dataConsulta = data; | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 							estadoConsulta = estado; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 							motivoConsulta = motivo; | 
			
		
	
		
		
			
				
					
					|  |  |  | 						} |  |  |  | 						} | 
			
		
	
		
		
			
				
					
					|  |  |  | 		else if( exames.length > 0 ) |  |  |  | 						else | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 						{ |  |  |  | 						{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			if( !today.after( (java.util.Date) exames[ 0 ][ 0 ] ) ) |  |  |  | 							grupo = null; | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 							n--; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 						} | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 						if( grupo != null ) | 
			
		
	
		
		
			
				
					
					|  |  |  | 						{ |  |  |  | 						{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 				indiceProximoExame = 0; |  |  |  | 							grupo[ 0 ] = dataConsulta; | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 							grupo[ 1 ] = estadoConsulta; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 							grupo[ 2 ] = motivoConsulta; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 						} | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 						break; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				} | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 			} | 
			
		
	
		
		
			
				
					
					|  |  |  | 		} |  |  |  | 		} | 
			
		
	
		
		
			
				
					
					|  |  |  | 			for( int n = indiceProximoExame + 1; n < exames.length; n++ ) |  |  |  | 		if( ocasionais != null ) | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 				if( today.after( (java.util.Date) exames[ 0 ][ 0 ] ) && |  |  |  | 			for( int n = 0; n < ocasionais.length; n++ ) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 						( ( Integer ) exames[ 0 ][ 1 ] ).intValue() == 2 ) |  |  |  |  | 
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			{ |  |  |  | 			{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 					indiceExameAnterior = n; |  |  |  | 				grupo = new Object[ 5 ]; | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 					break; |  |  |  | 				for( int i = 0; i < ocasionais[ n ].length; i++ ) | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				{ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 					grupo[ i ] = ocasionais[ i ]; | 
			
		
	
		
		
			
				
					
					|  |  |  | 				} |  |  |  | 				} | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				grupos.add( grupo ); | 
			
		
	
		
		
			
				
					
					|  |  |  | 			} |  |  |  | 			} | 
			
		
	
		
		
			
				
					
					|  |  |  | //			estadoConsultas = anterior >= 0 && "y".equals( consultas[ anterior ][ 1 ] ) &&
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | //			( proxima == -1 || ( ( ( java.util.Date )consultas[ proxima ][ 0 ] ).getTime() - todayMillis ) / 86400000 > 14 );
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 		} |  |  |  | 		} | 
			
		
	
		
		
			
				
					
					|  |  |  | 		 |  |  |  | 		 | 
			
		
	
		
		
			
				
					
					|  |  |  | //		else
 |  |  |  | 		Object agrupadas[][] = ( Object[][] ) grupos.toArray( new Object[ grupos.size() ][] ); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | //		{
 |  |  |  | 		Arrays.sort( agrupadas, new Comparator(){ | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | //			estado[ 0 ] = ESTADO_PENDENTE;
 |  |  |  | 			public int compare( Object o1, Object o2 ) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | //		}
 |  |  |  | 			{ | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 		 |  |  |  | 				Object g1[] = ( Object[] ) o1; | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 		return estado; |  |  |  | 				Object g2[] = ( Object[] ) o2; | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				java.util.Date d1 = ( java.util.Date ) ( g1[ 0 ] != null ? g1[ 0 ] : g1[ 3 ] ); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				java.util.Date d2 = ( java.util.Date ) ( g2[ 0 ] != null ? g2[ 0 ] : g2[ 3 ] ); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				return d2.compareTo( d1 ); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 			}  | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		} ); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		return agrupadas; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	} |  |  |  | 	} | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 |  |  |  | 	 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	protected boolean verificarTrabalhador( Object consultas[][], Object exames[][] ) |  |  |  | 	protected void acrescentarTrabalhador( IDObject trabalhador, java.util.Date dataFicha,  | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 											Object marcacoes[][], Vector links, Vector dados, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 											boolean perfilConsultas, boolean perfilExames ) | 
			
		
	
		
		
			
				
					
					|  |  |  | 	{ |  |  |  | 	{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 		boolean estadoConsultas = false; |  |  |  | 		int estado[] = new int[ 2 ]; | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 		boolean estadoExames = ( exames.length == 0 ) || ( ( java.util.Date )exames[ 0 ][ 0 ] ).before(today) || |  |  |  | 		 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 		( ( ( ( java.util.Date )exames[ 0 ][ 0 ] ).getTime() - todayMillis ) / 86400000 > 14 ); |  |  |  | 		if( marcacoes.length == 0 ) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 		if( consultas.length > 0 ) |  |  |  |  | 
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 			int anterior; |  |  |  | 			estado[ 0 ] = perfilConsultas ? ESTADO_PENDENTE : ESTADO_NAO_APLICAVEL; | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			int proxima; |  |  |  | 			estado[ 1 ] = perfilExames ? ESTADO_PENDENTE : ESTADO_NAO_APLICAVEL; | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			if( ( (java.util.Date) consultas[ 0 ][ 0 ] ).after( today ) ) |  |  |  | 		} | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		else | 
			
		
	
		
		
			
				
					
					|  |  |  | 		{ |  |  |  | 		{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 				proxima = 0; |  |  |  | 			java.util.Date dataConsulta; | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 				if( consultas.length >= 2 ) |  |  |  | 			java.util.Date dataExame; | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 			int index = -1; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 			for( ; index + 1 < marcacoes.length; index++ ) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 			{ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				int n = index + 1; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				dataConsulta = ( java.util.Date ) marcacoes[ n ][ 0 ]; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				dataExame = ( java.util.Date ) marcacoes[ n ][ 3 ]; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				boolean temConsulta = dataConsulta != null; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				boolean consultaAntiga = temConsulta && dataConsulta.before( today ); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				boolean temExame = dataExame != null; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				boolean exameAntigo = temExame && dataExame.before( today ); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				if( ( temConsulta && consultaAntiga && temExame && exameAntigo ) || | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 						( temConsulta && consultaAntiga && !temExame && !exameAntigo ) || | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 						( !temConsulta && !consultaAntiga && temExame && exameAntigo ) ) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 					 | 
			
		
	
		
		
			
				
					
					|  |  |  | 				{ |  |  |  | 				{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 					anterior = 1; |  |  |  | 					break; | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 				} |  |  |  | 				} | 
			
		
	
		
		
			
				
					
					|  |  |  | 				else |  |  |  | 			} | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 			if( index == -1 ) | 
			
		
	
		
		
			
				
					
					|  |  |  | 			{ |  |  |  | 			{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 					anterior = -1; |  |  |  | 				index = 0; | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 			} |  |  |  | 			} | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 			else if( index < marcacoes.length - 1 ) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 			{ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				index = 0; | 
			
		
	
		
		
			
				
					
					|  |  |  | 			} |  |  |  | 			} | 
			
		
	
		
		
			
				
					
					|  |  |  | 			else |  |  |  | 			boolean found = false; | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 			for( ; !found; index++ ) | 
			
		
	
		
		
			
				
					
					|  |  |  | 			{ |  |  |  | 			{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 				proxima = -1; |  |  |  | //				java.util.Date dataConsulta = ( java.util.Date ) marcacoes[ n ][ 0 ];
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 				anterior = 0; |  |  |  | //				java.util.Date dataExame = ( java.util.Date ) marcacoes[ n ][ 3 ];
 | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //				if( ( dataConsulta == null || dataConsulta.before( today ) ) !=
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //					( dataExame == null || dataExame.before( today ) ) )
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //				{
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //					break;
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //				}
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 			} |  |  |  | 			} | 
			
		
	
		
		
			
				
					
					|  |  |  | 			estadoConsultas = anterior >= 0 && "y".equals( consultas[ anterior ][ 1 ] ) && |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 			( proxima == -1 || ( ( ( java.util.Date )consultas[ proxima ][ 0 ] ).getTime() - todayMillis ) / 86400000 > 14 ); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 		} |  |  |  | 		} | 
			
		
	
		
		
			
				
					
					|  |  |  | 		return !(estadoConsultas && estadoExames); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	} |  |  |  | 	} | 
			
		
	
		
		
			
				
					
					|  |  |  | 	 |  |  |  | 	 | 
			
		
	
		
		
			
				
					
					|  |  |  | 	protected HashMap criarDadosTrabalhador( Connection con, Integer id, String nome,  |  |  |  | //	protected boolean verificarTrabalhador( Object consultas[][], Object exames[][] )
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //	{
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //		boolean estadoConsultas = false;
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //		boolean estadoExames = ( exames.length == 0 ) || ( ( java.util.Date )exames[ 0 ][ 0 ] ).before(today) ||
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //		( ( ( ( java.util.Date )exames[ 0 ][ 0 ] ).getTime() - todayMillis ) / 86400000 > 14 );
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //		if( consultas.length > 0 )
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //		{
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //			int anterior;
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //			int proxima;
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //			if( ( (java.util.Date) consultas[ 0 ][ 0 ] ).after( today ) )
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //			{
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //				proxima = 0;
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //				if( consultas.length >= 2 )
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //				{
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //					anterior = 1;
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //				}
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //				else
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //				{
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //					anterior = -1;
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //				}
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //			}
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //			else
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //			{
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //				proxima = -1;
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //				anterior = 0;
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //			}
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //			estadoConsultas = anterior >= 0 && "y".equals( consultas[ anterior ][ 1 ] ) &&
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //			( proxima == -1 || ( ( ( java.util.Date )consultas[ proxima ][ 0 ] ).getTime() - todayMillis ) / 86400000 > 14 );
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //		}
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //		return !(estadoConsultas && estadoExames);
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | //	}
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	protected HashMap criarDadosTrabalhador( Integer id, String nome,  | 
			
		
	
		
		
			
				
					
					|  |  |  | 												Object consultas[][], Object exames[][] ) |  |  |  | 												Object consultas[][], Object exames[][] ) | 
			
		
	
		
		
			
				
					
					|  |  |  | 		throws Exception |  |  |  | 		throws Exception | 
			
		
	
		
		
			
				
					
					|  |  |  | 	{ |  |  |  | 	{ | 
			
		
	
	
		
		
			
				
					|  |  | 
 |