/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.search.query; import com.enonic.cms.core.search.builder.IndexFieldNameConstants; public abstract class AbstractQueryFieldAndValue extends IndexFieldNameConstants { private final QueryField queryField; protected abstract boolean isQueryValueNumeric(); protected abstract boolean isQueryOnDateValue(); protected abstract boolean queryPathIsDateAndValueEmpty(); AbstractQueryFieldAndValue( final QueryField queryField ) { this.queryField = queryField; } AbstractQueryFieldAndValue( final String path ) { this.queryField = QueryFieldFactory.resolveQueryField( path ); } public String getFieldName() { if ( isQueryValueNumeric() ) { return isWildcardQuery() ? ALL_USERDATA_FIELDNAME_NUMBER : queryField.getFieldNameForNumericQueries(); } if ( useDateFieldPath() ) { return isWildcardQuery() ? ALL_USERDATA_FIELDNAME_DATE : queryField.getFieldNameForDateQueries(); } if ( isWildcardQuery() ) { return isAttachmentQuery() ? ATTACHMENT_FIELDNAME : ALL_USERDATA_FIELDNAME; } return queryField.getFieldName(); } private boolean isWildcardQuery() { return queryField.isWildcardQueryField(); } private boolean isAttachmentQuery() { return queryField.isAttachmentField(); } public boolean doRenderAsHasChildQuery() { return queryField.doRenderAsHasChildQuery(); } public boolean doBuildAsIdQuery() { return queryField.doBuildAsIdQuery(); } boolean isDateField() { return queryField.isDateField(); } public String getIndexType() { return queryField.getIndexType().toString(); } final boolean useDateFieldPath() { return queryPathIsDateAndValueEmpty() || isQueryOnDateValue(); } }