/*
* <!--
*
* **************************************************************
* This Java source has been automatically generated.
* MODIFICATIONS TO THIS SOURCE MAY BE OVERWRITTEN - DO NOT MODIFY THIS FILE
* **************************************************************
*
*
* This file (CAL_BusinessCalendar.java)
* was generated from CAL module: Cal.Data.BusinessCalendar.
* The constants and methods provided are intended to facilitate accessing the
* Cal.Data.BusinessCalendar module from Java code.
*
* Creation date: Tue Aug 28 15:58:42 PDT 2007
* --!>
*
*/
package org.openquark.cal.module.Cal.Data;
import org.openquark.cal.compiler.ModuleName;
import org.openquark.cal.compiler.QualifiedName;
import org.openquark.cal.compiler.SourceModel;
/**
* This module contains the <code>Cal.Data.BusinessCalendar.BusinessCalendar</code> type
* which provides information about valid period values, display names, etc...
* for period types (Year, Quarter, Month, etc...) in the calendar. There are
* also functions to build database expressions for extracting period values
* (relative to the calendar) from a database date/time field.
* <p>
* Actual implementations of BusinessCalendars can be found in <code>Cal.Data.GregorianBusinessCalendar</code> and <code>Cal.Data.FiscalBusinessCalendar</code>. Other implementations are possible as
* well.
*
* @author Richard Webster
*/
public final class CAL_BusinessCalendar {
public static final ModuleName MODULE_NAME =
ModuleName.make("Cal.Data.BusinessCalendar");
/**
* This inner class (TypeConstructors) contains constants
* and methods related to binding to CAL TypeConstructors in the Cal.Data.BusinessCalendar module.
*/
public static final class TypeConstructors {
/**
* A business calendar provides information about valid period values, display names, etc...
* for period types (Year, Quarter, Month, etc...) in the calendar.
* The business calendar also contains logic to build database expressions for extracting
* period values (relative to the calendar) from a database date/time field.
*/
public static final QualifiedName BusinessCalendar =
QualifiedName.make(
CAL_BusinessCalendar.MODULE_NAME,
"BusinessCalendar");
/**
* A <code>Cal.Data.BusinessCalendar.Period</code> is defined by one or more nested
* <code>Cal.Data.BusinessCalendar.PeriodType</code>-value pairs.
* The pairs are assumed to be in nesting order, with the outermost
* <code>Cal.Data.BusinessCalendar.PeriodType</code> at the beginning of the list.
* <p>
* TODO: most of the operations seem to access the end of this list so it might
* be better to store it in the opposite order.
*/
public static final QualifiedName Period =
QualifiedName.make(CAL_BusinessCalendar.MODULE_NAME, "Period");
/**
* An enumeration of the various types of time periods recognized by business
* calendars.
*/
public static final QualifiedName PeriodType =
QualifiedName.make(CAL_BusinessCalendar.MODULE_NAME, "PeriodType");
}
/**
* This inner class (DataConstructors) contains constants
* and methods related to binding to CAL DataConstructors in the Cal.Data.BusinessCalendar module.
*/
public static final class DataConstructors {
/*
* DataConstructors for the Cal.Data.BusinessCalendar.PeriodType data type.
*/
/**
* Binding for DataConstructor: Cal.Data.BusinessCalendar.NoPeriod.
* @return the SourceModule.Expr representing an application of Cal.Data.BusinessCalendar.NoPeriod
*/
public static final SourceModel.Expr NoPeriod() {
return SourceModel.Expr.DataCons.make(DataConstructors.NoPeriod);
}
/**
* Name binding for DataConstructor: Cal.Data.BusinessCalendar.NoPeriod.
* @see #NoPeriod()
*/
public static final QualifiedName NoPeriod =
QualifiedName.make(CAL_BusinessCalendar.MODULE_NAME, "NoPeriod");
/**
* Ordinal of DataConstructor Cal.Data.BusinessCalendar.NoPeriod.
* @see #NoPeriod()
*/
public static final int NoPeriod_ordinal = 0;
/**
* Binding for DataConstructor: Cal.Data.BusinessCalendar.YearPeriod.
* @return the SourceModule.Expr representing an application of Cal.Data.BusinessCalendar.YearPeriod
*/
public static final SourceModel.Expr YearPeriod() {
return SourceModel.Expr.DataCons.make(DataConstructors.YearPeriod);
}
/**
* Name binding for DataConstructor: Cal.Data.BusinessCalendar.YearPeriod.
* @see #YearPeriod()
*/
public static final QualifiedName YearPeriod =
QualifiedName.make(CAL_BusinessCalendar.MODULE_NAME, "YearPeriod");
/**
* Ordinal of DataConstructor Cal.Data.BusinessCalendar.YearPeriod.
* @see #YearPeriod()
*/
public static final int YearPeriod_ordinal = 1;
/**
* Binding for DataConstructor: Cal.Data.BusinessCalendar.QuarterPeriod.
* @return the SourceModule.Expr representing an application of Cal.Data.BusinessCalendar.QuarterPeriod
*/
public static final SourceModel.Expr QuarterPeriod() {
return
SourceModel.Expr.DataCons.make(DataConstructors.QuarterPeriod);
}
/**
* Name binding for DataConstructor: Cal.Data.BusinessCalendar.QuarterPeriod.
* @see #QuarterPeriod()
*/
public static final QualifiedName QuarterPeriod =
QualifiedName.make(
CAL_BusinessCalendar.MODULE_NAME,
"QuarterPeriod");
/**
* Ordinal of DataConstructor Cal.Data.BusinessCalendar.QuarterPeriod.
* @see #QuarterPeriod()
*/
public static final int QuarterPeriod_ordinal = 2;
/**
* Binding for DataConstructor: Cal.Data.BusinessCalendar.MonthPeriod.
* @return the SourceModule.Expr representing an application of Cal.Data.BusinessCalendar.MonthPeriod
*/
public static final SourceModel.Expr MonthPeriod() {
return SourceModel.Expr.DataCons.make(DataConstructors.MonthPeriod);
}
/**
* Name binding for DataConstructor: Cal.Data.BusinessCalendar.MonthPeriod.
* @see #MonthPeriod()
*/
public static final QualifiedName MonthPeriod =
QualifiedName.make(CAL_BusinessCalendar.MODULE_NAME, "MonthPeriod");
/**
* Ordinal of DataConstructor Cal.Data.BusinessCalendar.MonthPeriod.
* @see #MonthPeriod()
*/
public static final int MonthPeriod_ordinal = 3;
/**
* Binding for DataConstructor: Cal.Data.BusinessCalendar.WeekOfYearPeriod.
* @return the SourceModule.Expr representing an application of Cal.Data.BusinessCalendar.WeekOfYearPeriod
*/
public static final SourceModel.Expr WeekOfYearPeriod() {
return
SourceModel.Expr.DataCons.make(
DataConstructors.WeekOfYearPeriod);
}
/**
* Name binding for DataConstructor: Cal.Data.BusinessCalendar.WeekOfYearPeriod.
* @see #WeekOfYearPeriod()
*/
public static final QualifiedName WeekOfYearPeriod =
QualifiedName.make(
CAL_BusinessCalendar.MODULE_NAME,
"WeekOfYearPeriod");
/**
* Ordinal of DataConstructor Cal.Data.BusinessCalendar.WeekOfYearPeriod.
* @see #WeekOfYearPeriod()
*/
public static final int WeekOfYearPeriod_ordinal = 4;
/**
* Binding for DataConstructor: Cal.Data.BusinessCalendar.DayOfYearPeriod.
* @return the SourceModule.Expr representing an application of Cal.Data.BusinessCalendar.DayOfYearPeriod
*/
public static final SourceModel.Expr DayOfYearPeriod() {
return
SourceModel.Expr.DataCons.make(DataConstructors.DayOfYearPeriod);
}
/**
* Name binding for DataConstructor: Cal.Data.BusinessCalendar.DayOfYearPeriod.
* @see #DayOfYearPeriod()
*/
public static final QualifiedName DayOfYearPeriod =
QualifiedName.make(
CAL_BusinessCalendar.MODULE_NAME,
"DayOfYearPeriod");
/**
* Ordinal of DataConstructor Cal.Data.BusinessCalendar.DayOfYearPeriod.
* @see #DayOfYearPeriod()
*/
public static final int DayOfYearPeriod_ordinal = 5;
/**
* Binding for DataConstructor: Cal.Data.BusinessCalendar.DayOfMonthPeriod.
* @return the SourceModule.Expr representing an application of Cal.Data.BusinessCalendar.DayOfMonthPeriod
*/
public static final SourceModel.Expr DayOfMonthPeriod() {
return
SourceModel.Expr.DataCons.make(
DataConstructors.DayOfMonthPeriod);
}
/**
* Name binding for DataConstructor: Cal.Data.BusinessCalendar.DayOfMonthPeriod.
* @see #DayOfMonthPeriod()
*/
public static final QualifiedName DayOfMonthPeriod =
QualifiedName.make(
CAL_BusinessCalendar.MODULE_NAME,
"DayOfMonthPeriod");
/**
* Ordinal of DataConstructor Cal.Data.BusinessCalendar.DayOfMonthPeriod.
* @see #DayOfMonthPeriod()
*/
public static final int DayOfMonthPeriod_ordinal = 6;
/**
* Binding for DataConstructor: Cal.Data.BusinessCalendar.DayOfWeekPeriod.
* @return the SourceModule.Expr representing an application of Cal.Data.BusinessCalendar.DayOfWeekPeriod
*/
public static final SourceModel.Expr DayOfWeekPeriod() {
return
SourceModel.Expr.DataCons.make(DataConstructors.DayOfWeekPeriod);
}
/**
* Name binding for DataConstructor: Cal.Data.BusinessCalendar.DayOfWeekPeriod.
* @see #DayOfWeekPeriod()
*/
public static final QualifiedName DayOfWeekPeriod =
QualifiedName.make(
CAL_BusinessCalendar.MODULE_NAME,
"DayOfWeekPeriod");
/**
* Ordinal of DataConstructor Cal.Data.BusinessCalendar.DayOfWeekPeriod.
* @see #DayOfWeekPeriod()
*/
public static final int DayOfWeekPeriod_ordinal = 7;
}
/**
* This inner class (Functions) contains constants
* and methods related to binding to CAL functions in the Cal.Data.BusinessCalendar module.
*/
public static final class Functions {
/**
* Returns whether the specified child <code>Cal.Data.BusinessCalendar.PeriodType</code> can
* roll up into the parent <code>Cal.Data.BusinessCalendar.PeriodType</code>.
*
* <dl><dt><b>See Also:</b>
* <dd><b>Functions and Class Methods:</b> Cal.Data.BusinessCalendar.getValidParentTimePeriods
* </dl>
*
* @param childPeriod (CAL type: <code>Cal.Data.BusinessCalendar.PeriodType</code>)
* @param parentPeriod (CAL type: <code>Cal.Data.BusinessCalendar.PeriodType</code>)
* @return (CAL type: <code>Cal.Core.Prelude.Boolean</code>)
*/
public static final SourceModel.Expr canRollUpTimePeriod(SourceModel.Expr childPeriod, SourceModel.Expr parentPeriod) {
return
SourceModel.Expr.Application.make(
new SourceModel.Expr[] {SourceModel.Expr.Var.make(Functions.canRollUpTimePeriod), childPeriod, parentPeriod});
}
/**
* Name binding for function: canRollUpTimePeriod.
* @see #canRollUpTimePeriod(org.openquark.cal.compiler.SourceModel.Expr, org.openquark.cal.compiler.SourceModel.Expr)
*/
public static final QualifiedName canRollUpTimePeriod =
QualifiedName.make(
CAL_BusinessCalendar.MODULE_NAME,
"canRollUpTimePeriod");
/**
* Returns the lowest level <code>Cal.Data.BusinessCalendar.PeriodType</code> in the
* <code>Cal.Data.BusinessCalendar.Period</code> and the corresponding value.
* <code>Cal.Data.BusinessCalendar.NoPeriod</code> and an error are returned if there are no
* values in the <code>Cal.Data.BusinessCalendar.Period</code>.
* @param period (CAL type: <code>Cal.Data.BusinessCalendar.Period</code>)
* @return (CAL type: <code>(Cal.Data.BusinessCalendar.PeriodType, Cal.Core.Prelude.Int)</code>)
*/
public static final SourceModel.Expr getBasePeriod(SourceModel.Expr period) {
return
SourceModel.Expr.Application.make(
new SourceModel.Expr[] {SourceModel.Expr.Var.make(Functions.getBasePeriod), period});
}
/**
* Name binding for function: getBasePeriod.
* @see #getBasePeriod(org.openquark.cal.compiler.SourceModel.Expr)
*/
public static final QualifiedName getBasePeriod =
QualifiedName.make(
CAL_BusinessCalendar.MODULE_NAME,
"getBasePeriod");
/**
* Returns the lowest level <code>Cal.Data.BusinessCalendar.PeriodType</code> in the
* <code>Cal.Data.BusinessCalendar.Period</code>.
* <code>Cal.Data.BusinessCalendar.NoPeriod</code> is returned if there are no values in the
* <code>Cal.Data.BusinessCalendar.Period</code>.
* @param arg_1 (CAL type: <code>Cal.Data.BusinessCalendar.Period</code>)
* @return (CAL type: <code>Cal.Data.BusinessCalendar.PeriodType</code>)
*/
public static final SourceModel.Expr getBasePeriodType(SourceModel.Expr arg_1) {
return
SourceModel.Expr.Application.make(
new SourceModel.Expr[] {SourceModel.Expr.Var.make(Functions.getBasePeriodType), arg_1});
}
/**
* Name binding for function: getBasePeriodType.
* @see #getBasePeriodType(org.openquark.cal.compiler.SourceModel.Expr)
*/
public static final QualifiedName getBasePeriodType =
QualifiedName.make(
CAL_BusinessCalendar.MODULE_NAME,
"getBasePeriodType");
/**
* Returns the value for the lowest level <code>Cal.Data.BusinessCalendar.PeriodType</code>
* in the <code>Cal.Data.BusinessCalendar.Period</code>.
* Throws an error if there are no values in the <code>Cal.Data.BusinessCalendar.Period</code>.
* @param arg_1 (CAL type: <code>Cal.Data.BusinessCalendar.Period</code>)
* @return (CAL type: <code>Cal.Core.Prelude.Int</code>)
*/
public static final SourceModel.Expr getBasePeriodValue(SourceModel.Expr arg_1) {
return
SourceModel.Expr.Application.make(
new SourceModel.Expr[] {SourceModel.Expr.Var.make(Functions.getBasePeriodValue), arg_1});
}
/**
* Name binding for function: getBasePeriodValue.
* @see #getBasePeriodValue(org.openquark.cal.compiler.SourceModel.Expr)
*/
public static final QualifiedName getBasePeriodValue =
QualifiedName.make(
CAL_BusinessCalendar.MODULE_NAME,
"getBasePeriodValue");
/**
* Returns the list of valid values (and the corresponding string representations)
* for the specified <code>Cal.Data.BusinessCalendar.PeriodType</code> in the given
* <code>Cal.Data.BusinessCalendar.Period</code>. Optionally, endpoints may be specified to
* limit the range.
* <p>
* For example, for the <code>Cal.Data.BusinessCalendar.DayOfWeekPeriod</code> period type,
* this might return <code>[(2, "Monday"), (4, "Wednesday"), (6, "Friday")]</code>.
* <p>
* For example, for the <code>Cal.Data.BusinessCalendar.QuarterPeriod</code> period type,
* this might return <code>[(1, "Q1 98"), (2, "Q2 98"), (3, "Q3 98"), (4, "Q4 98")]</code>.
*
* @param businessCalendar (CAL type: <code>Cal.Data.BusinessCalendar.BusinessCalendar</code>)
* @param parentPeriod (CAL type: <code>Cal.Data.BusinessCalendar.Period</code>)
* @param periodType (CAL type: <code>Cal.Data.BusinessCalendar.PeriodType</code>)
* @param maybeMinValue (CAL type: <code>Cal.Core.Prelude.Maybe Cal.Core.Prelude.Int</code>)
* @param maybeMaxValue (CAL type: <code>Cal.Core.Prelude.Maybe Cal.Core.Prelude.Int</code>)
* @return (CAL type: <code>[(Cal.Core.Prelude.Int, Cal.Core.Prelude.String)]</code>)
*/
public static final SourceModel.Expr getChildPeriodValues(SourceModel.Expr businessCalendar, SourceModel.Expr parentPeriod, SourceModel.Expr periodType, SourceModel.Expr maybeMinValue, SourceModel.Expr maybeMaxValue) {
return
SourceModel.Expr.Application.make(
new SourceModel.Expr[] {SourceModel.Expr.Var.make(Functions.getChildPeriodValues), businessCalendar, parentPeriod, periodType, maybeMinValue, maybeMaxValue});
}
/**
* Name binding for function: getChildPeriodValues.
* @see #getChildPeriodValues(org.openquark.cal.compiler.SourceModel.Expr, org.openquark.cal.compiler.SourceModel.Expr, org.openquark.cal.compiler.SourceModel.Expr, org.openquark.cal.compiler.SourceModel.Expr, org.openquark.cal.compiler.SourceModel.Expr)
*/
public static final QualifiedName getChildPeriodValues =
QualifiedName.make(
CAL_BusinessCalendar.MODULE_NAME,
"getChildPeriodValues");
/**
* Queries a given <code>Cal.Data.BusinessCalendar.BusinessCalendar</code> to convert a time
* value into a <code>Cal.Data.BusinessCalendar.Period</code> with the specified
* <code>Cal.Data.BusinessCalendar.PeriodType</code>s.
* @param businessCalendar (CAL type: <code>Cal.Data.BusinessCalendar.BusinessCalendar</code>)
* @param time (CAL type: <code>Cal.Utilities.Time.Time</code>)
* @param periodTypes (CAL type: <code>[Cal.Data.BusinessCalendar.PeriodType]</code>)
* @return (CAL type: <code>Cal.Data.BusinessCalendar.Period</code>)
*/
public static final SourceModel.Expr getPeriodFromTime(SourceModel.Expr businessCalendar, SourceModel.Expr time, SourceModel.Expr periodTypes) {
return
SourceModel.Expr.Application.make(
new SourceModel.Expr[] {SourceModel.Expr.Var.make(Functions.getPeriodFromTime), businessCalendar, time, periodTypes});
}
/**
* Name binding for function: getPeriodFromTime.
* @see #getPeriodFromTime(org.openquark.cal.compiler.SourceModel.Expr, org.openquark.cal.compiler.SourceModel.Expr, org.openquark.cal.compiler.SourceModel.Expr)
*/
public static final QualifiedName getPeriodFromTime =
QualifiedName.make(
CAL_BusinessCalendar.MODULE_NAME,
"getPeriodFromTime");
/**
* Queries a given <code>Cal.Data.BusinessCalendar.BusinessCalendar</code> to determine the
* time range corresponding to the given <code>Cal.Data.BusinessCalendar.Period</code>.
* This is only possible if the <code>Cal.Data.BusinessCalendar.YearPeriod</code> period is
* included in the period.
* If the info cannot be determined for this period, then the range returned
* will not be bounded on either end.
* @param businessCalendar (CAL type: <code>Cal.Data.BusinessCalendar.BusinessCalendar</code>)
* @param period (CAL type: <code>Cal.Data.BusinessCalendar.Period</code>)
* @return (CAL type: <code>Cal.Utilities.Range.Range Cal.Utilities.Time.Time</code>)
*/
public static final SourceModel.Expr getPeriodTimeRange(SourceModel.Expr businessCalendar, SourceModel.Expr period) {
return
SourceModel.Expr.Application.make(
new SourceModel.Expr[] {SourceModel.Expr.Var.make(Functions.getPeriodTimeRange), businessCalendar, period});
}
/**
* Name binding for function: getPeriodTimeRange.
* @see #getPeriodTimeRange(org.openquark.cal.compiler.SourceModel.Expr, org.openquark.cal.compiler.SourceModel.Expr)
*/
public static final QualifiedName getPeriodTimeRange =
QualifiedName.make(
CAL_BusinessCalendar.MODULE_NAME,
"getPeriodTimeRange");
/**
* Returns a descriptive name for the <code>Cal.Data.BusinessCalendar.PeriodType</code>.
* @param periodType (CAL type: <code>Cal.Data.BusinessCalendar.PeriodType</code>)
* @return (CAL type: <code>Cal.Core.Prelude.String</code>)
*/
public static final SourceModel.Expr getPeriodTypeName(SourceModel.Expr periodType) {
return
SourceModel.Expr.Application.make(
new SourceModel.Expr[] {SourceModel.Expr.Var.make(Functions.getPeriodTypeName), periodType});
}
/**
* Name binding for function: getPeriodTypeName.
* @see #getPeriodTypeName(org.openquark.cal.compiler.SourceModel.Expr)
*/
public static final QualifiedName getPeriodTypeName =
QualifiedName.make(
CAL_BusinessCalendar.MODULE_NAME,
"getPeriodTypeName");
/**
* Returns the value of the specified <code>Cal.Data.BusinessCalendar.PeriodType</code> in
* the <code>Cal.Data.BusinessCalendar.Period</code>.
* If the <code>Cal.Data.BusinessCalendar.Period</code> does not include this
* <code>Cal.Data.BusinessCalendar.PeriodType</code>, then <code>Cal.Core.Prelude.Nothing</code>
* will be returned.
* <p>
* TODO: should this function attempt to calculate the value if it is not
* available? (e.g. Quarter if Year and Month are present.)
*
* @param period (CAL type: <code>Cal.Data.BusinessCalendar.Period</code>)
* @param periodType (CAL type: <code>Cal.Data.BusinessCalendar.PeriodType</code>)
* @return (CAL type: <code>Cal.Core.Prelude.Maybe Cal.Core.Prelude.Int</code>)
*/
public static final SourceModel.Expr getPeriodValue(SourceModel.Expr period, SourceModel.Expr periodType) {
return
SourceModel.Expr.Application.make(
new SourceModel.Expr[] {SourceModel.Expr.Var.make(Functions.getPeriodValue), period, periodType});
}
/**
* Name binding for function: getPeriodValue.
* @see #getPeriodValue(org.openquark.cal.compiler.SourceModel.Expr, org.openquark.cal.compiler.SourceModel.Expr)
*/
public static final QualifiedName getPeriodValue =
QualifiedName.make(
CAL_BusinessCalendar.MODULE_NAME,
"getPeriodValue");
/**
* Queries a given <code>Cal.Data.BusinessCalendar.BusinessCalendar</code> to determine the
* value of a given <code>Cal.Data.BusinessCalendar.PeriodType</code> for the specified time.
* @param businessCalendar (CAL type: <code>Cal.Data.BusinessCalendar.BusinessCalendar</code>)
* @param time (CAL type: <code>Cal.Utilities.Time.Time</code>)
* @param periodType (CAL type: <code>Cal.Data.BusinessCalendar.PeriodType</code>)
* @return (CAL type: <code>Cal.Core.Prelude.Int</code>)
*/
public static final SourceModel.Expr getPeriodValueFromTime(SourceModel.Expr businessCalendar, SourceModel.Expr time, SourceModel.Expr periodType) {
return
SourceModel.Expr.Application.make(
new SourceModel.Expr[] {SourceModel.Expr.Var.make(Functions.getPeriodValueFromTime), businessCalendar, time, periodType});
}
/**
* Name binding for function: getPeriodValueFromTime.
* @see #getPeriodValueFromTime(org.openquark.cal.compiler.SourceModel.Expr, org.openquark.cal.compiler.SourceModel.Expr, org.openquark.cal.compiler.SourceModel.Expr)
*/
public static final QualifiedName getPeriodValueFromTime =
QualifiedName.make(
CAL_BusinessCalendar.MODULE_NAME,
"getPeriodValueFromTime");
/**
* Queries a given <code>Cal.Data.BusinessCalendar.BusinessCalendar</code> to determine
* what range of values are possible for a specified <code>Cal.Data.BusinessCalendar.PeriodType</code>
* within a specified <code>Cal.Data.BusinessCalendar.Period</code>.
* @param businessCalendar (CAL type: <code>Cal.Data.BusinessCalendar.BusinessCalendar</code>)
* @param parentPeriod (CAL type: <code>Cal.Data.BusinessCalendar.Period</code>)
* @param periodType (CAL type: <code>Cal.Data.BusinessCalendar.PeriodType</code>)
* @return (CAL type: <code>(Cal.Core.Prelude.Int, Cal.Core.Prelude.Int)</code>)
*/
public static final SourceModel.Expr getPeriodValueRange(SourceModel.Expr businessCalendar, SourceModel.Expr parentPeriod, SourceModel.Expr periodType) {
return
SourceModel.Expr.Application.make(
new SourceModel.Expr[] {SourceModel.Expr.Var.make(Functions.getPeriodValueRange), businessCalendar, parentPeriod, periodType});
}
/**
* Name binding for function: getPeriodValueRange.
* @see #getPeriodValueRange(org.openquark.cal.compiler.SourceModel.Expr, org.openquark.cal.compiler.SourceModel.Expr, org.openquark.cal.compiler.SourceModel.Expr)
*/
public static final QualifiedName getPeriodValueRange =
QualifiedName.make(
CAL_BusinessCalendar.MODULE_NAME,
"getPeriodValueRange");
/**
* Returns a list <code>Cal.Data.BusinessCalendar.PeriodType</code>-value pairs for the
* <code>Cal.Data.BusinessCalendar.Period</code>.
* The pairs are in nesting order, with the outermost
* <code>Cal.Data.BusinessCalendar.PeriodType</code> at the beginning of the list.
* @param period (CAL type: <code>Cal.Data.BusinessCalendar.Period</code>)
* @return (CAL type: <code>[(Cal.Data.BusinessCalendar.PeriodType, Cal.Core.Prelude.Int)]</code>)
*/
public static final SourceModel.Expr getPeriodValues(SourceModel.Expr period) {
return
SourceModel.Expr.Application.make(
new SourceModel.Expr[] {SourceModel.Expr.Var.make(Functions.getPeriodValues), period});
}
/**
* Name binding for function: getPeriodValues.
* @see #getPeriodValues(org.openquark.cal.compiler.SourceModel.Expr)
*/
public static final QualifiedName getPeriodValues =
QualifiedName.make(
CAL_BusinessCalendar.MODULE_NAME,
"getPeriodValues");
/**
* Queries a given <code>Cal.Data.BusinessCalendar.BusinessCalendar</code> to determine the
* database expression to extract the value of the <code>Cal.Data.BusinessCalendar.PeriodType</code>
* from the specified time expression.
* @param businessCalendar (CAL type: <code>Cal.Data.BusinessCalendar.BusinessCalendar</code>)
* @param baseTimeExpr (CAL type: <code>Cal.Data.DictionaryQuery.Expr</code>)
* @param periodType (CAL type: <code>Cal.Data.BusinessCalendar.PeriodType</code>)
* @return (CAL type: <code>Cal.Data.DictionaryQuery.Expr</code>)
*/
public static final SourceModel.Expr getTimePartExpr(SourceModel.Expr businessCalendar, SourceModel.Expr baseTimeExpr, SourceModel.Expr periodType) {
return
SourceModel.Expr.Application.make(
new SourceModel.Expr[] {SourceModel.Expr.Var.make(Functions.getTimePartExpr), businessCalendar, baseTimeExpr, periodType});
}
/**
* Name binding for function: getTimePartExpr.
* @see #getTimePartExpr(org.openquark.cal.compiler.SourceModel.Expr, org.openquark.cal.compiler.SourceModel.Expr, org.openquark.cal.compiler.SourceModel.Expr)
*/
public static final QualifiedName getTimePartExpr =
QualifiedName.make(
CAL_BusinessCalendar.MODULE_NAME,
"getTimePartExpr");
/**
* Queries a given <code>Cal.Data.BusinessCalendar.BusinessCalendar</code> to determine the
* range of possible values for the base <code>Cal.Data.BusinessCalendar.PeriodType</code>
* of a <code>Cal.Data.BusinessCalendar.Period</code>.
* @param businessCalendar (CAL type: <code>Cal.Data.BusinessCalendar.BusinessCalendar</code>)
* @param period (CAL type: <code>Cal.Data.BusinessCalendar.Period</code>)
* @return (CAL type: <code>(Cal.Core.Prelude.Int, Cal.Core.Prelude.Int)</code>)
*/
public static final SourceModel.Expr getValidBasePeriodValues(SourceModel.Expr businessCalendar, SourceModel.Expr period) {
return
SourceModel.Expr.Application.make(
new SourceModel.Expr[] {SourceModel.Expr.Var.make(Functions.getValidBasePeriodValues), businessCalendar, period});
}
/**
* Name binding for function: getValidBasePeriodValues.
* @see #getValidBasePeriodValues(org.openquark.cal.compiler.SourceModel.Expr, org.openquark.cal.compiler.SourceModel.Expr)
*/
public static final QualifiedName getValidBasePeriodValues =
QualifiedName.make(
CAL_BusinessCalendar.MODULE_NAME,
"getValidBasePeriodValues");
/**
* Returns a list of the valid child <code>Cal.Data.BusinessCalendar.PeriodType</code> values
* which can roll up into the specified parent <code>Cal.Data.BusinessCalendar.PeriodType</code>.
*
* <dl><dt><b>See Also:</b>
* <dd><b>Functions and Class Methods:</b> Cal.Data.BusinessCalendar.getValidParentTimePeriods
* </dl>
*
* @param parentPeriod (CAL type: <code>Cal.Data.BusinessCalendar.PeriodType</code>)
* @return (CAL type: <code>[Cal.Data.BusinessCalendar.PeriodType]</code>)
*/
public static final SourceModel.Expr getValidChildTimePeriods(SourceModel.Expr parentPeriod) {
return
SourceModel.Expr.Application.make(
new SourceModel.Expr[] {SourceModel.Expr.Var.make(Functions.getValidChildTimePeriods), parentPeriod});
}
/**
* Name binding for function: getValidChildTimePeriods.
* @see #getValidChildTimePeriods(org.openquark.cal.compiler.SourceModel.Expr)
*/
public static final QualifiedName getValidChildTimePeriods =
QualifiedName.make(
CAL_BusinessCalendar.MODULE_NAME,
"getValidChildTimePeriods");
/**
* Returns a list of the valid parent <code>Cal.Data.BusinessCalendar.PeriodType</code> values
* into which a child <code>Cal.Data.BusinessCalendar.PeriodType</code> can roll up.
*
* <dl><dt><b>See Also:</b>
* <dd><b>Functions and Class Methods:</b> Cal.Data.BusinessCalendar.getValidChildTimePeriods
* </dl>
*
* @param childPeriod (CAL type: <code>Cal.Data.BusinessCalendar.PeriodType</code>)
* @return (CAL type: <code>[Cal.Data.BusinessCalendar.PeriodType]</code>)
*/
public static final SourceModel.Expr getValidParentTimePeriods(SourceModel.Expr childPeriod) {
return
SourceModel.Expr.Application.make(
new SourceModel.Expr[] {SourceModel.Expr.Var.make(Functions.getValidParentTimePeriods), childPeriod});
}
/**
* Name binding for function: getValidParentTimePeriods.
* @see #getValidParentTimePeriods(org.openquark.cal.compiler.SourceModel.Expr)
*/
public static final QualifiedName getValidParentTimePeriods =
QualifiedName.make(
CAL_BusinessCalendar.MODULE_NAME,
"getValidParentTimePeriods");
/**
* Retrieves the <code>Cal.Data.BusinessCalendar.PeriodType</code> corresponding to a given ordinal.
* @param intVal (CAL type: <code>Cal.Core.Prelude.Int</code>)
* @return (CAL type: <code>Cal.Data.BusinessCalendar.PeriodType</code>)
* The corresponding <code>Cal.Data.BusinessCalendar.PeriodType</code> if one exists, or
* <code>Cal.Data.BusinessCalendar.NoPeriod</code> otherwise.
*/
public static final SourceModel.Expr intToPeriodType(SourceModel.Expr intVal) {
return
SourceModel.Expr.Application.make(
new SourceModel.Expr[] {SourceModel.Expr.Var.make(Functions.intToPeriodType), intVal});
}
/**
* @see #intToPeriodType(org.openquark.cal.compiler.SourceModel.Expr)
* @param intVal
* @return the SourceModel.Expr representing an application of intToPeriodType
*/
public static final SourceModel.Expr intToPeriodType(int intVal) {
return
SourceModel.Expr.Application.make(
new SourceModel.Expr[] {SourceModel.Expr.Var.make(Functions.intToPeriodType), SourceModel.Expr.makeIntValue(intVal)});
}
/**
* Name binding for function: intToPeriodType.
* @see #intToPeriodType(org.openquark.cal.compiler.SourceModel.Expr)
*/
public static final QualifiedName intToPeriodType =
QualifiedName.make(
CAL_BusinessCalendar.MODULE_NAME,
"intToPeriodType");
/**
* Construct a new <code>Cal.Data.BusinessCalendar.BusinessCalendar</code> with the specified behavior.
* @param periodValueRangeFn (CAL type: <code>Cal.Data.BusinessCalendar.Period -> Cal.Data.BusinessCalendar.PeriodType -> (Cal.Core.Prelude.Int, Cal.Core.Prelude.Int)</code>)
* a function to get the range of valid values for a specified period, given the parent period
* @param periodDisplayNameFn (CAL type: <code>Cal.Data.BusinessCalendar.Period -> Cal.Data.BusinessCalendar.PeriodType -> Cal.Core.Prelude.Int -> Cal.Core.Prelude.String</code>)
* a function to get the display name for a period value
* @param periodTimeRangeFn (CAL type: <code>Cal.Data.BusinessCalendar.Period -> Cal.Utilities.Range.Range Cal.Utilities.Time.Time</code>)
* a function to get the start and end time for for a specified period
* @param periodValueFromTimeFn (CAL type: <code>Cal.Utilities.Time.Time -> Cal.Data.BusinessCalendar.PeriodType -> Cal.Core.Prelude.Int</code>)
* a function to get the value of the specified period for a time value
* @param timePartExprFn (CAL type: <code>Cal.Data.DictionaryQuery.Expr -> Cal.Data.BusinessCalendar.PeriodType -> Cal.Data.DictionaryQuery.Expr</code>)
* a function to build a database expression to extract the appropriate time part from a time value
* @return (CAL type: <code>Cal.Data.BusinessCalendar.BusinessCalendar</code>)
*/
public static final SourceModel.Expr makeBusinessCalendar(SourceModel.Expr periodValueRangeFn, SourceModel.Expr periodDisplayNameFn, SourceModel.Expr periodTimeRangeFn, SourceModel.Expr periodValueFromTimeFn, SourceModel.Expr timePartExprFn) {
return
SourceModel.Expr.Application.make(
new SourceModel.Expr[] {SourceModel.Expr.Var.make(Functions.makeBusinessCalendar), periodValueRangeFn, periodDisplayNameFn, periodTimeRangeFn, periodValueFromTimeFn, timePartExprFn});
}
/**
* Name binding for function: makeBusinessCalendar.
* @see #makeBusinessCalendar(org.openquark.cal.compiler.SourceModel.Expr, org.openquark.cal.compiler.SourceModel.Expr, org.openquark.cal.compiler.SourceModel.Expr, org.openquark.cal.compiler.SourceModel.Expr, org.openquark.cal.compiler.SourceModel.Expr)
*/
public static final QualifiedName makeBusinessCalendar =
QualifiedName.make(
CAL_BusinessCalendar.MODULE_NAME,
"makeBusinessCalendar");
/**
* Constructs a <code>Cal.Data.BusinessCalendar.Period</code> from a containing
* <code>Cal.Data.BusinessCalendar.Period</code> value.
* The <code>Cal.Data.BusinessCalendar.PeriodType</code> is assumed to be able to nest
* within the innermost <code>Cal.Data.BusinessCalendar.PeriodType</code> of the parent.
* <p>
* TODO: validate period nesting (i.e. order)?
*
* @param parentPeriod (CAL type: <code>Cal.Data.BusinessCalendar.Period</code>)
* @param childPeriodType (CAL type: <code>Cal.Data.BusinessCalendar.PeriodType</code>)
* @param childPeriodValue (CAL type: <code>Cal.Core.Prelude.Int</code>)
* @return (CAL type: <code>Cal.Data.BusinessCalendar.Period</code>)
*/
public static final SourceModel.Expr makeChildPeriod(SourceModel.Expr parentPeriod, SourceModel.Expr childPeriodType, SourceModel.Expr childPeriodValue) {
return
SourceModel.Expr.Application.make(
new SourceModel.Expr[] {SourceModel.Expr.Var.make(Functions.makeChildPeriod), parentPeriod, childPeriodType, childPeriodValue});
}
/**
* @see #makeChildPeriod(org.openquark.cal.compiler.SourceModel.Expr, org.openquark.cal.compiler.SourceModel.Expr, org.openquark.cal.compiler.SourceModel.Expr)
* @param parentPeriod
* @param childPeriodType
* @param childPeriodValue
* @return the SourceModel.Expr representing an application of makeChildPeriod
*/
public static final SourceModel.Expr makeChildPeriod(SourceModel.Expr parentPeriod, SourceModel.Expr childPeriodType, int childPeriodValue) {
return
SourceModel.Expr.Application.make(
new SourceModel.Expr[] {SourceModel.Expr.Var.make(Functions.makeChildPeriod), parentPeriod, childPeriodType, SourceModel.Expr.makeIntValue(childPeriodValue)});
}
/**
* Name binding for function: makeChildPeriod.
* @see #makeChildPeriod(org.openquark.cal.compiler.SourceModel.Expr, org.openquark.cal.compiler.SourceModel.Expr, org.openquark.cal.compiler.SourceModel.Expr)
*/
public static final QualifiedName makeChildPeriod =
QualifiedName.make(
CAL_BusinessCalendar.MODULE_NAME,
"makeChildPeriod");
/**
* Constructs a <code>Cal.Data.BusinessCalendar.Period</code> from its
* <code>Cal.Data.BusinessCalendar.Period</code> values.
* The pairs are assumed to be in nesting order, with the outermost
* <code>Cal.Data.BusinessCalendar.PeriodType</code> at the beginning of the list.
* <p>
* TODO: validate period nesting (i.e. order)?
*
* @param periodValues (CAL type: <code>[(Cal.Data.BusinessCalendar.PeriodType, Cal.Core.Prelude.Int)]</code>)
* @return (CAL type: <code>Cal.Data.BusinessCalendar.Period</code>)
*/
public static final SourceModel.Expr makePeriod(SourceModel.Expr periodValues) {
return
SourceModel.Expr.Application.make(
new SourceModel.Expr[] {SourceModel.Expr.Var.make(Functions.makePeriod), periodValues});
}
/**
* Name binding for function: makePeriod.
* @see #makePeriod(org.openquark.cal.compiler.SourceModel.Expr)
*/
public static final QualifiedName makePeriod =
QualifiedName.make(CAL_BusinessCalendar.MODULE_NAME, "makePeriod");
/**
* Queries a given <code>Cal.Data.BusinessCalendar.BusinessCalendar</code> to determine the
* display string of a given <code>Cal.Data.BusinessCalendar.PeriodType</code> and value
* with a specified <code>Cal.Data.BusinessCalendar.Period</code> as context.
* <p>
* For example, depending on the <code>Cal.Data.BusinessCalendar.BusinessCalendar</code>,
* for the <code>Cal.Data.BusinessCalendar.DayOfWeekPeriod</code> period type, this might return
* <code>"Monday"</code>. Similarly, for the <code>Cal.Data.BusinessCalendar.QuarterPeriod</code>
* period type, this might return <code>"Q1 98"</code>.
*
* @param businessCalendar (CAL type: <code>Cal.Data.BusinessCalendar.BusinessCalendar</code>)
* @param parentPeriod (CAL type: <code>Cal.Data.BusinessCalendar.Period</code>)
* @param periodType (CAL type: <code>Cal.Data.BusinessCalendar.PeriodType</code>)
* @param periodValue (CAL type: <code>Cal.Core.Prelude.Int</code>)
* @return (CAL type: <code>Cal.Core.Prelude.String</code>)
*/
public static final SourceModel.Expr periodDisplayName(SourceModel.Expr businessCalendar, SourceModel.Expr parentPeriod, SourceModel.Expr periodType, SourceModel.Expr periodValue) {
return
SourceModel.Expr.Application.make(
new SourceModel.Expr[] {SourceModel.Expr.Var.make(Functions.periodDisplayName), businessCalendar, parentPeriod, periodType, periodValue});
}
/**
* @see #periodDisplayName(org.openquark.cal.compiler.SourceModel.Expr, org.openquark.cal.compiler.SourceModel.Expr, org.openquark.cal.compiler.SourceModel.Expr, org.openquark.cal.compiler.SourceModel.Expr)
* @param businessCalendar
* @param parentPeriod
* @param periodType
* @param periodValue
* @return the SourceModel.Expr representing an application of periodDisplayName
*/
public static final SourceModel.Expr periodDisplayName(SourceModel.Expr businessCalendar, SourceModel.Expr parentPeriod, SourceModel.Expr periodType, int periodValue) {
return
SourceModel.Expr.Application.make(
new SourceModel.Expr[] {SourceModel.Expr.Var.make(Functions.periodDisplayName), businessCalendar, parentPeriod, periodType, SourceModel.Expr.makeIntValue(periodValue)});
}
/**
* Name binding for function: periodDisplayName.
* @see #periodDisplayName(org.openquark.cal.compiler.SourceModel.Expr, org.openquark.cal.compiler.SourceModel.Expr, org.openquark.cal.compiler.SourceModel.Expr, org.openquark.cal.compiler.SourceModel.Expr)
*/
public static final QualifiedName periodDisplayName =
QualifiedName.make(
CAL_BusinessCalendar.MODULE_NAME,
"periodDisplayName");
/**
* Retrieves the ordinal corresponding to a given <code>Cal.Data.BusinessCalendar.PeriodType</code>.
* @param periodType (CAL type: <code>Cal.Data.BusinessCalendar.PeriodType</code>)
* @return (CAL type: <code>Cal.Core.Prelude.Int</code>)
* The corresponding ordinal.
*/
public static final SourceModel.Expr periodTypeToInt(SourceModel.Expr periodType) {
return
SourceModel.Expr.Application.make(
new SourceModel.Expr[] {SourceModel.Expr.Var.make(Functions.periodTypeToInt), periodType});
}
/**
* Name binding for function: periodTypeToInt.
* @see #periodTypeToInt(org.openquark.cal.compiler.SourceModel.Expr)
*/
public static final QualifiedName periodTypeToInt =
QualifiedName.make(
CAL_BusinessCalendar.MODULE_NAME,
"periodTypeToInt");
/**
* Sets the value for the lowest level <code>Cal.Data.BusinessCalendar.PeriodType</code>
* in the <code>Cal.Data.BusinessCalendar.Period</code>.
* Throws an error if there are no values in the <code>Cal.Data.BusinessCalendar.Period</code>.
* @param period (CAL type: <code>Cal.Data.BusinessCalendar.Period</code>)
* @param newBasePeriodValue (CAL type: <code>Cal.Core.Prelude.Int</code>)
* @return (CAL type: <code>Cal.Data.BusinessCalendar.Period</code>)
*/
public static final SourceModel.Expr setBasePeriodValue(SourceModel.Expr period, SourceModel.Expr newBasePeriodValue) {
return
SourceModel.Expr.Application.make(
new SourceModel.Expr[] {SourceModel.Expr.Var.make(Functions.setBasePeriodValue), period, newBasePeriodValue});
}
/**
* @see #setBasePeriodValue(org.openquark.cal.compiler.SourceModel.Expr, org.openquark.cal.compiler.SourceModel.Expr)
* @param period
* @param newBasePeriodValue
* @return the SourceModel.Expr representing an application of setBasePeriodValue
*/
public static final SourceModel.Expr setBasePeriodValue(SourceModel.Expr period, int newBasePeriodValue) {
return
SourceModel.Expr.Application.make(
new SourceModel.Expr[] {SourceModel.Expr.Var.make(Functions.setBasePeriodValue), period, SourceModel.Expr.makeIntValue(newBasePeriodValue)});
}
/**
* Name binding for function: setBasePeriodValue.
* @see #setBasePeriodValue(org.openquark.cal.compiler.SourceModel.Expr, org.openquark.cal.compiler.SourceModel.Expr)
*/
public static final QualifiedName setBasePeriodValue =
QualifiedName.make(
CAL_BusinessCalendar.MODULE_NAME,
"setBasePeriodValue");
/**
* Adds an offset to the specified period type of the period.
* <p>
* If this would cause the root period type in the period to go out of bounds,
* then an error will be thrown. For example, for the period <code>[Month, 10]</code>
* adding 5 to the Month period type would result in a month value of 15, which
* is not possible.
* <p>
* If the root period type is Year, then this error should not occur.
* <p>
* If not shifting the base (lowest) period type in the period, then it is
* possible that the lower-level values could become out of range. In this case,
* they will be set to the nearest in-range value. For example, adding 1 Year
* to <code>[(Year 2004, Month 2(Feb), Day 29)]</code> would give
* <code>[(Year 2005, Month 2(Feb), Day 28)]</code>.
* <p>
* Currently, this function will only work with period types explicitly included
* in the period.
* <p>
* TODO: it would probably be nice to handle ones which can be determined from
* lower level ones (quarters from months, etc...)...
* <p>
* TODO: does this handle the case where the child values need to change
* depending on the parent values? For example, for Year/Month/DayOfYear,
* shifting the month value should update the DayOfYear value as well.
*
* @param businessCalendar (CAL type: <code>Cal.Data.BusinessCalendar.BusinessCalendar</code>)
* @param origPeriod (CAL type: <code>Cal.Data.BusinessCalendar.Period</code>)
* @param periodType (CAL type: <code>Cal.Data.BusinessCalendar.PeriodType</code>)
* @param shiftAmount (CAL type: <code>Cal.Core.Prelude.Int</code>)
* @return (CAL type: <code>Cal.Data.BusinessCalendar.Period</code>)
*/
public static final SourceModel.Expr shiftByNPeriods(SourceModel.Expr businessCalendar, SourceModel.Expr origPeriod, SourceModel.Expr periodType, SourceModel.Expr shiftAmount) {
return
SourceModel.Expr.Application.make(
new SourceModel.Expr[] {SourceModel.Expr.Var.make(Functions.shiftByNPeriods), businessCalendar, origPeriod, periodType, shiftAmount});
}
/**
* @see #shiftByNPeriods(org.openquark.cal.compiler.SourceModel.Expr, org.openquark.cal.compiler.SourceModel.Expr, org.openquark.cal.compiler.SourceModel.Expr, org.openquark.cal.compiler.SourceModel.Expr)
* @param businessCalendar
* @param origPeriod
* @param periodType
* @param shiftAmount
* @return the SourceModel.Expr representing an application of shiftByNPeriods
*/
public static final SourceModel.Expr shiftByNPeriods(SourceModel.Expr businessCalendar, SourceModel.Expr origPeriod, SourceModel.Expr periodType, int shiftAmount) {
return
SourceModel.Expr.Application.make(
new SourceModel.Expr[] {SourceModel.Expr.Var.make(Functions.shiftByNPeriods), businessCalendar, origPeriod, periodType, SourceModel.Expr.makeIntValue(shiftAmount)});
}
/**
* Name binding for function: shiftByNPeriods.
* @see #shiftByNPeriods(org.openquark.cal.compiler.SourceModel.Expr, org.openquark.cal.compiler.SourceModel.Expr, org.openquark.cal.compiler.SourceModel.Expr, org.openquark.cal.compiler.SourceModel.Expr)
*/
public static final QualifiedName shiftByNPeriods =
QualifiedName.make(
CAL_BusinessCalendar.MODULE_NAME,
"shiftByNPeriods");
}
/**
* A hash of the concatenated JavaDoc for this class (including inner classes).
* This value is used when checking for changes to generated binding classes.
*/
public static final int javaDocHash = 2050478502;
}