Project

General

Profile

1
package eu.dnetlib.wds.parser;
2

    
3
import com.google.gson.Gson;
4
import com.google.gson.GsonBuilder;
5
import eu.dnetlib.enabling.locators.UniqueServiceLocator;
6
import eu.dnetlib.rmi.enabling.ISLookUpService;
7
import eu.dnetlib.springutils.stringtemplate.StringTemplateFactory;
8
import eu.dnetlib.wds.resolver.WDSResolvedObject;
9
import eu.dnetlib.wds.resolver.serializers.WDSResolverSerializer;
10
import eu.dnetlib.wds.utils.WDSUtils;
11
import org.antlr.stringtemplate.StringTemplate;
12
import org.apache.commons.io.IOUtils;
13

    
14
import static org.junit.Assert.*;
15
import static org.mockito.Mockito.mock;
16
import static org.mockito.Mockito.when;
17

    
18
import org.junit.Before;
19
import org.junit.Test;
20
import org.junit.runner.RunWith;
21
import org.mockito.Mock;
22
import org.mockito.runners.MockitoJUnitRunner;
23

    
24
import java.io.InputStream;
25
import java.util.Arrays;
26
import java.util.List;
27
import java.util.regex.Matcher;
28
import java.util.regex.Pattern;
29

    
30

    
31
@RunWith(MockitoJUnitRunner.class)
32
public class ParserTest {
33

    
34

    
35
    @Mock
36
    UniqueServiceLocator serviceLocator;
37

    
38

    
39
    @Mock
40
    ISLookUpService isLookUpService;
41

    
42

    
43
    @Mock
44
    WDSUtils wdsUtils;
45

    
46

    
47
    @Before
48
    public void setup() throws Exception {
49

    
50
        serviceLocator = mock(UniqueServiceLocator.class);
51
        isLookUpService = mock(ISLookUpService.class);
52
        wdsUtils = mock(WDSUtils.class);
53
        when(serviceLocator.getService(ISLookUpService.class)).thenReturn(isLookUpService);
54

    
55

    
56
        WDSUtils.setInstance(wdsUtils);
57

    
58
        when(wdsUtils.getServiceLocator()).thenReturn(serviceLocator);
59

    
60

    
61
        when(isLookUpService.quickSearchProfile(WDSUtils.COLLECTEDFROM_DATASOURCE_MAP_QUERY)).thenReturn(
62
                Arrays.asList(
63
                        "wds_________::r3d100010134<-->r3d100010134<-->Pangaea",
64
                        "wds_________::r3d100010255<-->r3d100010255<-->Inter-university Consortium for Political and Social Research",
65
                        "wds_________::r3d100010214<-->r3d100010214<-->World Data Center for Climate",
66
                        "wds_________::earthdata<-->cmr_________<-->EarthData",
67
                        "wds_________::r3d100000037<-->r3d100000037<-->Oak Ridge National Laboratory Distributed Active Archive Center for Biogeochemical Dynamics",
68
                        "wds_________::r3d100010299<-->r3d100010299<-->World Data Center for Climate",
69
                        "openaire____::bootstrap<-->openaire____<-->OpenAIRE Bootstrap"));
70
    }
71

    
72

    
73
    @Test
74
    public void testRegEx() {
75

    
76
        final Pattern pattern = Pattern.compile("10\\.\\d{4,9}/[-._;()/:A-Z0-9]+$", Pattern.CASE_INSENSITIVE);
77
        final List<String> input = Arrays.asList("https://doi.org/10.1594/PANGAEA.821878", "http://hs.pangaea.de/Images/Airphoto/PS", "https://doi.org/10.1051/epjcONnf/201009006");
78

    
79
        assertEquals(
80
                input.stream()
81
                        .filter(it ->
82
                        {
83
                            Matcher matcher = pattern.matcher(it);
84
                            return matcher.find();
85
                        }).count(),
86
                2);
87

    
88

    
89
    }
90

    
91

    
92
    @Test
93
    public void DMFParserTest() throws Exception {
94
        final InputStream inputStream = this.getClass().getResourceAsStream("/eu/dnetlib/wds/parser/DMFinput.xml");
95
        final String dmf = IOUtils.toString(inputStream);
96

    
97

    
98
        DMFResolverParser parser = new DMFResolverParser();
99

    
100
        WDSResolvedObject resolvedObject = (WDSResolvedObject) parser.parseObject(dmf);
101

    
102
        Gson g = new GsonBuilder().setPrettyPrinting().create();
103

    
104
        assertNotNull(resolvedObject);
105

    
106
        System.out.println("resolvedObject = " + g.toJson(resolvedObject));
107

    
108
        WDSResolverSerializer serializer = new WDSResolverSerializer();
109

    
110
        final InputStream aStream = this.getClass().getResourceAsStream("/eu/dnetlib/wds/templates/DMFXML.st");
111

    
112

    
113
        serializer.setDmfTemplate(new StringTemplate(IOUtils.toString(aStream)));
114

    
115

    
116
        String xml = serializer.serializeToXML(resolvedObject);
117

    
118

    
119
        System.out.println("xml = " + xml);
120

    
121

    
122
    }
123

    
124
}
    (1-1/1)