Project

General

Profile

1
package eu.dnetlib.oai.info;
2

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

    
6
import eu.dnetlib.oai.BadResumptionTokenException;
7
import org.apache.commons.lang3.StringEscapeUtils;
8
import org.apache.commons.lang3.StringUtils;
9

    
10
public class ResumptionTokenImpl implements ResumptionToken {
11

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

    
25
	/**
26
	 * Number of already read records.
27
	 */
28
	private int nRead;
29

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

    
35
	/**
36
	 * Requested set. Optional.
37
	 */
38
	private String requestedSet = "";
39

    
40
	private boolean hasDateRange = false;
41

    
42
	/**
43
	 * {@inheritDoc}
44
	 */
45
	@Override
46
	public String serialize() {
47
		String escapedQuery = StringEscapeUtils.escapeXml11(query);
48
		List<String> info = Arrays.asList("" + nMaxElements, metadataPrefix, escapedQuery, "" + nRead, lastObjIdentifier, "" + hasDateRange, requestedSet);
49
		return StringUtils.join(info, "|");
50

    
51
	}
52

    
53
	/**
54
	 * {@inheritDoc}
55
	 *
56
	 * @throws BadResumptionTokenException
57
	 */
58
	@Override
59
	public void deserialize(final String token) throws BadResumptionTokenException {
60
		String[] info = token.split("\\|");
61
		if (info.length < 6) throw new BadResumptionTokenException(token);
62
		this.nMaxElements = Integer.parseInt(info[0]);
63
		this.metadataPrefix = info[1];
64
		String unescapedQuery = StringEscapeUtils.unescapeXml(info[2]);
65
		this.query = unescapedQuery;
66
		this.nRead = Integer.parseInt(info[3]);
67
		this.lastObjIdentifier = info[4];
68
		this.hasDateRange = Boolean.valueOf(info[5]);
69
		if (info.length == 7) {
70
			this.requestedSet = info[6];
71
		}
72
	}
73

    
74
	/**
75
	 * {@inheritDoc}
76
	 */
77
	@Override
78
	public int getnMaxElements() {
79
		return nMaxElements;
80
	}
81

    
82
	/**
83
	 * {@inheritDoc}
84
	 */
85
	@Override
86
	public void setnMaxElements(final int nMaxElements) {
87
		this.nMaxElements = nMaxElements;
88
	}
89

    
90
	/**
91
	 * {@inheritDoc}
92
	 */
93
	@Override
94
	public String getMetadataPrefix() {
95
		return metadataPrefix;
96
	}
97

    
98
	/**
99
	 * {@inheritDoc}
100
	 */
101
	@Override
102
	public void setMetadataPrefix(final String metadataPrefix) {
103
		this.metadataPrefix = metadataPrefix;
104
	}
105

    
106
	/**
107
	 * {@inheritDoc}
108
	 */
109
	@Override
110
	public String getQuery() {
111
		return query;
112
	}
113

    
114
	/**
115
	 * {@inheritDoc}
116
	 */
117
	@Override
118
	public void setQuery(final String query) {
119
		this.query = query;
120
	}
121

    
122
	/**
123
	 * {@inheritDoc}
124
	 */
125
	@Override
126
	public int getnRead() {
127
		return nRead;
128
	}
129

    
130
	/**
131
	 * {@inheritDoc}
132
	 */
133
	@Override
134
	public void setnRead(final int nRead) {
135
		this.nRead = nRead;
136
	}
137

    
138
	/**
139
	 * {@inheritDoc}
140
	 */
141
	@Override
142
	public String getLastObjIdentifier() {
143
		return lastObjIdentifier;
144
	}
145

    
146
	/**
147
	 * {@inheritDoc}
148
	 */
149
	@Override
150
	public void setLastObjIdentifier(final String lastObjIdentifier) {
151
		this.lastObjIdentifier = lastObjIdentifier;
152
	}
153

    
154
	/**
155
	 * {@inheritDoc}
156
	 */
157
	@Override
158
	public String getRequestedSet() {
159
		return requestedSet;
160
	}
161

    
162
	/**
163
	 * {@inheritDoc}
164
	 */
165
	@Override
166
	public void setRequestedSet(final String requestedSet) {
167
		this.requestedSet = requestedSet;
168
	}
169

    
170
	/**
171
	 * {@inheritDoc}
172
	 */
173
	@Override
174
	public boolean hasDateRange() {
175
		return this.hasDateRange;
176
	}
177

    
178
	/**
179
	 * {@inheritDoc}
180
	 */
181
	@Override
182
	public void setDateRange(final boolean hasDateRange) {
183
		this.hasDateRange = hasDateRange;
184
	}
185

    
186
	@Override
187
	public String toString() {
188
		return "ResumptionTokenImpl [nMaxElements=" + nMaxElements + ", metadataPrefix=" + metadataPrefix + ", query=" + query + ", nRead=" + nRead
189
				+ ", lastObjIdentifier=" + lastObjIdentifier + ", hasDateRange=" + hasDateRange + ", requestedSet=" + requestedSet + "]";
190
	}
191

    
192
}
(5-5/6)