/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.cms.core.content.index.queryexpression;
import java.util.Arrays;
import java.util.Set;
import java.util.TreeSet;
import com.enonic.cms.core.content.index.ContentIndexConstants;
/**
* This class implements the field expression.
*/
public final class FieldExpr
implements Expression
{
private static final Set<String> DATE_FIELDS = new TreeSet<String>( String.CASE_INSENSITIVE_ORDER );
private static final Set<String> INTEGER_FIELDS = new TreeSet<String>( String.CASE_INSENSITIVE_ORDER );
static
{
DATE_FIELDS.addAll( Arrays.asList( ContentIndexConstants.DATE_FIELDS ) );
INTEGER_FIELDS.addAll( Arrays.asList( ContentIndexConstants.INTEGER_FIELDS ) );
}
/**
* Field expression.
*/
private final String path;
/**
* Construct the field.
*/
public FieldExpr( String path )
{
this.path = path;
}
/**
* Return the field.
*/
public String getPath()
{
return this.path;
}
/**
* Return the expression as string.
*/
public String toString()
{
return this.path;
}
public boolean isDateField()
{
return DATE_FIELDS.contains( path );
}
public boolean isIntegerField()
{
return INTEGER_FIELDS.contains( path );
}
public boolean isContentType()
{
return ContentIndexConstants.F_CONTENT_TYPE_NAME.equalsIgnoreCase( path );
}
/**
* Evaluate the expression.
*/
public Object evaluate( QueryEvaluator evaluator )
{
return evaluator.evaluate( this );
}
}