Added Android code
[wl-app.git] / Android / r2-streamer / r2-parser / src / main / java / org / readium / r2_streamer / model / container / DirectoryContainer.java
1 package org.readium.r2_streamer.model.container;
2
3 import java.io.BufferedReader;
4 import java.io.File;
5 import java.io.FileInputStream;
6 import java.io.IOException;
7 import java.io.InputStream;
8 import java.io.InputStreamReader;
9 import java.util.List;
10 import java.util.concurrent.Callable;
11 import java.util.concurrent.ExecutionException;
12 import java.util.concurrent.ExecutorService;
13 import java.util.concurrent.Executors;
14 import java.util.concurrent.Future;
15
16 /**
17  * Created by Shrikant Badwaik on 24-Jan-17.
18  */
19
20 public class DirectoryContainer implements Container {
21     private final String TAG = "DirectoryContainer ";
22     private String rootPath;
23
24     public DirectoryContainer(String rootPath) {
25         this.rootPath = rootPath;
26         File epubDirectoryFile = new File(rootPath);
27         if (!epubDirectoryFile.exists()) {
28             System.out.println(TAG + " No such directory exists at path: " + epubDirectoryFile);
29         }
30     }
31
32     @Override
33     public String rawData(String relativePath) throws NullPointerException {
34         String filePath = rootPath.concat(relativePath);
35         File epubFile = new File(filePath);
36
37         if (epubFile.exists()) {
38             System.out.println(TAG + relativePath + " File exists at given path");
39
40             try {
41                 InputStream is = new FileInputStream(epubFile);
42                 BufferedReader br = new BufferedReader(new InputStreamReader(is));
43                 StringBuilder sb = new StringBuilder();
44                 String line;
45
46                 while ((line = br.readLine()) != null) {
47                     sb.append(line);        //.append('\n');
48                 }
49
50                 return sb.toString();
51             } catch (IOException e) {
52                 e.printStackTrace();
53             }
54         } else if (!epubFile.exists()) {
55             System.out.println(TAG + " No such file exists at given path: " + relativePath);
56         }
57         return null;
58     }
59
60     @Override
61     public int rawDataSize(String relativePath) {
62         String filePath = rootPath.concat(relativePath);
63         File epubFile = new File(filePath);
64         return ((int) epubFile.length());
65     }
66
67     @Override
68     public List<String> listFiles() {
69         return null;
70     }
71
72     @Override
73     public InputStream rawDataInputStream(final String relativePath) throws NullPointerException {
74         try {
75             /*String filePath = rootPath.concat(relativePath);
76             File directoryFile = new File(filePath);
77             InputStream inputStream = new FileInputStream(directoryFile);
78             return inputStream;*/
79
80             Callable<InputStream> callable = new Callable<InputStream>() {
81                 @Override
82                 public InputStream call() throws Exception {
83                     String filePath = rootPath.concat(relativePath);
84                     File directoryFile = new File(filePath);
85                     return new FileInputStream(directoryFile);
86                 }
87             };
88             ExecutorService executorService = Executors.newCachedThreadPool();
89             Future<InputStream> future = executorService.submit(callable);
90             return future.get();
91         } catch (InterruptedException | ExecutionException e) {
92             e.printStackTrace();
93         }
94         return null;
95     }
96 }