Example usage for org.joda.time DateTime minusDays

List of usage examples for org.joda.time DateTime minusDays

Introduction

In this page you can find the example usage for org.joda.time DateTime minusDays.

Prototype

public DateTime minusDays(int days) 

Source Link

Document

Returns a copy of this datetime minus the specified number of days.

Usage

From source file:dk.dma.enav.ais.web.AISWebService.java

License:Apache License

@RequestMapping(method = RequestMethod.GET, path = "/last24Hours", produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity getLast24Hours(@RequestParam(name = "mmsi") int mmsi) {
    DateTime now = DateTime.now(DateTimeZone.UTC);
    DateTime yesterDay = now.minusDays(1);

    List<JsonObject> messages = couchDbClient.view("funcs/by_userIdAndDate").includeDocs(true)
            .startKey(mmsi, yesterDay.toString()).endKey(mmsi, now.toString()).reduce(false)
            .query(JsonObject.class);
    return ResponseEntity.ok(couchDbClient.getGson().toJson(messages));
}

From source file:dk.nsi.haiba.epimibaimporter.status.ImportStatusRepositoryJdbcImpl.java

License:Open Source License

@Override
/**/*from w  w w.  ja v a 2s. c  o m*/
 *        {maxDaysBetweenRuns}
 *     <-----------------------------
 *
 * ____'________|________'___________|___________
 *           lastRun                now
 *     ^                 ^
 *   !overdue         overdue
 */
public boolean isOverdue() {
    ImportStatus latestStatus = getLatestStatus();
    if (latestStatus == null) {
        // we're not overdue if we have never run
        return false;
    }

    DateTime lastRun = latestStatus.getStartTime();
    DateTime now = timeSource.now();
    return (now.minusDays(maxDaysBetweenRuns).isAfter(lastRun));
}

From source file:dk.nsi.haiba.lprimporter.rules.LPRDateTimeRule.java

License:Open Source License

@Override
public LPRRule doProcessing(Statistics statistics) {

    List<Administration> adjustedContacts = new ArrayList<Administration>();

    // sort list after inDate, if more contacts have same in datetime - then they are sorted after out datetime.
    Collections.sort(contacts, new AdministrationInDateComparator());

    for (Administration contact : contacts) {
        // Increment counter for rule #4
        statistics.rule4Counter += 1;/*from   w  ww.  j  a  va  2 s.co  m*/

        // AdmissionStartHour for the contact is default set to 0 if not applied in the database, adjust it with the default value from the propertiesfile
        DateTime admissionStart = new DateTime(contact.getIndlaeggelsesDatetime());
        if (admissionStart.getHourOfDay() == 0 && defaultContactInHour != 0) {
            admissionStart = admissionStart.withHourOfDay(defaultContactInHour);
            contact.setIndlaeggelsesDatetime(admissionStart.toDate());
        }

        // AdmissionEndtime must be adjusted, if it was set to 0
        Date udskrivningsDatetime = contact.getUdskrivningsDatetime();
        if (udskrivningsDatetime != null) {
            DateTime admissionEnd = new DateTime(udskrivningsDatetime.getTime());
            if (admissionEnd.getHourOfDay() == 0) {
                // does a procedure exist on the same date, set the procedure hour as admission end hour
                int hourOfDay = 0;
                for (LPRProcedure procedure : contact.getLprProcedures()) {
                    DateTime procedureTime = new DateTime(procedure.getProcedureDatetime());
                    if (admissionEnd.getYear() == procedureTime.getYear()
                            && admissionEnd.getMonthOfYear() == procedureTime.getMonthOfYear()
                            && admissionEnd.getDayOfMonth() == procedureTime.getDayOfMonth()) {
                        // examine all procedures from the same day, and get the latest hour of day.
                        if (procedureTime.getHourOfDay() > hourOfDay) {
                            hourOfDay = procedureTime.getHourOfDay();
                        }
                    }
                }
                admissionEnd = admissionEnd.withHourOfDay(hourOfDay);
            }

            // Then if admissionEnd still is 0, check the in date time is the same day 
            if (admissionEnd.getHourOfDay() == 0) {
                if (admissionEnd.getYear() == admissionStart.getYear()
                        && admissionEnd.getMonthOfYear() == admissionStart.getMonthOfYear()
                        && admissionEnd.getDayOfMonth() == admissionStart.getDayOfMonth()) {
                    // if same date, set end-datetime to in-datetime + defaultvalue
                    admissionEnd = admissionEnd.withHourOfDay(admissionStart.getHourOfDay())
                            .plusHours(defaultContactOuthoursAddedInhours);
                }
            }

            // Then if admissionEnd still is 0, and the enddate is after indate set it to a configured defaultvalue 
            if (admissionEnd.getHourOfDay() == 0) {
                admissionEnd = admissionEnd.withHourOfDay(defaultAdmissionEndHours);
            }

            contact.setUdskrivningsDatetime(admissionEnd.toDate());

            List<LPRProcedure> processedProcedures = new ArrayList<LPRProcedure>();
            for (LPRProcedure procedure : contact.getLprProcedures()) {
                // if procedure time is set to 0 - set it to 12 the same day
                Date procedureDatetime = procedure.getProcedureDatetime();
                if (procedureDatetime != null) {
                    DateTime procedureDate = new DateTime(procedureDatetime.getTime());
                    // if procedureDate is more than 24 hours after admissionEndDate it is an error
                    if (procedureDate.isAfter(admissionEnd.plusHours(24))) {
                        BusinessRuleError be = new BusinessRuleError(contact.getLprReference().getDbId(),
                                contact.getRecordNumber(),
                                resolver.getMessage(
                                        "rule.datetime.proceduredate.is.more.than.24hous.after.enddate"),
                                resolver.getMessage("rule.datetime.name"));
                        businessRuleErrorLog.log(be);
                        // error, procedure is deleted from the contact.
                        continue;
                    }

                    if (procedureDate.getHourOfDay() == 0) {
                        procedureDate = procedureDate.withHourOfDay(defaultProcedureHours);
                        procedure.setProcedureDatetime(procedureDate.toDate());
                    }
                    processedProcedures.add(procedure);
                } else {
                    BusinessRuleError error = new BusinessRuleError(contact.getLprReference().getDbId(),
                            contact.getRecordNumber(),
                            resolver.getMessage("rule.datetime.proceduredate.isempty"),
                            resolver.getMessage("rule.datetime.name"));
                    throw new RuleAbortedException("Rule aborted due to BusinessRuleError", error);
                }
            }
            contact.setLprProcedures(processedProcedures);

        } else {
            // patient is currently at the hospital
            contact.setCurrentPatient(true);

            log.debug("Admission End datetime is null for LPR ref: " + contact.getRecordNumber()
                    + " patient is probably not discharged from hospital yet");

            // if in-date is not more than 30 days older than now - set out-date to today at 24:00
            DateTime now = new DateTime();
            DateTime in = new DateTime(contact.getIndlaeggelsesDatetime());
            if (in.isAfter(now.minusDays(currentPatientDefaultInterval))) {
                DateTime out = in.withHourOfDay(0).withMinuteOfHour(0).withSecondOfMinute(0)
                        .plusHours(currentPatientHoursIfLessThanInterval);
                contact.setUdskrivningsDatetime(out.toDate());
            } else {
                // else set out-date to in-date + 30 days
                DateTime out = in.plusDays(currentPatientDaysIfGreaterThanInterval);
                contact.setUdskrivningsDatetime(out.toDate());
            }
        }

        // Rule #6 in time is after out time
        DateTime in = new DateTime(contact.getIndlaeggelsesDatetime());
        DateTime out = new DateTime(contact.getUdskrivningsDatetime());
        if (in.isAfter(out)) {
            // Increment counter for rule #6
            statistics.rule6Counter += 1;
            // log the error and ignore the contact.
            BusinessRuleError be = new BusinessRuleError(contact.getLprReference().getDbId(),
                    contact.getRecordNumber(), resolver.getMessage("rule.datetime.indate.isafter.outdate"),
                    resolver.getMessage("rule.datetime.name"));
            businessRuleErrorLog.log(be);
            // Increment count for contacts with errors
            statistics.contactErrorCounter += 1;
            lprDao.updateImportTime(contact.getLprReference(), Outcome.FAILURE);
            continue;
        }

        adjustedContacts.add(contact);
    }

    // set this for unittesting purpose
    contacts = adjustedContacts;
    if (contacts.size() == 0) {
        log.debug("all contacts were prone to error, abort the flow");
        return null;
    }

    // setup the next rule in the chain
    removeIdenticalContactsRule.setContacts(contacts);

    return removeIdenticalContactsRule;
}

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/*from   w  w w. j av  a  2 s.  com*/
  * @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.Ordinary.java

License:Open Source License

/**
 * This functions deals with special terms like today, tomorrow, and yesterday
 * @param start anchor time of the Phrase
 * @param phrase/*from www  .  ja  v a2s . co  m*/
  * @return
  */
public static TimexChunk Ordinaryrule(DateTime start, String phrase) {
    int numterm = 0;
    int i;
    int year;
    int month;
    int day;
    DateTime finish;
    String temp1;
    String temp2;
    Interval interval;
    interval = new Interval(start, start);
    phrase = phrase.toLowerCase();
    String patternStr = "(?:the)?\\s*(?:day)?\\s*(before|after|since)?\\s*(today|tomorrow|yesterday)\\s*";
    Pattern pattern = Pattern.compile(patternStr);
    Matcher matcher = pattern.matcher(phrase);
    boolean matchFound = matcher.find();
    TimexChunk tc = new TimexChunk();
    tc.addAttribute(TimexNames.type, TimexNames.DATE);
    DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyy-MM-dd");

    if (matchFound) {
        for (i = 1; i <= 2; i++) {
            numterm++;
            if (matcher.group(i) == null) {
                numterm--;
            }
        }

        if (numterm == 2) {

            temp1 = matcher.group(1);
            temp2 = matcher.group(2);
            if (temp1.equals("before")) {
                if (temp2.equals("today")) {
                    day = start.getDayOfMonth();
                    month = start.getMonthOfYear();
                    year = start.getYear();
                    start = new DateTime(0, 1, 1, 0, 0, 0, 0);
                    finish = new DateTime(year, month, day, 23, 59, 59, 59);
                    tc.addAttribute(TimexNames.value, fmt.print(finish));
                    tc.addAttribute(TimexNames.mod, TimexNames.BEFORE);
                    return tc;
                }

                else if (temp2.equals("tomorrow")) {
                    day = start.getDayOfMonth();
                    month = start.getMonthOfYear();
                    year = start.getYear();
                    start = new DateTime(0, 1, 1, 0, 0, 0, 0);
                    finish = new DateTime(year, month, day + 1, 23, 59, 59, 59);
                    tc.addAttribute(TimexNames.value, fmt.print(finish));
                    tc.addAttribute(TimexNames.mod, TimexNames.BEFORE);
                    return tc;

                }

                else if (temp2.equals("yesterday")) {
                    start = start.minusDays(1);
                    day = start.getDayOfMonth();
                    month = start.getMonthOfYear();
                    year = start.getYear();
                    start = new DateTime(0, 1, 1, 0, 0, 0, 0);
                    finish = new DateTime(year, month, day, 23, 59, 59, 59);
                    tc.addAttribute(TimexNames.value, fmt.print(finish));
                    tc.addAttribute(TimexNames.mod, TimexNames.BEFORE);
                    return tc;
                }
            }

            else if (temp1.equals("after")) {
                if (temp2.equals("today")) {
                    //start = start.minusDays(-1);
                    day = start.getDayOfMonth();
                    month = start.getMonthOfYear();
                    year = start.getYear();
                    start = new DateTime(year, month, day, 0, 0, 0, 0);
                    finish = new DateTime(9999, 12, 31, 23, 59, 59, 59);
                    tc.addAttribute(TimexNames.value, fmt.print(start));
                    tc.addAttribute(TimexNames.mod, TimexNames.AFTER);
                    return tc;
                }

                else if (temp2.equals("tomorrow")) {
                    start = start.minusDays(-1);
                    day = start.getDayOfMonth();
                    month = start.getMonthOfYear();
                    year = start.getYear();
                    start = new DateTime(year, month, day, 0, 0, 0, 0);
                    finish = new DateTime(9999, 12, 31, 23, 59, 59, 59);
                    tc.addAttribute(TimexNames.value, fmt.print(start));
                    tc.addAttribute(TimexNames.mod, TimexNames.AFTER);
                    return tc;

                }

                else if (temp2.equals("yesterday")) {
                    day = start.getDayOfMonth();
                    month = start.getMonthOfYear();
                    year = start.getYear();
                    start = new DateTime(year, month, day - 1, 0, 0, 0, 0);
                    finish = new DateTime(9999, 12, 31, 23, 59, 59, 59);
                    tc.addAttribute(TimexNames.value, fmt.print(start));
                    tc.addAttribute(TimexNames.mod, TimexNames.AFTER);
                    return tc;
                }
            }

            else if (temp1.equals("since")) {
                if (temp2.equals("yesterday")) {
                    start = start.minusDays(1);
                    day = start.getDayOfMonth();
                    month = start.getMonthOfYear();
                    year = start.getYear();
                    start = new DateTime(year, month, day, 0, 0, 0, 0);
                    finish = new DateTime(9999, 12, 31, 23, 59, 59, 59);
                    tc.addAttribute(TimexNames.value, fmt.print(start));
                    return tc;
                }

                else if (temp2.equals("today")) {
                    day = start.getDayOfMonth();
                    month = start.getMonthOfYear();
                    year = start.getYear();
                    start = new DateTime(year, month, day, 0, 0, 0, 0);
                    finish = new DateTime(9999, 12, 31, 23, 59, 59, 59);
                    tc.addAttribute(TimexNames.value, fmt.print(start));
                    return tc;
                }

                else if (temp2.equals("tomorrow")) {
                    start = start.minusDays(-1);
                    day = start.getDayOfMonth();
                    month = start.getMonthOfYear();
                    year = start.getYear();
                    start = new DateTime(year, month, day, 0, 0, 0, 0);
                    finish = new DateTime(9999, 12, 31, 23, 59, 59, 59);
                    tc.addAttribute(TimexNames.value, fmt.print(start));
                    return tc;
                }
            }
        }

        else if (numterm == 1) {

            temp1 = matcher.group(2);
            if (temp1.equals("today")) {
                day = start.getDayOfMonth();
                month = start.getMonthOfYear();
                year = start.getYear();
                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 (temp1.equals("tomorrow")) {
                start = start.minusDays(-1);
                day = start.getDayOfMonth();
                month = start.getMonthOfYear();
                year = start.getYear();
                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 (temp1.equals("yesterday")) {
                start = start.minusDays(1);
                day = start.getDayOfMonth();
                month = start.getMonthOfYear();
                year = start.getYear();
                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;
            }
        }
    }
    return null;
}

From source file:edu.illinois.cs.cogcomp.temporal.normalizer.main.timex2interval.Period.java

License:Open Source License

/**
 * This function deals with a period of time with format the xxth day/month, etc
 * @param start the anchor time/*from w  w  w . ja v a 2 s  .  c o  m*/
 * @param temporalPhrase
  * @return
  */
public static TimexChunk Periodrule(DateTime start, TemporalPhrase temporalPhrase) {

    int year;
    DateTime finish;
    String temp1;
    String temp2;
    Interval interval;
    interval = new Interval(start, start);
    String phrase = temporalPhrase.getPhrase();
    phrase = phrase.toLowerCase();
    DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyy-MM-dd");

    int modiword = 0;// 0 :no modified words 1:early,ealier 2:late,later
    // Handle some special cases
    TimexChunk tc = new TimexChunk();
    tc.addAttribute(TimexNames.type, TimexNames.DATE);
    if (phrase.contains("now") || phrase.contains("currently") || phrase.contains("current")
            || phrase.contains("today")) {
        DateTime virtualStart = interval.getStart();
        virtualStart = new DateTime(virtualStart.getYear(), virtualStart.getMonthOfYear(),
                virtualStart.getDayOfMonth(), virtualStart.getHourOfDay(), virtualStart.getMinuteOfHour(),
                virtualStart.getSecondOfMinute(), virtualStart.getMillisOfSecond() + 1);
        tc.addAttribute(TimexNames.value, TimexNames.PRESENT_REF);
        return tc;
    }
    if (phrase.contains("early") || phrase.contains("earlier")) {
        modiword = 1;
    }
    if (phrase.contains("late") || phrase.contains("later")) {
        modiword = 2;
    }

    String units = "";

    for (String unitStr : dateUnitSet) {
        units = units + unitStr + "|";
    }
    units += "s$";

    String patternStr = "(?:the)?\\s*(\\d{1,4})(?:th|nd|st|rd)\\s*(" + units + ")\\s*";
    Pattern pattern = Pattern.compile(patternStr);
    Matcher matcher = pattern.matcher(phrase);
    boolean matchFound = matcher.find();
    if (matchFound) {
        temp1 = matcher.group(1);
        temp2 = matcher.group(2);

        String residual = StringUtils.difference(matcher.group(0), phrase);
        String anchorStr = "";
        if (residual.length() > 0) {
            TemporalPhrase anchorPhrase = new TemporalPhrase(residual, temporalPhrase.getTense());
            TimexChunk anchorTimex = TimexNormalizer.normalize(anchorPhrase);
            if (anchorTimex != null) {
                anchorStr = anchorTimex.getAttribute(TimexNames.value);
            }
        }

        if (temp2.equals("century")) {
            year = (Integer.parseInt(temp1) - 1) * 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")) {
            // e.g.: 3rd decade (of this century)
            // first we get this century is 20, then the 3rd decade is 203
            int anchorCentury = start.getCenturyOfEra();
            String val = String.valueOf(anchorCentury * 10 + temp1);
            tc.addAttribute(TimexNames.value, String.valueOf(val));
            return tc;
        }

        else if (temp2.equals("year")) {
            int anchorCentury = start.getCenturyOfEra();
            String val = String.valueOf(anchorCentury * 100 + temp1);
            tc.addAttribute(TimexNames.value, String.valueOf(val));
            return tc;
        }

        else if (temp2.equals("quarter")) {
            int anchorYear = start.getYear();
            String val = String.valueOf(anchorYear) + "-Q" + temp1;
            tc.addAttribute(TimexNames.value, String.valueOf(val));
            return tc;
        }

        else if (temp2.equals("month")) {
            int anchorYear = start.getYear();
            String monthStr = Integer.parseInt(temp1) < 10 ? "0" + temp1 : temp1;
            String val = String.valueOf(anchorYear) + "-" + monthStr;
            tc.addAttribute(TimexNames.value, String.valueOf(val));
            return tc;
        }

        else if (temp2.equals("day")) {
            String val = "";
            if (anchorStr.length() > 0) {
                List<String> normTimexList = Period.normTimexToList(anchorStr);
                String anchorYear = normTimexList.get(0);
                String anchorDate;
                String anchorMonth;
                if (normTimexList.size() == 1 || Integer.parseInt(temp1) > 31) {
                    anchorMonth = "01";
                } else {
                    anchorMonth = normTimexList.get(1);
                }
                DateTime normDateTime = new DateTime(Integer.parseInt(anchorYear),
                        Integer.parseInt(anchorMonth), 1, 0, 0);
                normDateTime = normDateTime.minusDays(-1 * Integer.parseInt(temp1));
                anchorYear = String.valueOf(normDateTime.getYear());
                anchorMonth = String.valueOf(normDateTime.getMonthOfYear());
                anchorDate = String.valueOf(normDateTime.getDayOfMonth());
                anchorMonth = anchorMonth.length() == 1 ? "0" + anchorMonth : anchorMonth;
                anchorDate = anchorDate.length() == 1 ? "0" + anchorDate : anchorDate;
                val = anchorYear + "-" + anchorMonth + "-" + anchorDate;

            } else {
                int month = Integer.parseInt(temp1) > 31 ? 1 : start.getMonthOfYear();
                DateTime normDateTime = new DateTime(start.getYear(), month, 1, 0, 0);
                normDateTime = normDateTime.minusDays(-1 * Integer.parseInt(temp1));
                String anchorYear = String.valueOf(normDateTime.getYear());
                String anchorMonth = String.valueOf(normDateTime.getMonthOfYear());
                String anchorDate = String.valueOf(normDateTime.getDayOfMonth());
                anchorMonth = anchorMonth.length() == 1 ? "0" + anchorMonth : anchorMonth;
                anchorDate = anchorDate.length() == 1 ? "0" + anchorDate : anchorDate;
                val = String.valueOf(anchorYear) + "-" + anchorMonth + "-" + anchorDate;
            }
            tc.addAttribute(TimexNames.value, String.valueOf(val));
            return tc;
        }

        else if (temp2.equals("s")) {

            if (Integer.parseInt(temp1) < 100) {
                year = start.getCenturyOfEra();
                year = year * 100 + Integer.parseInt(temp1);
                if (modiword == 0) {
                    tc.addAttribute(TimexNames.value, String.valueOf(year / 10));
                }

                else if (modiword == 1) {
                    tc.addAttribute(TimexNames.value, String.valueOf(year / 10));
                    tc.addAttribute(TimexNames.mod, TimexNames.START);
                }

                else if (modiword == 2) {
                    tc.addAttribute(TimexNames.value, String.valueOf(year / 10));
                    tc.addAttribute(TimexNames.mod, TimexNames.END);
                }

                return tc;
            }

            else {
                if (modiword == 0) {
                    start = new DateTime(Integer.parseInt(temp1), 1, 1, 0, 0, 0, 0);
                    finish = new DateTime(Integer.parseInt(temp1) + 9, 12, 31, 23, 59, 59, 59);
                    tc.addAttribute(TimexNames.value, String.valueOf(finish.getYear() / 10));
                }

                else if (modiword == 1) {
                    start = new DateTime(Integer.parseInt(temp1), 1, 1, 0, 0, 0, 0);
                    finish = new DateTime(Integer.parseInt(temp1) + 3, 12, 31, 23, 59, 59, 59);
                    tc.addAttribute(TimexNames.value, String.valueOf(finish.getYear() / 10));
                    tc.addAttribute(TimexNames.mod, TimexNames.START);
                }

                else if (modiword == 2) {
                    start = new DateTime(Integer.parseInt(temp1) + 7, 1, 1, 0, 0, 0, 0);
                    finish = new DateTime(Integer.parseInt(temp1) + 9, 12, 31, 23, 59, 59, 59);
                    tc.addAttribute(TimexNames.value, String.valueOf(finish.getYear() / 10));
                    tc.addAttribute(TimexNames.mod, TimexNames.END);
                }
                return tc;

            }
        }

    }
    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  w w  w  . java 2  s .  com*/
 * @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:edu.uga.cs.fluxbuster.analytics.ClusterSimilarityCalculator.java

License:Open Source License

/**
 * Update all cluster similarities in the database between the run on the
 * supplied date and the run one day previous.
 *
 * @param adate the date of the first clustering run
 *//*  w w  w . j  a v a  2s. co  m*/
public void updateClusterSimilarities(Date adate) {
    DateTime adt = new DateTime(adate.getTime());
    Date bdate = new Date(adt.minusDays(1).getMillis());
    this.updateClusterSimilarities(adate, bdate);
}

From source file:edu.uga.cs.fluxbuster.clustering.ClusterGenerator.java

License:Open Source License

/**
 * Load recent flux 2LD's./* w w w .  j av  a  2 s.co m*/
 *
 * @param startTime unix epoch in sec.
 * @return the list of recent flux 2LD's
 */
private Set<String> loadRecentFluxDomains(long startTime) {
    Set<String> retval = new HashSet<String>();
    DBInterface iface = DBInterfaceFactory.loadDBInterface();
    DateTime startDateTime = new DateTime(startTime * 1000);
    for (int i = 1; i < 8; i++) {
        Date prevdate = new Date(startDateTime.minusDays(i).getMillis());
        try {
            for (StoredDomainCluster fluxCluster : iface.getClusters(prevdate, ClusterClass.FLUX)) {
                for (String domain : fluxCluster.getDomains()) {
                    retval.add(DomainNameUtils.extractEffective2LD(domain));
                }
            }
        } catch (Exception e) {
            if (log.isErrorEnabled()) {
                SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
                log.error("Uable to load previous flux domains for " + dateFormat.format(prevdate), e);
            }
        }
    }
    return retval;
}

From source file:ee.ria.xroad.proxy.messagelog.LogCleaner.java

License:Open Source License

protected void handleClean(Session session) {
    DateTime date = new DateTime();
    date = date.minusDays(MessageLogProperties.getKeepRecordsForDays());

    String hql = "delete AbstractLogRecord r where r.archived = true and " + "r.time <= " + date.getMillis();
    int removed = session.createQuery(hql).executeUpdate();
    if (removed == 0) {
        log.info("No archived records to remove from database");
    } else {//from   ww w.  j  ava  2  s  .  c om
        log.info("Removed {} archived records from database", removed);
    }
}