Package org.ita.capes.pegarIefs

Source Code of org.ita.capes.pegarIefs.ControleProcessamento

package org.ita.capes.pegarIefs;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.LinkedList;
import java.util.List;

import org.apache.commons.httpclient.methods.GetMethod;
import org.ita.capes.Professor;
import org.ita.capes.dao.DAO;
import org.ita.capes.dao.DAOFactoryProvider;
import org.ita.capes.ief.IefInfoTela;
import org.ita.capes.pegarProfessores.BaixadorDeProfessorApartirDeListaNoTxt;
import org.ita.capes.pegarProfessores.InsertorDeProfessorNoBD;
import org.ita.capes.professor.LattesSAXHandler;

public class ControleProcessamento {
 
  // path ateh o diretorio que sera baixado as paginas de ief. Tem que terminar com o separador \\.
  private String myIefDir;

  private String myLattesDir;
 
  private String myLattesListFile;
 
  //Controladora de Iefs Distribuidos nas threads
  private int iefCount=0;
  private int maxIef;
 
  //Controladora de Lattes Distribuidos nas threads
  private List<String> listaDeUrlLattesNaoBaixados = new LinkedList<String>();
  private int professorIndex=0;
 
  private final int numeroThreads = 15;
 
  private int threadsTerminadas;
 
  public ControleProcessamento(String myLattesDir_, String myLattesListFile_, String myIefDir_, int maxIef_){
   
    myLattesDir = myLattesDir_;
    myLattesListFile = myLattesListFile_;
    myIefDir = myIefDir_;
    maxIef = maxIef_;
    iefCount = 0;
    if(!myLattesListFile_.equals(""))populateLattesList();
  }
 
  public void populateLattesList(){
    File f;
    f = new File(myLattesListFile);
   
    FileReader fr;
    try {
     
      fr = new FileReader (f);
      BufferedReader in = new BufferedReader( fr );
      while(in.ready()){
        listaDeUrlLattesNaoBaixados.add(in.readLine());
      }
      in.close();
      fr.close();
     
    } catch (FileNotFoundException e1) {
      System.out.println("Arquivo com lista url de Lattes "+myLattesListFile+" n�o achado.");
    } catch (IOException e) {
      System.out.println("Algum erro de I/O");
      e.printStackTrace();
    }   
    professorIndex=listaDeUrlLattesNaoBaixados.size()-1;
    //debug professorIndex=10;
  }
 
  public List<String> getLattesList(){
    /*for(String str:listaDeUrlLattesNaoBaixados){
      System.out.println(str);
    }*/
    return listaDeUrlLattesNaoBaixados;
  }
 
  public void baixarIefs(){
    for(int i=0; i<numeroThreads; i++){
      BaixadorDeIef pi = new BaixadorDeIef(myIefDir, i,this);
      Thread t = new Thread(pi);
      t.start();
    }
  }
 
  public void baixarLattesApartirDeListaNoTxt(){
    for(int i=0; i<numeroThreads; i++){
      BaixadorDeProfessorApartirDeListaNoTxt bp = new BaixadorDeProfessorApartirDeListaNoTxt(myLattesDir, i,this);
      Thread t = new Thread(bp);
      t.start();
    }
  }
 
  public void inserirIefsNoBD(){
    for(int i=0; i<numeroThreads; i++){
      InsertorDeIefNoBD pi = new InsertorDeIefNoBD(myIefDir, i,this);
      Thread t = new Thread(pi);
      t.start();
    }
  }
 
  public void setIefCount(int iefCount_){
    iefCount = iefCount_;
  }
 
  public synchronized int getIefCount(){
      if(iefCount < maxIef){
        iefCount++;
        return iefCount;
      }else{
        threadsTerminadas++;
        System.out.println("Acabou!"+threadsTerminadas);
        if(threadsTerminadas==numeroThreads) {
          iefCount = 0;
          threadsTerminadas=0;
        }
        return -1;
      }
     
  }
 
  public synchronized List<String> getUrlLattes(){
    if(professorIndex > -1){
      // come�a do final para que tenha acesso ao indice de forma mais f�cil
      String url = listaDeUrlLattesNaoBaixados.get(professorIndex);
      String index = (new Integer(professorIndex)).toString();
      List<String> aux = new LinkedList<String>();
      aux.add(index);
      aux.add(url);
      professorIndex--;
      //System.out.println(index+" "+url);

      return aux;
    }else{
      threadsTerminadas++;
      System.out.println("Acabou!"+threadsTerminadas);
      if(threadsTerminadas==numeroThreads) {
        professorIndex = listaDeUrlLattesNaoBaixados.size()-1;
        System.out.println("Max Nome Bibliografico "+LattesSAXHandler.getMaxNomeBibliografico());
        System.out.println("Max Endereco Profissional "+LattesSAXHandler.getMaxEnderecoProfissional());
        System.out.println("Max Areas de Atuacao "+LattesSAXHandler.getMaxAreasDeAtuacao());
        System.out.println("Max Linhas de Pesquisa "+LattesSAXHandler.getMaxLinhasDePesquisa());
        threadsTerminadas=0;
      }       
      return null;
    }
  }

  public void inserirProfessoresNoBD() {
    for(int i=0; i<numeroThreads; i++){
      InsertorDeProfessorNoBD pi = new InsertorDeProfessorNoBD(myLattesDir, i,this);
      Thread t = new Thread(pi);
      t.start();
    }
  }

  public void atualizarIefsNoBD() {
    for(int i=0; i<numeroThreads; i++){
      AtualizadorDeIefNoBD pi = new AtualizadorDeIefNoBD(myIefDir, i,this);
      Thread t = new Thread(pi);
      t.start();
    }
   
  }

}
TOP

Related Classes of org.ita.capes.pegarIefs.ControleProcessamento

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.