package dk.statsbiblioteket.scape.tika; import org.apache.tika.detect.DefaultDetector; import org.apache.tika.io.TikaInputStream; import org.apache.tika.metadata.Metadata; import org.apache.tika.mime.MediaType; import java.io.*; import java.util.ArrayList; import java.util.Collections; import java.util.List; /** * Created by IntelliJ IDEA. * User: abr * Date: 12/16/11 * Time: 11:46 AM * To change this template use File | Settings | File Templates. */ public class SimpleWrapper { private DefaultDetector detector; public SimpleWrapper() { detector = new DefaultDetector(); } public Identity detect(File input) throws IOException { long before = System.currentTimeMillis(); Metadata metadata = new Metadata(); metadata.set(Metadata.RESOURCE_NAME_KEY,input.getName()); TikaInputStream stream = TikaInputStream.get(input,metadata); MediaType mediaType = detector.detect(stream, metadata); stream.close(); String mime = mediaType.toString().intern(); long duration = System.currentTimeMillis() - before; return new Identity(input,mime,duration); } public static void main(String... args) throws Exception { String govDocsData = null; if (args.length == 1) { govDocsData = args[0]; } SimpleWrapper sw = new SimpleWrapper(); sw.identify(govDocsData); } public List<Identity> identify(String govDocsData) throws Exception { List<File> datafiles = getFiles(new File(govDocsData)); return identify(datafiles); } public List<Identity> identify(List<File> datafiles) throws Exception { List<Identity> identities = new ArrayList<Identity>(); SimpleWrapper sw = new SimpleWrapper(); for (File file : datafiles) { if (!file.isFile()){ continue; } Identity detection = sw.detect(file); identities.add(detection); System.out.println(file.getAbsolutePath()+":"+detection.getMime()); } return identities; } private static List<File> getFiles(File dir){ List<File> result = new ArrayList<File>(); if (!dir.isDirectory()){ result.add(dir); return result; } File[] files = dir.listFiles(); for (File file : files) { result.addAll(getFiles(file)); } Collections.sort(result); return result; } }