Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents


Selector Built-in Functions

These functions are available via the object's namespace, e.g. Person:{function}.

They can be used to read sets of data from the persistence layer. The final four in the table below (union, diff, intersect,

and

and and) can be used to build up a complex selector using a combination of other selector BIFs as parameters. The other selectors all take an object's attribute as first parameter, and one or more values as the next parameter(s).



FunctionSyntaxDescriptionExample
allObj:all()
returns
Returns all records from the table.Person[] plist = Person:all();
equalsObj:equals(a,b)
returns

Returns records with value of

obj.

a equal to b.

Person[] plist = Person:equals(deleted, false);
notEqualsObj:notEquals(a,b)
returns
Returns records with value of
obj.
a not equal to b.Person[] plist = Person:notEquals(deleted, true);
emptyObj:empty(a)
returns
Returns records with
obj.a
a equal to null.Person[] plist = Person:empty(mobileNum);
notEmptyObj:notEmpty(a)Returns records with a not equal to null.Person[] plist = Person:
empty
notEmpty(mobileNum);
betweenObj:between(a,x,y)
returns
Returns records with value
of obj.a
of a within the range of values between x and y.Person[] plist = Person:between(dob, date1, date2);
notBetweenObj:notBetween(a,x,y)Returns records with value of a not within the range of values between x and y.Person[] plist = Person:
between
notBetween(dob, date1, date2);
lessThanOrEqual
Obj:lessThanOrEqual(a,b)
returns
Returns records with value of
obj.
a less than or equal to b.Person[] plist = Person:lessThanOrEqual(age, num);
lessThanObj:lessThan(a,b)
returns
Returns records with value of
obj.
a less than b.Person[] plist = Person:lessThan(age, num);
greaterThanObj:greaterThan(a,b)
Check if value is greater than the value being compared to
Returns records with value of a greater than b.Person[] plist = Person:greaterThan(age, num);
attributeInObj:attributeIn(a,
"x,y,z")Attribute In
b)Returns records with value of a matching any of the values b (replace b with a list of values of the same type as a).Person[] plist = Person:attributeIn(state,
"Any, One, Of, These"
state_list);
notAttributeInObj:notAttributeIn(a,b)Returns records with value of a not matching any of the values b (replace b with a list of values of the same type as a).Person[] plist = Person:notAttributeIn(state, state_list);
relationshipInObj:relationshipIn(a,b)
Relationship In
Returns records with a relationship/link between a and b, with attribute a being annotated as @OneToMany, @ManyToOne, etc. and b a persistent object instance. Attribute a can be likened to a foreign key.Person[] plist = Person:relationshipIn(reportsTo, person);
contains
notRelationshipInObj:
contains
notRelationshipIn(a,b)
Check is collection has element(s)
Returns records without a relationship/link between a and b, with attribute a being annotated as  @OneToMany, @ManyToOne, etc. and b a persistent object instance. Attribute a can be likened to a foreign key.Person[] plist = Person:
contains
notRelationshipIn(
name
reportsTo,
"a"Begin with
person);
beginsWith 
containsObj:contains(a,b)Returns records with substring b found anywhere within value of a.Person[] plist = Person:
beginsWithEnd with
contains(name, "a");
endsWith 
beginsWithObj:beginsWith(a,b)Returns records with substring b found at the beginning of the value of a.Person[] plist = Person:
endsWithNot between the data or elements
beginsWith(name, "a");
notEmpty Not emptyPerson[] plist = Person:notEmpty(mobileNum);notBetween 
endsWithObj:endsWith(a,b)Returns records with substring b found at the end of the value of a.Person[] plist = Person:
notBetween
endsWith(
dob, date1, date2Collection does not contain element(s)
name, "a");
notContains
 Not begin with
Obj:notContains(a,b)Returns records with substring b found nowhere within value of a.Person[] plist = Person:notContains(name, "a");
notBeginWith
 Check if value does not end with value being compared to
Obj:notBeginWith(a,b)Returns records with substring b not found at the beginning of the value of a.Person[] plist = Person:notBeginWith(name, "a");
notEndsWith
 
Obj:notEndsWith(a,b)Returns records with substring b not found at the end of the value of a.Person[] plist = Person:notEndsWith(name, "a");
notAttributeIn Attribute not in the given domainPerson[] plist = Person:notAttributeIn(state, "Any, One, Of, These");notRelationshipIn Use to check for relationshipPerson[] plist = Person:notRelationshipIn(reportsTo, person);union UnionUse to check for differences
unionObj:union(selector1(a,b), selector2(x,y))

Combines the results of two or more selectors. Does not return the same record twice.

Person[] plist = Person:union(equals(rating, "good"), equals(rating, "excellent"));
diff
 Intersect
Obj:diff(selector1(a,b), selector2(x,y))Compares the results of two or more selectors and returns only the difference.Person[] plist = Person:diff(equals(), equals());
intersect
 
Obj:intersect(selector1(a,b), selector2(x,y))Returns records for which all the selectors are true.Person[] plist = Person:intersect(equals(deleted, false), equals(active, true));
and
 And (in most cases, use this rather than intersect)
Obj:and(selector1(a,b), selector2(x,y))Returns records for which all the selectors are true.Person[] plist = Person:and(equals(deleted, false), equals(active, true));

 

 

 

 





Data Subsets

Having populated a collection with a selector BIF, you can further refine your selection by assigning a subset of said collection to a new collection by using the select BIF. This BIF is available via the collection variable and takes one or a combination of the above selector BIFs as parameter. See the Collections for details.

 

 




Executing SQL

Helium provides functionality to execute SQL natively from the DSL. Details can be found here.




Excerpt
hiddentrue

all, equals, notEquals, etc. | select

 

| sql