Esempio n. 1
0
  public void testCopyRecursively() throws Exception {
    POIFSFileSystem fsD = new POIFSFileSystem();
    POIFSFileSystem fs = new POIFSFileSystem();
    DirectoryEntry dirA = fs.createDirectory("DirA");
    DirectoryEntry dirB = fs.createDirectory("DirB");

    DocumentEntry entryR = fs.createDocument(new ByteArrayInputStream(dataSmallA), "EntryRoot");
    DocumentEntry entryA1 = dirA.createDocument("EntryA1", new ByteArrayInputStream(dataSmallA));
    DocumentEntry entryA2 = dirA.createDocument("EntryA2", new ByteArrayInputStream(dataSmallB));

    // Copy docs
    assertEquals(0, fsD.getRoot().getEntryCount());
    EntryUtils.copyNodeRecursively(entryR, fsD.getRoot());

    assertEquals(1, fsD.getRoot().getEntryCount());
    assertNotNull(fsD.getRoot().getEntry("EntryRoot"));

    EntryUtils.copyNodeRecursively(entryA1, fsD.getRoot());
    assertEquals(2, fsD.getRoot().getEntryCount());
    assertNotNull(fsD.getRoot().getEntry("EntryRoot"));
    assertNotNull(fsD.getRoot().getEntry("EntryA1"));

    EntryUtils.copyNodeRecursively(entryA2, fsD.getRoot());
    assertEquals(3, fsD.getRoot().getEntryCount());
    assertNotNull(fsD.getRoot().getEntry("EntryRoot"));
    assertNotNull(fsD.getRoot().getEntry("EntryA1"));
    assertNotNull(fsD.getRoot().getEntry("EntryA2"));

    // Copy directories
    fsD = new POIFSFileSystem();
    assertEquals(0, fsD.getRoot().getEntryCount());

    EntryUtils.copyNodeRecursively(dirB, fsD.getRoot());
    assertEquals(1, fsD.getRoot().getEntryCount());
    assertNotNull(fsD.getRoot().getEntry("DirB"));
    assertEquals(0, ((DirectoryEntry) fsD.getRoot().getEntry("DirB")).getEntryCount());

    EntryUtils.copyNodeRecursively(dirA, fsD.getRoot());
    assertEquals(2, fsD.getRoot().getEntryCount());
    assertNotNull(fsD.getRoot().getEntry("DirB"));
    assertEquals(0, ((DirectoryEntry) fsD.getRoot().getEntry("DirB")).getEntryCount());
    assertNotNull(fsD.getRoot().getEntry("DirA"));
    assertEquals(2, ((DirectoryEntry) fsD.getRoot().getEntry("DirA")).getEntryCount());

    // Copy the whole lot
    fsD = new POIFSFileSystem();
    assertEquals(0, fsD.getRoot().getEntryCount());

    EntryUtils.copyNodes(fs, fsD, new ArrayList<String>());
    assertEquals(3, fsD.getRoot().getEntryCount());
    assertNotNull(fsD.getRoot().getEntry(dirA.getName()));
    assertNotNull(fsD.getRoot().getEntry(dirB.getName()));
    assertNotNull(fsD.getRoot().getEntry(entryR.getName()));
    assertEquals(0, ((DirectoryEntry) fsD.getRoot().getEntry("DirB")).getEntryCount());
    assertEquals(2, ((DirectoryEntry) fsD.getRoot().getEntry("DirA")).getEntryCount());
  }