Project

General

Profile

1
package eu.dnetlib.data.search.web.utils;
2

    
3
import java.util.Arrays;
4
import java.util.List;
5

    
6
/**
7
 * Created by kiatrop on 19/9/2016.
8
 */
9
public class RequestResponseHandler {
10

    
11
    public enum Entity {
12
        PUBLICATION("publication"),
13
        DATASET("dataset"),
14
        PROJECT("project"),
15
        DATASOURCE("datasource"),
16
        ORGANIZATION("organization"),
17
        PERSON("person"),
18
        SOFTWARE("software"),
19
        OTHER("other"),
20
        NONE("");
21

    
22
        private final List<String> PUBLICATION_FIELD_QUERIES = Arrays.asList("oaftype exact result", "resulttypeid exact publication");
23
        private final List<String> DATASET_FIELD_QUERIES = Arrays.asList("oaftype exact result", "resulttypeid exact dataset");
24
        private final List<String> SOFTWARE_FIELD_QUERIES = Arrays.asList("oaftype exact result", "resulttypeid exact software");
25
        private final List<String> OTHER_FIELD_QUERIES = Arrays.asList("oaftype exact result", "resulttypeid exact other");
26
        private final List<String> PROJECT_FIELD_QUERIES = Arrays.asList("oaftype exact project");
27
        private final List<String> DATASOURCE_FIELD_QUERIES = Arrays.asList("oaftype exact datasource", "(datasourcecompatibilityid <> \"UNKNOWN\")");
28
        private final List<String> ORGANIZATION_FIELD_QUERIES = Arrays.asList("oaftype exact organization",
29
                "reldatasourcecompatibilityid exact driver or reldatasourcecompatibilityid exact driver-openaire2.0 or " +
30
                "reldatasourcecompatibilityid exact openaire2.0 or reldatasourcecompatibilityid exact openaire3.0 or " +
31
                "reldatasourcecompatibilityid exact openaire2.0_data or reldatasourcecompatibilityid exact hostedBy or relproject=*");
32

    
33
        private final List<String> PERSON_FIELD_QUERIES = Arrays.asList("oaftype exact person");
34

    
35
        private String value;
36
        Entity(String value) {
37
            this.value = value;
38
        }
39
        private String getValue() {
40
            return value;
41
        }
42

    
43
        @Override
44
        public String toString() {
45
            return this.getValue();
46
        }
47

    
48
        public String getQueryPrefix() {
49
            switch (this) {
50
                case PUBLICATION:
51
                    return PUBLICATION_PREFIX;
52

    
53
                case DATASET:
54
                    return DATASET_PREFIX;
55

    
56
                case SOFTWARE:
57
                    return SOFTWARE_PREFIX;
58

    
59
                case OTHER:
60
                    return OTHER_PREFIX;
61

    
62
                case PROJECT:
63
                    return PROJECT_PREFIX;
64

    
65
                case DATASOURCE:
66
                    return DATASOURCE_PREFIX;
67

    
68
                case ORGANIZATION:
69
                    return ORGANIZATION_PREFIX;
70

    
71
                case PERSON:
72
                    return PERSON_PREFIX;
73

    
74
                case NONE:
75
                    return "";
76

    
77
                default:
78
                    throw new IllegalArgumentException();
79
            }
80

    
81
        }
82

    
83
        public String getPlural() {
84
            switch (this) {
85
                case PUBLICATION:
86
                    return "publications";
87

    
88
                case DATASET:
89
                    return "datasets";
90

    
91
                case SOFTWARE:
92
                    return "software";
93

    
94
                case OTHER:
95
                    return "other";
96

    
97
                case PROJECT:
98
                    return "projects";
99

    
100
                case DATASOURCE:
101
                    return "datasources";
102

    
103
                case ORGANIZATION:
104
                    return "organizations";
105

    
106
                case PERSON:
107
                    return "people";
108

    
109
                case NONE:
110
                    return "resources";
111

    
112
                default:
113
                    throw new IllegalArgumentException();
114
            }
115
        }
116

    
117
        public List<String> getFieldQueries() {
118
            switch (this) {
119
                case PUBLICATION:
120
                    return PUBLICATION_FIELD_QUERIES;
121

    
122
                case DATASET:
123
                    return DATASET_FIELD_QUERIES;
124

    
125
                case SOFTWARE:
126
                    return SOFTWARE_FIELD_QUERIES;
127

    
128
                case OTHER:
129
                    return OTHER_FIELD_QUERIES;
130

    
131
                case PROJECT:
132
                    return PROJECT_FIELD_QUERIES;
133

    
134
                case DATASOURCE:
135
                    return DATASOURCE_FIELD_QUERIES;
136

    
137
                case ORGANIZATION:
138
                    return ORGANIZATION_FIELD_QUERIES;
139

    
140
                case PERSON:
141
                    return PERSON_FIELD_QUERIES;
142

    
143
                default:
144
                    throw new IllegalArgumentException();
145
            }
146

    
147
        }
148

    
149
    }
150

    
151
    public final static String PUBLICATION_PREFIX = "(oaftype exact result) and (resulttypeid exact publication)";
152
    public final static String DATASET_PREFIX = "(oaftype exact result) and (resulttypeid exact dataset)";
153
    public final static String SOFTWARE_PREFIX = "(oaftype exact result) and (resulttypeid exact software)";
154
    public final static String OTHER_PREFIX = "(oaftype exact result) and (resulttypeid exact other)";
155
    public final static String PROJECT_PREFIX = "(oaftype exact project)";
156
    public final static String DATASOURCE_PREFIX = "(oaftype exact datasource) and (datasourcecompatibilityid <> \"UNKNOWN\")";
157
    public final static String ORGANIZATION_PREFIX = "(oaftype exact organization and " +
158
            "(reldatasourcecompatibilityid=driver or reldatasourcecompatibilityid=driver-openaire2.0 or " +
159
            "reldatasourcecompatibilityid=openaire2.0 or reldatasourcecompatibilityid=openaire3.0 or " +
160
            "reldatasourcecompatibilityid=openaire2.0_data or reldatasourcecompatibilityid=hostedBy " +
161
            "or relproject=*)";
162
    public final static String PERSON_PREFIX = "(oaftype exact person)";
163

    
164

    
165

    
166
}
    (1-1/1)