/**
  * Fill simple reports in during compassion ZIP file.
  *
  * @param reportZip1 the report of the first ZIP file
  * @param infoZip1 the ZipInputStream of the first ZIP file
  * @param reportZip2 the report of the second ZIP file
  * @param infoZip2 the ZipInputStream of the second ZIP file
  */
 private static void compareDirectoryInfo(
     FileReport reportZip1,
     DirectoryInfo infoZip1,
     FileReport reportZip2,
     DirectoryInfo infoZip2) {
   for (FileInfo info : infoZip1) {
     FileState state = infoZip2.compareToObject(info);
     FileInfo info2 = infoZip2.getComparedObject();
     switch (state) {
       case CHANGED:
         reportZip1.fileChanged(info.name);
         reportZip2.fileChanged(info2.name);
         infoZip2.remove(info2);
         break;
       case RENAMED:
         reportZip1.fileRenamed(info.name);
         reportZip2.fileRenamed(info2.name);
         infoZip2.remove(info2);
         break;
       case NOT_EQUALS:
         reportZip1.fileRemoved(info.name);
         reportZip2.addMessage(" ");
         break;
       case EQUALS:
         infoZip2.remove(info2);
     }
   }
   for (FileInfo info : infoZip2) {
     reportZip2.fileAdd(info.name);
     reportZip1.addMessage(" ");
   }
 }
 /**
  * Finds all information files are in ZIP file
  *
  * @param zip is open ZipInputStream
  * @return collection FileInfo files
  * @throws IOException if zip stream isn't opened
  */
 public static DirectoryInfo getContentsZip(ZipFile zip) throws IOException {
   DirectoryInfo directoryInfo = new DirectoryInfo();
   Enumeration<? extends ZipEntry> entryEnumeration = zip.entries();
   for (ZipEntry zipEntry; entryEnumeration.hasMoreElements(); ) {
     zipEntry = entryEnumeration.nextElement();
     directoryInfo.add(new ZipFileInfo(zipEntry));
   }
   return directoryInfo;
 }