diff --git a/src/main/java/teetime/stage/CountingMapMerger.java b/src/main/java/teetime/stage/CountingMapMerger.java index 0b4ec5f1e84ccd6a7a4f0410e24ab02133848365..75a9daea35dcee12c6c6acb91d32c38f25aed29e 100644 --- a/src/main/java/teetime/stage/CountingMapMerger.java +++ b/src/main/java/teetime/stage/CountingMapMerger.java @@ -47,7 +47,6 @@ public class CountingMapMerger<T> extends AbstractConsumerStage<CountingMap<T>> @Override public void onTerminating() throws Exception { - System.out.println("TERMINATE"); port.send(result); super.onTerminating(); } diff --git a/src/main/java/teetime/stage/string/ToLowerCase.java b/src/main/java/teetime/stage/string/ToLowerCase.java index 5f97ad5e09d2bec7945c7cd1766806db55ee989b..b3be894915fbbffa418479d1772fe64705ab94e1 100644 --- a/src/main/java/teetime/stage/string/ToLowerCase.java +++ b/src/main/java/teetime/stage/string/ToLowerCase.java @@ -20,6 +20,7 @@ import teetime.framework.OutputPort; /** * Receives a string and passes it on to the next stage only with lower case letters. + * Punctuation and similar characters will be removed. Only [a-zA-Z ] will be passed on. * * @author Nelson Tavares de Sousa * @@ -30,7 +31,7 @@ public class ToLowerCase extends AbstractConsumerStage<String> { @Override protected void execute(final String element) { - outputPort.send(element.toLowerCase()); + outputPort.send(element.replaceAll("[^a-zA-Z ]", "").toLowerCase()); } diff --git a/src/main/java/teetime/stage/string/WordCounter.java b/src/main/java/teetime/stage/string/WordCounter.java index 271e0d552a87eb0d9e6b3973afdb14b01b967035..e453a46334ff49cbdb386a194f6698efa4ea4610 100644 --- a/src/main/java/teetime/stage/string/WordCounter.java +++ b/src/main/java/teetime/stage/string/WordCounter.java @@ -32,7 +32,7 @@ public class WordCounter extends CompositeStage { public WordCounter() { lastStages.add(mapCounter); - IPipeFactory pipeFact = PipeFactoryRegistry.INSTANCE.getPipeFactory(ThreadCommunication.INTER, PipeOrdering.QUEUE_BASED, false); + IPipeFactory pipeFact = PipeFactoryRegistry.INSTANCE.getPipeFactory(ThreadCommunication.INTRA, PipeOrdering.ARBITRARY, false); ToLowerCase toLowerCase = new ToLowerCase(); pipeFact.create(tokenizer.getOutputPort(), toLowerCase.getInputPort()); pipeFact.create(toLowerCase.getOutputPort(), mapCounter.getInputPort()); diff --git a/src/test/java/teetime/stage/WordCountingConfiguration.java b/src/test/java/teetime/stage/WordCountingConfiguration.java index f238ea296890c68bdbcbd24504b49b38d3528ecc..de0fbc2f5c3d74314ed4cb56e6a983f8394094bc 100644 --- a/src/test/java/teetime/stage/WordCountingConfiguration.java +++ b/src/test/java/teetime/stage/WordCountingConfiguration.java @@ -26,8 +26,8 @@ public class WordCountingConfiguration extends AnalysisConfiguration { final Merger<CountingMap<String>> merger = new Merger<CountingMap<String>>(); // result - IPipeFactory interFact = PIPE_FACTORY_REGISTRY.getPipeFactory(ThreadCommunication.INTER, PipeOrdering.QUEUE_BASED, false); - IPipeFactory intraFact = PIPE_FACTORY_REGISTRY.getPipeFactory(ThreadCommunication.INTRA, PipeOrdering.ARBITRARY, false); + IPipeFactory intraFact = PIPE_FACTORY_REGISTRY.getPipeFactory(ThreadCommunication.INTER, PipeOrdering.QUEUE_BASED, false); + IPipeFactory interFact = PIPE_FACTORY_REGISTRY.getPipeFactory(ThreadCommunication.INTRA, PipeOrdering.ARBITRARY, false); interFact.create(init.getOutputPort(), f2b.getInputPort()); interFact.create(f2b.getOutputPort(), b2s.getInputPort()); @@ -39,6 +39,9 @@ public class WordCountingConfiguration extends AnalysisConfiguration { interFact.create(merger.getOutputPort(), result.getInputPort()); + addThreadableStage(init); + addThreadableStage(wc); + addThreadableStage(merger); } public CountingMap<String> getResult() { diff --git a/src/test/java/teetime/stage/WordCountingTest.java b/src/test/java/teetime/stage/WordCountingTest.java index 4e584d3e08ea6021c6bf5ccb043ea3ddc5c39bfa..20e90ab2770b6e8b4ee69d88c77d7d5a945f9794 100644 --- a/src/test/java/teetime/stage/WordCountingTest.java +++ b/src/test/java/teetime/stage/WordCountingTest.java @@ -1,10 +1,12 @@ package teetime.stage; import java.io.File; +import java.util.Map; import org.junit.Test; import teetime.framework.Analysis; +import teetime.stage.util.CountingMap; public class WordCountingTest { @@ -13,6 +15,10 @@ public class WordCountingTest { WordCountingConfiguration wcc = new WordCountingConfiguration(new File("src/test/resources/data/output.txt")); Analysis analysis = new Analysis(wcc); analysis.start(); - System.out.println(wcc.getResult().size()); + CountingMap<String> map = wcc.getResult(); + for (Map.Entry<String, Integer> entry : map.entrySet()) + { + System.out.println(entry.getKey() + " " + entry.getValue()); + } } }