package eu.dnetlib.iis.wf.citationmatching.converter; import java.io.IOException; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import com.google.common.collect.Lists; import eu.dnetlib.iis.citationmatching.schemas.BasicMetadata; import eu.dnetlib.iis.citationmatching.schemas.DocumentMetadata; import eu.dnetlib.iis.citationmatching.schemas.ReferenceMetadata; import eu.dnetlib.iis.common.java.PortBindings; import eu.dnetlib.iis.common.java.Process; import eu.dnetlib.iis.common.java.io.DataStore; import eu.dnetlib.iis.common.java.io.FileSystemPath; import eu.dnetlib.iis.common.java.porttype.AvroPortType; import eu.dnetlib.iis.common.java.porttype.PortType; /** Produce data stores * @author Mateusz Fedoryszak */ public class DocumentAvroDatastoreProducer implements Process { private final static String documentPort = "document"; public Map<String, PortType> getInputPorts() { return new HashMap<String, PortType>(); } @Override public Map<String, PortType> getOutputPorts() { return createOutputPorts(); } private static Map<String, PortType> createOutputPorts(){ HashMap<String, PortType> outputPorts = new HashMap<String, PortType>(); outputPorts.put(documentPort, new AvroPortType(DocumentMetadata.SCHEMA$)); return outputPorts; } public static List<DocumentMetadata> getDocumentMetadataList() { BasicMetadata basic1 = new BasicMetadata( Lists.<CharSequence>newArrayList("Jan Kowalski"), "A new method of something", "Journal of something", "1-2", "2001"); BasicMetadata basic2 = new BasicMetadata( Lists.<CharSequence>newArrayList("Jan Kowalski", "Zygmunt Nowak"), "How to do it?", "Something Journal", "2-3", "2002"); BasicMetadata basic3 = new BasicMetadata( Lists.<CharSequence>newArrayList("Zygmunt Nowak"), "Our great tool", "Everything Journal", "3-4", "2003"); BasicMetadata basic4 = new BasicMetadata( Lists.<CharSequence>newArrayList("Zygmunt Nowak", "Jan Kowalski"), "Big and great system", "Advances in everything", "4-5", "2004"); DocumentMetadata doc1 = new DocumentMetadata( "1", basic1, Lists.newArrayList(new ReferenceMetadata(1, basic2, null), new ReferenceMetadata(2, basic3, null))); DocumentMetadata doc2 = new DocumentMetadata( "2", basic2, Lists.newArrayList(new ReferenceMetadata(1, basic3, null), new ReferenceMetadata(2, basic4, null))); return Lists.newArrayList(doc1, doc2); } @Override public void run(PortBindings portBindings, Configuration conf, Map<String, String> parameters) throws IOException{ Map<String, Path> output = portBindings.getOutput(); FileSystem fs = FileSystem.get(conf); DataStore.create(getDocumentMetadataList(), new FileSystemPath(fs, output.get(documentPort))); } }