|
|
|
@ -25,21 +25,39 @@ public final class PermaSql {
|
|
|
|
|
/** value to be replaced by end of day as long */
|
|
|
|
|
public static final String VALUE_EOD = "EOD()"; //$NON-NLS-1$
|
|
|
|
|
|
|
|
|
|
/** value to be replaced by noon today as long */
|
|
|
|
|
public static final String VALUE_NOON = "NOON()"; //$NON-NLS-1$
|
|
|
|
|
|
|
|
|
|
/** value to be replaced by end of day yesterday as long */
|
|
|
|
|
public static final String VALUE_EOD_YESTERDAY = "EODY()"; //$NON-NLS-1$
|
|
|
|
|
|
|
|
|
|
/** value to be replaced by noon yesterday as long */
|
|
|
|
|
public static final String VALUE_NOON_YESTERDAY = "NOONY()"; //$NON-NLS-1$
|
|
|
|
|
|
|
|
|
|
/** value to be replaced by end of day tomorrow as long */
|
|
|
|
|
public static final String VALUE_EOD_TOMORROW = "EODT()"; //$NON-NLS-1$
|
|
|
|
|
|
|
|
|
|
/** value to be replaced by noon tomorrow as long */
|
|
|
|
|
public static final String VALUE_NOON_TOMORROW = "NOONT()"; //$NON-NLS-1$
|
|
|
|
|
|
|
|
|
|
/** value to be replaced by end of day day after tomorrow as long */
|
|
|
|
|
public static final String VALUE_EOD_DAY_AFTER = "EODTT()"; //$NON-NLS-1$
|
|
|
|
|
|
|
|
|
|
/** value to be replaced by noon day after tomorrow as long */
|
|
|
|
|
public static final String VALUE_NOON_DAY_AFTER = "NOONTT()"; //$NON-NLS-1$
|
|
|
|
|
|
|
|
|
|
/** value to be replaced by end of day next week as long */
|
|
|
|
|
public static final String VALUE_EOD_NEXT_WEEK = "EODW()"; //$NON-NLS-1$
|
|
|
|
|
|
|
|
|
|
/** value to be replaced by noon next week as long */
|
|
|
|
|
public static final String VALUE_NOON_NEXT_WEEK = "NOONW()"; //$NON-NLS-1$
|
|
|
|
|
|
|
|
|
|
/** value to be replaced by approximate end of day next month as long */
|
|
|
|
|
public static final String VALUE_EOD_NEXT_MONTH = "EODM()"; //$NON-NLS-1$
|
|
|
|
|
|
|
|
|
|
/** value to be replaced by approximate noon next month as long */
|
|
|
|
|
public static final String VALUE_NOON_NEXT_MONTH = "NOONM()"; //$NON-NLS-1$
|
|
|
|
|
|
|
|
|
|
/** Replace placeholder strings with actual */
|
|
|
|
|
public static String replacePlaceholders(String value) {
|
|
|
|
|
if(value.contains(VALUE_NOW))
|
|
|
|
@ -47,6 +65,17 @@ public final class PermaSql {
|
|
|
|
|
if(value.contains(VALUE_EOD) || value.contains(VALUE_EOD_DAY_AFTER) ||
|
|
|
|
|
value.contains(VALUE_EOD_NEXT_WEEK) || value.contains(VALUE_EOD_TOMORROW) ||
|
|
|
|
|
value.contains(VALUE_EOD_YESTERDAY) || value.contains(VALUE_EOD_NEXT_MONTH)) {
|
|
|
|
|
value = replaceEodValues(value);
|
|
|
|
|
}
|
|
|
|
|
if(value.contains(VALUE_NOON) || value.contains(VALUE_NOON_DAY_AFTER) ||
|
|
|
|
|
value.contains(VALUE_NOON_NEXT_WEEK) || value.contains(VALUE_NOON_TOMORROW) ||
|
|
|
|
|
value.contains(VALUE_NOON_YESTERDAY) || value.contains(VALUE_NOON_NEXT_MONTH)) {
|
|
|
|
|
value = replaceNoonValues(value);
|
|
|
|
|
}
|
|
|
|
|
return value;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static String replaceEodValues(String value) {
|
|
|
|
|
Date date = new Date();
|
|
|
|
|
date.setHours(23);
|
|
|
|
|
date.setMinutes(59);
|
|
|
|
@ -58,7 +87,21 @@ public final class PermaSql {
|
|
|
|
|
value = value.replace(VALUE_EOD_DAY_AFTER, Long.toString(time + 2 * DateUtilities.ONE_DAY));
|
|
|
|
|
value = value.replace(VALUE_EOD_NEXT_WEEK, Long.toString(time + 7 * DateUtilities.ONE_DAY));
|
|
|
|
|
value = value.replace(VALUE_EOD_NEXT_MONTH, Long.toString(time + 30 * DateUtilities.ONE_DAY));
|
|
|
|
|
return value;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static String replaceNoonValues(String value) {
|
|
|
|
|
Date date = new Date();
|
|
|
|
|
date.setHours(12);
|
|
|
|
|
date.setMinutes(0);
|
|
|
|
|
date.setSeconds(0);
|
|
|
|
|
long time = date.getTime() / 1000l * 1000l; // chop milliseconds off
|
|
|
|
|
value = value.replace(VALUE_NOON_YESTERDAY, Long.toString(time - DateUtilities.ONE_DAY));
|
|
|
|
|
value = value.replace(VALUE_NOON, Long.toString(time));
|
|
|
|
|
value = value.replace(VALUE_NOON_TOMORROW, Long.toString(time + DateUtilities.ONE_DAY));
|
|
|
|
|
value = value.replace(VALUE_NOON_DAY_AFTER, Long.toString(time + 2 * DateUtilities.ONE_DAY));
|
|
|
|
|
value = value.replace(VALUE_NOON_NEXT_WEEK, Long.toString(time + 7 * DateUtilities.ONE_DAY));
|
|
|
|
|
value = value.replace(VALUE_NOON_NEXT_MONTH, Long.toString(time + 30 * DateUtilities.ONE_DAY));
|
|
|
|
|
return value;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|