Project

General

Profile

1
package eu.dnetlib.dli.transform;
2

    
3
import eu.dnetlib.dli.resolver.model.DLIResolvedObject;
4
import eu.dnetlib.resolver.DLIAbstractTest;
5
import eu.dnetlib.resolver.parser.DMFResolverParser;
6
import org.apache.commons.io.IOUtils;
7
import org.apache.commons.logging.Log;
8
import org.apache.commons.logging.LogFactory;
9
import org.dom4j.Document;
10
import org.dom4j.DocumentException;
11
import org.dom4j.io.SAXReader;
12
import org.junit.Test;
13
import org.junit.runner.RunWith;
14
import org.mockito.runners.MockitoJUnitRunner;
15

    
16
import javax.xml.transform.OutputKeys;
17
import javax.xml.transform.Transformer;
18
import javax.xml.transform.TransformerFactory;
19
import javax.xml.transform.stream.StreamResult;
20
import javax.xml.transform.stream.StreamSource;
21
import java.io.IOException;
22
import java.io.InputStream;
23
import java.io.StringWriter;
24

    
25
/**
26
 * Created by sandro on 9/16/16.
27
 */
28

    
29
@RunWith(MockitoJUnitRunner.class)
30
public class DLITransformTest extends DLIAbstractTest {
31

    
32

    
33
    private static final Log log = LogFactory.getLog(DLITransformTest.class);
34

    
35
    private static final String BASE_URL = "http://%s:9200/%s?pretty";
36
    private static final String BASE_CFG_URL = "http://%s:9200/%s?pretty";
37

    
38

    
39

    
40
    private InputStream loadFromTransformationProfile(final String profilePath) throws IOException {
41
        InputStream profile = getClass().getResourceAsStream(profilePath);
42
        SAXReader saxReader = new SAXReader();
43
        Document doc = null;
44
        try {
45
            doc = saxReader.read(profile);
46
        } catch (DocumentException e) {
47
            e.printStackTrace();
48
            throw new RuntimeException(e);
49
        }
50
        String xslt = doc.selectSingleNode("//SCRIPT/CODE/text()").asXML();
51
        return IOUtils.toInputStream(xslt.replace("<![CDATA[", "").replace("]]>", ""));
52
    }
53

    
54

    
55
    @Test
56
    public void testRCSBTransform() throws Exception {
57
        final InputStream xsltAsStream =
58
                loadFromTransformationProfile("/eu/dnetlib/bootstrap/profiles/TransformationRuleDSResources/rcsb_transform.xml");
59
        final TransformerFactory factory = TransformerFactory.newInstance();
60
        factory.newTransformer();
61
        final StreamSource xsltSource = new StreamSource(xsltAsStream);
62
        final InputStream recordStream = this.getClass().getResourceAsStream("/eu/dnetlib/dli/transform/rcsb_input.xml");
63
        final Transformer transformer = factory.newTransformer(xsltSource);
64
        transformer.setOutputProperty(OutputKeys.INDENT, "yes");
65
        final StringWriter output = new StringWriter();
66
        transformer.transform(new StreamSource(recordStream), new StreamResult(output));
67
        System.out.println(output.toString());
68

    
69
    }
70

    
71

    
72
    @Test
73
    public void testANDSTransform() throws Exception {
74

    
75
        final InputStream xsltAsStream =
76
                getClass().getResourceAsStream("/eu/dnetlib/dli/transform/ands.xslt");
77
        final TransformerFactory factory = TransformerFactory.newInstance();
78
        factory.newTransformer();
79
        final StreamSource xsltSource = new StreamSource(xsltAsStream);
80
        final InputStream recordStream = this.getClass().getResourceAsStream("/eu/dnetlib/dli/parser/inputANDS.xml");
81
        final Transformer transformer = factory.newTransformer(xsltSource);
82
        transformer.setOutputProperty(OutputKeys.INDENT, "yes");
83
        final StringWriter output = new StringWriter();
84
        transformer.transform(new StreamSource(recordStream), new StreamResult(output));
85
        System.out.println(output.toString());
86

    
87
    }
88

    
89

    
90
    @Test
91
    public void test3TUTransform() throws Exception {
92

    
93
        final InputStream xsltAsStream =
94
                getClass().getResourceAsStream("/eu/dnetlib/dli/transform/3tu.xslt");
95
        final TransformerFactory factory = TransformerFactory.newInstance();
96
        factory.newTransformer();
97
        final StreamSource xsltSource = new StreamSource(xsltAsStream);
98
        final InputStream recordStream = this.getClass().getResourceAsStream("/eu/dnetlib/dli/parser/3tu.xml");
99
        final Transformer transformer = factory.newTransformer(xsltSource);
100
        transformer.setOutputProperty(OutputKeys.INDENT, "yes");
101
        final StringWriter output = new StringWriter();
102
        transformer.transform(new StreamSource(recordStream), new StreamResult(output));
103
        System.out.println(output.toString());
104

    
105
    }
106

    
107
    @Test
108
    public void testIEEETransform() throws Exception {
109

    
110
        final InputStream xsltAsStream =
111
                getClass().getResourceAsStream("/eu/dnetlib/dli/transform/ieee.xslt");
112
        final TransformerFactory factory = TransformerFactory.newInstance();
113
        factory.newTransformer();
114
        final StreamSource xsltSource = new StreamSource(xsltAsStream);
115
        final InputStream recordStream = this.getClass().getResourceAsStream("/eu/dnetlib/dli/parser/ieee.xml");
116
        final Transformer transformer = factory.newTransformer(xsltSource);
117
        transformer.setOutputProperty(OutputKeys.INDENT, "yes");
118
        final StringWriter output = new StringWriter();
119
        transformer.transform(new StreamSource(recordStream), new StreamResult(output));
120
        System.out.println(output.toString());
121

    
122
    }
123

    
124
    @Test
125
    public void testIEDATransform() throws Exception {
126

    
127
        final InputStream xsltAsStream =
128
                getClass().getResourceAsStream("/eu/dnetlib/dli/transform/ieda.xslt");
129
        final TransformerFactory factory = TransformerFactory.newInstance();
130
        factory.newTransformer();
131
        final StreamSource xsltSource = new StreamSource(xsltAsStream);
132
        final InputStream recordStream = this.getClass().getResourceAsStream("/eu/dnetlib/dli/parser/ieda.xml");
133
        final Transformer transformer = factory.newTransformer(xsltSource);
134
        transformer.setOutputProperty(OutputKeys.INDENT, "yes");
135
        final StringWriter output = new StringWriter();
136
        transformer.transform(new StreamSource(recordStream), new StreamResult(output));
137
        System.out.println(output.toString());
138

    
139
    }
140

    
141

    
142
    @Test
143
    public void testNPGTransform() throws Exception {
144

    
145
        final InputStream xsltAsStream =
146
                getClass().getResourceAsStream("/eu/dnetlib/dli/transform/dli.xslt");
147
        final TransformerFactory factory = TransformerFactory.newInstance();
148
        factory.newTransformer();
149
        final StreamSource xsltSource = new StreamSource(xsltAsStream);
150
        final InputStream recordStream = this.getClass().getResourceAsStream("/eu/dnetlib/dli/parser/npg_incomplete.xml");
151
        final Transformer transformer = factory.newTransformer(xsltSource);
152
        transformer.setOutputProperty(OutputKeys.INDENT, "yes");
153
        final StringWriter output = new StringWriter();
154
        transformer.transform(new StreamSource(recordStream), new StreamResult(output));
155
        System.out.println(output.toString());
156

    
157
    }
158

    
159

    
160
    @Test
161
    public void testOAI2DMFTransform() throws Exception {
162

    
163
        final InputStream xsltAsStream =
164
                loadFromTransformationProfile("/eu/dnetlib/bootstrap/profiles/TransformationRuleDSResources/oai_datacite_transform.xml");
165
        final TransformerFactory factory = TransformerFactory.newInstance();
166
        factory.newTransformer();
167
        final StreamSource xsltSource = new StreamSource(xsltAsStream);
168
        final InputStream recordStream = this.getClass().getResourceAsStream("/eu/dnetlib/dli/parser/inputDatacite.xml");
169
        final Transformer transformer = factory.newTransformer(xsltSource);
170
        transformer.setOutputProperty(OutputKeys.INDENT, "yes");
171
        final StringWriter output = new StringWriter();
172
        transformer.transform(new StreamSource(recordStream), new StreamResult(output));
173
        final String record = output.toString();
174
        final DMFResolverParser parser = new DMFResolverParser();
175
        log.debug(record);
176
        final DLIResolvedObject object = parser.parseObject(record);
177

    
178
        //Assert.assertNotNull(object.getSubjects());
179
//        Assert.assertTrue(object.getSubjects().size() > 0);
180
//
181
//
182
//
183
//        Assert.assertTrue(object.getRelations().size() > 0);
184
//
185
//        object.getRelations().forEach(it -> log.debug(it.getTargetPID()));
186
//
187
//        log.debug(object);
188
//
189
//        StringTemplate st = new StringTemplate();
190
//
191
//        final String template = IOUtils.toString(this.getClass().getResourceAsStream("/eu/dnetlib/dli/templates/DMFXML.st"));
192
//
193
//        st.setTemplate(template);
194
//
195
//        st.setAttribute("object", object);
196
//
197
//        System.out.println(st.toString());
198

    
199
    }
200

    
201
    @Test
202
    public void testICPSRTransform() throws Exception {
203

    
204

    
205
        final InputStream xsltAsStream =
206
                loadFromTransformationProfile("/eu/dnetlib/bootstrap/profiles/TransformationRuleDSResources/oai_icpsr_transform.xml");
207

    
208
        final TransformerFactory factory = TransformerFactory.newInstance();
209
        factory.newTransformer();
210
        final StreamSource xsltSource = new StreamSource(xsltAsStream);
211
        final InputStream recordStream = this.getClass().getResourceAsStream("/eu/dnetlib/dli/parser/InputICPSR.xml");
212

    
213
        final Transformer transformer = factory.newTransformer(xsltSource);
214
        transformer.setOutputProperty(OutputKeys.INDENT, "yes");
215
        final StringWriter output = new StringWriter();
216
        transformer.transform(new StreamSource(recordStream), new StreamResult(output));
217
        final String record = output.toString();
218

    
219
        System.out.println(record);
220
    }
221

    
222

    
223
}
    (1-1/1)