Package application

Source Code of application.Renamer

package application;

import java.io.File;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

import persistense.FileHandler;
import view.ProgressWindow;

public class Renamer {

  private File sourceFile;
  private File destinationFile;
  private RenameType type;
  private ProgressWindow progressWindow;
 
  private boolean frame;
  private boolean debug;
 
  /**
   * Construtor padr�o com tr�s par�metros da classe Renamer
   * @param sourceFile
   * @param destinationFile
   * @param type
   */
  public Renamer(File sourceFile, File destinationFile, RenameType type, boolean frame, boolean debug) {
    super();
    this.sourceFile = sourceFile;
    this.destinationFile = destinationFile;
    this.type = type;
    this.frame = frame;
    this.debug = debug;
   
    if(debug){
      System.out.println("Objeto Renamer instanciado. Debug ligado.");
    }
   
    FileHandler.setDebug(debug);
  }

  /**
   * M�todo para iniciar o processo de renomeamento em batch
   * @return verdadeiro caso n�o tenha acontecido erro algum durante o processo
   */
  public boolean batch(){
    if(debug){
      System.out.println("Iniciando o processamento. Mostrar janela de progresso = "+frame);
    }
   
    boolean sourceIsDirectory = sourceFile.isDirectory();
   
    if(debug){
      System.out.println("Destino � diret�rio: "+sourceIsDirectory);
    }
   
    //Lista de arquivos que devem passar pelo processo de renomea��o
    List<File> fileList = new ArrayList<File>();
    if(sourceIsDirectory){
      fileList = FileHandler.getFileListInDirectory(sourceFile);
    }else{
      fileList.add(sourceFile);
    }
   
    if(frame){
      progressWindow = new ProgressWindow(fileList.size(), type);
    }
   
    if(debug){
      System.out.println("Tamanho da lista de arquivos a serem renomeados: "+fileList.size());
      System.out.println("Listagem de arquivos: ");
      for(File file : fileList){
        System.out.println(file.getAbsolutePath());
      }
    }
   
    boolean renamingSucess = true;
   
    int renamedImages = 0;
    for(File file : fileList){
      FileHandler.copyFileTo(file, destinationFile);
      String newFileName = rename(file, type);
     
      boolean renamed = FileHandler.renameTo(newFileName, file, destinationFile);

      renamedImages++;
      renamingSucess = renamingSucess && renamed;
      if(debug){
        System.out.println("Renomenando o arquivo para "+newFileName+" (N� "+renamedImages+". Sucesso = "+renamed);
      }
     
      if(frame){
        if(progressWindow != null){
          progressWindow.updateValues(renamedImages);
        }
      }
    }
   
    return renamingSucess;
  }
 
  /**
   * Retorna o nome modificado do arquivo, em formato String, de acordo com o tipo de renomea��o passado
   *
   * @param file
   * @param type
   * @return retorna o nome modificado do arquivo, em formato String, de acordo com o tipo de renomea��o passado
   */
  public String rename(File file, RenameType type){
    switch(type){
    case HASH:
      return hashRename(file);
    case NameHASH:
      return nameHashRename(file);
    case NameAndTimestamp:
      return nameAndTimestampRename(file);
    case ImageBoarder:
      return imageBoarderRename(file);
    }
    return "";
  }
 
  /**
   * Gera o hash code do objeto file passado e o retorna no formato de String.
   *
   * @param file
   * @return hashCode do objeto em formato String
   */
  public String hashRename(File file){
    int hashCode = file.hashCode();
    return String.valueOf(hashCode);
  }
 
  /**
   * Gera o hash code do nome do objeto file passado e o retorna no formato de String.
   *
   * @param file
   * @return hashCode do nome do objeto em formato String
   */
  public String nameHashRename(File file){
    int hashCode = file.getName().hashCode();
    return String.valueOf(hashCode);
  }
 
  /**
   * Retorna o nome do objeto mais o current time in milis.
   *
   * @param file
   * @return nome do objeto mais o current time in milis
   */
  public String nameAndTimestampRename(File file){
    String newName = file.getName()+"_"+Calendar.getInstance().getTimeInMillis();
    return newName;
  }
 
  /**
   * Procedimento para obter nomes similares aos de arquivos compartilhados em imageBoarders
   *
   * 1- Buscar o m�dulo do hashcode do nome do arquivo.
   * 2- Pegar o tempo atual em milissegundos e buscar os tr�s �ltimos d�gitos
   * 3- Concatenar os dois passos anteriores colocando um 1 na frente
   *
   * @param file
   * @return 1 + modulo(Hashcode) + (3 ultimos d�gitos do tempo atual em milissegundos)
   */
  public String imageBoarderRename(File file){
    int hashCode = file.getName().hashCode();
    hashCode = Math.abs(hashCode);
    hashCode = (int) hashCode / Integer.parseInt(String.valueOf(String.valueOf(hashCode).charAt(0)));
    String timeInMillis = String.valueOf(Calendar.getInstance().getTimeInMillis());
    String lastThreeDigits = timeInMillis.substring(timeInMillis.length()-4);
   
    return "1"+String.valueOf(hashCode)+lastThreeDigits;
  }
}

TOP

Related Classes of application.Renamer

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.