Project

General

Profile

« Previous | Next » 

Revision 42191

fixed Test

View differences:

modules/dnet-data-provision-services/trunk/src/test/java/eu/dnetlib/data/oai/store/parser/MongoQueryParserTest.java
1 1
package eu.dnetlib.data.oai.store.parser;
2 2

  
3
import static org.junit.Assert.assertEquals;
4

  
5 3
import java.time.LocalDateTime;
4
import java.time.ZoneId;
6 5
import java.time.format.DateTimeFormatter;
6
import java.util.Date;
7 7

  
8
import com.google.common.collect.Lists;
9
import com.mongodb.BasicDBObject;
10
import com.mongodb.DBObject;
11
import com.mongodb.util.JSON;
12
import eu.dnetlib.oai.parser.MongoQueryParser;
8 13
import org.apache.commons.logging.Log;
9 14
import org.apache.commons.logging.LogFactory;
10 15
import org.bson.conversions.Bson;
11 16
import org.bson.types.ObjectId;
12 17
import org.junit.Test;
13 18

  
14
import com.google.common.collect.Lists;
15
import com.mongodb.BasicDBObject;
16
import com.mongodb.DBObject;
17
import com.mongodb.util.JSON;
19
import static org.junit.Assert.assertEquals;
18 20

  
19
import eu.dnetlib.oai.parser.MongoQueryParser;
20

  
21 21
public class MongoQueryParserTest {
22 22

  
23 23
	private static final Log log = LogFactory.getLog(MongoQueryParserTest.class); // NOPMD by marko on 11/24/08 5:02 PM
......
93 93

  
94 94
	@Test
95 95
	public void testParseUntilDatestamp() {
96
		final LocalDateTime dateTime = this.parseDate("2014-04-03T00:00:00.000Z");
97
		// { "$and" : [ { "oaftype" : { "$ne" : "person"}} , { "datestamp" : { "$lt" : { "$date" : "2014-04-03T00:00:00.000Z"}}}]}
96
		final Date dateTime = Date.from(this.parseDate("2014-04-03T00:00:00.000Z").atZone(ZoneId.systemDefault()).toInstant());
98 97
		final BasicDBObject expected =
99 98
				new BasicDBObject("$and", Lists.newArrayList(new BasicDBObject("oaftype", new BasicDBObject("$ne", "person")), new BasicDBObject(
100 99
						"datestamp", new BasicDBObject("$lt", dateTime))));
101
		// System.out.println(expected);
102 100
		final Bson o = this.mongoParser.parse("(oaftype <> \"person\") AND datestamp <= 2014-04-02");
101
		System.out.println("o.toString() = " + expected.toString());
102
		System.out.println("o.toString() = " + o.toString());
103

  
103 104
		assertEquals(expected, o);
104
		// System.out.println(o);
105 105
	}
106 106

  
107 107
	@Test
......
114 114
	private LocalDateTime parseDate(final String date) {
115 115
		final DateTimeFormatter dateNoTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
116 116
		final DateTimeFormatter iso8601NoMsTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssZ");
117
		final DateTimeFormatter iso8601Formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss'.'SSS'Z'");;
117
		final DateTimeFormatter iso8601Formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss'.'SSS'Z'");
118 118
		try {
119 119
			System.err.println("Using default " + iso8601Formatter.getClass());
120 120
			return LocalDateTime.parse(date, iso8601Formatter);
modules/dnet-data-provision-services/trunk/src/main/java/eu/dnetlib/oai/parser/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