Skip to content

Commit fc1b249

Browse files
authored
Refactor to use loader per library (#384)
1 parent a4c45c8 commit fc1b249

File tree

9 files changed

+74
-223
lines changed

9 files changed

+74
-223
lines changed

app/src/main/java/at/tomtasche/reader/background/FileLoader.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,9 @@
1818
public abstract class FileLoader {
1919

2020
public enum LoaderType {
21-
ODF,
22-
DOC,
23-
OOXML,
24-
PDF,
21+
CORE,
22+
WVWARE,
23+
PDF2HTMLEX,
2524
ONLINE,
2625
RAW,
2726
METADATA

app/src/main/java/at/tomtasche/reader/background/LoaderService.java

Lines changed: 30 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,9 @@ public class LoaderService extends Service implements FileLoader.FileLoaderListe
3434
private AnalyticsManager analyticsManager;
3535

3636
private MetadataLoader metadataLoader;
37-
private OdfLoader odfLoader;
38-
private PdfLoader pdfLoader;
39-
private OoxmlLoader ooxmlLoader;
40-
private DocLoader docLoader;
37+
private OdrCoreLoader odrCoreLoader;
38+
private Pdf2htmlExLoader pdf2htmlExLoader;
39+
private WvwareDocLoader wvwareDocLoader;
4140
private RawLoader rawLoader;
4241
private OnlineLoader onlineLoader;
4342

@@ -61,22 +60,19 @@ public synchronized void onCreate() {
6160
metadataLoader = new MetadataLoader(context);
6261
metadataLoader.initialize(this, mainHandler, backgroundHandler, analyticsManager, crashManager);
6362

64-
odfLoader = new OdfLoader(context, configManager);
65-
odfLoader.initialize(this, mainHandler, backgroundHandler, analyticsManager, crashManager);
63+
odrCoreLoader = new OdrCoreLoader(context, configManager, true);
64+
odrCoreLoader.initialize(this, mainHandler, backgroundHandler, analyticsManager, crashManager);
6665

67-
pdfLoader = new PdfLoader(context);
68-
pdfLoader.initialize(this, mainHandler, backgroundHandler, analyticsManager, crashManager);
66+
pdf2htmlExLoader = new Pdf2htmlExLoader(context);
67+
pdf2htmlExLoader.initialize(this, mainHandler, backgroundHandler, analyticsManager, crashManager);
6968

70-
ooxmlLoader = new OoxmlLoader(context);
71-
ooxmlLoader.initialize(this, mainHandler, backgroundHandler, analyticsManager, crashManager);
72-
73-
docLoader = new DocLoader(context);
74-
docLoader.initialize(this, mainHandler, backgroundHandler, analyticsManager, crashManager);
69+
wvwareDocLoader = new WvwareDocLoader(context);
70+
wvwareDocLoader.initialize(this, mainHandler, backgroundHandler, analyticsManager, crashManager);
7571

7672
rawLoader = new RawLoader(context);
7773
rawLoader.initialize(this, mainHandler, backgroundHandler, analyticsManager, crashManager);
7874

79-
onlineLoader = new OnlineLoader(context, odfLoader);
75+
onlineLoader = new OnlineLoader(context, odrCoreLoader);
8076
onlineLoader.initialize(this, mainHandler, backgroundHandler, analyticsManager, crashManager);
8177
}
8278

@@ -121,17 +117,14 @@ private void logMissingListener() {
121117
public synchronized void loadWithType(FileLoader.LoaderType loaderType, FileLoader.Options options) {
122118
FileLoader loader;
123119
switch (loaderType) {
124-
case ODF:
125-
loader = odfLoader;
126-
break;
127-
case DOC:
128-
loader = docLoader;
120+
case CORE:
121+
loader = odrCoreLoader;
129122
break;
130-
case OOXML:
131-
loader = ooxmlLoader;
123+
case WVWARE:
124+
loader = wvwareDocLoader;
132125
break;
133-
case PDF:
134-
loader = pdfLoader;
126+
case PDF2HTMLEX:
127+
loader = pdf2htmlExLoader;
135128
break;
136129
case ONLINE:
137130
loader = onlineLoader;
@@ -153,12 +146,12 @@ public synchronized void loadWithType(FileLoader.LoaderType loaderType, FileLoad
153146
public void onSuccess(FileLoader.Result result) {
154147
FileLoader.Options options = result.options;
155148
if (result.loaderType == FileLoader.LoaderType.METADATA) {
156-
if (!odfLoader.isSupported(options)) {
149+
if (!odrCoreLoader.isSupported(options)) {
157150
crashManager.log("we do not expect this file to be an ODF: " + options.originalUri.toString());
158151
analyticsManager.report("load_odf_error_expected", FirebaseAnalytics.Param.CONTENT_TYPE, options.fileType);
159152
}
160153

161-
loadWithType(FileLoader.LoaderType.ODF, options);
154+
loadWithType(FileLoader.LoaderType.CORE, options);
162155
} else {
163156
analyticsManager.report("load_success", FirebaseAnalytics.Param.CONTENT_TYPE, options.fileType, FirebaseAnalytics.Param.CONTENT, result.loaderType.toString());
164157

@@ -187,15 +180,13 @@ public void onError(FileLoader.Result result, Throwable error) {
187180
return;
188181
}
189182

190-
if (result.loaderType == FileLoader.LoaderType.ODF) {
183+
if (result.loaderType == FileLoader.LoaderType.CORE) {
191184
analyticsManager.report("load_odf_error", FirebaseAnalytics.Param.CONTENT_TYPE, options.fileType);
192185

193-
if (pdfLoader.isSupported(options)) {
194-
loadWithType(FileLoader.LoaderType.PDF, options);
195-
} else if (ooxmlLoader.isSupported(options)) {
196-
loadWithType(FileLoader.LoaderType.OOXML, options);
197-
} else if (docLoader.isSupported(options)) {
198-
loadWithType(FileLoader.LoaderType.DOC, options);
186+
if (pdf2htmlExLoader.isSupported(options)) {
187+
loadWithType(FileLoader.LoaderType.PDF2HTMLEX, options);
188+
} else if (wvwareDocLoader.isSupported(options)) {
189+
loadWithType(FileLoader.LoaderType.WVWARE, options);
199190
} else if (rawLoader.isSupported(options)) {
200191
loadWithType(FileLoader.LoaderType.RAW, options);
201192
} else {
@@ -240,7 +231,7 @@ private void saveSync(FileLoader.Result lastResult, Uri outFile, String htmlDiff
240231
try {
241232
File fileToSave;
242233
if (htmlDiff != null) {
243-
fileToSave = odfLoader.retranslate(lastResult.options, htmlDiff);
234+
fileToSave = odrCoreLoader.retranslate(lastResult.options, htmlDiff);
244235
if (fileToSave == null) {
245236
throw new RuntimeException("retranslate failed");
246237
}
@@ -282,20 +273,16 @@ public void onDestroy() {
282273
metadataLoader.close();
283274
}
284275

285-
if (odfLoader != null) {
286-
odfLoader.close();
287-
}
288-
289-
if (pdfLoader != null) {
290-
pdfLoader.close();
276+
if (odrCoreLoader != null) {
277+
odrCoreLoader.close();
291278
}
292279

293-
if (ooxmlLoader != null) {
294-
ooxmlLoader.close();
280+
if (pdf2htmlExLoader != null) {
281+
pdf2htmlExLoader.close();
295282
}
296283

297-
if (docLoader != null) {
298-
docLoader.close();
284+
if (wvwareDocLoader != null) {
285+
wvwareDocLoader.close();
299286
}
300287

301288
if (rawLoader != null) {

app/src/main/java/at/tomtasche/reader/background/OdfLoader.java renamed to app/src/main/java/at/tomtasche/reader/background/OdrCoreLoader.java

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,22 +8,33 @@
88

99
import at.tomtasche.reader.nonfree.ConfigManager;
1010

11-
public class OdfLoader extends FileLoader {
11+
public class OdrCoreLoader extends FileLoader {
1212

1313
private final ConfigManager configManager;
1414

1515
private CoreWrapper lastCore;
1616
private CoreWrapper.CoreOptions lastCoreOptions;
1717

18-
public OdfLoader(Context context, ConfigManager configManager) {
19-
super(context, LoaderType.ODF);
18+
private final boolean doOoxml;
19+
20+
public OdrCoreLoader(Context context, ConfigManager configManager, boolean doOOXML) {
21+
super(context, LoaderType.CORE);
2022

2123
this.configManager = configManager;
24+
this.doOoxml = doOOXML;
2225
}
2326

2427
@Override
2528
public boolean isSupported(Options options) {
26-
return options.fileType.startsWith("application/vnd.oasis.opendocument") || options.fileType.startsWith("application/x-vnd.oasis.opendocument") || options.fileType.startsWith("application/vnd.oasis.opendocument.text-master");
29+
return options.fileType.startsWith("application/vnd.oasis.opendocument") ||
30+
options.fileType.startsWith("application/x-vnd.oasis.opendocument") ||
31+
options.fileType.startsWith("application/vnd.oasis.opendocument.text-master") ||
32+
(this.doOoxml && (
33+
options.fileType.startsWith("application/vnd.openxmlformats-officedocument.wordprocessingml.document")
34+
// TODO: enable xlsx and pptx too
35+
//options.fileType.startsWith("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") ||
36+
//options.fileType.startsWith("application/vnd.openxmlformats-officedocument.spreadsheetml.presentation");
37+
));
2738
}
2839

2940
@Override
@@ -69,7 +80,9 @@ private void translate(Options options, Result result) throws Exception {
6980
coreOptions.outputPath = cacheDirectory.getPath();
7081
coreOptions.password = options.password;
7182
coreOptions.editable = options.translatable;
72-
coreOptions.ooxml = false;
83+
coreOptions.ooxml = doOoxml;
84+
coreOptions.txt = false;
85+
coreOptions.pdf = false;
7386

7487
Boolean usePaging = configManager.getBooleanConfig("use_paging");
7588
if (usePaging == null || usePaging) {

app/src/main/java/at/tomtasche/reader/background/OnlineLoader.java

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,13 @@
2323
import java.io.PrintWriter;
2424
import java.io.UnsupportedEncodingException;
2525
import java.net.HttpURLConnection;
26-
import java.net.MalformedURLException;
2726
import java.net.URL;
28-
import java.net.URLConnection;
2927
import java.net.URLEncoder;
3028
import java.nio.file.Files;
3129
import java.util.UUID;
3230
import java.util.concurrent.ExecutionException;
3331

3432
import at.tomtasche.reader.nonfree.AnalyticsManager;
35-
import at.tomtasche.reader.nonfree.ConfigManager;
3633
import at.tomtasche.reader.nonfree.CrashManager;
3734

3835
public class OnlineLoader extends FileLoader {
@@ -77,14 +74,14 @@ public class OnlineLoader extends FileLoader {
7774
public static final String GOOGLE_VIEWER_URL = "https://docs.google.com/viewer?embedded=true&url=";
7875
public static final String MICROSOFT_VIEWER_URL = "https://view.officeapps.live.com/op/view.aspx?src=";
7976

80-
private final OdfLoader odfLoader;
77+
private final OdrCoreLoader odrCoreLoader;
8178

8279
private StorageReference storage;
8380
private FirebaseAuth auth;
8481

85-
public OnlineLoader(Context context, OdfLoader odfLoader) {
82+
public OnlineLoader(Context context, OdrCoreLoader odrCoreLoader) {
8683
super(context, LoaderType.ONLINE);
87-
this.odfLoader = odfLoader;
84+
this.odrCoreLoader = odrCoreLoader;
8885
}
8986

9087
@Override
@@ -129,7 +126,7 @@ public void loadSync(Options options) {
129126
try {
130127
Uri viewerUri;
131128
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O &&
132-
("text/rtf".equals(options.fileType) || "application/vnd.wordperfect".equals(options.fileType) || odfLoader.isSupported(options) || "application/vnd.ms-excel".equals(options.fileType) || "application/msword".equals(options.fileType) || "application/vnd.ms-powerpoint".equals(options.fileType) || options.fileType.startsWith("application/vnd.openxmlformats-officedocument.") || options.fileType.equals("application/pdf"))) {
129+
("text/rtf".equals(options.fileType) || "application/vnd.wordperfect".equals(options.fileType) || odrCoreLoader.isSupported(options) || "application/vnd.ms-excel".equals(options.fileType) || "application/msword".equals(options.fileType) || "application/vnd.ms-powerpoint".equals(options.fileType) || options.fileType.startsWith("application/vnd.openxmlformats-officedocument.") || options.fileType.equals("application/pdf"))) {
133130
viewerUri = doOnlineConvert(options);
134131
} else {
135132
viewerUri = doFirebaseConvert(options);
@@ -209,7 +206,7 @@ private Uri doFirebaseConvert(Options options) throws ExecutionException, Interr
209206

210207
if (uploadTask.isSuccessful()) {
211208
Uri viewerUri;
212-
if (odfLoader.isSupported(options)) {
209+
if (odrCoreLoader.isSupported(options)) {
213210
// ODF does not seem to be supported by google docs viewer
214211
String downloadUrl = "https://us-central1-admob-app-id-9025061963.cloudfunctions.net/download?filePath=" + filePath;
215212

app/src/main/java/at/tomtasche/reader/background/OoxmlLoader.java

Lines changed: 0 additions & 141 deletions
This file was deleted.

0 commit comments

Comments
 (0)