/** * Copia los archivos a utilizar por una aplicación, en el directorio de trabajos de tdderive, * comprime tales archivos y los divide dejando los resultados de ambas acciones en sus * directorios correspondientes. * <li>Registra los archivos de la tarea. * <li>Si se debe exportar se crea un directorio cuyo nombre será * <tt>"tarea"+MilisegundosDesde1ºEnero1970</tt>. * <li>Si se exporta, se exportan los archivos bloque por bloque, asi que aquí se indica el nombre * de cada bloque. * <li>Si no se exporta, entonces no se indican bloques, pero se indica que cada archivo está * local. * * @throws ADMINExcepcion Si error. * @throws OIExcepcion Si error. */ protected void ubicaArchivos() throws OIExcepcion, ADMINGLOExcepcion { int i = 0, idx = 0; String cNombreArchivo, cNombreComprimido, cBloque; tdutils.SplitInfo[] acBloques; PERSCoordinacion.Archivos archivoI, archivoII = null; File fArchivo = null; Iterator itr; Map mpArchivosACargar = new TreeMap(String.CASE_INSENSITIVE_ORDER); mpArchivosACargar.putAll(mpArchivos); mpArchivos.clear(); itr = mpArchivosACargar.values().iterator(); while (itr.hasNext()) { archivoI = (PERSCoordinacion.Archivos) itr.next(); cNombreArchivo = archivoI.getRutaOriginal(); fArchivo = new File(cNombreArchivo); // el archivo o directorio sí existe // se comprime en directorio de comprimidos cNombreComprimido = tarea.getComprimidosDir() + "/" + archivoI.getNombre(); try { Zip.zipFile(cNombreComprimido, cNombreArchivo); } catch (IOException ex) { throw new ADMINGLOExcepcion("No se pudo comprimir archivo.", ex); } archivoII = new PERSCoordinacion.Archivos(this.info); archivoII.setNombre(archivoI.getNombre()); archivoII.setInfoArchivo(archivoI.getInfoArchivo()); archivoII.setSiLocal(false); archivoII.setEstadoArchivo(ADMINAPPIArchivos.ARCHIVO_PRESENTE); // prepara lista de archivos a exportar mpArchivos.put(archivoII.getNombre(), archivoII); } }
@Test public void testZippingASingleFileWillThrowIfInputIsNotAFile() throws IOException { try { zip.zipFile(inputDir.getParentFile(), inputDir); fail("Should have failed"); } catch (IllegalArgumentException ignored) { } }
@Test public void testCanZipASingleFile() throws IOException { File input = new File(inputDir, "foo.txt"); File unwanted = new File(inputDir, "nay.txt"); touch(input); touch(unwanted); String zipped = zip.zipFile(inputDir, input); zip.unzip(zipped, outputDir); File unzipped = new File(outputDir, "foo.txt"); File notThere = new File(outputDir, "nay.txt"); assertTrue(unzipped.exists()); assertFalse(notThere.exists()); }