package com.fitbank.classmanager; import com.fitbank.common.Helper; import com.fitbank.contentsmanager.ManagerUtils; import com.fitbank.dto.management.Detail; import com.fitbank.security.util.UploadFiles; import com.fitbank.util.Debug; import com.fitbank.util.ListaArchivos; import java.io.File; import java.io.FileInputStream; import java.util.Collection; import java.util.LinkedList; import java.util.List; import org.apache.commons.io.IOUtils; /** * Clase que permie subir objetos (.class) a la base de datos para * proceso en caliente. * * @author SoftwareHouse S.A. */ public class ClassUploader extends ClassLoader { private final UploadFiles uf = new UploadFiles(); private static final List siSubidos = new LinkedList(); private static final List noSubidos = new LinkedList(); public void process(File[] files, boolean first) { try { if (first) { ManagerUtils.openSession(); Detail pDetail = new Detail(); pDetail.setCompany(2); uf.initParameters(pDetail); } for (File file : files) { try { if (file.isDirectory()) { this.process(file.listFiles(), false); } else { String name = file.getName(); String tipo = name.substring(name.lastIndexOf('.') + 1); if ("class".equals(tipo)) { Helper.beginTransaction(); System.out.println("Procesando " + name + "..."); byte[] bytes = IOUtils.toByteArray(new FileInputStream(file)); uf.executeUpload(bytes, tipo); Helper.commitTransaction(); siSubidos.add(name); System.out.println("Subido exitosamente!\n"); } } } catch (Exception e) { Helper.rollbackTransaction(); noSubidos.add(file.getName()); System.out.println("Errores al subir...:"); Debug.error(e.getMessage() + "\n"); } } } catch (Exception e) { Debug.error("Error al procesar formularios", e); } finally { Helper.closeSession(); } this.printSummary(); } private void printSummary() { System.out.println("########################################"); System.out.println("Clases subidas: " + siSubidos.size()); System.out.println("Clases no subidas: " + noSubidos.size()); System.out.println("########################################"); System.out.println("SUBIDOS\t\t\t\t\tNO SUBIDOS"); for (int i = 0; i < Math.max(siSubidos.size(), noSubidos.size()); i++) { System.out.println((siSubidos.size() > i ? siSubidos.get(i) : "") + "\t\t\t" + (noSubidos.size() > i ? noSubidos.get(i) : "")); } } public static void main(String args[]) throws Exception { Collection files = ListaArchivos.getLista(ClassUploader.class, "class"); ClassUploader cu = new ClassUploader(); cu.process(files.toArray(new File[0x0]), true); } }