Project

General

Profile

1 43783 sandro.lab
package eu.dnetlib.dli.transform;
2
3 46989 sandro.lab
import com.google.gson.Gson;
4 45717 sandro.lab
import eu.dnetlib.data.transform.OntologyLoader;
5
import eu.dnetlib.dli.DLIUtils;
6 49184 sandro.lab
import eu.dnetlib.dli.resolver.model.DLIResolvedObject;
7 45717 sandro.lab
import eu.dnetlib.enabling.locators.UniqueServiceLocator;
8 43783 sandro.lab
import eu.dnetlib.resolver.parser.DMFResolverParser;
9 45717 sandro.lab
import eu.dnetlib.rmi.enabling.ISLookUpService;
10 43783 sandro.lab
import org.apache.commons.io.IOUtils;
11
import org.apache.commons.logging.Log;
12
import org.apache.commons.logging.LogFactory;
13 44298 sandro.lab
import org.dom4j.Document;
14
import org.dom4j.DocumentException;
15
import org.dom4j.io.SAXReader;
16 45717 sandro.lab
import org.junit.Before;
17 43783 sandro.lab
import org.junit.Test;
18 45717 sandro.lab
import org.junit.runner.RunWith;
19
import org.mockito.Mock;
20
import org.mockito.Mockito;
21
import org.mockito.runners.MockitoJUnitRunner;
22 43783 sandro.lab
23 44359 sandro.lab
import javax.xml.transform.OutputKeys;
24
import javax.xml.transform.Transformer;
25
import javax.xml.transform.TransformerFactory;
26
import javax.xml.transform.stream.StreamResult;
27
import javax.xml.transform.stream.StreamSource;
28
import java.io.IOException;
29
import java.io.InputStream;
30
import java.io.StringWriter;
31 45717 sandro.lab
import java.util.Arrays;
32
import java.util.List;
33 46989 sandro.lab
import java.util.Map;
34 44359 sandro.lab
35 45717 sandro.lab
import static org.mockito.Mockito.when;
36
37 43783 sandro.lab
/**
38
 * Created by sandro on 9/16/16.
39
 */
40 45717 sandro.lab
41
@RunWith(MockitoJUnitRunner.class)
42 43783 sandro.lab
public class DLITransformTest {
43
44 45981 sandro.lab
45 45717 sandro.lab
    private static final Log log = LogFactory.getLog(DLITransformTest.class);
46 43783 sandro.lab
47 45981 sandro.lab
    private static final String BASE_URL = "http://%s:9200/%s?pretty";
48
    private static final String BASE_CFG_URL = "http://%s:9200/%s?pretty";
49
50 45717 sandro.lab
    @Mock
51
    private DLIUtils dliUtilsInstance;
52 44359 sandro.lab
53 45470 sandro.lab
54 45717 sandro.lab
    @Mock
55
    private UniqueServiceLocator uniqueServiceLocator;
56 44298 sandro.lab
57 45717 sandro.lab
    @Mock
58
    private ISLookUpService isLookUpServiceMock;
59 45470 sandro.lab
60 43783 sandro.lab
61 45717 sandro.lab
    @Before
62 46989 sandro.lab
    public void initialize() throws Exception {
63 43783 sandro.lab
64 45717 sandro.lab
        final String query = "for $x in collection('/db/DRIVER/RepositoryServiceResources/RepositoryServiceResourceType') "
65
                + "return concat($x//FIELD[./key='NamespacePrefix']/value/text(),'@--@',$x//FIELD[./key='DataSourceId']/value/text(),'@--@',$x//ENGLISH_NAME )";
66
        dliUtilsInstance = Mockito.mock(DLIUtils.class);
67 43783 sandro.lab
68 45717 sandro.lab
        uniqueServiceLocator = Mockito.mock(UniqueServiceLocator.class);
69
        isLookUpServiceMock = Mockito.mock(ISLookUpService.class);
70
        dliUtilsInstance.setServiceLocator(uniqueServiceLocator);
71 46989 sandro.lab
72
73
        final InputStream inputStream = this.getClass().getResourceAsStream("/eu/dnetlib/transformation/data-center.json");
74
        Map<String, String> dataciteDatasource = new Gson().fromJson(IOUtils.toString(inputStream), Map.class);
75
76 45717 sandro.lab
        DLIUtils.setInstance(dliUtilsInstance);
77
        when(dliUtilsInstance.getServiceLocator()).thenReturn(uniqueServiceLocator);
78 46989 sandro.lab
        when(dliUtilsInstance.getDataciteDatasource()).thenReturn(dataciteDatasource);
79
80 45717 sandro.lab
        when(uniqueServiceLocator.getService(ISLookUpService.class)).thenReturn(isLookUpServiceMock);
81 46989 sandro.lab
82
83 45717 sandro.lab
        List<String> resutlDS = Arrays.asList(
84
                "r3d100010255@--@dli_________::r3d100010255@--@icpsr",
85 46475 sandro.lab
                "r3d100010134@--@dli_________::r3d100010134@--@pangaea",
86
                "r3d100010464@--@dli_________::r3d100010464@--@ANDS",
87
                "r3d100010327@--@dli_________::r3d100010327@--@RCSB",
88
                "nature______@--@dli_________::nature______@--@Nature",
89 46682 sandro.lab
                "ieee________@--@dli_________::ieee________@--@IEEE",
90
                "r3d100010578@--@dli_________::r3d100010578@--@IEDA",
91 46475 sandro.lab
                "r3d100010216@--@dli_________::r3d100010216@--@3tU"
92 45717 sandro.lab
        );
93
        when(isLookUpServiceMock.quickSearchProfile(query)).thenReturn(resutlDS);
94
        DLIUtils.ontologies = OntologyLoader.loadOntologiesFromCp();
95
    }
96 43783 sandro.lab
97
98 45717 sandro.lab
    private InputStream loadFromTransformationProfile(final String profilePath) throws IOException {
99
        InputStream profile = getClass().getResourceAsStream(profilePath);
100
        SAXReader saxReader = new SAXReader();
101
        Document doc = null;
102
        try {
103
            doc = saxReader.read(profile);
104
        } catch (DocumentException e) {
105
            e.printStackTrace();
106
            throw new RuntimeException(e);
107
        }
108
        String xslt = doc.selectSingleNode("//SCRIPT/CODE/text()").asXML();
109
        return IOUtils.toInputStream(xslt.replace("<![CDATA[", "").replace("]]>", ""));
110
    }
111 43783 sandro.lab
112
113 45717 sandro.lab
    @Test
114 46475 sandro.lab
    public void testRCSBTransform() throws Exception {
115
        final InputStream xsltAsStream =
116
                loadFromTransformationProfile("/eu/dnetlib/bootstrap/profiles/TransformationRuleDSResources/rcsb_transform.xml");
117
        final TransformerFactory factory = TransformerFactory.newInstance();
118
        factory.newTransformer();
119
        final StreamSource xsltSource = new StreamSource(xsltAsStream);
120
        final InputStream recordStream = this.getClass().getResourceAsStream("/eu/dnetlib/dli/transform/rcsb_input.xml");
121
        final Transformer transformer = factory.newTransformer(xsltSource);
122
        transformer.setOutputProperty(OutputKeys.INDENT, "yes");
123
        final StringWriter output = new StringWriter();
124
        transformer.transform(new StreamSource(recordStream), new StreamResult(output));
125
        System.out.println(output.toString());
126
127
    }
128
129
130
    @Test
131
    public void testANDSTransform() throws Exception {
132
133
        final InputStream xsltAsStream =
134
                getClass().getResourceAsStream("/eu/dnetlib/dli/transform/ands.xslt");
135
        final TransformerFactory factory = TransformerFactory.newInstance();
136
        factory.newTransformer();
137
        final StreamSource xsltSource = new StreamSource(xsltAsStream);
138
        final InputStream recordStream = this.getClass().getResourceAsStream("/eu/dnetlib/dli/parser/inputANDS.xml");
139
        final Transformer transformer = factory.newTransformer(xsltSource);
140
        transformer.setOutputProperty(OutputKeys.INDENT, "yes");
141
        final StringWriter output = new StringWriter();
142
        transformer.transform(new StreamSource(recordStream), new StreamResult(output));
143
        System.out.println(output.toString());
144
145
    }
146
147
148
    @Test
149
    public void test3TUTransform() throws Exception {
150
151
        final InputStream xsltAsStream =
152
                getClass().getResourceAsStream("/eu/dnetlib/dli/transform/3tu.xslt");
153
        final TransformerFactory factory = TransformerFactory.newInstance();
154
        factory.newTransformer();
155
        final StreamSource xsltSource = new StreamSource(xsltAsStream);
156
        final InputStream recordStream = this.getClass().getResourceAsStream("/eu/dnetlib/dli/parser/3tu.xml");
157
        final Transformer transformer = factory.newTransformer(xsltSource);
158
        transformer.setOutputProperty(OutputKeys.INDENT, "yes");
159
        final StringWriter output = new StringWriter();
160
        transformer.transform(new StreamSource(recordStream), new StreamResult(output));
161
        System.out.println(output.toString());
162
163
    }
164
165
    @Test
166 46682 sandro.lab
    public void testIEEETransform() throws Exception {
167
168
        final InputStream xsltAsStream =
169
                getClass().getResourceAsStream("/eu/dnetlib/dli/transform/ieee.xslt");
170
        final TransformerFactory factory = TransformerFactory.newInstance();
171
        factory.newTransformer();
172
        final StreamSource xsltSource = new StreamSource(xsltAsStream);
173
        final InputStream recordStream = this.getClass().getResourceAsStream("/eu/dnetlib/dli/parser/ieee.xml");
174
        final Transformer transformer = factory.newTransformer(xsltSource);
175
        transformer.setOutputProperty(OutputKeys.INDENT, "yes");
176
        final StringWriter output = new StringWriter();
177
        transformer.transform(new StreamSource(recordStream), new StreamResult(output));
178
        System.out.println(output.toString());
179
180
    }
181
182
    @Test
183
    public void testIEDATransform() throws Exception {
184
185
        final InputStream xsltAsStream =
186
                getClass().getResourceAsStream("/eu/dnetlib/dli/transform/ieda.xslt");
187
        final TransformerFactory factory = TransformerFactory.newInstance();
188
        factory.newTransformer();
189
        final StreamSource xsltSource = new StreamSource(xsltAsStream);
190
        final InputStream recordStream = this.getClass().getResourceAsStream("/eu/dnetlib/dli/parser/ieda.xml");
191
        final Transformer transformer = factory.newTransformer(xsltSource);
192
        transformer.setOutputProperty(OutputKeys.INDENT, "yes");
193
        final StringWriter output = new StringWriter();
194
        transformer.transform(new StreamSource(recordStream), new StreamResult(output));
195
        System.out.println(output.toString());
196
197
    }
198
199
200
    @Test
201 46475 sandro.lab
    public void testNPGTransform() throws Exception {
202
203
        final InputStream xsltAsStream =
204
                getClass().getResourceAsStream("/eu/dnetlib/dli/transform/dli.xslt");
205
        final TransformerFactory factory = TransformerFactory.newInstance();
206
        factory.newTransformer();
207
        final StreamSource xsltSource = new StreamSource(xsltAsStream);
208
        final InputStream recordStream = this.getClass().getResourceAsStream("/eu/dnetlib/dli/parser/npg_incomplete.xml");
209
        final Transformer transformer = factory.newTransformer(xsltSource);
210
        transformer.setOutputProperty(OutputKeys.INDENT, "yes");
211
        final StringWriter output = new StringWriter();
212
        transformer.transform(new StreamSource(recordStream), new StreamResult(output));
213
        System.out.println(output.toString());
214
215
    }
216
217
218
    @Test
219 45717 sandro.lab
    public void testOAI2DMFTransform() throws Exception {
220
221
        final InputStream xsltAsStream =
222
                loadFromTransformationProfile("/eu/dnetlib/bootstrap/profiles/TransformationRuleDSResources/oai_datacite_transform.xml");
223
        final TransformerFactory factory = TransformerFactory.newInstance();
224
        factory.newTransformer();
225
        final StreamSource xsltSource = new StreamSource(xsltAsStream);
226 46989 sandro.lab
        final InputStream recordStream = this.getClass().getResourceAsStream("/eu/dnetlib/dli/parser/inputDatacite.xml");
227 45717 sandro.lab
        final Transformer transformer = factory.newTransformer(xsltSource);
228
        transformer.setOutputProperty(OutputKeys.INDENT, "yes");
229
        final StringWriter output = new StringWriter();
230
        transformer.transform(new StreamSource(recordStream), new StreamResult(output));
231
        final String record = output.toString();
232
        final DMFResolverParser parser = new DMFResolverParser();
233
        log.debug(record);
234 49184 sandro.lab
        final DLIResolvedObject object = parser.parseObject(record);
235 45717 sandro.lab
236 46682 sandro.lab
        //Assert.assertNotNull(object.getSubjects());
237
//        Assert.assertTrue(object.getSubjects().size() > 0);
238
//
239
//
240
//
241
//        Assert.assertTrue(object.getRelations().size() > 0);
242
//
243
//        object.getRelations().forEach(it -> log.debug(it.getTargetPID()));
244
//
245
//        log.debug(object);
246
//
247
//        StringTemplate st = new StringTemplate();
248
//
249
//        final String template = IOUtils.toString(this.getClass().getResourceAsStream("/eu/dnetlib/dli/templates/DMFXML.st"));
250
//
251
//        st.setTemplate(template);
252
//
253
//        st.setAttribute("object", object);
254
//
255
//        System.out.println(st.toString());
256 45717 sandro.lab
257
    }
258
259
    @Test
260
    public void testICPSRTransform() throws Exception {
261
262
263
        final InputStream xsltAsStream =
264
                loadFromTransformationProfile("/eu/dnetlib/bootstrap/profiles/TransformationRuleDSResources/oai_icpsr_transform.xml");
265
266
        final TransformerFactory factory = TransformerFactory.newInstance();
267
        factory.newTransformer();
268
        final StreamSource xsltSource = new StreamSource(xsltAsStream);
269
        final InputStream recordStream = this.getClass().getResourceAsStream("/eu/dnetlib/dli/parser/InputICPSR.xml");
270
271
        final Transformer transformer = factory.newTransformer(xsltSource);
272
        transformer.setOutputProperty(OutputKeys.INDENT, "yes");
273
        final StringWriter output = new StringWriter();
274
        transformer.transform(new StreamSource(recordStream), new StreamResult(output));
275
        final String record = output.toString();
276
277
        System.out.println(record);
278
    }
279
280 45981 sandro.lab
281 43783 sandro.lab
}