GMusicBGProcess.java :  » MP3 » algmusic » gmusic » thread » Java Open Source

Java Open Source » MP3 » algmusic 
algmusic » gmusic » thread » GMusicBGProcess.java
package gmusic.thread;

import gmusic.bo.OptionBean;
import gmusic.ma.bo.DemandeChargement;
import gmusic.ma.services.impl.MetalArchivesServicesImpl;
import gmusic.services.impl.GMusicServicesImpl;

import java.util.List;

import org.apache.log4j.Logger;

public class GMusicBGProcess extends Thread {

  private boolean activerThread = false;

  private final static Logger log = Logger.getLogger(GMusicBGProcess.class);

  private final static int NB_ERREURS_MAX = 3;

  private int nbErreurs = 0;

  public GMusicBGProcess() {
    try {
      OptionBean pref = GMusicServicesImpl.getInstance().getOption(
          "ACTIVATION_THREAD");
      if (pref.getValue().equalsIgnoreCase("1")) {
        activerThread = true;
        MetalArchivesServicesImpl.activerChargementInfo();
      }
    } catch (Exception e) {
      log
          .error("Erreur lors de la recuperation de la preference ACTIVATION_THREAD");
      activerThread = false;
    }
    if (activerThread) {
      log.info("Le thread est actif");
    }
  }

  @SuppressWarnings("static-access")
  public void run() {
    while (activerThread) {
      try {
        Thread.currentThread().sleep(5000);
      } catch (InterruptedException ie) {
        activerThread = false;
      }

      try {
        List<DemandeChargement> toPreLoad = MetalArchivesServicesImpl
            .getInstance().getDemandesChargementToPreLoad();

        if (toPreLoad.size() > 0) {
          log.info("PreChargement de " + toPreLoad.get(0).getAmaid());
          MetalArchivesServicesImpl.getInstance().preChargement(
              toPreLoad.get(0));
        } else {

          DemandeChargement dem = MetalArchivesServicesImpl
              .getInstance().getNextDemandeChargement();

          if (dem != null) {
            log.info("Chargement de " + dem.getAmaid());
            MetalArchivesServicesImpl.getInstance()
                .majArtistDataFromMAWebSite(dem.getAmaid());
            if (activerThread
                && MetalArchivesServicesImpl
                    .isChargementInfoActif()) {
              MetalArchivesServicesImpl.getInstance()
                  .updateDemandeChargementStatut(dem,
                      DemandeChargement.LOADED);
            }
          } else {
            MetalArchivesServicesImpl.getInstance()
                .ajoutDemandeChargementMAJAuto();
          }
        }
        // log.debug("Fin run thread...");
        nbErreurs = 0;
      } catch (Exception e) {
        log.error("Erreur lors du chargement des info [" + nbErreurs
            + "]", e);
        nbErreurs++;
        if (nbErreurs == NB_ERREURS_MAX) {
          activerThread = false;
        }
      }
    }
    log.info("Arret du thread");
  }

  public void stopThread() {
    activerThread = false;
    MetalArchivesServicesImpl.desactiverChargementInfo();
    log.info("Demande d'arret du thread");
  }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.