List of usage examples for org.joda.time DateTime minusYears
public DateTime minusYears(int years)
From source file:ddf.metrics.plugin.webconsole.MetricsWebConsolePlugin.java
License:Open Source License
void addYearlyReportUrls(PrintWriter pw, int numYearlyReports, String metricsServiceUrl) { DateTime input = newDateTime(); LOGGER.debug("NOW: {}", input); for (int i = 1; i <= numYearlyReports; i++) { try {/* ww w . j a va 2 s . c om*/ DateMidnight startOfLastYear = new DateMidnight(input.minusYears(1).withDayOfYear(1)); String startDate = urlEncodeDate(startOfLastYear); LOGGER.debug("Previous Year (start): {} (ms = {})", startOfLastYear, startOfLastYear.getMillis()); DateTime endOfLastYear = startOfLastYear.plusYears(1).toDateTime().minus(1 /* millisecond */); String endDate = urlEncodeDate(endOfLastYear); LOGGER.debug("Previous Year (end): {}, (ms = {})", endOfLastYear, endOfLastYear.getMillis()); String urlText = startOfLastYear.toString("yyyy"); LOGGER.debug("URL text = [{}]", urlText); startTableRow(pw, i); addCellLabel(pw, urlText); addXLSCellLink(pw, startDate, endDate, metricsServiceUrl); addPPTCellLink(pw, startDate, endDate, metricsServiceUrl); endTableRow(pw); } catch (UnsupportedEncodingException e) { LOGGER.info("Unsupported encoding exception adding yearly reports", e); } } }
From source file:demos.AsynchronousRead.java
License:Apache License
@Override public void run() { try {//from ww w. ja v a 2 s . com logger.info("Preparing to read data points"); Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build(); Session session = cluster.connect("demo"); PreparedStatement query = session.prepare( "SELECT metric_id, time, value FROM metric_data WHERE metric_id = ? AND time >= ? AND time <= ?"); DateTime end = DateTime.now(); DateTime start = end.minusYears(1); final CountDownLatch latch = new CountDownLatch(NUM_METRICS); final Set<DataPoint> dataPoints = new ConcurrentSkipListSet<>( comparing(DataPoint::getTimestamp).thenComparing(DataPoint::getValue)); Stopwatch stopwatch = new Stopwatch().start(); for (int i = 0; i < NUM_METRICS; ++i) { ResultSetFuture queryFuture = session .executeAsync(query.bind("metric-" + i, start.toDate(), end.toDate())); ListenableFuture<List<DataPoint>> dataFuture = Futures.transform(queryFuture, (ResultSet resultSet) -> StreamSupport.stream(resultSet.spliterator(), false) .map(row -> new DataPoint(row.getString(0), row.getDate(1), row.getDouble(2))) .collect(toList())); Futures.addCallback(dataFuture, new FutureCallback<List<DataPoint>>() { @Override public void onSuccess(List<DataPoint> results) { dataPoints.addAll(results); latch.countDown(); } @Override public void onFailure(Throwable t) { logger.warn("There was an error reading data", t); latch.countDown(); } }); } latch.await(); stopwatch.stop(); logger.info("Retrieved {} data points in {} ms", dataPoints.size(), stopwatch.elapsed(TimeUnit.MILLISECONDS)); } catch (InterruptedException e) { logger.info("There was an interrupt while waiting for inserts to complete"); } }
From source file:demos.SynchronousRead.java
License:Apache License
public void run() { logger.info("Preparing to read data points"); Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build(); Session session = cluster.connect("demo"); PreparedStatement query = session.prepare( "SELECT metric_id, time, value FROM metric_data WHERE metric_id = ? AND time >= ? AND time <= ?"); DateTime end = DateTime.now(); DateTime start = end.minusYears(1); List<DataPoint> dataPoints = new ArrayList<>(); Stopwatch stopwatch = new Stopwatch().start(); for (int i = 0; i < NUM_METRICS; ++i) { ResultSet resultSet = session.execute(query.bind("metric-" + i, start.toDate(), end.toDate())); resultSet.forEach(//from w w w . j a v a 2s. c o m row -> dataPoints.add(new DataPoint(row.getString(0), row.getDate(1), row.getDouble(2)))); } stopwatch.stop(); logger.info("Retrieved {} data points in {} ms", dataPoints.size(), stopwatch.elapsed(TimeUnit.MILLISECONDS)); }
From source file:edu.illinois.cs.cogcomp.temporal.normalizer.main.timex2interval.ModifiedDate.java
License:Open Source License
/** * * @param start the start point (anchor time) of the Phrase * @param temporalPhrase//w w w . j a va2s.c o m * @return */ public static TimexChunk ModifiedRule(DateTime start, TemporalPhrase temporalPhrase) { String phrase = temporalPhrase.getPhrase(); phrase = phrase.trim(); // ###################################################preprocess // 1################################################ String preprocess = "\\A(" + timeofDay + "|" + modIndicator + ")\\s*(" + weekday + ")\\Z"; Pattern pattern11 = Pattern.compile(preprocess); Matcher matcher11 = pattern11.matcher(phrase); boolean matcher11Found = matcher11.find(); if (matcher11Found) { TimexChunk tc = new TimexChunk(); tc.addAttribute(TimexNames.type, TimexNames.DATE); String secondphrase = new String(); // split the Phrase into two parts // TODO: write converter to convert TIMEX3 to datepoint String firstphrase = "this" + matcher11.group(2); tc = ModifiedDate.ModifiedRule(start, new TemporalPhrase(firstphrase, temporalPhrase.getTense())); if (matcher11.group(1).contains("early") || matcher11.group(1).contains("earlier")) { tc.addAttribute(TimexNames.mod, TimexNames.START); } else if (matcher11.group(1).contains("late") || matcher11.group(1).contains("later")) { tc.addAttribute(TimexNames.mod, TimexNames.END); } else { secondphrase = matcher11.group(1); String revertStr = firstphrase + " " + secondphrase; temporalPhrase.setPhrase(revertStr); return ModifiedDate.ModifiedRule(start, temporalPhrase); } return tc; } // ###################################################preprocess // 2################################################ String ownprocess = "\\A(" + weekday + ")\\s*(" + timeofDay + ")\\Z"; Pattern pattern2 = Pattern.compile(ownprocess); Matcher matcher2 = pattern2.matcher(phrase); boolean matcher2Found = matcher2.find(); if (matcher2Found) { // split the Phrase into two parts String firstphrase = "this" + matcher2.group(1); String secondphrase = "this" + matcher2.group(2); TimexChunk keypoint = ModifiedDate.ModifiedRule(start, new TemporalPhrase(firstphrase, temporalPhrase.getTense())); String normVal = keypoint.getAttributes().get(TimexNames.value); DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyy-MM-dd"); DateTime starttime = fmt.parseDateTime(normVal); TimexChunk result = ModifiedDate.ModifiedRule(starttime, new TemporalPhrase(secondphrase, temporalPhrase.getTense())); return result; } //String monther = "(?:jan(?:uary)?|feb(?:ruary)?|mar(?:ch)?|apr(?:il)?|may?|jun(?:e)?|jul(?:y)?|aug(?:ust)?|sept(?:ember)?|oct(?:ober)?|nov(?:ember)?|dec(?:ember)?|year)"; String monther = "(" + KnowledgeBase.monther + ")"; //String specialterm = "\\A(?:morning|afternoon|noon|evening|night|spring|fall|summer|winter|mon(?:day)?|tues(?:day)?|wed(?:nesday)?|thur(?:sday)?|fri(?:day)?|sat(?:urday)?|sun(?:day)?)\\Z"; String specialterm = "\\A(" + timeofDay + "|" + season + "|" + weekday + ")\\Z"; Pattern onepattern = Pattern.compile(specialterm); Matcher onematcher = onepattern.matcher(phrase); boolean onematchFound = onematcher.find(); if (onematchFound) { phrase = "this " + onematcher.group(0); } int numterm; DateMapping temp = DateMapping.getInstance(); int i; int dayweek; int year; int month = 1; int day; int flagbefore = -1; int flagafter = -1; String thisTimeOfDay = ""; int prematchDay = -1; DateTime finish; String temp1; String temp2; Interval interval; interval = new Interval(start, start); phrase = phrase.toLowerCase(); int preflag = -1; if (phrase.equals("tonight")) { phrase = "today night"; } if (phrase.contains("before")) { phrase = phrase.replaceAll("before", ""); phrase = phrase.trim(); flagbefore = 1; } if (phrase.contains("\\Aafter\\Z")) { phrase = phrase.replaceAll("after", ""); phrase = phrase.trim(); flagafter = 1; } String spepatternStr = "(" + timeofDay + "|" + season + "|" + weekday + ")\\s*(" + shiftIndicator + ")\\s*(" + dateUnit + ")"; Pattern spepattern = Pattern.compile(spepatternStr); Matcher spematcher = spepattern.matcher(phrase); boolean spematchFound = spematcher.find(); if (spematchFound) { String group1 = spematcher.group(1); String group2 = spematcher.group(2); // String group3 = spematcher.group(3); phrase = group2 + " " + group1; } String patternStr = "\\s*(" + shiftIndicator + "|" + modIndicator + "|" + specialDayTerm + ")\\s*(" + timeofDay + "|" + dateUnit + "|" + weekday + "|" + season + "|" + KnowledgeBase.monther + ")"; Pattern pattern = Pattern.compile(patternStr); Matcher matcher = pattern.matcher(phrase); boolean matchFound = matcher.find(); TimexChunk tc = new TimexChunk(); DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyy-MM-dd"); DateTimeFormatter ymFmt = DateTimeFormat.forPattern("yyyy-MM"); DateTimeFormatter yFmt = DateTimeFormat.forPattern("yyyy"); if (matchFound) { for (i = 1; i <= 2; i++) { if (matcher.group(i) == null) { i--; break; } } if (i == 3) { i--; } numterm = i; if (numterm == 2) { // group(0) returns the whole detected string which matches the // pattern String origPhrase = phrase; phrase = phrase.replaceAll(matcher.group(0), ""); phrase = phrase.trim(); String prepatternStr = "(" + KnowledgeBase.monther + "|year)"; Pattern prepattern = Pattern.compile(prepatternStr); Matcher prematcher = prepattern.matcher(phrase); boolean prematchFound = prematcher.find(); if (prematchFound) { if (temp.hm.containsKey(prematcher.group(1))) { month = Integer.parseInt(temp.hm.get(prematcher.group(1))); preflag = 1; } } prepatternStr = "(\\d+)"; prepattern = Pattern.compile(prepatternStr); prematcher = prepattern.matcher(phrase); prematchFound = prematcher.find(); if (prematchFound) { int dayInt = Integer.parseInt(prematcher.group(1)); if (dayInt > 0 && dayInt < 32) { prematchDay = dayInt; preflag = 1; } } prepatternStr = "(" + weekday + ")"; prepattern = Pattern.compile(prepatternStr); prematcher = prepattern.matcher(phrase); prematchFound = prematcher.find(); if (prematchFound) { if (temp.hm.containsKey(prematcher.group(1))) { prematchDay = Integer.parseInt(temp.hm.get(prematcher.group(1))); preflag = 1; } } prepatternStr = "(" + timeofDay + ")"; prepattern = Pattern.compile(prepatternStr); prematcher = prepattern.matcher(phrase); prematchFound = prematcher.find(); if (prematchFound) { if (unitMap.containsKey(prematcher.group(1))) { thisTimeOfDay = unitMap.get(prematcher.group(1)); preflag = 1; } } else { String backPatt = "(early|earlier|begin(?:ing)?|start)"; Pattern backPa = Pattern.compile(backPatt); Matcher backmatcher = backPa.matcher(phrase); boolean backFound = backmatcher.find(); if (backFound) { // 2 means early preflag = 2; } else { String backPatter = "(late|later|end)"; Pattern backPater = Pattern.compile(backPatter); Matcher backmatch = backPater.matcher(phrase); boolean backFounder = backmatch.find(); if (backFounder) { // 3 means late preflag = 3; } } } temp1 = matcher.group(1); temp2 = matcher.group(2); if (temp1.equals("last") || temp1.equals("past") || temp1.equals("previous") || temp1.equals("yesterday")) { if (temp2.equals("year")) { finish = start.minusYears(1); year = finish.getYear(); if (preflag == 1) { if (flagbefore == 1) { finish = new DateTime(year, month, 1, 23, 59, 59, 59); finish = finish.minusDays(1); String normVal = fmt.print(finish); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, normVal); tc.addAttribute(TimexNames.mod, TimexNames.BEFORE); return tc; } else if (flagafter == 1) { finish = new DateTime(year, month, 1, 0, 0, 0, 0); finish = finish.dayOfMonth().withMaximumValue(); finish = finish.minusDays(-1); String normVal = fmt.print(finish); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, normVal); tc.addAttribute(TimexNames.mod, TimexNames.AFTER); return tc; } finish = new DateTime(year, month, 1, 23, 59, 59, 59); finish = finish.dayOfMonth().withMaximumValue(); String normVal = ymFmt.print(finish); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, normVal); return tc; } else if (preflag == 2) { tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, String.valueOf(year)); tc.addAttribute(TimexNames.mod, TimexNames.START); return tc; } else if (preflag == 3) { tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, String.valueOf(year)); tc.addAttribute(TimexNames.mod, TimexNames.END); return tc; } else { tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, String.valueOf(year)); return tc; } } else if (temp2.equals("month")) { finish = start.minusMonths(1); year = finish.getYear(); month = finish.getMonthOfYear(); finish = finish.dayOfMonth().withMaximumValue(); day = finish.getDayOfMonth(); start = new DateTime(year, month, 1, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); interval = new Interval(start, finish); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, ymFmt.print(finish)); if (preflag == 1) { finish = new DateTime(year, month, prematchDay, 23, 59, 59, 59); tc.addAttribute(TimexNames.value, fmt.print(finish)); } else if (preflag == 2) { tc.addAttribute(TimexNames.value, fmt.print(finish)); tc.addAttribute(TimexNames.mod, TimexNames.START); } else if (preflag == 3) { start = new DateTime(year, month, day - 10, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); interval = new Interval(start, finish); tc.addAttribute(TimexNames.value, fmt.print(finish)); tc.addAttribute(TimexNames.mod, TimexNames.END); } return tc; } else if (temp2.equals("week")) { finish = start.minusWeeks(1); dayweek = finish.getDayOfWeek(); finish = finish.minusDays(dayweek - 1); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, month, day, 0, 0, 0, 0); finish = finish.minusDays(-6); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); finish = new DateTime(year, month, day, 23, 59, 59, 59); interval = new Interval(start, finish); tc.addAttribute(TimexNames.type, TimexNames.DATE); if (preflag == 1) { String weekIdx = String.valueOf(finish.getWeekOfWeekyear()); weekIdx = weekIdx.length() == 1 ? "0" + weekIdx : weekIdx; tc.addAttribute(TimexNames.value, String.valueOf(year) + "-W" + weekIdx + "-" + String.valueOf(prematchDay)); } if (preflag == 2) { finish = start.minusDays(-2); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); finish = new DateTime(year, month, day, 23, 59, 59, 59); String weekIdx = String.valueOf(finish.getWeekOfWeekyear()); weekIdx = weekIdx.length() == 1 ? "0" + weekIdx : weekIdx; tc.addAttribute(TimexNames.value, String.valueOf(year) + "-W" + weekIdx); tc.addAttribute(TimexNames.mod, TimexNames.START); } else if (preflag == 3) { start = start.minusDays(-4); year = start.getYear(); month = start.getMonthOfYear(); day = start.getDayOfMonth(); start = new DateTime(year, month, day, 0, 0, 0, 0); String weekIdx = String.valueOf(start.getWeekOfWeekyear()); weekIdx = weekIdx.length() == 1 ? "0" + weekIdx : weekIdx; tc.addAttribute(TimexNames.value, String.valueOf(year) + "-W" + weekIdx); tc.addAttribute(TimexNames.mod, TimexNames.END); } else { String weekIdx = String.valueOf(start.getWeekOfWeekyear()); tc.addAttribute(TimexNames.value, String.valueOf(year) + "-W" + weekIdx); } return tc; } else if (temp2.equals("weekend")) { dayweek = start.getDayOfWeek(); finish = start.minusDays(dayweek + 1); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, month, day, 0, 0, 0, 0); finish = start.minusDays(-1); day = finish.getDayOfMonth(); finish = new DateTime(year, month, day, 23, 59, 59, 59); String weekIdx = String.valueOf(finish.getWeekOfWeekyear()); weekIdx = weekIdx.length() == 1 ? "0" + weekIdx : weekIdx; tc.addAttribute(TimexNames.value, String.valueOf(year) + "-W" + weekIdx + "-WE"); return tc; /* TODO: I commented out these three cases for now because they don't make sense using TIMEX3 standard */ } // else if (temp2.equals("hour")) { // finish = start.minusHours(1); // interval = new Interval(finish, start); // return interval; // } // // else if (temp2.equals("minute")) { // finish = start.minusMinutes(1); // interval = new Interval(finish, start); // return interval; // } // // else if (temp2.equals("second")) { // finish = start.minusSeconds(1); // interval = new Interval(finish, start); // return interval; // } else if (temp2.equals("century")) { finish = start.minusYears(100); year = finish.getCenturyOfEra(); year = year * 100; start = new DateTime(year, 1, 1, 0, 0, 0, 0); finish = new DateTime(year + 99, 12, 31, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, String.valueOf(finish.getCenturyOfEra())); return tc; } else if (temp2.equals("decade")) { finish = start.minusYears(10); year = finish.getCenturyOfEra(); year = year * 100; start = new DateTime(year, 1, 1, 0, 0, 0, 0); finish = new DateTime(year + 9, 12, 31, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, String.valueOf(finish.getCenturyOfEra() * 10)); return tc; } else if (temp2.equals("mon") || temp2.equals("monday")) { dayweek = start.getDayOfWeek(); finish = start.minusDays(dayweek + 6); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, month, day, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, fmt.print(finish)); if (preflag == 1) { tc.addAttribute(TimexNames.value, tc.getAttribute(TimexNames.value) + "T" + thisTimeOfDay); } return tc; } else if (temp2.equals("tues") || temp2.equals("tuesday")) { dayweek = start.getDayOfWeek(); finish = start.minusDays(dayweek + 5); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, month, day, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, fmt.print(finish)); if (preflag == 1) { tc.addAttribute(TimexNames.value, tc.getAttribute(TimexNames.value) + "T" + thisTimeOfDay); } return tc; } else if (temp2.equals("wed") || temp2.equals("wednesday")) { dayweek = start.getDayOfWeek(); finish = start.minusDays(dayweek + 4); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, month, day, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, fmt.print(finish)); if (preflag == 1) { tc.addAttribute(TimexNames.value, tc.getAttribute(TimexNames.value) + "T" + thisTimeOfDay); } return tc; } else if (temp2.equals("thur") || temp2.equals("thursday")) { dayweek = start.getDayOfWeek(); finish = start.minusDays(dayweek + 3); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, month, day, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, fmt.print(finish)); if (preflag == 1) { tc.addAttribute(TimexNames.value, tc.getAttribute(TimexNames.value) + "T" + thisTimeOfDay); } return tc; } else if (temp2.equals("fri") || temp2.equals("friday")) { dayweek = start.getDayOfWeek(); finish = start.minusDays(dayweek + 2); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, month, day, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, fmt.print(finish)); if (preflag == 1) { tc.addAttribute(TimexNames.value, tc.getAttribute(TimexNames.value) + "T" + thisTimeOfDay); } return tc; } else if (temp2.equals("sat") || temp2.equals("saturday")) { dayweek = start.getDayOfWeek(); finish = start.minusDays(dayweek + 1); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, month, day, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, fmt.print(finish)); if (preflag == 1) { tc.addAttribute(TimexNames.value, tc.getAttribute(TimexNames.value) + "T" + thisTimeOfDay); } return tc; } else if (temp2.equals("sun") || temp2.equals("sunday")) { dayweek = start.getDayOfWeek(); finish = start.minusDays(dayweek); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, month, day, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, fmt.print(finish)); if (preflag == 1) { tc.addAttribute(TimexNames.value, tc.getAttribute(TimexNames.value) + "T" + thisTimeOfDay); } return tc; } else if (temp2.equals("morning")) { finish = start.minusDays(1); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, month, day, 7, 0, 0, 0); finish = new DateTime(year, month, day, 10, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.TIME); tc.addAttribute(TimexNames.value, fmt.print(finish) + TimexNames.MORNING); return tc; } else if (temp2.equals("noon")) { finish = start.minusDays(1); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, month, day, 11, 0, 0, 0); finish = new DateTime(year, month, day, 13, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.TIME); tc.addAttribute(TimexNames.value, fmt.print(finish) + TimexNames.NOON); return tc; } else if (temp2.equals("afternoon")) { finish = start.minusDays(1); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, month, day, 14, 0, 0, 0); finish = new DateTime(year, month, day, 17, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.TIME); tc.addAttribute(TimexNames.value, fmt.print(finish) + TimexNames.AFTERNOON); return tc; } else if (temp2.equals("evening")) { finish = start.minusDays(1); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, month, day, 18, 0, 0, 0); finish = new DateTime(year, month, day, 20, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.TIME); tc.addAttribute(TimexNames.value, fmt.print(finish) + TimexNames.EVENING); return tc; } else if (temp2.equals("night")) { finish = start.minusDays(1); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, month, day, 21, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.TIME); tc.addAttribute(TimexNames.value, fmt.print(finish) + TimexNames.NIGHT); return tc; } else if (temp2.equals("day")) { finish = start.minusDays(1); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, month, day, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, fmt.print(finish)); return tc; } else if (temp2.equals("spring")) { finish = start.minusYears(1); year = finish.getYear(); start = new DateTime(year, 3, 1, 0, 0, 0, 0); finish = new DateTime(year, 5, 31, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, yFmt.print(finish) + "-" + TimexNames.SPRING); return tc; } else if (temp2.equals("summer")) { finish = start.minusYears(1); year = finish.getYear(); start = new DateTime(year, 6, 1, 0, 0, 0, 0); finish = new DateTime(year, 8, 31, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, yFmt.print(finish) + "-" + TimexNames.SUMMER); return tc; } else if (temp2.equals("fall") || temp2.equals("autumn")) { finish = start.minusYears(1); year = finish.getYear(); start = new DateTime(year, 9, 1, 0, 0, 0, 0); finish = new DateTime(year, 11, 30, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, yFmt.print(finish) + "-" + TimexNames.FALL); return tc; } else if (temp2.equals("winter")) { finish = start.minusYears(2); year = finish.getYear(); start = new DateTime(year, 12, 1, 0, 0, 0, 0); finish = new DateTime(year + 1, 2, 28, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, yFmt.print(finish) + "-" + TimexNames.WINTER); return tc; } // If we have (last|previous|...)(month) else { String patternStr1 = monther; Pattern pattern1 = Pattern.compile(patternStr1); Matcher matcher1 = pattern1.matcher(temp2); boolean matchFound1 = matcher1.find(); if (matchFound1) { month = Integer.parseInt(temp.hm.get(temp2)); finish = start.minusYears(1); year = finish.getYear(); finish = new DateTime(year, month, 1, 23, 59, 59, 59); finish = finish.dayOfMonth().withMaximumValue(); start = new DateTime(year, month, 1, 0, 0, 0, 0); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, ymFmt.print(finish)); if (preflag == 2) { finish = new DateTime(year, month, 10, 23, 59, 59, 59); start = new DateTime(year, month, 1, 0, 0, 0, 0); tc.addAttribute(TimexNames.mod, TimexNames.START); } else if (preflag == 3) { start = new DateTime(year, month, 20, 0, 0, 0, 0); tc.addAttribute(TimexNames.mod, TimexNames.END); } return tc; } else { return null; } } } else if (temp1.equals("early") || temp1.equals("earlier")) { tc.addAttribute(TimexNames.mod, TimexNames.START); if (temp2.equals("century")) { year = start.getCenturyOfEra(); year = year * 100; start = new DateTime(year, 1, 1, 0, 0, 0, 0); finish = new DateTime(year + 20, 12, 31, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, String.valueOf(finish.getCenturyOfEra())); return tc; } else if (temp2.equals("decade")) { year = start.getCenturyOfEra(); year = year * 100; start = new DateTime(year, 1, 1, 0, 0, 0, 0); finish = new DateTime(year + 2, 12, 31, 23, 59, 59, 59); //interval = new Interval(start, finish); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, String.valueOf(finish.getCenturyOfEra() * 10)); return tc; } else if (temp2.equals("year")) { year = start.getYear(); start = new DateTime(year, 1, 1, 0, 0, 0, 0); finish = new DateTime(year, 3, 31, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, yFmt.print(finish)); return tc; } else if (temp2.equals("month")) { year = start.getYear(); month = start.getMonthOfYear(); finish = start.dayOfMonth().withMaximumValue(); day = finish.getDayOfMonth(); start = new DateTime(year, month, 1, 0, 0, 0, 0); finish = new DateTime(year, month, 10, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, ymFmt.print(finish)); return tc; } else if (temp2.equals("week")) { dayweek = start.getDayOfWeek(); start = start.minusDays(dayweek - 1); year = start.getYear(); month = start.getMonthOfYear(); day = start.getDayOfMonth(); start = new DateTime(year, month, day, 0, 0, 0, 0); finish = start.minusDays(-2); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); finish = new DateTime(year, month, day, 23, 59, 59, 59); String weekIdx = String.valueOf(finish.getWeekOfWeekyear()); weekIdx = weekIdx.length() == 1 ? "0" + weekIdx : weekIdx; tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, String.valueOf(year) + "-W" + weekIdx); return tc; } else { // This part only focus on "early" + "[month]" // Modified by Zhili: if the sentence is past tense, and the month mentioned is // after DCT, then subtract 1 from year String tense = temporalPhrase.getTense(); String patternStr1 = monther; Pattern pattern1 = Pattern.compile(patternStr1); Matcher matcher1 = pattern1.matcher(temp2); boolean matchFound1 = matcher1.find(); if (matchFound1) { month = Integer.parseInt(temp.hm.get(temp2)); year = start.getYear(); if (tense.equals("past") && start.getMonthOfYear() < month) { year -= 1; } else if (!tense.equals("past") && start.getMonthOfYear() > month) { year += 1; } finish = new DateTime(year, month, 10, 23, 59, 59, 59); start = new DateTime(year, month, 1, 0, 0, 0, 0); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, ymFmt.print(finish)); return tc; } else { return null; } } } else if (temp1.equals("late") || temp1.equals("later")) { tc.addAttribute(TimexNames.mod, TimexNames.END); tc.addAttribute(TimexNames.type, TimexNames.DATE); if (temp2.equals("century")) { year = start.getCenturyOfEra(); year = year * 100; start = new DateTime(year + 80, 1, 1, 0, 0, 0, 0); finish = new DateTime(year + 99, 12, 31, 23, 59, 59, 59); tc.addAttribute(TimexNames.value, String.valueOf(finish.getCenturyOfEra())); return tc; } else if (temp2.equals("decade")) { year = start.getCenturyOfEra(); year = year * 100; start = new DateTime(year + 8, 1, 1, 0, 0, 0, 0); finish = new DateTime(year + 9, 12, 31, 23, 59, 59, 59); //interval = new Interval(start, finish); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, String.valueOf(finish.getCenturyOfEra() * 10)); return tc; } else if (temp2.equals("year")) { year = start.getYear(); start = new DateTime(year, 10, 1, 0, 0, 0, 0); finish = new DateTime(year, 12, 31, 23, 59, 59, 59); interval = new Interval(start, finish); tc.addAttribute(TimexNames.value, yFmt.print(finish)); return tc; } else if (temp2.equals("month")) { year = start.getYear(); month = start.getMonthOfYear(); finish = start.dayOfMonth().withMaximumValue(); day = finish.getDayOfMonth(); start = new DateTime(year, month, day - 10, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.value, ymFmt.print(finish)); return tc; } else { String patternStr1 = monther; Pattern pattern1 = Pattern.compile(patternStr1); Matcher matcher1 = pattern1.matcher(temp2); boolean matchFound1 = matcher1.find(); if (matchFound1) { month = Integer.parseInt(temp.hm.get(temp2)); year = start.getYear(); String tense = temporalPhrase.getTense(); if (tense.equals("past") && start.getMonthOfYear() < month) { year -= 1; } else if (!tense.equals("past") && start.getMonthOfYear() > month) { year += 1; } finish = new DateTime(year, month, 1, 23, 59, 59, 59); finish = finish.dayOfMonth().withMaximumValue(); start = new DateTime(year, month, finish.getDayOfMonth() - 10, 0, 0, 0, 0); tc.addAttribute(TimexNames.value, ymFmt.print(finish)); return tc; } else { return null; } } } else if (temp1.equals("this") || temp1.equals("today")) { tc.addAttribute(TimexNames.type, TimexNames.DATE); if (temp2.equals("century")) { year = start.getCenturyOfEra(); year = year * 100; start = new DateTime(year, 1, 1, 0, 0, 0, 0); finish = new DateTime(year + 99, 12, 31, 23, 59, 59, 59); tc.addAttribute(TimexNames.value, String.valueOf(finish.getCenturyOfEra())); return tc; } else if (temp2.equals("decade")) { year = start.getCenturyOfEra(); year = year * 100; start = new DateTime(year, 1, 1, 0, 0, 0, 0); finish = new DateTime(year + 9, 12, 31, 23, 59, 59, 59); //interval = new Interval(start, finish); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, String.valueOf(finish.getCenturyOfEra() * 10)); return tc; } else if (temp2.equals("year")) { year = start.getYear(); if (preflag == 1) { finish = new DateTime(year, month, 1, 23, 59, 59, 59); finish = finish.dayOfMonth().withMaximumValue(); start = new DateTime(year, month, 1, 0, 0, 0, 0); tc.addAttribute(TimexNames.value, ymFmt.print(finish)); return tc; } else if (preflag == 2) { start = new DateTime(year, 1, 1, 0, 0, 0, 0); finish = new DateTime(year, 3, 31, 23, 59, 59, 59); tc.addAttribute(TimexNames.value, yFmt.print(finish)); tc.addAttribute(TimexNames.mod, TimexNames.START); return tc; } else if (preflag == 3) { start = new DateTime(year, 10, 1, 0, 0, 0, 0); finish = new DateTime(year, 12, 31, 23, 59, 59, 59); tc.addAttribute(TimexNames.value, yFmt.print(finish)); tc.addAttribute(TimexNames.mod, TimexNames.END); return tc; } else { start = new DateTime(year, 1, 1, 0, 0, 0, 0); finish = new DateTime(year, 12, 31, 23, 59, 59, 59); tc.addAttribute(TimexNames.value, yFmt.print(finish)); return tc; } } else if (temp2.equals("month")) { year = start.getYear(); month = start.getMonthOfYear(); finish = start.dayOfMonth().withMaximumValue(); day = finish.getDayOfMonth(); start = new DateTime(year, month, 1, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.value, ymFmt.print(finish)); if (preflag == 1) { finish = new DateTime(year, month, prematchDay, 23, 59, 59, 59); tc.addAttribute(TimexNames.value, fmt.print(finish)); } else if (preflag == 2) { start = new DateTime(year, month, 1, 0, 0, 0, 0); finish = new DateTime(year, month, 10, 23, 59, 59, 59); tc.addAttribute(TimexNames.mod, TimexNames.START); tc.addAttribute(TimexNames.value, ymFmt.print(finish)); } else if (preflag == 3) { start = new DateTime(year, month, day - 10, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.mod, TimexNames.END); tc.addAttribute(TimexNames.value, ymFmt.print(finish)); } return tc; } else if (temp2.equals("week")) { dayweek = start.getDayOfWeek(); start = start.minusDays(dayweek - 1); year = start.getYear(); month = start.getMonthOfYear(); day = start.getDayOfMonth(); start = new DateTime(year, month, day, 0, 0, 0, 0); finish = start.minusDays(-6); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); finish = new DateTime(year, month, day, 23, 59, 59, 59); String weekIdx = String.valueOf(finish.getWeekOfWeekyear()); weekIdx = weekIdx.length() == 1 ? "0" + weekIdx : weekIdx; tc.addAttribute(TimexNames.value, yFmt.print(finish) + "-W" + weekIdx); if (preflag == 1) { weekIdx = String.valueOf(finish.getWeekOfWeekyear()); weekIdx = weekIdx.length() == 1 ? "0" + weekIdx : weekIdx; tc.addAttribute(TimexNames.value, String.valueOf(year) + "-W" + weekIdx + "-" + String.valueOf(prematchDay)); } else if (preflag == 2) { finish = start.minusDays(-2); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.mod, TimexNames.START); } else if (preflag == 3) { start = start.minusDays(-4); year = start.getYear(); month = start.getMonthOfYear(); day = start.getDayOfMonth(); start = new DateTime(year, month, day, 0, 0, 0, 0); tc.addAttribute(TimexNames.mod, TimexNames.END); } return tc; } else if (temp2.equals("weekend")) { dayweek = start.getDayOfWeek(); start = start.minusDays(dayweek - 6); year = start.getYear(); month = start.getMonthOfYear(); day = start.getDayOfMonth(); start = new DateTime(year, month, day, 0, 0, 0, 0); finish = start.minusDays(-1); day = finish.getDayOfMonth(); finish = new DateTime(year, month, day, 23, 59, 59, 59); String weekIdx = String.valueOf(finish.getWeekOfWeekyear()); weekIdx = weekIdx.length() == 1 ? "0" + weekIdx : weekIdx; tc.addAttribute(TimexNames.value, String.valueOf(year) + "-W" + weekIdx + "-WE"); return tc; } else if (temp2.equals("mon") || temp2.equals("monday")) { dayweek = start.getDayOfWeek(); start = start.minusDays(dayweek - 1); day = start.getDayOfMonth(); year = start.getYear(); month = start.getMonthOfYear(); start = new DateTime(year, month, day, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); String tense = temporalPhrase.getTense(); if (tense.equals("past") && dayweek < 1) { finish = finish.minusDays(7); } else if (!tense.equals("past") && dayweek > 1) { finish = finish.minusDays(-7); } tc.addAttribute(TimexNames.value, fmt.print(finish)); if (preflag == 1) { tc.addAttribute(TimexNames.value, tc.getAttribute(TimexNames.value) + "T" + thisTimeOfDay); } return tc; } else if (temp2.equals("tues") || temp2.equals("tuesday")) { dayweek = start.getDayOfWeek(); start = start.minusDays(dayweek - 2); day = start.getDayOfMonth(); year = start.getYear(); month = start.getMonthOfYear(); start = new DateTime(year, month, day, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); String tense = temporalPhrase.getTense(); if (tense.equals("past") && dayweek < 2) { finish = finish.minusDays(7); } else if (!tense.equals("past") && dayweek > 2) { finish = finish.minusDays(-7); } tc.addAttribute(TimexNames.value, fmt.print(finish)); if (preflag == 1) { tc.addAttribute(TimexNames.value, tc.getAttribute(TimexNames.value) + "T" + thisTimeOfDay); } return tc; } else if (temp2.equals("wed") || temp2.equals("wednesday")) { dayweek = start.getDayOfWeek(); start = start.minusDays(dayweek - 3); day = start.getDayOfMonth(); year = start.getYear(); month = start.getMonthOfYear(); start = new DateTime(year, month, day, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); String tense = temporalPhrase.getTense(); if (tense.equals("past") && dayweek < 3) { finish = finish.minusDays(7); } else if (!tense.equals("past") && dayweek > 3) { finish = finish.minusDays(-7); } tc.addAttribute(TimexNames.value, fmt.print(finish)); if (preflag == 1) { tc.addAttribute(TimexNames.value, tc.getAttribute(TimexNames.value) + "T" + thisTimeOfDay); } return tc; } else if (temp2.equals("thur") || temp2.equals("thursday")) { dayweek = start.getDayOfWeek(); start = start.minusDays(dayweek - 4); day = start.getDayOfMonth(); year = start.getYear(); month = start.getMonthOfYear(); start = new DateTime(year, month, day, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); String tense = temporalPhrase.getTense(); if (tense.equals("past") && dayweek < 4) { finish = finish.minusDays(7); } else if (!tense.equals("past") && dayweek > 4) { finish = finish.minusDays(-7); } tc.addAttribute(TimexNames.value, fmt.print(finish)); if (preflag == 1) { tc.addAttribute(TimexNames.value, tc.getAttribute(TimexNames.value) + "T" + thisTimeOfDay); } return tc; } else if (temp2.equals("fri") || temp2.equals("friday")) { dayweek = start.getDayOfWeek(); start = start.minusDays(dayweek - 5); day = start.getDayOfMonth(); year = start.getYear(); month = start.getMonthOfYear(); start = new DateTime(year, month, day, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); String tense = temporalPhrase.getTense(); if (tense.equals("past") && dayweek < 5) { finish = finish.minusDays(7); } else if (!tense.equals("past") && dayweek > 5) { finish = finish.minusDays(-7); } tc.addAttribute(TimexNames.value, fmt.print(finish)); if (preflag == 1) { tc.addAttribute(TimexNames.value, tc.getAttribute(TimexNames.value) + "T" + thisTimeOfDay); } return tc; } else if (temp2.equals("sat") || temp2.equals("saturday")) { dayweek = start.getDayOfWeek(); start = start.minusDays(dayweek - 6); day = start.getDayOfMonth(); year = start.getYear(); month = start.getMonthOfYear(); start = new DateTime(year, month, day, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); String tense = temporalPhrase.getTense(); if (tense.equals("past") && dayweek < 6) { finish = finish.minusDays(7); } else if (!tense.equals("past") && dayweek > 6) { finish = finish.minusDays(-7); } tc.addAttribute(TimexNames.value, fmt.print(finish)); if (preflag == 1) { tc.addAttribute(TimexNames.value, tc.getAttribute(TimexNames.value) + "T" + thisTimeOfDay); } return tc; } else if (temp2.equals("sun") || temp2.equals("sunday")) { dayweek = start.getDayOfWeek(); start = start.minusDays(dayweek - 7); day = start.getDayOfMonth(); year = start.getYear(); month = start.getMonthOfYear(); start = new DateTime(year, month, day, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); String tense = temporalPhrase.getTense(); if (tense.equals("past") && dayweek < 7) { finish = finish.minusDays(7); } else if (!tense.equals("past") && dayweek > 7) { finish = finish.minusDays(-7); } tc.addAttribute(TimexNames.value, fmt.print(finish)); if (preflag == 1) { tc.addAttribute(TimexNames.value, tc.getAttribute(TimexNames.value) + "T" + thisTimeOfDay); } return tc; } else if (temp2.equals("morning")) { year = start.getYear(); month = start.getMonthOfYear(); day = start.getDayOfMonth(); start = new DateTime(year, month, day, 7, 0, 0, 0); finish = new DateTime(year, month, day, 10, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.TIME); tc.addAttribute(TimexNames.value, fmt.print(finish) + TimexNames.MORNING); return tc; } else if (temp2.equals("noon")) { year = start.getYear(); month = start.getMonthOfYear(); day = start.getDayOfMonth(); start = new DateTime(year, month, day, 11, 0, 0, 0); finish = new DateTime(year, month, day, 13, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.TIME); tc.addAttribute(TimexNames.value, fmt.print(finish) + TimexNames.NOON); return tc; } else if (temp2.equals("afternoon")) { year = start.getYear(); month = start.getMonthOfYear(); day = start.getDayOfMonth(); start = new DateTime(year, month, day, 14, 0, 0, 0); finish = new DateTime(year, month, day, 17, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.TIME); tc.addAttribute(TimexNames.value, fmt.print(finish) + TimexNames.AFTERNOON); return tc; } else if (temp2.equals("evening")) { year = start.getYear(); month = start.getMonthOfYear(); day = start.getDayOfMonth(); start = new DateTime(year, month, day, 18, 0, 0, 0); finish = new DateTime(year, month, day, 20, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.TIME); tc.addAttribute(TimexNames.value, fmt.print(finish) + TimexNames.EVENING); return tc; } else if (temp2.equals("night")) { year = start.getYear(); month = start.getMonthOfYear(); day = start.getDayOfMonth(); start = new DateTime(year, month, day, 21, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.TIME); tc.addAttribute(TimexNames.value, fmt.print(finish) + TimexNames.NIGHT); return tc; } else if (temp2.equals("spring")) { year = start.getYear(); start = new DateTime(year, 3, 1, 0, 0, 0, 0); finish = new DateTime(year, 5, 31, 23, 59, 59, 59); tc.addAttribute(TimexNames.value, yFmt.print(finish) + "-" + TimexNames.SPRING); return tc; } else if (temp2.equals("summer")) { year = start.getYear(); start = new DateTime(year, 6, 1, 0, 0, 0, 0); finish = new DateTime(year, 8, 31, 23, 59, 59, 59); tc.addAttribute(TimexNames.value, yFmt.print(finish) + "-" + TimexNames.SUMMER); return tc; } else if (temp2.equals("fall")) { year = start.getYear(); start = new DateTime(year, 9, 1, 0, 0, 0, 0); finish = new DateTime(year, 11, 30, 23, 59, 59, 59); tc.addAttribute(TimexNames.value, yFmt.print(finish) + "-" + TimexNames.FALL); return tc; } else if (temp2.equals("winter")) { finish = start.minusDays(1); year = finish.getYear(); start = new DateTime(year, 12, 1, 0, 0, 0, 0); finish = new DateTime(year + 1, 2, 28, 23, 59, 59, 59); tc.addAttribute(TimexNames.value, yFmt.print(finish) + "-" + TimexNames.WINTER); return tc; } else { String patternStr1 = monther; Pattern pattern1 = Pattern.compile(patternStr1); Matcher matcher1 = pattern1.matcher(temp2); boolean matchFound1 = matcher1.find(); if (matchFound1) { month = Integer.parseInt(temp.hm.get(temp2)); year = start.getYear(); int referenceMonth = start.getMonthOfYear(); finish = new DateTime(year, month, 1, 23, 59, 59, 59); finish = finish.dayOfMonth().withMaximumValue(); start = new DateTime(year, month, 1, 0, 0, 0, 0); String tense = temporalPhrase.getTense(); if (tense.equals("past") && referenceMonth < month) { finish = finish.minusYears(1); } else if (!tense.equals("past") && referenceMonth > month) { finish = finish.minusYears(-1); } tc.addAttribute(TimexNames.value, ymFmt.print(finish)); if (preflag == 2) { finish = new DateTime(year, month, 10, 23, 59, 59, 59); start = new DateTime(year, month, 1, 0, 0, 0, 0); tc.addAttribute(TimexNames.mod, TimexNames.START); } else if (preflag == 3) { start = new DateTime(year, month, 20, 0, 0, 0, 0); tc.addAttribute(TimexNames.mod, TimexNames.END); } return tc; } else { return null; } } } else if (temp1.equals("next") || temp1.equals("upcoming") || temp1.equals("following") || temp1.equals("tomorrow")) { tc.addAttribute(TimexNames.type, TimexNames.DATE); if (temp2.equals("year")) { finish = start.minusYears(-1); year = finish.getYear(); if (preflag == 1) { finish = new DateTime(year, month, 1, 23, 59, 59, 59); finish = finish.dayOfMonth().withMaximumValue(); start = new DateTime(year, month, 1, 0, 0, 0, 0); tc.addAttribute(TimexNames.value, ymFmt.print(finish)); return tc; } else if (preflag == 2) { start = new DateTime(year, 1, 1, 0, 0, 0, 0); finish = new DateTime(year, 3, 31, 23, 59, 59, 59); tc.addAttribute(TimexNames.value, ymFmt.print(finish)); tc.addAttribute(TimexNames.mod, TimexNames.START); return tc; } else if (preflag == 3) { start = new DateTime(year, 10, 1, 0, 0, 0, 0); finish = new DateTime(year, 12, 31, 23, 59, 59, 59); tc.addAttribute(TimexNames.value, ymFmt.print(finish)); tc.addAttribute(TimexNames.mod, TimexNames.END); return tc; } else { start = new DateTime(year, 1, 1, 0, 0, 0, 0); finish = new DateTime(year, 12, 31, 23, 59, 59, 59); tc.addAttribute(TimexNames.value, yFmt.print(finish)); return tc; } } else if (temp2.equals("month")) { finish = start.minusMonths(-1); year = finish.getYear(); month = finish.getMonthOfYear(); finish = finish.dayOfMonth().withMaximumValue(); day = finish.getDayOfMonth(); start = new DateTime(year, month, 1, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.value, ymFmt.print(finish)); if (preflag == 1) { finish = new DateTime(year, month, prematchDay, 23, 59, 59, 59); tc.addAttribute(TimexNames.value, fmt.print(finish)); } else if (preflag == 2) { start = new DateTime(year, month, 1, 0, 0, 0, 0); finish = new DateTime(year, month, 10, 23, 59, 59, 59); tc.addAttribute(TimexNames.mod, TimexNames.START); } else if (preflag == 3) { start = new DateTime(year, month, day - 10, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.mod, TimexNames.END); } return tc; } else if (temp2.equals("week")) { finish = start.minusWeeks(-1); dayweek = finish.getDayOfWeek(); finish = finish.minusDays(dayweek - 1); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, month, day, 0, 0, 0, 0); finish = start.minusDays(-6); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); finish = new DateTime(year, month, day, 23, 59, 59, 59); String weekIdx = String.valueOf(finish.getWeekOfWeekyear()); weekIdx = weekIdx.length() == 1 ? "0" + weekIdx : weekIdx; tc.addAttribute(TimexNames.value, String.valueOf(year) + "-W" + weekIdx); if (preflag == 1) { weekIdx = String.valueOf(finish.getWeekOfWeekyear()); weekIdx = weekIdx.length() == 1 ? "0" + weekIdx : weekIdx; tc.addAttribute(TimexNames.value, String.valueOf(year) + "-W" + weekIdx + "-" + String.valueOf(prematchDay)); } else if (preflag == 2) { finish = start.minusDays(-2); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.mod, TimexNames.START); } else if (preflag == 3) { start = start.minusDays(-4); year = start.getYear(); month = start.getMonthOfYear(); day = start.getDayOfMonth(); start = new DateTime(year, month, day, 0, 0, 0, 0); tc.addAttribute(TimexNames.mod, TimexNames.END); } return tc; } else if (temp2.equals("weekend")) { dayweek = start.getDayOfWeek(); finish = start.minusDays(dayweek - 13); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, month, day, 0, 0, 0, 0); finish = start.minusDays(-1); day = finish.getDayOfMonth(); finish = new DateTime(year, month, day, 23, 59, 59, 59); String weekIdx = String.valueOf(finish.getWeekOfWeekyear()); weekIdx = weekIdx.length() == 1 ? "0" + weekIdx : weekIdx; tc.addAttribute(TimexNames.value, String.valueOf(year) + "-W" + weekIdx + "-WE"); return tc; } else if (temp2.equals("hour")) { finish = start.minusHours(-1); tc.addAttribute(TimexNames.value, TimexNames.FUTURE_REF); return tc; } else if (temp2.equals("minute")) { finish = start.minusMinutes(-1); tc.addAttribute(TimexNames.value, TimexNames.FUTURE_REF); return tc; } else if (temp2.equals("second")) { finish = start.minusSeconds(-1); tc.addAttribute(TimexNames.value, TimexNames.FUTURE_REF); return tc; } else if (temp2.equals("century")) { finish = start.minusYears(-100); year = finish.getCenturyOfEra(); year = year * 100; start = new DateTime(year, 1, 1, 0, 0, 0, 0); finish = new DateTime(year + 99, 12, 31, 23, 59, 59, 59); tc.addAttribute(TimexNames.value, String.valueOf(finish.getCenturyOfEra())); return tc; } else if (temp2.equals("decade")) { finish = start.minusYears(-10); year = finish.getCenturyOfEra(); year = year * 100; start = new DateTime(year, 1, 1, 0, 0, 0, 0); finish = new DateTime(year + 9, 12, 31, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, String.valueOf(finish.getCenturyOfEra() * 10)); return tc; } else if (temp2.equals("day")) { finish = start.minusDays(-1); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, month, day, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.value, fmt.print(finish)); return tc; } else if (temp2.equals("mon") || temp2.equals("monday")) { dayweek = start.getDayOfWeek(); finish = start.minusDays(dayweek - 8); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, month, day, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.value, fmt.print(finish)); if (preflag == 1) { tc.addAttribute(TimexNames.value, tc.getAttribute(TimexNames.value) + "T" + thisTimeOfDay); } return tc; } else if (temp2.equals("tues") || temp2.equals("tuesday")) { dayweek = start.getDayOfWeek(); finish = start.minusDays(dayweek - 9); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, month, day, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.value, fmt.print(finish)); if (preflag == 1) { tc.addAttribute(TimexNames.value, tc.getAttribute(TimexNames.value) + "T" + thisTimeOfDay); } return tc; } else if (temp2.equals("wed") || temp2.equals("wednesday")) { dayweek = start.getDayOfWeek(); finish = start.minusDays(dayweek - 10); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, month, day, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.value, fmt.print(finish)); if (preflag == 1) { tc.addAttribute(TimexNames.value, tc.getAttribute(TimexNames.value) + "T" + thisTimeOfDay); } return tc; } else if (temp2.equals("thur") || temp2.equals("thursday")) { dayweek = start.getDayOfWeek(); finish = start.minusDays(dayweek - 11); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, month, day, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.value, fmt.print(finish)); if (preflag == 1) { tc.addAttribute(TimexNames.value, tc.getAttribute(TimexNames.value) + "T" + thisTimeOfDay); } return tc; } else if (temp2.equals("fri") || temp2.equals("friday")) { dayweek = start.getDayOfWeek(); finish = start.minusDays(dayweek - 12); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, month, day, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.value, fmt.print(finish)); if (preflag == 1) { tc.addAttribute(TimexNames.value, tc.getAttribute(TimexNames.value) + "T" + thisTimeOfDay); } return tc; } else if (temp2.equals("sat") || temp2.equals("saturday")) { dayweek = start.getDayOfWeek(); finish = start.minusDays(dayweek - 13); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, month, day, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.value, fmt.print(finish)); if (preflag == 1) { tc.addAttribute(TimexNames.value, tc.getAttribute(TimexNames.value) + "T" + thisTimeOfDay); } return tc; } else if (temp2.equals("sun") || temp2.equals("sunday")) { dayweek = start.getDayOfWeek(); finish = start.minusDays(dayweek - 14); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, month, day, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.value, fmt.print(finish)); if (preflag == 1) { tc.addAttribute(TimexNames.value, tc.getAttribute(TimexNames.value) + "T" + thisTimeOfDay); } return tc; } else if (temp2.equals("morning")) { finish = start.minusDays(-1); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, month, day, 7, 0, 0, 0); finish = new DateTime(year, month, day, 10, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.TIME); tc.addAttribute(TimexNames.value, fmt.print(finish) + TimexNames.MORNING); return tc; } else if (temp2.equals("noon")) { finish = start.minusDays(-1); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, month, day, 11, 0, 0, 0); finish = new DateTime(year, month, day, 13, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.TIME); tc.addAttribute(TimexNames.value, fmt.print(finish) + TimexNames.NOON); return tc; } else if (temp2.equals("afternoon")) { finish = start.minusDays(-1); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, month, day, 14, 0, 0, 0); finish = new DateTime(year, month, day, 17, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.TIME); tc.addAttribute(TimexNames.value, fmt.print(finish) + TimexNames.AFTERNOON); return tc; } else if (temp2.equals("evening")) { finish = start.minusDays(-1); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, month, day, 18, 0, 0, 0); finish = new DateTime(year, month, day, 20, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.TIME); tc.addAttribute(TimexNames.value, fmt.print(finish) + TimexNames.EVENING); return tc; } else if (temp2.equals("night")) { finish = start.minusDays(-1); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, month, day, 21, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.TIME); tc.addAttribute(TimexNames.value, fmt.print(finish) + TimexNames.NIGHT); return tc; } else if (temp2.equals("spring")) { finish = start.minusYears(-1); year = finish.getYear(); start = new DateTime(year, 3, 1, 0, 0, 0, 0); finish = new DateTime(year, 5, 31, 23, 59, 59, 59); tc.addAttribute(TimexNames.value, fmt.print(finish) + "-" + TimexNames.SPRING); return tc; } else if (temp2.equals("summer")) { finish = start.minusYears(-1); year = finish.getYear(); start = new DateTime(year, 6, 1, 0, 0, 0, 0); finish = new DateTime(year, 8, 31, 23, 59, 59, 59); tc.addAttribute(TimexNames.value, fmt.print(finish) + "-" + TimexNames.MORNING); return tc; } else if (temp2.equals("fall")) { finish = start.minusYears(-1); year = finish.getYear(); start = new DateTime(year, 9, 1, 0, 0, 0, 0); finish = new DateTime(year, 11, 30, 23, 59, 59, 59); tc.addAttribute(TimexNames.value, fmt.print(finish) + "-" + TimexNames.FALL); return tc; } else if (temp2.equals("winter")) { year = start.getYear(); start = new DateTime(year, 12, 1, 0, 0, 0, 0); finish = new DateTime(year + 1, 2, 28, 23, 59, 59, 59); tc.addAttribute(TimexNames.value, fmt.print(finish) + "-" + TimexNames.WINTER); return tc; } else { String patternStr1 = monther; Pattern pattern1 = Pattern.compile(patternStr1); Matcher matcher1 = pattern1.matcher(temp2); boolean matchFound1 = matcher1.find(); if (matchFound1) { month = Integer.parseInt(temp.hm.get(temp2)); finish = start.minusYears(-1); year = finish.getYear(); finish = new DateTime(year, month, 1, 23, 59, 59, 59); finish = finish.dayOfMonth().withMaximumValue(); start = new DateTime(year, month, 1, 0, 0, 0, 0); tc.addAttribute(TimexNames.value, ymFmt.print(finish)); if (preflag == 2) { finish = new DateTime(year, month, 10, 23, 59, 59, 59); start = new DateTime(year, month, 1, 0, 0, 0, 0); tc.addAttribute(TimexNames.mod, TimexNames.START); } else if (preflag == 3) { start = new DateTime(year, month, 20, 0, 0, 0, 0); tc.addAttribute(TimexNames.mod, TimexNames.END); } return tc; } else { return null; } } } } } return null; }
From source file:edu.illinois.cs.cogcomp.temporal.normalizer.main.timex2interval.RelativeDate.java
License:Open Source License
/** * This function converts phrase that contains a relative date: more than xxx, etc * @param start anchor time/*from www. j ava2 s . c o m*/ * @param phrase * @return */ public static TimexChunk Relativerule(DateTime start, String phrase) { int numterm; int flag_ago = 0; int i; int year; int month; int day; DateTime finish; String temp1; String temp2; String temp3; int amount; Interval interval; interval = new Interval(start, start); phrase = phrase.toLowerCase(); phrase = phrase.trim(); TimexChunk tc = new TimexChunk(); if (phrase.equals("recently") || phrase.equals("recent") || phrase.equals("past") || phrase.equals("at time") || phrase.equals("previously")) { tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, TimexNames.PAST_REF); return tc; } if (phrase.contains("future")) { tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, TimexNames.FUTURE_REF); return tc; } // Handle some special cases if (phrase.endsWith("earlier")) { phrase = phrase.replace("earlier", "ago"); phrase = phrase.trim(); } if (phrase.contains("ago")) { phrase = phrase.replaceAll("ago", ""); phrase = "last " + phrase; flag_ago = 1; } if (phrase.contains("later")) { phrase = phrase.replaceAll("later", ""); phrase = "after " + phrase; } if (phrase.contains("after")) { phrase = phrase.replaceAll("after", ""); phrase = "after " + phrase; } if (phrase.contains("more than")) { phrase = phrase.replaceAll("more than", "after"); } if (phrase.contains("less than")) { phrase = phrase.replaceAll("less than", "in"); } if (phrase.contains("last decade")) { phrase = phrase.replaceAll("last decade", "last ten years"); } if (phrase.contains("next decade")) { phrase = phrase.replaceAll("next decade", "next ten years"); } String patternStr = "\\s*(" + positionTerm + "|" + shiftIndicator + ")\\s*((?:\\d{1,4}|" + number + ")\\s*(?:" + number + ")?)\\s*(" + dateUnit + "|" + timeUnit + ")\\s*\\w*"; Pattern pattern = Pattern.compile(patternStr); Matcher matcher = pattern.matcher(phrase); boolean matchFound = matcher.find(); DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyy-MM-dd"); DateTimeFormatter ymFmt = DateTimeFormat.forPattern("yyyy-MM"); DateTimeFormatter yFmt = DateTimeFormat.forPattern("yyyy"); if (matchFound) { for (i = 1; i <= 3; i++) { if (matcher.group(i) == null) { i--; break; } } if (i == 4) { i--; } numterm = i; if (numterm == 3) { temp1 = matcher.group(1); temp2 = matcher.group(2); temp3 = matcher.group(3); amount = Integer.parseInt(converter(temp2)); if (temp1.equals("last") || temp1.equals("past") || temp1.equals("previous") || temp1.equals("since") || temp1.equals("this") || temp1.equals("recent")) { if (flag_ago == 0) { if (temp3.equals("years") || temp3.equals("year")) { finish = start.minusYears(amount); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); finish = new DateTime(start.getYear(), start.getMonthOfYear(), start.getDayOfMonth(), 0, 0, 0, 0); start = new DateTime(year, month, day, 0, 0, 0, 0); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "P" + amount + "Y"); return tc; } else if (temp3.equals("day") || temp3.equals("days")) { finish = start.minusDays(amount); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); finish = new DateTime(start.getYear(), start.getMonthOfYear(), start.getDayOfMonth(), 0, 0, 0, 0); start = new DateTime(year, month, day, 0, 0, 0, 0); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "P" + amount + "D"); return tc; } else if (temp3.equals("month") || temp3.equals("months")) { finish = start.minusMonths(amount); year = start.getYear(); month = start.getMonthOfYear(); day = start.getDayOfMonth(); start = new DateTime(finish.getYear(), finish.getMonthOfYear(), finish.getDayOfMonth(), 0, 0, 0, 0); finish = new DateTime(year, month, day, 0, 0, 0, 0); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "P" + amount + "M"); return tc; } else if (temp3.equals("week") || temp3.equals("weeks")) { finish = start.minusWeeks(amount); year = start.getYear(); month = start.getMonthOfYear(); day = start.getDayOfMonth(); start = new DateTime(finish.getYear(), finish.getMonthOfYear(), finish.getDayOfMonth(), 0, 0, 0, 0); finish = new DateTime(year, month, day, 0, 0, 0, 0); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "P" + amount + "W"); return tc; } else if (temp3.equals("decade") || temp3.equals("decades")) { finish = start.minusYears(amount * 10); year = start.getYear(); month = start.getMonthOfYear(); day = start.getDayOfMonth(); start = new DateTime(finish.getYear(), finish.getMonthOfYear(), finish.getDayOfMonth(), 0, 0, 0, 0); finish = new DateTime(year, month, day, 0, 0, 0, 0); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "P" + amount + "DE"); return tc; } else if (temp3.equals("century") || temp3.equals("centuries")) { finish = start.minusYears(amount * 100); year = start.getYear(); month = start.getMonthOfYear(); day = start.getDayOfMonth(); start = new DateTime(finish.getYear(), finish.getMonthOfYear(), finish.getDayOfMonth(), 0, 0, 0, 0); finish = new DateTime(year, month, day, 0, 0, 0, 0); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "P" + amount + "CE"); return tc; } else if (temp3.equals("hour") || temp3.equals("hours")) { finish = start.minusHours(amount); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "PT" + amount + "H"); return tc; } else if (temp3.equals("minute") || temp3.equals("minutes")) { finish = start.minusMinutes(amount); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "PT" + amount + "M"); return tc; } else if (temp3.equals("second") || temp3.equals("seconds")) { finish = start.minusSeconds(amount); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "PT" + amount + "S"); return tc; } } else { flag_ago = 0; if (temp3.equals("years") || temp3.equals("year")) { finish = start.minusYears(amount); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, 1, 1, 0, 0, 0, 0); finish = new DateTime(year, 12, 31, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, yFmt.print(finish)); return tc; } else if (temp3.equals("day") || temp3.equals("days")) { finish = start.minusDays(amount); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); finish = new DateTime(year, month, day, 23, 59, 59, 59); start = new DateTime(year, month, day, 0, 0, 0, 0); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, fmt.print(finish)); return tc; } else if (temp3.equals("month") || temp3.equals("months")) { finish = start.minusMonths(amount); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.dayOfMonth().getMaximumValue(); start = new DateTime(year, month, 1, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, ymFmt.print(finish)); return tc; } else if (temp3.equals("week") || temp3.equals("weeks")) { finish = start.minusWeeks(amount); start = finish.minusWeeks(amount + 1); year = start.getYear(); month = start.getMonthOfYear(); day = start.getDayOfMonth(); finish = new DateTime(finish.getYear(), finish.getMonthOfYear(), finish.getDayOfMonth(), 23, 59, 59, 59); start = new DateTime(year, month, day, 0, 0, 0, 0); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, yFmt.print(finish) + "-W" + String.valueOf(finish.getWeekOfWeekyear())); return tc; } else if (temp3.equals("decade") || temp3.equals("decades")) { finish = start.minusYears(amount * 10); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, 1, 1, 0, 0, 0, 0); finish = new DateTime(year, 12, 31, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, String.valueOf(finish.getYear() / 10) + "X"); return tc; } else if (temp3.equals("century") || temp3.equals("centuries")) { finish = start.minusYears(amount * 100); year = finish.getYear(); month = start.getMonthOfYear(); day = start.getDayOfMonth(); start = new DateTime(year, 1, 1, 0, 0, 0, 0); finish = new DateTime(year, 12, 31, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, String.valueOf(finish.getCenturyOfEra())); return tc; } else if (temp3.equals("hour") || temp3.equals("hours")) { finish = start.minusHours(amount); start = new DateTime(finish.getYear(), finish.getMonthOfYear(), finish.getDayOfMonth(), finish.getHourOfDay(), 0, 0, 0); finish = new DateTime(finish.getYear(), finish.getMonthOfYear(), finish.getDayOfMonth(), finish.getHourOfDay(), 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "PT" + amount + "H"); return tc; } else if (temp3.equals("minute") || temp3.equals("minutes")) { finish = start.minusMinutes(amount); start = new DateTime(finish.getYear(), finish.getMonthOfYear(), finish.getDayOfMonth(), finish.getHourOfDay(), finish.minuteOfHour().get(), 0, 0); finish = new DateTime(finish.getYear(), finish.getMonthOfYear(), finish.getDayOfMonth(), finish.getHourOfDay(), finish.minuteOfHour().get(), 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "PT" + amount + "M"); return tc; } } } else if (temp1.equals("in") || temp1.equals("upcoming") || temp1.equals("next") || temp1.equals("from") || temp1.equals("following") || temp1.equals("during") || temp1.equals("additional")) { if (temp3.equals("years") || temp3.equals("year")) { finish = start.minusYears((-1) * amount); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); finish = new DateTime(start.getYear(), start.getMonthOfYear(), start.getDayOfMonth(), 23, 59, 59, 59); start = new DateTime(year, month, day, 23, 59, 59, 59); interval = new Interval(finish, start); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "P" + amount + "Y"); return tc; } else if (temp3.equals("day") || temp3.equals("days")) { finish = start.minusDays((-1) * amount); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); finish = new DateTime(start.getYear(), start.getMonthOfYear(), start.getDayOfMonth(), 23, 59, 59, 59); start = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "P" + amount + "D"); return tc; } else if (temp3.equals("month") || temp3.equals("months")) { finish = start.minusMonths((-1) * amount); year = start.getYear(); month = start.getMonthOfYear(); day = start.getDayOfMonth(); start = new DateTime(finish.getYear(), finish.getMonthOfYear(), finish.getDayOfMonth(), 23, 59, 59, 59); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "P" + amount + "M"); return tc; } else if (temp3.equals("week") || temp3.equals("weeks")) { finish = start.minusWeeks((-1) * amount); year = start.getYear(); month = start.getMonthOfYear(); day = start.getDayOfMonth(); start = new DateTime(finish.getYear(), finish.getMonthOfYear(), finish.getDayOfMonth(), 23, 59, 59, 59); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "P" + amount + "W"); return tc; } else if (temp3.equals("decade") || temp3.equals("decades")) { finish = start.minusYears((-1) * amount * 10); year = start.getYear(); month = start.getMonthOfYear(); day = start.getDayOfMonth(); start = new DateTime(finish.getYear(), finish.getMonthOfYear(), finish.getDayOfMonth(), 23, 59, 59, 59); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DURATION); amount = amount * 10; tc.addAttribute(TimexNames.value, "P" + amount + "Y"); return tc; } else if (temp3.equals("century") || temp3.equals("centuries")) { finish = start.minusYears((-1) * amount * 100); year = start.getYear(); month = start.getMonthOfYear(); day = start.getDayOfMonth(); start = new DateTime(finish.getYear(), finish.getMonthOfYear(), finish.getDayOfMonth(), 23, 59, 59, 59); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DURATION); amount *= 100; tc.addAttribute(TimexNames.value, "P" + amount + "Y"); return tc; } else if (temp3.equals("hour") || temp3.equals("hours")) { finish = start.minusHours((-1) * amount); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "PT" + amount + "H"); return tc; } else if (temp3.equals("minute") || temp3.equals("minutes")) { finish = start.minusMinutes((-1) * amount); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "PT" + amount + "M"); return tc; } else if (temp3.equals("second") || temp3.equals("seconds")) { finish = start.minusSeconds((-1) * amount); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "PT" + amount + "S"); return tc; } } else if (temp1.equals("before") || temp1.equals("prior to") || temp1.equals("preceding")) { if (temp3.equals("years") || temp3.equals("year")) { finish = start.minusYears(amount); finish = finish.minusDays(1); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(0000, 1, 1, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "P" + amount + "Y"); return tc; } else if (temp3.equals("day") || temp3.equals("days")) { finish = start.minusDays(amount); finish = finish.minusDays(1); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(0000, 1, 1, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "P" + amount + "D"); return tc; } else if (temp3.equals("month") || temp3.equals("months")) { finish = start.minusMonths(amount); finish = finish.minusDays(1); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(0000, 1, 1, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "P" + amount + "M"); return tc; } else if (temp3.equals("week") || temp3.equals("weeks")) { finish = start.minusWeeks(amount); finish = finish.minusDays(1); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(0000, 1, 1, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "P" + amount + "W"); return tc; } else if (temp3.equals("decade") || temp3.equals("decades")) { finish = start.minusYears(amount * 10); finish = finish.minusDays(1); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(0000, 1, 1, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); amount *= 10; tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "P" + amount + "Y"); return tc; } else if (temp3.equals("century") || temp3.equals("centuries")) { finish = start.minusYears(amount * 100); finish = finish.minusDays(1); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(0000, 1, 1, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); amount *= 100; tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "P" + amount + "Y"); return tc; } else if (temp3.equals("hour") || temp3.equals("hours")) { finish = start.minusHours(amount); start = new DateTime(0000, 1, 1, 0, 0, 0, 0); //interval = new Interval(start, finish); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "PT" + amount + "H"); return tc; } else if (temp3.equals("minute") || temp3.equals("minutes")) { finish = start.minusMinutes(amount); start = new DateTime(0000, 1, 1, 0, 0, 0, 0); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "PT" + amount + "M"); return tc; } else if (temp3.equals("second") || temp3.equals("seconds")) { finish = start.minusSeconds(amount); start = new DateTime(0000, 1, 1, 0, 0, 0, 0); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "PT" + amount + "S"); return tc; } } else if (temp1.equals("after") || temp1.equals("over")) { if (temp3.equals("years") || temp3.equals("year")) { finish = start.minusYears((-1) * amount); finish = finish.minusDays(-1); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); finish = new DateTime(year, month, day, 0, 0, 0, 0); start = new DateTime(9999, 12, 31, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "P" + amount + "Y"); return tc; } else if (temp3.equals("day") || temp3.equals("days")) { finish = start.minusDays((-1) * amount); finish = finish.minusDays(-1); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); finish = new DateTime(year, month, day, 0, 0, 0, 0); start = new DateTime(9999, 12, 31, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "P" + amount + "D"); return tc; } else if (temp3.equals("month") || temp3.equals("months")) { finish = start.minusMonths((-1) * amount); finish = finish.minusDays(-1); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); finish = new DateTime(year, month, day, 0, 0, 0, 0); start = new DateTime(9999, 12, 31, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "P" + amount + "M"); return tc; } else if (temp3.equals("week") || temp3.equals("weeks")) { finish = start.minusWeeks((-1) * amount); finish = finish.minusDays(-1); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); finish = new DateTime(year, month, day, 0, 0, 0, 0); start = new DateTime(9999, 12, 31, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "P" + amount + "W"); return tc; } else if (temp3.equals("decade") || temp3.equals("decades")) { finish = start.minusYears((-1) * amount * 10); finish = finish.minusDays(-1); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); finish = new DateTime(year, month, day, 0, 0, 0, 0); start = new DateTime(9999, 12, 31, 23, 59, 59, 59); amount *= 10; tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "P" + amount + "Y"); return tc; } else if (temp3.equals("century") || temp3.equals("centuries")) { finish = start.minusYears((-1) * amount * 100); finish = finish.minusDays(-1); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); finish = new DateTime(year, month, day, 0, 0, 0, 0); start = new DateTime(9999, 12, 31, 23, 59, 59, 59); interval = new Interval(finish, start); amount *= 100; tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "P" + amount + "Y"); return tc; } else if (temp3.equals("hour") || temp3.equals("hours")) { finish = start.minusHours((-1) * amount); start = new DateTime(9999, 12, 31, 23, 59, 59, 59); interval = new Interval(finish, start); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "PT" + amount + "H"); return tc; } else if (temp3.equals("minute") || temp3.equals("minutes")) { finish = start.minusMinutes((-1) * amount); start = new DateTime(9999, 12, 31, 23, 59, 59, 59); interval = new Interval(finish, start); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "PT" + amount + "M"); return tc; } else if (temp3.equals("second") || temp3.equals("seconds")) { finish = start.minusSeconds((-1) * amount); start = new DateTime(9999, 12, 31, 23, 59, 59, 59); interval = new Interval(finish, start); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "PT" + amount + "S"); return tc; } } } } return null; }
From source file:eu.uqasar.service.dataadapter.JiraDataService.java
License:Apache License
/** * /*w w w .ja v a2 s.co m*/ * @param timeInterval * @return */ private Date getDateForPeriod(String timeInterval) { DateTime now = DateTime.now(); Date date; switch (timeInterval) { case "Last Year": date = now.minusMonths(12).toDate(); break; case "Last 6 Months": date = now.minusMonths(6).toDate(); break; case "Last Month": date = now.minusMonths(1).toDate(); break; case "Last Week": date = now.minusWeeks(1).toDate(); break; default: date = now.minusYears(5).toDate(); break; } //System.out.println("datedatedate:"+date); return date; }
From source file:eu.uqasar.service.dataadapter.SonarDataService.java
License:Apache License
/** * //from w w w .j a v a 2s . c o m * @param period * @return */ private Date getDateForPeriod(String period) { DateTime now = DateTime.now(); Date date; switch (period) { case "Last Year": date = now.minusMonths(12).toDate(); break; case "Last 6 Months": date = now.minusMonths(6).toDate(); break; case "Last Month": date = now.minusMonths(1).toDate(); break; case "Last Week": date = now.minusWeeks(1).toDate(); break; default: date = now.minusYears(5).toDate(); break; } //System.out.println("datedatedate:"+date); return date; }
From source file:google.registry.model.common.TimeOfYear.java
License:Open Source License
/** Get the first {@link DateTime} with this month/day/millis that is at or before the end. */ public DateTime getLastInstanceBeforeOrAt(DateTime end) { DateTime withSameYear = getDateTimeWithYear(end.getYear()); return isBeforeOrAt(withSameYear, end) ? withSameYear : withSameYear.minusYears(1); }
From source file:net.lshift.diffa.config.YearlyPeriodUnit.java
License:Apache License
@Override protected DateTime subtractOneUnit(DateTime from) { return from.minusYears(1); }
From source file:object.Patient.java
public AgeGroup getAgeGroup() { DateTime dobDT = new DateTime(this.dob); DateTime today = new DateTime(); if (dobDT.isAfter(today.minusYears(YOUTH_YEARS))) { return AgeGroup.UnderFive; } else if (dobDT.isAfter(today.minusYears(ADULT_YEARS))) { return AgeGroup.Youth; } else if (dobDT.isAfter(today.minusYears(ELDER_YEARS))) { return AgeGroup.Adult; } else {/* w w w. ja v a 2 s.c o m*/ return AgeGroup.Elderly; } }