Skip to content

Commit ac4fd63

Browse files
committed
prepared time-locator implementation
1 parent 4285da5 commit ac4fd63

File tree

3 files changed

+51
-0
lines changed

3 files changed

+51
-0
lines changed

core/src/main/java/com/bc/fiduceo/reader/smos/SmosL1CDailyGriddedReader.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import java.nio.file.Files;
2727
import java.util.ArrayList;
2828
import java.util.Calendar;
29+
import java.util.Date;
2930
import java.util.List;
3031

3132
class SmosL1CDailyGriddedReader extends NetCDFReader {
@@ -300,4 +301,23 @@ static MultiLineString createMultiLineStringFromMinMax(double[] geoMinMax, Geome
300301

301302
return geometryFactory.createMultiLineString(lines);
302303
}
304+
305+
// package access for testing only tb 2022-09-29
306+
static Date cfiDateToUtc(int days, long seconds, long microseconds) {
307+
final Calendar calendar = TimeUtils.getUTCCalendar();
308+
309+
calendar.set(Calendar.YEAR, 2000);
310+
calendar.set(Calendar.MONTH, 0);
311+
calendar.set(Calendar.DAY_OF_MONTH, 1);
312+
calendar.set(Calendar.HOUR_OF_DAY, 0);
313+
calendar.set(Calendar.MINUTE, 0);
314+
calendar.set(Calendar.SECOND, 0);
315+
calendar.set(Calendar.MILLISECOND, 0);
316+
317+
calendar.add(Calendar.DATE, days);
318+
calendar.add(Calendar.SECOND, (int) seconds);
319+
calendar.add(Calendar.MILLISECOND, (int) (microseconds * 0.001));
320+
321+
return calendar.getTime();
322+
}
303323
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.bc.fiduceo.reader.smos;
2+
3+
import com.bc.fiduceo.reader.time.TimeLocator;
4+
5+
class SmosL1CTimeLocator implements TimeLocator {
6+
7+
@Override
8+
public long getTimeFor(int x, int y) {
9+
return 0;
10+
}
11+
}

core/src/test/java/com/bc/fiduceo/reader/smos/SmosL1cDailyGriddedReaderTest.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,17 @@
55
import com.bc.fiduceo.geometry.Point;
66
import com.bc.fiduceo.geometry.Polygon;
77
import com.bc.fiduceo.reader.Reader;
8+
import com.bc.fiduceo.util.TimeUtils;
89
import org.junit.Test;
910
import ucar.ma2.Array;
1011

12+
import java.util.Date;
1113
import java.util.regex.Matcher;
1214
import java.util.regex.Pattern;
1315

1416
import static org.junit.Assert.*;
1517

18+
@SuppressWarnings("resource")
1619
public class SmosL1cDailyGriddedReaderTest {
1720

1821
@Test
@@ -116,4 +119,21 @@ public void testCreateMultiLineStringFromMinMax() {
116119
assertEquals("POINT(0.0 87.0)", coordinates[2].toString());
117120
assertEquals("POINT(0.0 -78.0)", coordinates[3].toString());
118121
}
122+
123+
@Test
124+
public void testCfiDateToUtc() {
125+
Date date = SmosL1CDailyGriddedReader.cfiDateToUtc(0, 0, 0);
126+
assertEquals("01-Jan-2000 00:00:00", TimeUtils.format(date));
127+
128+
date = SmosL1CDailyGriddedReader.cfiDateToUtc(1, 0, 0);
129+
assertEquals("02-Jan-2000 00:00:00", TimeUtils.format(date));
130+
131+
date = SmosL1CDailyGriddedReader.cfiDateToUtc(1, 10, 0);
132+
long timeWithoutMillis = date.getTime();
133+
assertEquals("02-Jan-2000 00:00:10", TimeUtils.format(date));
134+
135+
date = SmosL1CDailyGriddedReader.cfiDateToUtc(1, 10, 100000); // last argument is microsecond, date can only handle millis ...
136+
assertEquals("02-Jan-2000 00:00:10", TimeUtils.format(date));
137+
assertEquals(timeWithoutMillis + 100, date.getTime());
138+
}
119139
}

0 commit comments

Comments
 (0)