Package com.vgo.movie.thread

Source Code of com.vgo.movie.thread.AnalyseMediaThread

package com.vgo.movie.thread;

import java.awt.Cursor;
import java.io.File;
import java.sql.SQLException;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.StringTokenizer;

import javax.swing.JOptionPane;
import javax.swing.SwingUtilities;

import com.vgo.movie.data.DatabaseDAO;
import com.vgo.movie.domain.Generique;
import com.vgo.movie.domain.Movie;
import com.vgo.movie.ecran.BulkInsertSelection;
import com.vgo.movie.util.Libelle;

public class AnalyseMediaThread extends Thread{

  private String sourceFolder;
  private BulkInsertSelection localParent;
  private LinkedList<String> listeFichier;
  private static String[] extensionsAutorises = {"avi","mpg","divx","mpeg","mkv"};
  private List<String> tmpListLangueOut;
  private List<String> tmpListQualiteOut;
  private List<String> tmpListCompressionOut;


  public AnalyseMediaThread(BulkInsertSelection parent, String source){
    sourceFolder = source;
    localParent = parent;
  }


  public void initialize() {
    this.start();
  }

  public void run() {
    localParent.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
    listeFichier = new LinkedList<String>();
    analyseRepertoire(sourceFolder);

    JOptionPane.showOptionDialog(
        SwingUtilities.getWindowAncestor(localParent),
        Libelle.getLibelle("fichiersDecouvert", new Integer(this.listeFichier.size()).toString()),
        Libelle.getLibelle("information"),
        JOptionPane.DEFAULT_OPTION,
        JOptionPane.INFORMATION_MESSAGE,
        null,
        null,
        null);

    List tmpListIn = new LinkedList();
    try {
      tmpListIn = DatabaseDAO.selectAllMedias();
    }
    catch (SQLException e) {
      JOptionPane.showOptionDialog(
          SwingUtilities.getWindowAncestor(localParent),
          Libelle.getLibelle("erreurInitListe"),
          Libelle.getLibelle("erreur"),
          JOptionPane.DEFAULT_OPTION,
          JOptionPane.ERROR_MESSAGE,
          null,
          null,
          null);
    }

    List<String> tmpListOut = new LinkedList<String>();
    Iterator tmpIterator = tmpListIn.listIterator();
    while(tmpIterator.hasNext()){
      tmpListOut.add(((Generique)tmpIterator.next()).getLibelle());
    }

    Object[] possibilities = tmpListOut.toArray();
    String typeMedia = (String)JOptionPane.showInputDialog(
        SwingUtilities.getWindowAncestor(localParent),
        Libelle.getLibelle("choisirTypeMedia"),
        Libelle.getLibelle("information"),
        JOptionPane.PLAIN_MESSAGE,
        null,
        possibilities,
        null);

    if(typeMedia == null){
      JOptionPane.showOptionDialog(
          SwingUtilities.getWindowAncestor(localParent),
          Libelle.getLibelle("operationAnnule"),
          Libelle.getLibelle("information"),
          JOptionPane.DEFAULT_OPTION,
          JOptionPane.WARNING_MESSAGE,
          null,
          null,
          null);
      localParent.dispose();
    }
    else {

      int dernierNumMedia = 0;
      try {   
        dernierNumMedia = ((Movie)DatabaseDAO.recupDernierNumMedia()).getIdMedia();
      } catch (SQLException e) {
        dernierNumMedia = 0;
     
      //R�cup�rer toute les listes
      //On commence par celle des qualit�es
      try {
        tmpListQualiteOut = new LinkedList<String>();
        tmpIterator = DatabaseDAO.selectAllQualites().listIterator();   
        while(tmpIterator.hasNext()){
          tmpListQualiteOut.add(((Generique)tmpIterator.next()).getCode());
        }
      } catch (SQLException e) {
        JOptionPane.showOptionDialog(
            SwingUtilities.getWindowAncestor(localParent),
            Libelle.getLibelle("erreurInitialisationListeQualite"),
            Libelle.getLibelle("erreur"),
            JOptionPane.DEFAULT_OPTION,
            JOptionPane.ERROR_MESSAGE,
            null,
            null,
            null);
      }     
      //Puis celle des Langues
      try {
        tmpListLangueOut = new LinkedList<String>();
        tmpIterator = DatabaseDAO.selectAllLangues().listIterator();   
        while(tmpIterator.hasNext()){
          tmpListLangueOut.add(((Generique)tmpIterator.next()).getCode());
        }
      } catch (SQLException e) {
        JOptionPane.showOptionDialog(
            SwingUtilities.getWindowAncestor(localParent),
            Libelle.getLibelle("erreurInitialisationListeLangue"),
            Libelle.getLibelle("erreur"),
            JOptionPane.DEFAULT_OPTION,
            JOptionPane.ERROR_MESSAGE,
            null,
            null,
            null);
      }
      //Puis celle des Compressions
      try {
        tmpListCompressionOut = new LinkedList<String>();
        tmpIterator = DatabaseDAO.selectAllCompressions().listIterator();   
        while(tmpIterator.hasNext()){
          tmpListCompressionOut.add(((Generique)tmpIterator.next()).getCode());
        }
      } catch (SQLException e) {
        JOptionPane.showOptionDialog(
            SwingUtilities.getWindowAncestor(localParent),
            Libelle.getLibelle("erreurInitialisationListeCompression"),
            Libelle.getLibelle("erreur"),
            JOptionPane.DEFAULT_OPTION,
            JOptionPane.ERROR_MESSAGE,
            null,
            null,
            null);
      }     


      //parsing des noms de fichiers
      //principe : enlever le "." et "_" dans le nom
      //d�tecter les cat�gories avec ce qui existe en base
      //enlever ce qui est d�tect� du nom du film
      //proposer le reste comme nom de film       
      for (String film : listeFichier) {
        Movie tmpMovie = new Movie();     
        film = film.replaceAll("_", " ");
        film = film.replaceAll("\\.", " ");

        //Cr�ation d'un film avec init du type de m�dia, du num�ro et du statut
        tmpMovie.setType(typeMedia);
        tmpMovie.setIdMedia(dernierNumMedia+1);
        tmpMovie.setStatut("");
        //Puis on initialise � vide les autres
        tmpMovie.setCompression("");
        tmpMovie.setLangue("");
        tmpMovie.setQualite("");
        //Puis on met le nom du film tel qu'il est
        tmpMovie.setNom(film);
        //Maintenant passons � la d�tection de la compression
        tmpMovie = detectionCompression(tmpMovie);
        //Idem pour la langue
        tmpMovie = detectionLangue(tmpMovie);
        //Et finalement la qualit�
        tmpMovie = detectionQualite(tmpMovie);
        //Puis on nettoie le nom du film en enlevant les doubles espaces g�n�r�s
        while (tmpMovie.getNom().indexOf("  ") != -1){
          tmpMovie.setNom(tmpMovie.getNom().replaceAll("  ", " "));
        }

        //Proposition du film dans la fen�tre
        localParent.getJTextNomFilm().setText(tmpMovie.getNom());
        localParent.getJTextFieldNumMedia().setText(new Integer(tmpMovie.getIdMedia()).toString());

        localParent.getJComboBoxTypeMedia().setSelectedItem(tmpMovie.getType());     
        if(!tmpMovie.getCompression().equals("")){
          localParent.getJComboBoxCompression().setSelectedItem(tmpMovie.getCompression());         
        }
        if(!tmpMovie.getLangue().equals("")){
          localParent.getJComboBoxLangue().setSelectedItem(tmpMovie.getLangue());         
        }
        if(!tmpMovie.getQualite().equals("")){
          localParent.getJComboBoxQualite().setSelectedItem(tmpMovie.getQualite());         
        }
        //Puis mise en attente de la validation
        localParent.setValidationEnCours(true);
        localParent.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
        while(localParent.isValidationEnCours()){
          try {
            Thread.sleep(500);
          } catch (InterruptedException e) {
          }
        }
        //L'utilisateur � valid� ou pass� on passe au films suivant
        localParent.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));


        //On attends un r�ponse de l'utilisateur
        //Puis on passe au film suivant
      }

      /*Affichage du message final � l'utilisateur*/
      if(localParent.getNbMovieInserted() > 1){
        JOptionPane.showOptionDialog(
            SwingUtilities.getWindowAncestor(localParent),
            Libelle.getLibelle("filmsInseres",
                new Integer(localParent.getNbMovieInserted()).toString(),
                new Integer(dernierNumMedia+1).toString()),
                Libelle.getLibelle("information"),
                JOptionPane.DEFAULT_OPTION,
                JOptionPane.INFORMATION_MESSAGE,
                null,
                null,
                null);     
      }
      else{
        if(localParent.getNbMovieInserted() > 0){
          JOptionPane.showOptionDialog(
              SwingUtilities.getWindowAncestor(localParent),
              Libelle.getLibelle("filmInsere",
                  new Integer(localParent.getNbMovieInserted()).toString(),
                  new Integer(dernierNumMedia+1).toString()),
                  Libelle.getLibelle("information"),
                  JOptionPane.DEFAULT_OPTION,
                  JOptionPane.INFORMATION_MESSAGE,
                  null,
                  null,
                  null)
        }
        else{
          JOptionPane.showOptionDialog(
              SwingUtilities.getWindowAncestor(localParent),
              Libelle.getLibelle("aucunFilmInsere"),
                  Libelle.getLibelle("information"),
                  JOptionPane.DEFAULT_OPTION,
                  JOptionPane.INFORMATION_MESSAGE,
                  null,
                  null,
                  null);   
        }
 
      }


      //Une fois tous les films d�roul�s on ferme
      localParent.dispose();
    }
  }

  private void analyseRepertoire(String repertoire) {
    File rootFolder = new File(repertoire);
    String[] tmpList = rootFolder.list();

    for (int i=0;i<tmpList.length;i++){
      File tmpFile = new File(repertoire + "\\" + tmpList[i]);
      if(tmpFile.isDirectory()){
        analyseRepertoire(tmpFile.getPath());
      }
      else{       
        if(extensionAutorisee(tmpFile.getName().substring(tmpFile.getName().lastIndexOf(".") + 1, tmpFile.getName().length()))){
          listeFichier.add(tmpFile.getName().substring(0,tmpFile.getName().lastIndexOf(".")));         
        }
      }
    }
  }

  private boolean extensionAutorisee(String extension){
    for(int i=0;i<extensionsAutorises.length;i++){
      if(extension.toLowerCase().equals(extensionsAutorises[i].toLowerCase())){
        return true;
      }
    }
    return false;
  }

  private Movie detectionCompression(Movie tmpMovie){
    StringTokenizer st;
    String tmpToken = null;
    StringTokenizer st2;
    String tmpToken2 = null;

    for(String compression : tmpListCompressionOut){
      st = new StringTokenizer(tmpMovie.getNom()," ");
      while ( st.hasMoreTokens() ) {

        tmpToken = st.nextToken();
        if (tmpToken.toLowerCase().equals(compression.toLowerCase())){
          //On a une touche
          //On met la compression � jour
          tmpMovie.setCompression(compression);
          //On enl�ve la compression du nom du film
          String tmpNouveauNom = new String();
          tmpNouveauNom = tmpMovie.getNom().substring(0, tmpMovie.getNom().toLowerCase().indexOf(compression.toLowerCase()));
          tmpNouveauNom = tmpNouveauNom + tmpMovie.getNom().substring(tmpMovie.getNom().toLowerCase().indexOf(compression.toLowerCase()) + compression.length());
          tmpMovie.setNom(tmpNouveauNom);
          break;         
        }

        st2 = new StringTokenizer(tmpToken,"-");
        while ( st2.hasMoreTokens() ) {
          tmpToken2 = st2.nextToken();
          if (tmpToken2.toLowerCase().equals(compression.toLowerCase())){
            //On a une touche
            //On met la compression � jour
            tmpMovie.setCompression(compression);
            //On enl�ve la compression du nom du film
            String tmpNouveauNom = new String();
            tmpNouveauNom = tmpMovie.getNom().substring(0, tmpMovie.getNom().toLowerCase().indexOf(compression.toLowerCase()));
            tmpNouveauNom = tmpNouveauNom + tmpMovie.getNom().substring(tmpMovie.getNom().toLowerCase().indexOf(compression.toLowerCase()) + compression.length());
            tmpMovie.setNom(tmpNouveauNom);
            break;     
          }
        }         
      }
    }
    return tmpMovie;
  }

  private Movie detectionLangue(Movie tmpMovie){
    StringTokenizer st;
    String tmpToken = null;
    StringTokenizer st2;
    String tmpToken2 = null;
    for(String langue : tmpListLangueOut){
      st = new StringTokenizer(tmpMovie.getNom()," ");
      while ( st.hasMoreTokens() ) {
        tmpToken = st.nextToken();
        if (tmpToken.toLowerCase().equals(langue.toLowerCase())){
          //On a une touche
          //On met la langue � jour
          tmpMovie.setLangue(langue);
          //On enl�ve la langue du nom du film
          String tmpNouveauNom = new String();
          tmpNouveauNom = tmpMovie.getNom().substring(0, tmpMovie.getNom().toLowerCase().indexOf(langue.toLowerCase()));
          tmpNouveauNom = tmpNouveauNom + tmpMovie.getNom().substring(tmpMovie.getNom().toLowerCase().indexOf(langue.toLowerCase()) + langue.length());
          tmpMovie.setNom(tmpNouveauNom);
          break;         
        }

        st2 = new StringTokenizer(tmpToken,"-");
        while ( st2.hasMoreTokens() ) {
          tmpToken2 = st2.nextToken();
          if (tmpToken2.toLowerCase().equals(langue.toLowerCase())){
            //On a une touche
            //On met la langue � jour
            tmpMovie.setLangue(langue);
            //On enl�ve la langue du nom du film
            String tmpNouveauNom = new String();
            tmpNouveauNom = tmpMovie.getNom().substring(0, tmpMovie.getNom().toLowerCase().indexOf(langue.toLowerCase()));
            tmpNouveauNom = tmpNouveauNom + tmpMovie.getNom().substring(tmpMovie.getNom().toLowerCase().indexOf(langue.toLowerCase()) + langue.length());
            tmpMovie.setNom(tmpNouveauNom);
            break;     
          }
        }       
      }
    }
    return tmpMovie;
  }

  private Movie detectionQualite(Movie tmpMovie){
    StringTokenizer st;
    String tmpToken = null;
    StringTokenizer st2;
    String tmpToken2 = null;
    for(String qualite : tmpListQualiteOut){
      st = new StringTokenizer(tmpMovie.getNom()," ");
      while ( st.hasMoreTokens() ) {

        tmpToken = st.nextToken();
        if (tmpToken.toLowerCase().equals(qualite.toLowerCase())){
          //On a une touche
          //On met la qualite � jour
          tmpMovie.setQualite(qualite);
          //On enl�ve la qualite du nom du film
          String tmpNouveauNom = new String();
          tmpNouveauNom = tmpMovie.getNom().substring(0, tmpMovie.getNom().toLowerCase().indexOf(qualite.toLowerCase()));
          tmpNouveauNom = tmpNouveauNom + tmpMovie.getNom().substring(tmpMovie.getNom().toLowerCase().indexOf(qualite.toLowerCase()) + qualite.length());
          tmpMovie.setNom(tmpNouveauNom);
          break;     
        }

        st2 = new StringTokenizer(tmpToken,"-");
        while ( st2.hasMoreTokens() ) {
          tmpToken2 = st2.nextToken();
          if (tmpToken2.toLowerCase().equals(qualite.toLowerCase())){
            //On a une touche
            //On met la qualite � jour
            tmpMovie.setQualite(qualite);
            //On enl�ve la qualite du nom du film
            String tmpNouveauNom = new String();
            tmpNouveauNom = tmpMovie.getNom().substring(0, tmpMovie.getNom().toLowerCase().indexOf(qualite.toLowerCase()));
            tmpNouveauNom = tmpNouveauNom + tmpMovie.getNom().substring(tmpMovie.getNom().toLowerCase().indexOf(qualite.toLowerCase()) + qualite.length());
            tmpMovie.setNom(tmpNouveauNom);
            break;     
          }
        }

      }
    }
    return tmpMovie;
 

}
TOP

Related Classes of com.vgo.movie.thread.AnalyseMediaThread

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.