X-Git-Url: https://git.mdrn.pl/wl-app.git/blobdiff_plain/48b2fe9f7c2dc3d9aeaaa6dbfb27c7da4f3235ff..269195b3729c1bdc22e9053ee4ebca667ea8549d:/Android/r2-streamer/r2-parser/src/main/java/org/readium/r2_streamer/model/container/DirectoryContainer.java diff --git a/Android/r2-streamer/r2-parser/src/main/java/org/readium/r2_streamer/model/container/DirectoryContainer.java b/Android/r2-streamer/r2-parser/src/main/java/org/readium/r2_streamer/model/container/DirectoryContainer.java new file mode 100755 index 0000000..0bf888e --- /dev/null +++ b/Android/r2-streamer/r2-parser/src/main/java/org/readium/r2_streamer/model/container/DirectoryContainer.java @@ -0,0 +1,96 @@ +package org.readium.r2_streamer.model.container; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.List; +import java.util.concurrent.Callable; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; + +/** + * Created by Shrikant Badwaik on 24-Jan-17. + */ + +public class DirectoryContainer implements Container { + private final String TAG = "DirectoryContainer "; + private String rootPath; + + public DirectoryContainer(String rootPath) { + this.rootPath = rootPath; + File epubDirectoryFile = new File(rootPath); + if (!epubDirectoryFile.exists()) { + System.out.println(TAG + " No such directory exists at path: " + epubDirectoryFile); + } + } + + @Override + public String rawData(String relativePath) throws NullPointerException { + String filePath = rootPath.concat(relativePath); + File epubFile = new File(filePath); + + if (epubFile.exists()) { + System.out.println(TAG + relativePath + " File exists at given path"); + + try { + InputStream is = new FileInputStream(epubFile); + BufferedReader br = new BufferedReader(new InputStreamReader(is)); + StringBuilder sb = new StringBuilder(); + String line; + + while ((line = br.readLine()) != null) { + sb.append(line); //.append('\n'); + } + + return sb.toString(); + } catch (IOException e) { + e.printStackTrace(); + } + } else if (!epubFile.exists()) { + System.out.println(TAG + " No such file exists at given path: " + relativePath); + } + return null; + } + + @Override + public int rawDataSize(String relativePath) { + String filePath = rootPath.concat(relativePath); + File epubFile = new File(filePath); + return ((int) epubFile.length()); + } + + @Override + public List listFiles() { + return null; + } + + @Override + public InputStream rawDataInputStream(final String relativePath) throws NullPointerException { + try { + /*String filePath = rootPath.concat(relativePath); + File directoryFile = new File(filePath); + InputStream inputStream = new FileInputStream(directoryFile); + return inputStream;*/ + + Callable callable = new Callable() { + @Override + public InputStream call() throws Exception { + String filePath = rootPath.concat(relativePath); + File directoryFile = new File(filePath); + return new FileInputStream(directoryFile); + } + }; + ExecutorService executorService = Executors.newCachedThreadPool(); + Future future = executorService.submit(callable); + return future.get(); + } catch (InterruptedException | ExecutionException e) { + e.printStackTrace(); + } + return null; + } +} \ No newline at end of file