149 lines
4.6 KiB
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;
|
|
}
|
|
} |