Skip to content

Commit 07577d7

Browse files
committed
Refactoring based on code review feedback.
1 parent 6d77243 commit 07577d7

File tree

2 files changed

+13
-17
lines changed

2 files changed

+13
-17
lines changed

app/src/main/java/fr/free/nrw/commons/MediaDataExtractor.java

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import java.util.regex.Matcher;
1717
import java.util.regex.Pattern;
1818

19+
import javax.inject.Inject;
1920
import javax.xml.parsers.DocumentBuilder;
2021
import javax.xml.parsers.DocumentBuilderFactory;
2122
import javax.xml.parsers.ParserConfigurationException;
@@ -34,34 +35,26 @@
3435
public class MediaDataExtractor {
3536
private final MediaWikiApi mediaWikiApi;
3637
private boolean fetched;
37-
38-
private String filename;
3938
private ArrayList<String> categories;
4039
private Map<String, String> descriptions;
4140
private String license;
4241
private @Nullable LatLng coordinates;
43-
private LicenseList licenseList;
4442

45-
/**
46-
* @param mwApi instance of MediaWikiApi
47-
* @param filename of the target media object, should include 'File:' prefix
48-
*/
49-
public MediaDataExtractor(String filename, LicenseList licenseList, MediaWikiApi mwApi) {
50-
this.filename = filename;
43+
@Inject
44+
public MediaDataExtractor(MediaWikiApi mwApi) {
5145
this.categories = new ArrayList<>();
5246
this.descriptions = new HashMap<>();
5347
this.fetched = false;
54-
this.licenseList = licenseList;
5548
this.mediaWikiApi = mwApi;
5649
}
5750

58-
/**
51+
/*
5952
* Actually fetch the data over the network.
6053
* todo: use local caching?
6154
*
6255
* Warning: synchronous i/o, call on a background thread
6356
*/
64-
public void fetch() throws IOException {
57+
public void fetch(String filename, LicenseList licenseList) throws IOException {
6558
if (fetched) {
6659
throw new IllegalStateException("Tried to call MediaDataExtractor.fetch() again.");
6760
}
@@ -72,7 +65,7 @@ public void fetch() throws IOException {
7265
extractCategories(result.getWikiSource());
7366

7467
// Description template info is extracted from preprocessor XML
75-
processWikiParseTree(result.getParseTreeXmlSource());
68+
processWikiParseTree(result.getParseTreeXmlSource(), licenseList);
7669
fetched = true;
7770
}
7871

@@ -91,7 +84,7 @@ private void extractCategories(String source) {
9184
}
9285
}
9386

94-
private void processWikiParseTree(String source) throws IOException {
87+
private void processWikiParseTree(String source, LicenseList licenseList) throws IOException {
9588
Document doc;
9689
try {
9790
DocumentBuilder docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();

app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import java.util.Locale;
2323

2424
import javax.inject.Inject;
25+
import javax.inject.Provider;
2526

2627
import dagger.android.support.DaggerFragment;
2728
import fr.free.nrw.commons.License;
@@ -56,7 +57,9 @@ public static MediaDetailFragment forMedia(int index, boolean editable) {
5657
return mf;
5758
}
5859

59-
@Inject MediaWikiApi mwApi;
60+
@Inject
61+
Provider<MediaDataExtractor> mediaDataExtractorProvider;
62+
6063
private MediaWikiImageView image;
6164
private MediaDetailSpacer spacer;
6265
private int initialListTop = 0;
@@ -192,13 +195,13 @@ private void displayMediaDetails(final Media media) {
192195

193196
@Override
194197
protected void onPreExecute() {
195-
extractor = new MediaDataExtractor(media.getFilename(), licenseList, mwApi);
198+
extractor = mediaDataExtractorProvider.get();
196199
}
197200

198201
@Override
199202
protected Boolean doInBackground(Void... voids) {
200203
try {
201-
extractor.fetch();
204+
extractor.fetch(media.getFilename(), licenseList);
202205
return Boolean.TRUE;
203206
} catch (IOException e) {
204207
Timber.d(e);

0 commit comments

Comments
 (0)