in libraries/bot-dialogs/src/main/java/com/microsoft/recognizers/text/expression/TimexResolver.java [321:435]
private static List<Resolution.Entry> resolveDateRange(TimexProperty timex, LocalDateTime date) {
if (timex.getSeason() != null) {
return new ArrayList<Resolution.Entry>() {
{
add(new Resolution.Entry() {
{
setTimex(timex.getTimexValue());
setType("daterange");
setValue("not resolved");
}
});
}
};
} else {
if (timex.getMonth() != null && timex.getWeekOfMonth() != null) {
List<Pair<String, String>> yearDateRangeList = getMonthWeekDateRange(
timex.getYear() != null ? timex.getYear() : Constants.INVALID_VALUE,
timex.getMonth(), timex.getWeekOfMonth(), date.getYear());
List<Resolution.Entry> result = new ArrayList<Resolution.Entry>();
for (Pair<String, String> yearDateRange : yearDateRangeList) {
result.add(new Resolution.Entry() {
{
setTimex(timex.getTimexValue());
setType("daterange");
setStart(yearDateRange.getLeft());
setEnd(yearDateRange.getRight());
}
});
}
return result;
}
if (timex.getYear() != null && timex.getMonth() != null) {
Pair<String, String> dateRange = TimexResolver.monthDateRange(timex.getYear(), timex.getMonth());
return new ArrayList<Resolution.Entry>() {
{
add(new Resolution.Entry() {
{
setTimex(timex.getTimexValue());
setType("daterange");
setStart(dateRange.getLeft());
setEnd(dateRange.getRight());
}
});
}
};
}
if (timex.getYear() != null && timex.getWeekOfYear() != null) {
Pair<String, String> dateRange = TimexResolver.yearWeekDateRange(date.getYear(), timex.getWeekOfYear(),
timex.getWeekend());
return new ArrayList<Resolution.Entry>() {
{
add(new Resolution.Entry() {
{
setTimex(timex.getTimexValue());
setType("daterange");
setStart(dateRange.getLeft());
setEnd(dateRange.getRight());
}
});
}
};
}
if (timex.getMonth() != null) {
Integer y = date.getYear();
Pair<String, String> lastYearDateRange = TimexResolver.monthDateRange(y - 1, timex.getMonth());
Pair<String, String> thisYearDateRange = TimexResolver.monthDateRange(y, timex.getMonth());
return new ArrayList<Resolution.Entry>() {
{
add(new Resolution.Entry() {
{
setTimex(timex.getTimexValue());
setType("daterange");
setStart(lastYearDateRange.getLeft());
setEnd(lastYearDateRange.getRight());
}
});
add(new Resolution.Entry() {
{
setTimex(timex.getTimexValue());
setType("daterange");
setStart(thisYearDateRange.getLeft());
setEnd(thisYearDateRange.getRight());
}
});
}
};
}
if (timex.getYear() != null) {
Pair<String, String> dateRange = TimexResolver.yearDateRange(timex.getYear());
return new ArrayList<Resolution.Entry>() {
{
add(new Resolution.Entry() {
{
setTimex(timex.getTimexValue());
setType("daterange");
setStart(dateRange.getLeft());
setEnd(dateRange.getRight());
}
});
}
};
}
return new ArrayList<Resolution.Entry>();
}
}