AriadnePlus/dnet-ariadneplus/src/test/java/eu/dnetlib/x3m/ApplyX3MappingTest.java

149 lines
4.6 KiB
Java

package eu.dnetlib.x3m;
import java.io.IOException;
import java.io.InputStream;
import eu.dnetlib.msro.workflows.nodes.transform.ApplyX3Mapping;
import org.apache.commons.io.IOUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.io.SAXReader;
import org.junit.Test;
import org.springframework.core.io.ClassPathResource;
/**
* Created by alessia on 13/03/17.
*/
public class ApplyX3MappingTest {
private static final Log log = LogFactory.getLog(ApplyX3MappingTest.class);
private static String basePathProfiles = "/eu/dnetlib/bootstrap/profiles/TransformationRuleDSResources/TransformationRuleDSResourceType/";
//Parthenos mappings
final String parthenosPolicyPath = "parthenos_policy1.5.xml";
final String mappingAriadnePath = "ariadne_dataset_444_mapping.xml";
final String mappingEhriPath = "ehri_328_mapping.xml";
final String mappingCulturaItaliaPath = "culturaitalia_musei_312_mapping.xml";
//Parthenos records
final String ariadnePath = "/eu/dnetlib/x3m/new-10304736.xml";
final String ehriRecord = "/eu/dnetlib/x3m/ehri_test.xml";
final String ehriRecord2 = "/eu/dnetlib/x3m/EHRI_sample_record_328.xml";
final String[] ariadneFiles =
new String[] { "/eu/dnetlib/x3m/new-10304737.xml", "/eu/dnetlib/x3m/new-10304738.xml", "/eu/dnetlib/x3m/new-10304739.xml",
"/eu/dnetlib/x3m/new-10304740.xml", "/eu/dnetlib/x3m/new-10304741.xml", "/eu/dnetlib/x3m/new-10304742.xml" };
final String culturaItaliaPath = "/eu/dnetlib/x3m/culturaItalia_record.xml";
@Test
public void testAriadne() {
doBasicTest(this.mappingAriadnePath, this.ariadnePath);
}
@Test
public void testAriadneAll() throws IOException {
String m = loadFromTransformationProfile(mappingAriadnePath);
String g = getString(parthenosPolicyPath);
ApplyX3Mapping x3m = new ApplyX3Mapping(new String[]{m}, g, false);
for(String path : ariadneFiles){
String res = x3m.apply(getString(path));
log.debug(res);
}
}
@Test
public void testEhri() throws IOException {
doBasicTest(this.mappingEhriPath, this.ehriRecord);
}
@Test
public void testEhri2(){
doBasicTest(this.mappingEhriPath, this.ehriRecord2);
}
@Test
public void testCulturaItalia() throws IOException {
doBasicTest(this.mappingCulturaItaliaPath, this.culturaItaliaPath);
}
@Test
public void testMetashare(){
doBasicTest("metashare_439_mapping.xml", "/eu/dnetlib/x3m/metashare.xml");
}
@Test
public void testCendariAuthors() {
doBasicTest("parthenos_policy1.5.xml", "cendari_authors_486.xml", "/eu/dnetlib/x3m/cendari_author_ex1.xml");
}
@Test
public void testCendariAuthors2() {
doBasicTest("parthenos_policy1.5.xml", "cendari_authors_486.xml", "/eu/dnetlib/x3m/cendari_author_ex2.xml");
}
@Test
public void testCendariTesti1() {
doBasicTest("parthenos_policy1.5.xml", "cendari_texts_487.xml", "/eu/dnetlib/x3m/cendari_testi1.xml");
}
@Test
public void testCendariManoscritto(){
doBasicTest("cendari_manuscripts_485.xml", "/eu/dnetlib/x3m/cendari_manoscritto.xml");
}
@Test
public void testWp8_ok() {
doBasicTest("parthenos_policy1.5.xml", "parthenos_wp8.xml", "/eu/dnetlib/x3m/wp8.xml");
}
@Test
public void testTopLevel() {
doBasicTest("parthenos_policy1.5.xml", "parthenos_toplevel_mapping.xml", "/eu/dnetlib/x3m/topLevel.xml");
}
public void doBasicTest(String mappingPath, String recordPath){
doBasicTest(parthenosPolicyPath, mappingPath, recordPath);
}
public void doBasicTest(String policyPath, String mappingPath, String recordPath){
String m = loadFromTransformationProfile(mappingPath);
String g = loadFromTransformationProfile(policyPath);
String r = getString(recordPath);
ApplyX3Mapping x3m = new ApplyX3Mapping(new String[]{m}, g, true);
String res = x3m.apply(r);
System.out.println("res is \n"+res);
}
private String getString(final String classpath) {
try {
final ClassPathResource resource = new ClassPathResource(classpath);
return IOUtils.toString(resource.getInputStream(), "UTF-8");
}catch(IOException e){
return null;
}
}
private String loadFromTransformationProfile(String profilePath){
log.info("Loading xslt from: " + basePathProfiles + profilePath);
InputStream profile = getClass().getResourceAsStream(basePathProfiles + profilePath);
SAXReader saxReader = new SAXReader();
Document doc = null;
try {
doc = saxReader.read(profile);
} catch (DocumentException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
String s = doc.selectSingleNode("//SCRIPT/CODE").getText();
//log.debug(profilePath+": "+s);
return s;
}
}