Project

General

Profile

1
package eu.dnetlib.pace.model;
2

    
3
import java.util.Collection;
4
import java.util.Iterator;
5
import java.util.List;
6
import java.util.ListIterator;
7
import java.util.stream.Collectors;
8

    
9
import com.google.common.base.Joiner;
10
import com.google.common.collect.Iterables;
11
import com.google.common.collect.Lists;
12
import com.google.gson.Gson;
13
import eu.dnetlib.pace.config.Type;
14

    
15
/**
16
 * The Class FieldListImpl.
17
 */
18
public class FieldListImpl extends AbstractField implements FieldList {
19

    
20
	/** The fields. */
21
	private List<Field> fields;
22

    
23
	/**
24
	 * Instantiates a new field list impl.
25
	 */
26
	public FieldListImpl() {
27
		fields = Lists.newArrayList();
28
	}
29

    
30
	/**
31
	 * Instantiates a new field list impl.
32
	 *
33
	 * @param name
34
	 *            the name
35
	 */
36
	public FieldListImpl(final String name, final Type type) {
37
		super(type, name);
38
		fields = Lists.newArrayList();
39
	}
40

    
41
	/*
42
	 * (non-Javadoc)
43
	 * 
44
	 * @see java.util.List#add(java.lang.Object)
45
	 */
46
	@Override
47
	public boolean add(final Field f) {
48
		return fields.add(f);
49
	}
50

    
51
	/*
52
	 * (non-Javadoc)
53
	 * 
54
	 * @see java.util.List#add(int, java.lang.Object)
55
	 */
56
	@Override
57
	public void add(final int i, final Field f) {
58
		fields.add(i, f);
59
	}
60

    
61
	/*
62
	 * (non-Javadoc)
63
	 * 
64
	 * @see java.util.List#addAll(java.util.Collection)
65
	 */
66
	@Override
67
	public boolean addAll(final Collection<? extends Field> f) {
68
		return fields.addAll(f);
69
	}
70

    
71
	/*
72
	 * (non-Javadoc)
73
	 * 
74
	 * @see java.util.List#addAll(int, java.util.Collection)
75
	 */
76
	@Override
77
	public boolean addAll(final int i, final Collection<? extends Field> f) {
78
		return fields.addAll(i, f);
79
	}
80

    
81
	/*
82
	 * (non-Javadoc)
83
	 * 
84
	 * @see java.util.List#clear()
85
	 */
86
	@Override
87
	public void clear() {
88
		fields.clear();
89
	}
90

    
91
	/*
92
	 * (non-Javadoc)
93
	 * 
94
	 * @see java.util.List#contains(java.lang.Object)
95
	 */
96
	@Override
97
	public boolean contains(final Object o) {
98
		return fields.contains(o);
99
	}
100

    
101
	/*
102
	 * (non-Javadoc)
103
	 * 
104
	 * @see java.util.List#containsAll(java.util.Collection)
105
	 */
106
	@Override
107
	public boolean containsAll(final Collection<?> f) {
108
		return fields.containsAll(f);
109
	}
110

    
111
	/*
112
	 * (non-Javadoc)
113
	 * 
114
	 * @see java.util.List#get(int)
115
	 */
116
	@Override
117
	public Field get(final int i) {
118
		return fields.get(i);
119
	}
120

    
121
	/*
122
	 * (non-Javadoc)
123
	 * 
124
	 * @see java.util.List#indexOf(java.lang.Object)
125
	 */
126
	@Override
127
	public int indexOf(final Object o) {
128
		return fields.indexOf(o);
129
	}
130

    
131
	/*
132
	 * (non-Javadoc)
133
	 * 
134
	 * @see eu.dnetlib.pace.model.Field#isEmpty()
135
	 */
136
	@Override
137
	public boolean isEmpty() {
138
		return Iterables.all(fields, f -> f.isEmpty());
139
	}
140

    
141
	/*
142
	 * (non-Javadoc)
143
	 * 
144
	 * @see java.lang.Iterable#iterator()
145
	 */
146
	@Override
147
	public Iterator<Field> iterator() {
148
		return fields.iterator();
149
	}
150

    
151
	/*
152
	 * (non-Javadoc)
153
	 * 
154
	 * @see java.util.List#lastIndexOf(java.lang.Object)
155
	 */
156
	@Override
157
	public int lastIndexOf(final Object o) {
158
		return fields.lastIndexOf(o);
159
	}
160

    
161
	/*
162
	 * (non-Javadoc)
163
	 * 
164
	 * @see java.util.List#listIterator()
165
	 */
166
	@Override
167
	public ListIterator<Field> listIterator() {
168
		return fields.listIterator();
169
	}
170

    
171
	/*
172
	 * (non-Javadoc)
173
	 * 
174
	 * @see java.util.List#listIterator(int)
175
	 */
176
	@Override
177
	public ListIterator<Field> listIterator(final int i) {
178
		return fields.listIterator(i);
179
	}
180

    
181
	/*
182
	 * (non-Javadoc)
183
	 * 
184
	 * @see java.util.List#remove(java.lang.Object)
185
	 */
186
	@Override
187
	public boolean remove(final Object o) {
188
		return fields.remove(o);
189
	}
190

    
191
	/*
192
	 * (non-Javadoc)
193
	 * 
194
	 * @see java.util.List#remove(int)
195
	 */
196
	@Override
197
	public Field remove(final int i) {
198
		return fields.remove(i);
199
	}
200

    
201
	/*
202
	 * (non-Javadoc)
203
	 * 
204
	 * @see java.util.List#removeAll(java.util.Collection)
205
	 */
206
	@Override
207
	public boolean removeAll(final Collection<?> f) {
208
		return fields.removeAll(f);
209
	}
210

    
211
	/*
212
	 * (non-Javadoc)
213
	 * 
214
	 * @see java.util.List#retainAll(java.util.Collection)
215
	 */
216
	@Override
217
	public boolean retainAll(final Collection<?> f) {
218
		return fields.retainAll(f);
219
	}
220

    
221
	/*
222
	 * (non-Javadoc)
223
	 * 
224
	 * @see java.util.List#set(int, java.lang.Object)
225
	 */
226
	@Override
227
	public Field set(final int i, final Field f) {
228
		return fields.set(i, f);
229
	}
230

    
231
	/*
232
	 * (non-Javadoc)
233
	 * 
234
	 * @see java.util.List#size()
235
	 */
236
	@Override
237
	public int size() {
238
		return fields.size();
239
	}
240

    
241
	/*
242
	 * (non-Javadoc)
243
	 * 
244
	 * @see java.util.List#subList(int, int)
245
	 */
246
	@Override
247
	public List<Field> subList(final int from, final int to) {
248
		return fields.subList(from, to);
249
	}
250

    
251
	/*
252
	 * (non-Javadoc)
253
	 * 
254
	 * @see java.util.List#toArray()
255
	 */
256
	@Override
257
	public Object[] toArray() {
258
		return fields.toArray();
259
	}
260

    
261
	/*
262
	 * (non-Javadoc)
263
	 * 
264
	 * @see java.util.List#toArray(java.lang.Object[])
265
	 */
266
	@Override
267
	public <T> T[] toArray(final T[] t) {
268
		return fields.toArray(t);
269
	}
270

    
271
	/*
272
	 * (non-Javadoc)
273
	 * 
274
	 * @see eu.dnetlib.pace.model.Field#stringValue()
275
	 */
276
	@Override
277
	public String stringValue() {
278
		switch (getType()) {
279

    
280
		case List:
281
		case Int:
282
		case String:
283
			return Joiner.on(" ").join(stringList());
284
		case JSON:
285
			final String json = new Gson().toJson(stringList());
286
			return json;
287
		default:
288
			throw new IllegalArgumentException("Unknown type: " + getType().toString());
289
		}
290
	}
291

    
292
	/*
293
	 * (non-Javadoc)
294
	 * 
295
	 * @see eu.dnetlib.pace.model.FieldList#stringList()
296
	 */
297
	@Override
298
	public List<String> stringList() {
299
		//System.out.println("FieldListImpl.stringList:" + fields);
300
		return fields.stream().map(f -> f.stringValue()).collect(Collectors.toList());
301
	}
302

    
303
	@Override
304
	public String toString() {
305
		return stringList().toString();
306
	}
307

    
308
}
(8-8/15)