Revision 42191
Added by Sandro La Bruzzo almost 8 years ago
MongoQueryParser.java | ||
---|---|---|
1 | 1 |
package eu.dnetlib.oai.parser; |
2 | 2 |
|
3 | 3 |
import java.io.IOException; |
4 |
import java.time.LocalDate; |
|
4 | 5 |
import java.time.LocalDateTime; |
6 |
import java.time.ZoneId; |
|
5 | 7 |
import java.time.format.DateTimeFormatter; |
8 |
import java.util.Date; |
|
6 | 9 |
import java.util.List; |
7 | 10 |
|
8 |
import org.apache.commons.lang3.StringUtils; |
|
9 |
import org.apache.commons.logging.Log; |
|
10 |
import org.apache.commons.logging.LogFactory; |
|
11 |
import org.bson.conversions.Bson; |
|
12 |
import org.bson.types.ObjectId; |
|
13 |
import org.z3950.zing.cql.CQLAndNode; |
|
14 |
import org.z3950.zing.cql.CQLBooleanNode; |
|
15 |
import org.z3950.zing.cql.CQLNode; |
|
16 |
import org.z3950.zing.cql.CQLNotNode; |
|
17 |
import org.z3950.zing.cql.CQLOrNode; |
|
18 |
import org.z3950.zing.cql.CQLParseException; |
|
19 |
import org.z3950.zing.cql.CQLParser; |
|
20 |
import org.z3950.zing.cql.CQLTermNode; |
|
21 |
|
|
22 | 11 |
import com.google.common.collect.Lists; |
23 | 12 |
import com.mongodb.BasicDBObject; |
24 | 13 |
import com.mongodb.BasicDBObjectBuilder; |
25 |
|
|
26 | 14 |
import eu.dnetlib.index.parse.Relation; |
27 | 15 |
import eu.dnetlib.index.parse.Relations; |
28 | 16 |
import eu.dnetlib.oai.conf.OAIConfigurationReader; |
29 | 17 |
import eu.dnetlib.rmi.provision.OaiPublisherRuntimeException; |
18 |
import org.apache.commons.lang3.StringUtils; |
|
19 |
import org.apache.commons.logging.Log; |
|
20 |
import org.apache.commons.logging.LogFactory; |
|
21 |
import org.bson.conversions.Bson; |
|
22 |
import org.bson.types.ObjectId; |
|
23 |
import org.z3950.zing.cql.*; |
|
30 | 24 |
|
31 | 25 |
/** |
32 | 26 |
* Instances of this class parse query string into mongo DBObject query. |
... | ... | |
172 | 166 |
*/ |
173 | 167 |
if (date.onlyDate) { |
174 | 168 |
fromDate = date.date.plusDays(1); |
175 |
mongoQueryObject.put(indexName, new BasicDBObject("$lt", fromDate.toLocalDate()));
|
|
169 |
mongoQueryObject.put(indexName, new BasicDBObject("$lt", Date.from(fromDate.atZone(ZoneId.systemDefault()).toInstant())));
|
|
176 | 170 |
} else { |
177 |
mongoQueryObject.put(indexName, new BasicDBObject("$lte", fromDate.toLocalDate()));
|
|
171 |
mongoQueryObject.put(indexName, new BasicDBObject("$lte", Date.from(fromDate.atZone(ZoneId.systemDefault()).toInstant())));
|
|
178 | 172 |
} |
179 | 173 |
break; |
180 | 174 |
default: |
... | ... | |
213 | 207 |
|
214 | 208 |
final DateTimeFormatter dateNoTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); |
215 | 209 |
final DateTimeFormatter iso8601NoMsTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssZ"); |
216 |
final DateTimeFormatter iso8601Formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss'.'SSSZ");
|
|
210 |
final DateTimeFormatter iso8601Formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss'.'SSS'Z'");
|
|
217 | 211 |
OAIDate res = null; |
218 | 212 |
try { |
219 | 213 |
log.debug("Using default " + iso8601Formatter.getClass()); |
... | ... | |
227 | 221 |
res = new OAIDate(dt, false); |
228 | 222 |
} catch (final Exception ex) { |
229 | 223 |
log.debug("Switching to simple date formatter: yyyy-MM-dd"); |
230 |
final LocalDateTime dt = LocalDateTime.parse(date, dateNoTimeFormatter);
|
|
224 |
final LocalDateTime dt = LocalDate.parse(date, dateNoTimeFormatter).atTime(0, 0);
|
|
231 | 225 |
res = new OAIDate(dt, true); |
232 | 226 |
} |
233 | 227 |
} |
Also available in: Unified diff
fixed Test