Skip to content

Commit f906faf

Browse files
committed
Add count and index options to MetafixListPaths
See https://gitlab.com/oersi/oersi-etl/-/issues/238
1 parent 3d7b16a commit f906faf

File tree

2 files changed

+58
-4
lines changed

2 files changed

+58
-4
lines changed

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

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,13 @@
3535
public class MetafixListPaths extends DefaultStreamPipe<ObjectReceiver<String>> {
3636

3737
private Metafix fix;
38+
private boolean count = true;
39+
private boolean index;
3840

3941
public MetafixListPaths() {
4042
try {
4143
fix = new Metafix("nothing()");
4244
fix.setRepeatedFieldsToEntities(true);
43-
fix.setEntityMemberName("*");
4445
}
4546
catch (final FileNotFoundException e) {
4647
e.printStackTrace();
@@ -51,11 +52,14 @@ public MetafixListPaths() {
5152
protected void onSetReceiver() {
5253
final TripleCount tripleCount = new TripleCount();
5354
tripleCount.setCountBy(Compare.PREDICATE);
55+
if (!index) {
56+
fix.setEntityMemberName("*");
57+
}
5458
fix
5559
.setReceiver(new StreamFlattener())
5660
.setReceiver(new StreamToTriples())
5761
.setReceiver(tripleCount)
58-
.setReceiver(new ObjectTemplate<Triple>("${s}\t ${o}"))
62+
.setReceiver(new ObjectTemplate<Triple>(count ? "${s}\t ${o}" : "${s}"))
5963
.setReceiver(getReceiver());
6064
}
6165

@@ -93,4 +97,20 @@ protected void onCloseStream() {
9397
protected void onResetStream() {
9498
fix.resetStream();
9599
}
100+
101+
public void setCount(final boolean count) {
102+
this.count = count;
103+
}
104+
105+
public boolean getCount() {
106+
return this.count;
107+
}
108+
109+
public void setIndex(final boolean index) {
110+
this.index = index;
111+
}
112+
113+
public boolean getIndex() {
114+
return this.index;
115+
}
96116
}

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

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,19 +40,53 @@ public final class MetafixListPathsTest {
4040
public MetafixListPathsTest() {
4141
MockitoAnnotations.initMocks(this);
4242
lister = new MetafixListPaths();
43-
lister.setReceiver(receiver);
4443
}
4544

4645
@Test
4746
public void testShouldListPaths() {
47+
processRecord();
48+
verify("a.*\t 3");
49+
}
50+
51+
@Test
52+
public void testShouldListPathsNoCount() {
53+
lister.setCount(false);
54+
processRecord();
55+
verify("a.*");
56+
}
57+
58+
@Test
59+
public void testShouldListPathsUseIndex() {
60+
lister.setIndex(true);
61+
processRecord();
62+
verify("a.1\t 1");
63+
verify("a.2\t 1");
64+
verify("a.3\t 1");
65+
}
66+
67+
@Test
68+
public void testShouldListPathsNoCountUseIndex() {
69+
lister.setCount(false);
70+
lister.setIndex(true);
71+
processRecord();
72+
verify("a.1");
73+
verify("a.2");
74+
verify("a.3");
75+
}
76+
77+
private void processRecord() {
78+
lister.setReceiver(receiver);
4879
lister.startRecord("");
4980
lister.literal("a", "A");
5081
lister.literal("a", "B");
5182
lister.literal("a", "C");
5283
lister.endRecord();
5384
lister.closeStream();
85+
}
86+
87+
private void verify(final String result) throws MockitoAssertionError {
5488
try {
55-
Mockito.verify(receiver).process("a.*\t 3");
89+
Mockito.verify(receiver).process(result);
5690
}
5791
catch (final MockitoAssertionError e) {
5892
System.out.println(Mockito.mockingDetails(receiver).printInvocations());

0 commit comments

Comments
 (0)