Cualquier inquietud no duden en preguntar !!!
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
/***
* Clase que controla la manipulacion de un archivo plano
* @author Diego Fernando Carvajal Rodriguez
* @version 001
* @see ###############
* @since 02/11/2010 - JDK 1.6
*/
public class clPlano {
private final String sDrccionCnfgrcion = "DIRECCION DE CARPETAS/Logs.txt";
private File flArchvo;
private FileReader frLeeArchvo;
private String sDscpcionError;
private List <String> lsLctra;
private FileWriter fwEscrbe;
private BufferedWriter bwBffer;
private PrintWriter pwImprme;
private BufferedReader brBffer;
private String sDrccion;
private int iCont;
private char cCrcter;
private String arsNmbre[];
private String sRta;
private String sRtaFnal;
private File flNmbreNvo;
private File flArchvoRtrno;
private boolean bCntrl;
private String sNmbreTmpral;
private String arsRta[];
private String sNvaRta;
private String sFchaTmpo;
private Calendar cClndrio;
private String sDia;
private String sMes;
private String sAnnio;
private String sHra;
private String sMnto;
private String sSgndo;
private boolean bEstdo;
private File flDrctrio;
private Process pPrcso;
private String sCmndo;
private String sNmbreArchvo;
private List <String> lsCntndo;
private File flLgs;
private String arsAyda[];
public clPlano(){
this.flArchvo = null;
this.frLeeArchvo = null;
this.sDscpcionError = "";
this.lsLctra = new ArrayList();
this.fwEscrbe = null;
this.bwBffer = null;
this.pwImprme = null;
this.brBffer = null;
this.sDrccion = "";
this.iCont = 0;
this.cCrcter = ' ';
this.arsNmbre = null;
this.sRta = "";
this.sRtaFnal = "";
this.flNmbreNvo = null;
this.flArchvoRtrno = null;
this.bCntrl = false;
this.sNmbreTmpral = "";
this.arsRta = null;
this.sNvaRta = "";
this.sFchaTmpo = "";
this.cClndrio = null;
this.sDia = "";
this.sMes = "";
this.sAnnio = "";
this.sHra = "";
this.sMnto = "";
this.sSgndo = "";
this.bEstdo = true;
this.flDrctrio = null;
this.pPrcso = null;
this.sCmndo = null;
this.sNmbreArchvo = "";
this.lsCntndo = new ArrayList();
this.flLgs = null;
this.arsAyda = null;
}
public String getsDscpcionError() {
return this.sDscpcionError;
}
public synchronized List <String> getLsLctra() {
return this.lsLctra;
}
/***
* Metodo que controla el medio
* @param iOpcion 1 == creacion de archivo plano; 2 == Lectura de archivo plano
* @param bCnfgrcion true == Carga ruta del fichero de configuracion e ignora el parametro sDrccionArchvo; false = Carga el fichero que se encuentra en sDrccionArchvo
* @param sDrccionArchvo Ruta del fichero que desea procesar
* @param lsCntndo Lista con el contenido que va a tener el archivo plano
* @param bCntnuaCntndo true == Adiciona el contenido al final del archivo plano existente; false == Adiciona el contenido reemplazando toda la informacion del archivo plano existente
* @return boolean true == proceso exitoso; false == falla en el proceso
*/
public synchronized boolean fnbProceso(int iOpcion, boolean bCnfgrcion, String sDrccionArchvo, List <String> lsCntndo, boolean bCntnuaCntndo){
this.bEstdo = true;
switch(iOpcion){
case 1://Creacion de archivo
this.bEstdo = fnbCreaPlano(bCnfgrcion, sDrccionArchvo, lsCntndo, bCntnuaCntndo);
break;
case 2://Lectura de archivo
this.bEstdo = fnbLeePlano(bCnfgrcion, sDrccionArchvo);
break;
default:
this.bEstdo = false;
break;
}
return this.bEstdo;
}
/***
* Metodo que carga el archivo plano en meoria para ser procesado
* @param bCnfgrcion true == Carga ruta del fichero de configuracion e ignora el parametro sDrccionArchvo; false == Carga el fichero que se encuentra en sDrccionArchvo
* @param sDrccionArchvo Ruta del fichero que desea procesar
* @return boolean true == proceso exitoso; false == falla en el proceso
*/
private boolean fnbCargaArchivo(boolean bCnfgrcion, String sDrccionArchvo){
this.bEstdo = true;
this.sDrccion = "";
if(bCnfgrcion){
this.sDrccion = this.sDrccionCnfgrcion;
}else{
this.sDrccion = fnsAjustaRuta2(sDrccionArchvo);
}
try {
this.flArchvo = new File(this.sDrccion);
this.bEstdo = this.flArchvo.exists();
if(this.bEstdo)
this.frLeeArchvo = new FileReader(this.flArchvo);
} catch (FileNotFoundException ex) {
this.sDscpcionError = ex.getMessage();
System.out.println("\nEXCEPCION: "+this.sDscpcionError+" fnbCargaArchivo");
this.bEstdo = false;
}
return this.bEstdo;
}
/***
* Metodo que permite crear un archivo plano
* @param bCnfgrcion true == Carga ruta del fichero de configuracion e ignora el parametro sDrccionArchvo; false = Carga el fichero que se encuentra en sDrccionArchvo
* @param sDrccionArchvo Ruta del fichero que desea procesar
* @param lsCntndo Lista con el contenido que va a tener el archivo plano
* @param bCntnuaCntndo true == Adiciona el contenido al final del archivo plano existente; false == Adiciona el contenido reemplazando toda la informacion del archivo plano existente
* @return boolean true == se creo el archivo plano con exito; false == no se pudo crear el archivo plano
*/
private boolean fnbCreaPlano(boolean bCnfgrcion, String sDrccionArchvo, List <String> lsCntndo, boolean bCntnuaCntndo){
this.bEstdo = true;
this.bEstdo = fnbCargaArchivo(bCnfgrcion, sDrccionArchvo);
this.iCont = 0;
if(this.bEstdo){
try {
this.fwEscrbe = new FileWriter(this.flArchvo, bCntnuaCntndo);
this.bwBffer = new BufferedWriter(this.fwEscrbe);
this.pwImprme = new PrintWriter(this.bwBffer);
for (this.iCont = 0; this.iCont < lsCntndo.size(); this.iCont++) {
this.pwImprme.println(lsCntndo.get(this.iCont));
}
this.pwImprme.flush();
} catch (IOException ex) {
this.sDscpcionError = ex.getMessage();
System.out.println("\nEXCEPCION: "+this.sDscpcionError+" fnbCreaPlano");
this.bEstdo = false;
}finally{
try {
this.frLeeArchvo.close();
this.pwImprme.close();
this.bwBffer.close();
this.fwEscrbe.close();
} catch (IOException ex) {
this.sDscpcionError = ex.getMessage();
System.out.println("\nEXCEPCION: "+this.sDscpcionError+" fnbCreaPlano");
this.bEstdo = false;
}
}
}
return this.bEstdo;
}
/***
* Metodo que permite leer un archivo plano
* @param bCnfgrcion true == Carga ruta del fichero de configuracion e ignora el parametro sDrccionArchvo; false = Carga el fichero que se encuentra en sDrccionArchvo
* @param sDrccionArchvo Ruta del fichero que desea procesar
* @return boolean true == se proceso la lectura del archivo plano con exito; false == no se pudo realizar la lectura del archivo plano
*/
private boolean fnbLeePlano(boolean bCnfgrcion, String sDrccionArchvo){
this.bEstdo = true;
this.bEstdo = fnbCargaArchivo(bCnfgrcion, sDrccionArchvo);
this.lsLctra = new ArrayList();
if(this.bEstdo){
this.brBffer = new BufferedReader(this.frLeeArchvo);
try {
while (this.brBffer.ready()) {
this.lsLctra.add(this.brBffer.readLine().toString());
}
} catch (IOException ex) {
this.sDscpcionError = ex.getMessage();
System.out.println("\nEXCEPCION: "+this.sDscpcionError+" fnbLeePlano");
this.bEstdo = false;
}finally{
try {
this.frLeeArchvo.close();
this.brBffer.close();
} catch (IOException ex) {
this.sDscpcionError = ex.getMessage();
System.out.println("\nEXCEPCION: "+this.sDscpcionError+" fnbLeePlano");
this.bEstdo = false;
}
}
}
return this.bEstdo;
}
/***
* Metodo que mueve un archivo de un directorio windows a otro directorio windows
* @param flArchvo parametro tipo File con el archivo a mover cargado
* @param sDrctrioDstno parametro tipo String con la ruta destino del archivo
* @return boolean true == proceso exitoso; false == proceso fallido
*/
public synchronized boolean fnbMueveArchivoWin(File flArchvo, String sDrctrioDstno){
this.bEstdo = true;
this.flDrctrio = new File(sDrctrioDstno);
if(!this.flDrctrio.isDirectory()){
this.flDrctrio.mkdirs();
}
if(flArchvo.exists()){
this.sCmndo = "cmd.exe /C move "+fnsAjustaRuta2(flArchvo.getPath())+" "+fnsAjustaRuta2(sDrctrioDstno);
this.pPrcso = null;
try {
this.pPrcso = Runtime.getRuntime().exec(sCmndo);
this.pPrcso.waitFor();
} catch (IOException ex) {
this.sDscpcionError = ex.getMessage();
System.out.println("\nEXCEPCION: "+this.sDscpcionError+" fnbMueveArchivoWin");
this.bEstdo = false;
} catch (InterruptedException ex) {
this.sDscpcionError = ex.getMessage();
System.out.println("\nEXCEPCION: "+this.sDscpcionError+" fnbMueveArchivoWin");
this.bEstdo = false;
}finally{
this.pPrcso.destroy();
}
}else{
this.bEstdo = false;
}
return this.bEstdo;
}
/***
* Abre el Manual de DialerFiles
* @return boolean true == proceso exitoso; false == proceso fallido
*/
public synchronized boolean fnbAyuda(){
this.bEstdo = true;
this.arsAyda = new String[2];
this.arsAyda[0] = "C:\\Windows\\hh.exe";
this.arsAyda[1] = "DIRECCION DE CARPETAS\\DialerFile.chm";
this.pPrcso = null;
try {
this.pPrcso = Runtime.getRuntime().exec(this.arsAyda);
this.pPrcso.waitFor();
} catch (IOException ex) {
this.sDscpcionError = ex.getMessage();
System.out.println("\nEXCEPCION: "+this.sDscpcionError+" fnbAyuda");
this.bEstdo = false;
} catch (InterruptedException ex) {
this.sDscpcionError = ex.getMessage();
System.out.println("\nEXCEPCION: "+this.sDscpcionError+" fnbAyuda");
this.bEstdo = false;
}finally{
this.pPrcso.destroy();
}
return this.bEstdo;
}
/***
* Metodo que copia un archivo de un directorio windows a otro directorio windows
* @param flArchvo parametro tipo File con el archivo a mover cargado
* @param sDrctrioDstno parametro tipo String con la ruta destino del archivo
* @return boolean true == proceso exitoso; false == proceso fallido
*/
public synchronized boolean fnbCopiaArchivoWin(File flArchvo, String sDrctrioDstno){
this.bEstdo = true;
if(flArchvo.exists()){
this.sCmndo = "cmd.exe /C copy "+fnsAjustaRuta2(flArchvo.getPath())+" "+fnsAjustaRuta2(sDrctrioDstno);
this.pPrcso = null;
try {
this.pPrcso = Runtime.getRuntime().exec(sCmndo);
this.pPrcso.waitFor();
} catch (IOException ex) {
this.sDscpcionError = ex.getMessage();
System.out.println("\nEXCEPCION: "+this.sDscpcionError+" fnbCopiaArchivoWin");
this.bEstdo = false;
} catch (InterruptedException ex) {
this.sDscpcionError = ex.getMessage();
System.out.println("\nEXCEPCION: "+this.sDscpcionError+" fnbCopiaArchivoWin");
this.bEstdo = false;
}finally{
this.pPrcso.destroy();
}
}else{
this.bEstdo = false;
}
return this.bEstdo;
}
/***
* Verifica La letra inicial del fichero
* @param flArchvo parametro tipo File cargado previamente con el archivo a procesar
* @return Retorna un char en mayuscula, indicando la letra inicial del fichero; si no existe el archivo retorma 0
*/
public synchronized char fncVerificaInicial(File flArchvo){
this.cCrcter = ' ';
if(flArchvo.exists()){
this.sNmbreArchvo = flArchvo.getName().toUpperCase();
this.cCrcter = this.sNmbreArchvo.charAt(0);
}else{
this.cCrcter = '*';
this.sDscpcionError = "El fichero no existe o fue removido sin autorizacion";
System.out.println("\nEXCEPCION: "+this.sDscpcionError);
fnExcepcion("EXCEPCION: "+this.sDscpcionError+" clPlano:fncVerificaInicial:1");
}
return this.cCrcter;
}
/***
* Metodo que renombra un archivo
* @param flArchvo parametro tipo File con el archivo a renombrar cargado
* @param iCntdadMxLtras parametro tipo int con la cantidad maxima de caracteres del mismo nombre del archivo ejemplo desde el caracter 1 hasta el 10
* @param sExtncion parametro tipo String con la extension del fichero nuevo
* @return File con el archivo renombrado si la operacion fue exitosa de lo contrario devuelve el File con el nombre inicial
*/
public synchronized File fnflAjustaTamano(File flArchvo, int iCntdadMxLtras, String sExtncion){
this.arsNmbre = flArchvo.getName().split("\\.");
this.sRta = "";
this.sRtaFnal = "";
this.flNmbreNvo = null;
this.flArchvoRtrno = null;
this.bCntrl = false;
this.sNmbreTmpral = "";
this.iCont = 0;
this.cCrcter = ' ';
for(this.iCont = 0; this.iCont<this.arsNmbre[0].length(); this.iCont++){
this.cCrcter = this.arsNmbre[0].charAt(this.iCont);
if(this.cCrcter != ' '){
this.sNmbreTmpral = this.sNmbreTmpral + this.cCrcter;
}
}
this.arsNmbre[0] = this.sNmbreTmpral;
if(this.arsNmbre[0].length() > iCntdadMxLtras){
this.arsNmbre[0] = this.arsNmbre[0].substring(0, iCntdadMxLtras).toUpperCase();
}
this.sRta = fnsAjustaRuta(flArchvo.getPath());
this.arsRta = fnsAjustaRuta(this.sRta).split("\\/");
for(this.iCont = 0; this.iCont<this.arsRta.length - 1; this.iCont++){
this.sRtaFnal = this.sRtaFnal + this.arsRta[this.iCont] + "/";
}
this.sRtaFnal = this.sRtaFnal + this.arsNmbre[0] + "."+sExtncion ;
this.flNmbreNvo = new File(this.sRtaFnal);
this.bCntrl = flArchvo.renameTo(this.flNmbreNvo);
if(this.bCntrl){
this.flArchvoRtrno = this.flNmbreNvo;
}else{
this.flArchvoRtrno = flArchvo;
}
return this.flArchvoRtrno;
}
/***
* Metodo que ajusta el formato de ruta de directorios para Windows
* @param sRta parametro String que contiene la ruta a ajustar
* @return String con la ruta procesada y ajustada
*/
private String fnsAjustaRuta(String sRta){
this.sNvaRta = "";
this.cCrcter = ' ';
this.iCont = 0;
for(this.iCont = 0; this.iCont<sRta.length(); this.iCont++){
this.cCrcter = sRta.charAt(this.iCont);
if(this.cCrcter == '\\'){
sNvaRta = sNvaRta + '/';
}else{
sNvaRta = sNvaRta + this.cCrcter;
}
}
return sNvaRta;
}
/***
* Metodo que ajusta el formato de ruta de directorios para Windows
* @param sRta parametro String que contiene la ruta a ajustar
* @return String con la ruta procesada y ajustada
*/
private String fnsAjustaRuta2(String sRta){
this.sNvaRta = "";
this.cCrcter = ' ';
this.iCont = 0;
for(this.iCont = 0; this.iCont<sRta.length(); this.iCont++){
this.cCrcter = sRta.charAt(this.iCont);
if(this.cCrcter == '/'){
sNvaRta = sNvaRta + '\\';
}else{
sNvaRta = sNvaRta + this.cCrcter;
}
}
return sNvaRta;
}
/***
* Metodo para capturar la fecha del sistema
* @return String Con la fecha actual del sistema DD/MM/AAAA HH:MM:SS
*/
public synchronized String fnsFechaTiempo(){
this.sFchaTmpo = "";
this.cClndrio = Calendar.getInstance();
this.sDia = Integer.toString(this.cClndrio.get(Calendar.DATE));
this.sMes = Integer.toString(this.cClndrio.get(Calendar.MONTH)+1);
this.sAnnio = Integer.toString(this.cClndrio.get(Calendar.YEAR));
this.sHra = Integer.toString(this.cClndrio.get(Calendar.HOUR_OF_DAY));
this.sMnto = Integer.toString(this.cClndrio.get(Calendar.MINUTE));
this.sSgndo = Integer.toString(this.cClndrio.get(Calendar.SECOND));
this.sFchaTmpo = this.sDia+"/"+this.sMes+"/"+this.sAnnio+" "+this.sHra+":"+this.sMnto+":"+this.sSgndo;
return this.sFchaTmpo;
}
/***
* Metodo para escribir el log de sucesos de envio
* @param sLog Parametro String Con la informacion a ingresar al archivo de log
* @return boolean true == Escritura del log exitosa; false == escritura del log fallida
*/
public synchronized boolean fnbLog(String sLog){
this.bEstdo = true;
this.lsCntndo = new ArrayList();
this.flLgs = new File(this.sDrccionCnfgrcion);
if(!this.flLgs.exists()){
try {
this.flLgs.createNewFile();
this.lsCntndo.add("CSO;IDSCIO;TPOAGNTE;NMBREARCHIVO;TPOARCHVO;MDIO;DSTNO;FCHAPRCSO");
this.lsCntndo.add("CSO --> E == ENVIO EXITOSO; F == FALLIDO POR ENVIO");
this.lsCntndo.add("IDSCIO --> IDENTIFICACION O NOMBRE DEL SOCIO");
this.lsCntndo.add("TPOAGNTE --> 1 == AGENTE INTERNO (SPRBUN); 2 == AGENTE EXTERNO SOCIO");
this.lsCntndo.add("NMBREARCHIVO --> NOMBRE DEL ARCHIVO PROCESADO");
this.lsCntndo.add("TPOARCHVO --> TIPO DE ARCHIVO PROCESADO");
this.lsCntndo.add("MDIO --> F == MEDIO DE ENVIO FTP; C == MEDIO DE ENVIO CORREO ELECTRONICO");
this.lsCntndo.add("DSTNO --> SEGUN EL MEDIO F == HOST DESTINO; C == CORREO DESTINATARIO");
this.lsCntndo.add("FCHAPRCSO --> FECHA DE ENVIO");
this.lsCntndo.add("");
this.lsCntndo.add("");
} catch (IOException ex) {
this.sDscpcionError = ex.getMessage();
System.out.println("\nEXCEPCION: "+this.sDscpcionError+" fnbLog");
}
}
this.lsCntndo.add(sLog+" ("+fnsFechaTiempo()+")");
this.bEstdo = fnbProceso(1, true, "", this.lsCntndo, true);
return this.bEstdo;
}
/***
* Metodo para escribir la excepcion en un archivo
* @param sExcepcion Parametro String con la informacion de la excepcion capturada
* @return boolean true == Escritura de excepcion exitosa; false == Escritura de excepcion fallida
*/
public synchronized boolean fnExcepcion(String sExcepcion){
this.bEstdo = true;
this.lsCntndo = new ArrayList();
this.flLgs = new File("DIRECCION DE CARPETAS/Excepcion.dll");
if(!this.flLgs.exists()){
try {
this.flLgs.createNewFile();
} catch (IOException ex) {
this.sDscpcionError = ex.getMessage();
System.out.println("\nEXCEPCION: "+this.sDscpcionError+" fnExcepcion");
}
}
this.lsCntndo.add(sExcepcion+" ("+fnsFechaTiempo()+")");
this.bEstdo = fnbProceso(1, false, this.flLgs.getAbsolutePath(), this.lsCntndo, true);
return this.bEstdo;
}
}
No hay comentarios:
Publicar un comentario