package org.androiddaisyreader.testapps; import static org.androiddaisyreader.model.XmlUtilities.obtainEncodingStringFromInputStream; import java.io.File; import java.io.IOException; import java.io.InputStream; import org.androiddaisyreader.model.BookContext; import org.androiddaisyreader.model.DaisyBook; import org.androiddaisyreader.model.FileSystemContext; import org.androiddaisyreader.model.Navigator; import org.androiddaisyreader.model.NccSpecification; import org.androiddaisyreader.model.Section; import org.androiddaisyreader.model.ZippedBookContext; public class ProcessDaisy202Book { private static InputStream contents; private static String encoding; /** * @param args */ public static void main(String[] args) throws IOException { if (args.length == 0) { CommandLineUtilities.printUsage("ProcessDaisy202Book"); System.exit(1); } StringBuilder filenameBuilder = new StringBuilder(); // To help cope with spaces in the filename e.g. on my windows machine. for (int i = 0; i < args.length; i++) { filenameBuilder.append(args[i]); } String filename = filenameBuilder.toString(); BookContext bookContext = openBook(filename); contents = bookContext.getResource("ncc.html"); encoding = obtainEncodingStringFromInputStream(contents); DaisyBook book = NccSpecification.readFromStream(contents); System.out.println("Book: " + book.getTitle() + ", encoding: " + encoding); Navigator navigator = new Navigator(book); while (navigator.hasNext()) { Section section = (Section) navigator.next(); System.out.println(section.getLevel() + " " + section.getTitle()); } System.exit(0); } private static BookContext openBook(String filename) throws IOException { BookContext bookContext; if (filename.endsWith(".zip")) { bookContext = new ZippedBookContext(filename); } else { File directory = new File(filename); bookContext = new FileSystemContext(directory.getParent()); directory = null; } return bookContext; } }