/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.cms.core.search.facet.model;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import com.google.common.base.Strings;
@XmlAccessorType(XmlAccessType.NONE)
public class TermsFacetModel
extends AbstractFacetModel
{
private String indexes;
private String exclude;
private FacetOrderBy orderby;
private String regex;
private String regexFlags;
private Boolean allTerms;
@XmlElement(name = "orderby")
public String getOrderby()
{
return this.orderby != null ? this.orderby.getFacetOrderbyString().toLowerCase() : null;
}
public FacetOrderBy getFacetOrderBy()
{
return this.orderby;
}
@XmlElement(name = "all-terms")
public Boolean getAllTerms()
{
return allTerms;
}
@XmlElement(name = "indexes")
public String getIndexes()
{
return indexes;
}
@XmlElement(name = "exclude")
public String getExclude()
{
return exclude;
}
@XmlElement(name = "regex")
public String getRegex()
{
return regex;
}
@XmlElement(name = "regex-flags")
public String getRegexFlags()
{
return regexFlags;
}
public void setOrderby( final String orderby )
{
this.orderby = FacetOrderBy.createFacetOrderBy( orderby );
}
public void setAllTerms( final Boolean allTerms )
{
this.allTerms = allTerms;
}
public void setIndexes( final String indexes )
{
this.indexes = indexes;
}
public void setExclude( final String exclude )
{
this.exclude = exclude;
}
public void setRegex( final String regex )
{
this.regex = regex;
}
public void setRegexFlags( final String regexFlags )
{
this.regexFlags = regexFlags;
}
public void validate()
{
if ( Strings.isNullOrEmpty( indexes ) )
{
throw new IllegalArgumentException( "Terms-facet " + getName() + ": Field 'indexes' must be set" );
}
if ( orderby != null )
{
final FacetOrderBy.Value value = orderby.getValue();
if ( !( value.equals( FacetOrderBy.Value.HITS ) || value.equals( FacetOrderBy.Value.TERM ) ) )
{
throw new IllegalArgumentException(
"Terms-facet " + getName() + ": Unsupported orderby-value: " + orderby.getFacetOrderbyString() );
}
}
}
}