Project

General

Profile

1
package eu.dnetlib.data.information.oai.publisher.info;
2

    
3
import java.util.List;
4

    
5
import org.apache.commons.lang3.StringEscapeUtils;
6
import org.apache.commons.lang3.StringUtils;
7

    
8
import com.google.common.collect.Lists;
9

    
10
import eu.dnetlib.data.information.oai.publisher.BadResumptionTokenException;
11

    
12
public class ResumptionTokenImpl implements ResumptionToken {
13

    
14
	/**
15
	 * Total number of documents.
16
	 */
17
	private int nMaxElements;
18
	/**
19
	 * Requested metadata prefix.
20
	 */
21
	private String metadataPrefix;
22
	/**
23
	 * Query to use generate the requested records.
24
	 */
25
	private String query;
26

    
27
	/**
28
	 * Number of already read records.
29
	 */
30
	private int nRead;
31

    
32
	/**
33
	 * objIdentifier of the last read document.
34
	 */
35
	private String lastObjIdentifier;
36

    
37
	/**
38
	 * Requested set. Optional.
39
	 */
40
	private String requestedSet = "";
41

    
42
	private boolean hasDateRange = false;
43

    
44
	/**
45
	 * 
46
	 * {@inheritDoc}
47
	 * 
48
	 * @see eu.dnetlib.data.information.oai.publisher.info.ResumptionToken#serialize()
49
	 */
50
	@Override
51
	public String serialize() {
52
		String escapedQuery = StringEscapeUtils.escapeXml11(query);
53
		List<String> info = Lists.newArrayList("" + nMaxElements, metadataPrefix, escapedQuery, "" + nRead, lastObjIdentifier, "" + hasDateRange, requestedSet);
54
		// try {
55
		return StringUtils.join(info, "|");
56
		// String encoded = URLEncoder.encode(StringUtils.join(info, "|"), "UTF-8");
57
		// return encoded;
58
		// } catch (UnsupportedEncodingException e) {
59
		// throw new OaiPublisherRuntimeException(e);
60
		// }
61
	}
62

    
63
	/**
64
	 * 
65
	 * {@inheritDoc}
66
	 * 
67
	 * @throws BadResumptionTokenException
68
	 * 
69
	 * @see eu.dnetlib.data.information.oai.publisher.info.ResumptionToken#deserialize(java.lang.String)
70
	 */
71
	@Override
72
	public void deserialize(final String token) throws BadResumptionTokenException {
73
		// String decoded;
74
		// try {
75
		// decoded = URLDecoder.decode(token, "UTF-8");
76
		// } catch (UnsupportedEncodingException e) {
77
		// throw new OaiPublisherRuntimeException(e);
78
		// }
79
		// String[] info = StringUtils.split(decoded, "|");
80
		String[] info = token.split("\\|");
81
		if (info.length < 6) throw new BadResumptionTokenException(token);
82
		this.nMaxElements = Integer.parseInt(info[0]);
83
		this.metadataPrefix = info[1];
84
		String unescapedQuery = StringEscapeUtils.unescapeXml(info[2]);
85
		this.query = unescapedQuery;
86
		this.nRead = Integer.parseInt(info[3]);
87
		this.lastObjIdentifier = info[4];
88
		this.hasDateRange = Boolean.valueOf(info[5]);
89
		if (info.length == 7) {
90
			this.requestedSet = info[6];
91
		}
92
	}
93

    
94
	/**
95
	 * 
96
	 * {@inheritDoc}
97
	 * 
98
	 * @see eu.dnetlib.data.information.oai.publisher.info.ResumptionToken#getnMaxElements()
99
	 */
100
	@Override
101
	public int getnMaxElements() {
102
		return nMaxElements;
103
	}
104

    
105
	/**
106
	 * 
107
	 * {@inheritDoc}
108
	 * 
109
	 * @see eu.dnetlib.data.information.oai.publisher.info.ResumptionToken#setnMaxElements(int)
110
	 */
111
	@Override
112
	public void setnMaxElements(final int nMaxElements) {
113
		this.nMaxElements = nMaxElements;
114
	}
115

    
116
	/**
117
	 * 
118
	 * {@inheritDoc}
119
	 * 
120
	 * @see eu.dnetlib.data.information.oai.publisher.info.ResumptionToken#getMetadataPrefix()
121
	 */
122
	@Override
123
	public String getMetadataPrefix() {
124
		return metadataPrefix;
125
	}
126

    
127
	/**
128
	 * 
129
	 * {@inheritDoc}
130
	 * 
131
	 * @see eu.dnetlib.data.information.oai.publisher.info.ResumptionToken#setMetadataPrefix(java.lang.String)
132
	 */
133
	@Override
134
	public void setMetadataPrefix(final String metadataPrefix) {
135
		this.metadataPrefix = metadataPrefix;
136
	}
137

    
138
	/**
139
	 * 
140
	 * {@inheritDoc}
141
	 * 
142
	 * @see eu.dnetlib.data.information.oai.publisher.info.ResumptionToken#getQuery()
143
	 */
144
	@Override
145
	public String getQuery() {
146
		return query;
147
	}
148

    
149
	/**
150
	 * 
151
	 * {@inheritDoc}
152
	 * 
153
	 * @see eu.dnetlib.data.information.oai.publisher.info.ResumptionToken#setQuery(java.lang.String)
154
	 */
155
	@Override
156
	public void setQuery(final String query) {
157
		this.query = query;
158
	}
159

    
160
	/**
161
	 * 
162
	 * {@inheritDoc}
163
	 * 
164
	 * @see eu.dnetlib.data.information.oai.publisher.info.ResumptionToken#getnRead()
165
	 */
166
	@Override
167
	public int getnRead() {
168
		return nRead;
169
	}
170

    
171
	/**
172
	 * 
173
	 * {@inheritDoc}
174
	 * 
175
	 * @see eu.dnetlib.data.information.oai.publisher.info.ResumptionToken#setnRead(int)
176
	 */
177
	@Override
178
	public void setnRead(final int nRead) {
179
		this.nRead = nRead;
180
	}
181

    
182
	/**
183
	 * 
184
	 * {@inheritDoc}
185
	 * 
186
	 * @see eu.dnetlib.data.information.oai.publisher.info.ResumptionToken#getLastObjIdentifier()
187
	 */
188
	@Override
189
	public String getLastObjIdentifier() {
190
		return lastObjIdentifier;
191
	}
192

    
193
	/**
194
	 * 
195
	 * {@inheritDoc}
196
	 * 
197
	 * @see eu.dnetlib.data.information.oai.publisher.info.ResumptionToken#setLastObjIdentifier(java.lang.String)
198
	 */
199
	@Override
200
	public void setLastObjIdentifier(final String lastObjIdentifier) {
201
		this.lastObjIdentifier = lastObjIdentifier;
202
	}
203

    
204
	/**
205
	 * 
206
	 * {@inheritDoc}
207
	 * 
208
	 * @see eu.dnetlib.data.information.oai.publisher.info.ResumptionToken#getRequestedSet()
209
	 */
210
	@Override
211
	public String getRequestedSet() {
212
		return requestedSet;
213
	}
214

    
215
	/**
216
	 * 
217
	 * {@inheritDoc}
218
	 * 
219
	 * @see eu.dnetlib.data.information.oai.publisher.info.ResumptionToken#setRequestedSet(java.lang.String)
220
	 */
221
	@Override
222
	public void setRequestedSet(final String requestedSet) {
223
		this.requestedSet = requestedSet;
224
	}
225

    
226
	/**
227
	 * 
228
	 * {@inheritDoc}
229
	 * 
230
	 * @see eu.dnetlib.data.information.oai.publisher.info.ResumptionToken#hasDateRange()
231
	 */
232
	@Override
233
	public boolean hasDateRange() {
234
		return this.hasDateRange;
235
	}
236

    
237
	/**
238
	 * 
239
	 * {@inheritDoc}
240
	 * 
241
	 * @see eu.dnetlib.data.information.oai.publisher.info.ResumptionToken#setDateRange(boolean)
242
	 */
243
	@Override
244
	public void setDateRange(final boolean hasDateRange) {
245
		this.hasDateRange = hasDateRange;
246
	}
247

    
248
	@Override
249
	public String toString() {
250
		return "ResumptionTokenImpl [nMaxElements=" + nMaxElements + ", metadataPrefix=" + metadataPrefix + ", query=" + query + ", nRead=" + nRead
251
				+ ", lastObjIdentifier=" + lastObjIdentifier + ", hasDateRange=" + hasDateRange + ", requestedSet=" + requestedSet + "]";
252
	}
253

    
254
}
(7-7/8)