package org.emile.cirilo;
import java.util.*;
import java.util.zip.*;
import java.io.*;
public class JARValidator {
static ArrayList<String> files = new ArrayList<String>();
private static JARValidator instance;
private static FileWriter out;
public static JARValidator getInstance ()
{
if (instance == null) {
instance = new JARValidator ();
}
return instance;
}
public static void main (String args[])
{
JARValidator q = JARValidator.getInstance();
System.out.println("Validator 1.0 (C) 2016 by JS");
if (args.length != 1) {
System.out.println("usage: Validator <dir>");
} else {
q.validate(args[0]);
System.out.println("Terminated normally");
}
}
private void validate(String dir) {
treewalk(new File(dir));
try {
out = new FileWriter(new File("/Users/yoda/listing.txt"));
} catch (Exception e) {}
ZipEntry entry = null;
for (int i = 0; i< files.size(); i++) {
try {
out.write("\n\n------ "+files.get(i));
ZipFile file = new ZipFile(new File(files.get(i)));
Enumeration<? extends ZipEntry> e = file.entries();
while(e.hasMoreElements()) {
try {
entry = e.nextElement();
out.write("OK "+entry.getName()+"\n");
} catch(Exception q) {
out.write("CORRUPT "+entry.getName()+"\n");
}
}
file.close();
} catch(Exception ex) {
try {
out.write(ex.getMessage());
} catch (Exception x) {}
}
}
}
private static void treewalk(File file) {
try {
if (file.isDirectory()) {
File[] children = file.listFiles();
for (int i = 0; i < children.length; i++) {
treewalk(children[i]);
}
} else if (file.getAbsolutePath().toLowerCase().endsWith(".jar")) {
files.add(file.getAbsolutePath());
}
} catch (Exception e) {}
}
}