Project

General

Profile

« Previous | Next » 

Revision 52078

We also have some date as ISO DateTime with Zone...

View differences:

modules/dnet-mapreduce-jobs/branches/beta/src/main/java/eu/dnetlib/data/mapreduce/hbase/oai/OaiFeedMapper.java
2 2

  
3 3
import java.io.IOException;
4 4
import java.net.UnknownHostException;
5
import java.text.ParseException;
5
import java.time.LocalDateTime;
6
import java.time.ZoneId;
7
import java.time.format.DateTimeFormatter;
6 8
import java.util.Collection;
7 9
import java.util.Date;
8 10
import java.util.Map;
......
179 181
		}
180 182
	}
181 183

  
182
	protected Date parseDate(final String date){
184
	protected Date parseDate(final String date) {
185
		// date should be in the form: 2017-12-18 or 2017-12-18T12:00:04+00:00 or 2014-10-12T15:54:02.43Z or 2014-10-12T15:54:02.432Z or 2014-10-12T15:54:02.4Z
183 186
		try {
184
			// date will be in the form: 2017-12-18T12:00:04+00:00 or 2014-10-12T15:54:02.43Z
185
			return org.apache.commons.lang.time.DateUtils.parseDate(
186
					date,
187
					new String[]{ "yyyy-MM-dd'T'HH:mm:ssXXX", "yyyy-MM-dd'T'HH:mm:ssZ" });
188
		} catch (ParseException e) {
189
			e.printStackTrace(System.err);
190
			throw new RuntimeException(e);
187
			LocalDateTime d = LocalDateTime.parse(date, DateTimeFormatter.ISO_ZONED_DATE_TIME);
188
			return Date.from(d.atZone(ZoneId.systemDefault()).toInstant());
189
		}catch(Exception dateException){
190
			try {
191
				return org.apache.commons.lang.time.DateUtils.parseDate(
192
						date,
193
						new String[] { "yyyy-MM-dd", "yyyy-MM-dd'T'HH:mm:ssXXX", "yyyy-MM-dd'T'HH:mm:ss.SSSX", "yyyy-MM-dd'T'HH:mm:ssZ",
194
								"yyyy-MM-dd'T'HH:mm:ss.SX" });
195
			}catch(Exception dateException2){
196
				dateException2.printStackTrace(System.err);
197
				throw new RuntimeException(dateException2);
198
			}
191 199
		}
192 200
	}
193 201

  
modules/dnet-oai-store-service/trunk/src/test/java/eu/dnetlib/data/oai/store/mongo/RecordInfoGeneratorTest.java
17 17
import org.junit.Test;
18 18
import org.springframework.core.io.ClassPathResource;
19 19

  
20
import static java.time.format.DateTimeFormatter.ofPattern;
21

  
20 22
/**
21 23
 * RecordInfoGenerator Tester.
22 24
 *
......
52 54
	public void parseDatestamp(){
53 55
		String thedate = "2018-02-13T15:02:16.122Z";
54 56
		//Because DateTimeFormatter.ISO_INSTANT does not work
55
		DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSX");
57
		DateTimeFormatter dtf = ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSX");
56 58
		//DateTimeFormatter formatter = new DateTimeFormatterBuilder(DateTimeFormatter.ISO_INSTANT).appendInstant(3).toFormatter();
57 59
		LocalDateTime d = LocalDateTime.parse(thedate, dtf);
58 60
		Date utilDate = Date.from(d.atZone(ZoneId.systemDefault()).toInstant());
......
72 74
		String theDate = "2018-02-13T15:02:16.122Z";
73 75
		//		org.apache.commons.lang.time.DateUtils.parseDate(
74 76
		//				theDate,
75
		//				new String[]{ "yyyy-MM-dd'T'HH:mm:ss.SX" });
77
		//				new String[]{ "yyyy-MM-dd'T'HH:mm:ss.SSSX" });
76 78
		gen.parseDate(theDate);
77 79
	}
78 80

  
79 81

  
82
	@Test
83
	public void parseDatestamp3() throws ParseException {
84
		String theDate = "2017-12-12T17:06:28.537+01:00";
85
//		LocalDateTime d = LocalDateTime.parse(theDate, DateTimeFormatter.ISO_ZONED_DATE_TIME);
86
//		Date utilDate = Date.from(d.atZone(ZoneId.systemDefault()).toInstant());
87
		gen.parseDate(theDate);
88
	}
80 89

  
90

  
81 91
	private Binary createCompressRecord(final String record) throws IOException {
82 92
		ByteArrayOutputStream os = new ByteArrayOutputStream();
83 93
		ZipOutputStream zos = new ZipOutputStream(os);

Also available in: Unified diff