/* Copyright 2013 Jan Schnasse.
* Licensed under the Eclipse Public License 1.0 */
package org.lobid.lodmill;
import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;
import org.antlr.runtime.RecognitionException;
import org.culturegraph.mf.morph.Metamorph;
import org.culturegraph.mf.runner.Flux;
import org.culturegraph.mf.stream.pipe.StreamLogger;
import org.culturegraph.mf.stream.pipe.StreamTee;
import org.culturegraph.mf.stream.sink.EventList;
import org.culturegraph.mf.stream.sink.ObjectStdoutWriter;
import org.culturegraph.mf.stream.sink.StreamValidator;
import org.culturegraph.mf.stream.source.HttpOpener;
import org.junit.Test;
/**
* @author Jan Schnasse
*
*/
@SuppressWarnings("javadoc")
public class OaiDcFlowTest {
@Test
public void testDecoder() {
final EventList expected = new EventList();
expected.startRecord("1");
expected.startEntity("http://lobid.org/resource/TT002234391");
expected.literal("http://xmlns.com/foaf/0.1/isPrimaryTopicOf",
"http://193.30.112.134/F/?func=find-c&ccl_term=IDN%3DTT002234391");
expected.endEntity();
expected.endRecord();
final NTripleDecoder decoder = new NTripleDecoder();
final StreamLogger logger = new StreamLogger("decoder");
final StreamValidator validator = new StreamValidator(expected.getEvents());
decoder.setReceiver(logger).setReceiver(validator);
decoder.process("<http://lobid.org/resource/TT002234391> "
+ "<http://xmlns.com/foaf/0.1/isPrimaryTopicOf> "
+ "<http://193.30.112.134/F/?func=find-c&ccl_term=IDN%3DTT002234391> .");
decoder.closeStream();
}
@Test
public void testFlow() {
final HttpOpener opener = new HttpOpener();
opener.setAccept("text/plain");
final StreamToStringReader reader = new StreamToStringReader();
final NTripleDecoder decoder = new NTripleDecoder();
final StreamLogger logger = new StreamLogger("decoder");
final Metamorph metamorph = new Metamorph("morph-lobid-to-oaidc.xml");
final ObjectStdoutWriter<String> writer = new ObjectStdoutWriter<>();
final StreamTee tee = new StreamTee();
final OaiDcEncoder encoder = new OaiDcEncoder();
metamorph.setReceiver(encoder).setReceiver(writer);
tee.addReceiver(logger);
tee.addReceiver(metamorph);
opener.setReceiver(reader);
reader.setReceiver(decoder);
decoder.setReceiver(tee);
opener.process("http://api.lobid.org/resource?id=HT015381412");
opener.closeStream();
}
@Test
public void testFlux()
throws IOException, URISyntaxException, RecognitionException {
String lobidUrl = "http://api.lobid.org/resource?id=HT015381412";
File fluxFile = new File(Thread.currentThread().getContextClassLoader()
.getResource("morph-lobid-to-oaidc.flux").toURI());
Flux.main(new String[] { fluxFile.getAbsolutePath(), "url=" + lobidUrl,
"out=" + "stdout" });
}
}