Skip to content

Commit a51ad45

Browse files
authored
Merge #687 from branch metafacture/686-findFixValuesUniq
Enforce unique result in list-fix-paths
2 parents c062322 + f5b49fb commit a51ad45

File tree

2 files changed

+18
-2
lines changed

2 files changed

+18
-2
lines changed

metafix/src/main/java/org/metafacture/metafix/FindFixPaths.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,12 @@
2525
import org.metafacture.framework.annotations.In;
2626
import org.metafacture.framework.annotations.Out;
2727
import org.metafacture.framework.helpers.DefaultStreamPipe;
28+
import org.metafacture.mangling.DuplicateObjectFilter;
2829
import org.metafacture.mangling.StreamFlattener;
30+
import org.metafacture.triples.AbstractTripleSort.Compare;
2931
import org.metafacture.triples.StreamToTriples;
3032
import org.metafacture.triples.TripleFilter;
33+
import org.metafacture.triples.TripleSort;
3134

3235
import java.io.IOException;
3336

@@ -37,7 +40,7 @@
3740
*
3841
* @author Tobias Bülte
3942
*/
40-
@Description("Finds all paths that have values that match the given pattern. Allows for regex. These paths can be used in a Fix to address fields.")
43+
@Description("Finds all paths that have values that match the given pattern. Allows for regex. These paths can be used in a Fix to address fields.") // checkstyle-disable-line ClassDataAbstractionCoupling
4144
@In(StreamReceiver.class)
4245
@Out(String.class)
4346
@FluxCommand("find-fix-paths")
@@ -67,11 +70,15 @@ public FindFixPaths(final String objectPattern) {
6770
protected void onSetReceiver() {
6871
final TripleFilter tripleFilter = new TripleFilter();
6972
tripleFilter.setObjectPattern(objectPattern);
73+
final TripleSort tripleSort = new TripleSort();
74+
tripleSort.setBy(Compare.PREDICATE);
7075
fix
7176
.setReceiver(new StreamFlattener())
7277
.setReceiver(new StreamToTriples())
7378
.setReceiver(tripleFilter)
79+
.setReceiver(tripleSort)
7480
.setReceiver(new ObjectTemplate<>("${p}\t|\t${o}"))
81+
.setReceiver(new DuplicateObjectFilter<>())
7582
.setReceiver(getReceiver());
7683
}
7784

metafix/src/test/java/org/metafacture/metafix/FindFixPathsTest.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,19 +47,28 @@ public FindFixPathsTest() {
4747
public void testShouldFindPaths() {
4848
verify(
4949
"a\t|\tAn ETL test",
50+
"a\t|\tAnother ETL test",
5051
"c.2\t|\tETL what?");
5152
}
5253

5354
private void processRecord() {
5455
finder.setReceiver(receiver);
55-
finder.startRecord("");
56+
finder.startRecord("1");
5657
finder.literal("a", "An ETL test");
5758
finder.literal("b", "");
5859
finder.literal("b", "Dummi");
5960
finder.literal("b", "Dog");
6061
finder.literal("c", "");
6162
finder.literal("c", "ETL what?");
6263
finder.endRecord();
64+
finder.startRecord("2");
65+
finder.literal("a", "Another ETL test");
66+
finder.literal("b", "");
67+
finder.literal("b", "Dummi");
68+
finder.literal("b", "Dog");
69+
finder.literal("c", "");
70+
finder.literal("c", "ETL what?");
71+
finder.endRecord();
6372
finder.closeStream();
6473
}
6574

0 commit comments

Comments
 (0)