Skip to content

Commit

Permalink
Add getWeight method to Extractor interface and update ExtractorFacto…
Browse files Browse the repository at this point in the history
…ry to prioritize by weight
  • Loading branch information
marevol committed Jun 18, 2024
1 parent ee1d586 commit 6786404
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -28,4 +28,8 @@ public interface Extractor {

ExtractData getText(InputStream in, Map<String, String> params);

default int getWeight() {
return 1;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,15 @@ public void addExtractor(final String key, final Extractor extractor) {
if (extractor == null) {
throw new CrawlerSystemException("The extractor is null.");
}
if (extractorMap.containsKey(key)) {
final Extractor oldExtractor = extractorMap.get(key);
if (oldExtractor.getWeight() > extractor.getWeight()) {
if (logger.isDebugEnabled()) {
logger.debug("Ignored {} on {}. Use {}.", extractor.getClass().getName(), key, oldExtractor.getClass().getName());
}
return;
}
}
extractorMap.put(key, extractor);
if (logger.isDebugEnabled()) {
logger.debug("Loaded {} : {}", key, extractor.getClass().getName());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -123,4 +123,40 @@ public void test_builder() {
assertEquals("test",
extractorFactory.builder(new ByteArrayInputStream("test".getBytes()), null).filename("test.txt").extract().getContent());
}

public void test_addExtractor_weight() {
final String key = "application/test";
assertNull(extractorFactory.getExtractor(key));
extractorFactory.addExtractor(key, new Extractor() {
@Override
public ExtractData getText(InputStream in, Map<String, String> params) {
return null;
}
});
assertEquals(1, extractorFactory.getExtractor(key).getWeight());
extractorFactory.addExtractor(key, new Extractor() {
@Override
public ExtractData getText(InputStream in, Map<String, String> params) {
return null;
}

@Override
public int getWeight() {
return 10;
}
});
assertEquals(10, extractorFactory.getExtractor(key).getWeight());
extractorFactory.addExtractor(key, new Extractor() {
@Override
public ExtractData getText(InputStream in, Map<String, String> params) {
return null;
}

@Override
public int getWeight() {
return 5;
}
});
assertEquals(10, extractorFactory.getExtractor(key).getWeight());
}
}

0 comments on commit 6786404

Please sign in to comment.