Packagecom.smartfoxserver.v2.entities.match
Classpublic class MatchExpression
InheritanceMatchExpression Inheritance Object

The MatchExpression class represents a matching expression used to compare custom variables or predefined properties when searching for users or Rooms.

The matching expressions are built like "if" statements in any common programming language. They work like queries in a database and can be used to search for Rooms or users using custom criteria: in fact a matching expression can compare predefined properties of the Room and user entities (see the RoomProperties and UserProperties classes), but also custom Room or User Variables.

These expressions are easy to create and concatenate, and they can be used for many different filtering operations within the SmartFoxServer 2X framework, for example to invite players to join a game (see the CreateSFSGameRequest request description), to look for specific Rooms or users (see the FindRoomsRequest and FindUsersRequest requests descriptions), etc.

Additionally (see the examples for more informations):

View the examples

See also

RoomProperties
UserProperties
CreateSFSGameRequest
FindRoomsRequest
FindUsersRequest


Public Properties
 PropertyDefined By
  condition : IMatcher
[read-only] Returns the matching criteria used during values comparison.
MatchExpression
  logicOp : LogicOperator
[read-only] In case of concatenated expressions, returns the current logical operator.
MatchExpression
  next : MatchExpression
[read-only] Returns the next matching expression concatenated to the current one.
MatchExpression
  value : *
[read-only] Returns the value against which the variable or property corresponding to varName is compared.
MatchExpression
  varName : String
[read-only] Returns the name of the variable or property against which the comparison is made.
MatchExpression
Public Methods
 MethodDefined By
  
MatchExpression(varName:String, condition:IMatcher, value:*)
Creates a new MatchExpression instance.
MatchExpression
  
and(varName:String, condition:IMatcher, value:*):MatchExpression
Concatenates the current expression with a new one using the logical AND operator.
MatchExpression
  
hasNext():Boolean
Checks if the current matching expression is concatenated to another one through a logical operator.
MatchExpression
  
or(varName:String, condition:IMatcher, value:*):MatchExpression
Concatenates the current expression with a new one using the logical OR operator.
MatchExpression
  
Moves the iterator cursor to the first matching expression in the chain.
MatchExpression
  
toString():String
Returns a string representation of the matching expression.
MatchExpression
Property Detail
conditionproperty
condition:IMatcher  [read-only]

Returns the matching criteria used during values comparison.

Different objects implementing the IMatcher interface can be used, depending on the type of the variable or property to check.


Implementation
    public function get condition():IMatcher

See also

logicOpproperty 
logicOp:LogicOperator  [read-only]

In case of concatenated expressions, returns the current logical operator.

The default value is null.


Implementation
    public function get logicOp():LogicOperator
nextproperty 
next:MatchExpression  [read-only]

Returns the next matching expression concatenated to the current one.


Implementation
    public function get next():MatchExpression
valueproperty 
value:*  [read-only]

Returns the value against which the variable or property corresponding to varName is compared.


Implementation
    public function get value():*
varNameproperty 
varName:String  [read-only]

Returns the name of the variable or property against which the comparison is made.

Depending what the matching expression is used for (searching a user or a Room), this can be the name of a User Variable or a Room Variable, or it can be one of the constants contained in the UserProperties or RoomProperties classes, representing some of the predefined properties of the user and Room entities respectively.


Implementation
    public function get varName():String

See also

Constructor Detail
MatchExpression()Constructor
public function MatchExpression(varName:String, condition:IMatcher, value:*)

Creates a new MatchExpression instance.

Parameters
varName:String — Name of the variable or property to match.
 
condition:IMatcher — The matching condition.
 
value:* — The value to compare against the variable or property during the matching.

See also

Method Detail
and()method
public function and(varName:String, condition:IMatcher, value:*):MatchExpression

Concatenates the current expression with a new one using the logical AND operator.

Parameters

varName:String — The name of the additional variable or property to match.
 
condition:IMatcher — The additional matching condition.
 
value:* — The value to compare against the additional variable or property during the matching.

Returns
MatchExpression — A new MatchExpression resulting from the concatenation of the current expression with a new one generated from the specified parameters.

See also

hasNext()method 
public function hasNext():Boolean

Checks if the current matching expression is concatenated to another one through a logical operator.

Returns
Booleantrue if the current matching expression is concatenated to another one.

See also

or()method 
public function or(varName:String, condition:IMatcher, value:*):MatchExpression

Concatenates the current expression with a new one using the logical OR operator.

Parameters

varName:String — The name of the additional variable or property to match.
 
condition:IMatcher — The additional matching condition.
 
value:* — The value to compare against the additional variable or property during the matching.

Returns
MatchExpression — A new MatchExpression resulting from the concatenation of the current expression with a new one generated from the specified parameters.

See also

rewind()method 
public function rewind():MatchExpression

Moves the iterator cursor to the first matching expression in the chain.

Returns
MatchExpression — The MatchExpression object at the top of the chain of matching expressions.
toString()method 
public function toString():String

Returns a string representation of the matching expression.

Returns
String — The string representation of the MatchExpression object.
Examples
The following example shows how to create a simple matching expression made of two concatenated conditions: it compares the custom "rank" and "country" User Variables to the passed values. This expression could be used during the creation of a Game Room, to filter the users that the server should take into account when sending the invitations to join the game (only italian users with a ranking greater than 5 - whatever this number means to our game):
     
     var exp:MatchExpression = new MatchExpression('rank', NumberMatch.GREATER_THAN, 5).and('country', StringMatch.EQUALS, 'Italy');
     
The following example creates a matching expression made of three concatenated conditions which compare two predefined Room properties and the custom "isGameStarted" Room Variable to the passed values; this expression could be used to retrieve all the Game Rooms still waiting for players to join them:
     
     var exp:MatchExpression = new MatchExpression(RoomProperties.IS_GAME, BoolMatch.EQUALS, true)
                                 .and(RoomProperties.HAS_FREE_PLAYER_SLOTS, BoolMatch.EQUALS, true)
                                 .and("isGameStarted", BoolMatch.EQUALS, false);
     
The following example creates a matching expression which compares a nested property in a complex data structure; an SFSObject called "avatarData" (could be a User Variable for example) contains the "shield" object (a nested SFSObject) which in turn contains, among others, the "inUse" property which could be used to retrieve all user whose avatars are currently equipped with a shield:
     
     var exp:MatchExpression = new MatchExpression("avatarData.shield.inUse", BoolMatch.EQUALS, true);
     
The following example is similar to the previous one, but it involves an SFSArray. The "avatarData" object contains the "weapons" SFSArray, from which the expression retrieves the third element (that .3 means "give me the element at index == 3") that we know being the weapon the user avatar has in his right hand. Again, this element is an SFSObject containing, among the others, the "name" property which can be compared to the passed string. This example could be used to retrieve all users whose avatars have the Narsil sword in the right hand:
     
     var exp:MatchExpression = new MatchExpression("avatarData.weapons.3.name", StringMatch.EQUALS, "Narsil");