diff --git a/source/java/org/alfresco/cmis/CMISPropertyLuceneBuilder.java b/source/java/org/alfresco/cmis/CMISPropertyLuceneBuilder.java index 6702534d72..3c2b9d848c 100644 --- a/source/java/org/alfresco/cmis/CMISPropertyLuceneBuilder.java +++ b/source/java/org/alfresco/cmis/CMISPropertyLuceneBuilder.java @@ -117,4 +117,9 @@ public interface CMISPropertyLuceneBuilder * @return */ public String getLuceneSortField(); + + /** + * + */ + public String getLuceneFieldName(); } diff --git a/source/java/org/alfresco/cmis/mapping/AbstractProperty.java b/source/java/org/alfresco/cmis/mapping/AbstractProperty.java index ee102d4b52..b31500d31c 100644 --- a/source/java/org/alfresco/cmis/mapping/AbstractProperty.java +++ b/source/java/org/alfresco/cmis/mapping/AbstractProperty.java @@ -24,10 +24,18 @@ */ package org.alfresco.cmis.mapping; +import java.io.Serializable; +import java.util.Collection; + import org.alfresco.cmis.CMISPropertyAccessor; import org.alfresco.cmis.CMISPropertyLuceneBuilder; +import org.alfresco.repo.search.impl.lucene.LuceneQueryParser; +import org.alfresco.repo.search.impl.querymodel.PredicateMode; import org.alfresco.service.ServiceRegistry; +import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.namespace.QName; +import org.apache.lucene.queryParser.ParseException; +import org.apache.lucene.search.Query; /** * Base class for all property accessors @@ -77,4 +85,72 @@ public abstract class AbstractProperty implements CMISPropertyAccessor, CMISProp { return null; } + + + public Query buildLuceneEquality(LuceneQueryParser lqp, Serializable value, PredicateMode mode) throws ParseException + { + return null; + } + + public Query buildLuceneExists(LuceneQueryParser lqp, Boolean not) throws ParseException + { + return null; + } + + public Query buildLuceneGreaterThan(LuceneQueryParser lqp, Serializable value, PredicateMode mode) throws ParseException + { + return null; + } + + public Query buildLuceneGreaterThanOrEquals(LuceneQueryParser lqp, Serializable value, PredicateMode mode) throws ParseException + { + return null; + } + + public Query buildLuceneIn(LuceneQueryParser lqp, Collection values, Boolean not, PredicateMode mode) throws ParseException + { + return null; + } + + public Query buildLuceneInequality(LuceneQueryParser lqp, Serializable value, PredicateMode mode) throws ParseException + { + return null; + } + + public Query buildLuceneLessThan(LuceneQueryParser lqp, Serializable value, PredicateMode mode) throws ParseException + { + return null; + } + + public Query buildLuceneLessThanOrEquals(LuceneQueryParser lqp, Serializable value, PredicateMode mode) throws ParseException + { + return null; + } + + public Query buildLuceneLike(LuceneQueryParser lqp, Serializable value, Boolean not) throws ParseException + { + return null; + } + + public String getLuceneFieldName() + { + throw new UnsupportedOperationException(); + } + + public String getLuceneSortField() + { + throw new UnsupportedOperationException(); + } + + public Serializable getValue(NodeRef nodeRef) + { + throw new UnsupportedOperationException(); + } + + public void setValue(NodeRef nodeRef, Serializable value) + { + throw new UnsupportedOperationException(); + } + + } diff --git a/source/java/org/alfresco/cmis/mapping/AbstractSimpleProperty.java b/source/java/org/alfresco/cmis/mapping/AbstractSimpleProperty.java new file mode 100644 index 0000000000..3639342720 --- /dev/null +++ b/source/java/org/alfresco/cmis/mapping/AbstractSimpleProperty.java @@ -0,0 +1,244 @@ +/* + * Copyright (C) 2005-2007 Alfresco Software Limited. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + * As a special exception to the terms and conditions of version 2.0 of + * the GPL, you may redistribute this Program in connection with Free/Libre + * and Open Source Software ("FLOSS") applications as described in Alfresco's + * FLOSS exception. You should have recieved a copy of the text describing + * the FLOSS exception, and it is also available here: + * http://www.alfresco.com/legal/licensing" + */ +package org.alfresco.cmis.mapping; + +import java.io.Serializable; +import java.util.Collection; + +import org.alfresco.repo.search.impl.lucene.LuceneQueryParser; +import org.alfresco.repo.search.impl.querymodel.PredicateMode; +import org.alfresco.service.ServiceRegistry; +import org.alfresco.service.cmr.dictionary.DataTypeDefinition; +import org.alfresco.service.cmr.repository.datatype.DefaultTypeConverter; +import org.alfresco.service.namespace.QName; +import org.apache.lucene.index.Term; +import org.apache.lucene.queryParser.ParseException; +import org.apache.lucene.search.BooleanQuery; +import org.apache.lucene.search.MatchAllDocsQuery; +import org.apache.lucene.search.Query; +import org.apache.lucene.search.TermQuery; +import org.apache.lucene.search.BooleanClause.Occur; + +/** + * Common support for lucene query building. + * + * @author andyh + * + */ +public abstract class AbstractSimpleProperty extends AbstractProperty +{ + + protected AbstractSimpleProperty(ServiceRegistry serviceRegistry, String propertyName) + { + super(serviceRegistry, propertyName); + } + + protected abstract String getValueAsString(Serializable value); + + protected String getRangeMax() + { + return "\uFFFF"; + } + + protected String getRangeMin() + { + return "\u0000"; + } + + protected abstract DataTypeDefinition getInDataType(); + + protected abstract QName getQNameForExists(); + + /* + * (non-Javadoc) + * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneEquality(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) + */ + public Query buildLuceneEquality(LuceneQueryParser lqp, Serializable value, PredicateMode mode) throws ParseException + { + return lqp.getFieldQuery(getLuceneFieldName(), getValueAsString(value)); + } + + /* + * (non-Javadoc) + * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneExists(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.lang.Boolean) + */ + public Query buildLuceneExists(LuceneQueryParser lqp, Boolean not) throws ParseException + { + if (not) + { + return lqp.getFieldQuery("ISNULL", getQNameForExists().toString()); + } + else + { + return lqp.getFieldQuery("ISNOTNULL", getQNameForExists().toString()); + } + } + + /* + * (non-Javadoc) + * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneGreaterThan(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) + */ + public Query buildLuceneGreaterThan(LuceneQueryParser lqp, Serializable value, PredicateMode mode) throws ParseException + { + String field = getLuceneFieldName(); + String stringValue = getValueAsString(value); + return lqp.getRangeQuery(field, stringValue, getRangeMax(), false, true); + } + + /* + * (non-Javadoc) + * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneGreaterThanOrEquals(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) + */ + public Query buildLuceneGreaterThanOrEquals(LuceneQueryParser lqp, Serializable value, PredicateMode mode) throws ParseException + { + String field = getLuceneFieldName(); + String stringValue = getValueAsString(value); + return lqp.getRangeQuery(field, stringValue, getRangeMax(), true, true); + } + + /* + * (non-Javadoc) + * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneIn(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.util.Collection, java.lang.Boolean, org.alfresco.repo.search.impl.querymodel.PredicateMode) + */ + public Query buildLuceneIn(LuceneQueryParser lqp, Collection values, Boolean not, PredicateMode mode) throws ParseException + { + String field = getLuceneFieldName(); + + // Check type conversion + + @SuppressWarnings("unused") + Object converted = DefaultTypeConverter.INSTANCE.convert(getInDataType(), values); + Collection asStrings = DefaultTypeConverter.INSTANCE.convert(String.class, values); + + if (asStrings.size() == 0) + { + if (not) + { + return new MatchAllDocsQuery(); + } + else + { + return new TermQuery(new Term("NO_TOKENS", "__")); + } + } + else if (asStrings.size() == 1) + { + String value = asStrings.iterator().next(); + if (not) + { + return lqp.getDoesNotMatchFieldQuery(field, value); + } + else + { + return lqp.getFieldQuery(field, value); + } + } + else + { + BooleanQuery booleanQuery = new BooleanQuery(); + if (not) + { + booleanQuery.add(new MatchAllDocsQuery(), Occur.MUST); + } + for (String value : asStrings) + { + Query any = lqp.getFieldQuery(field, value); + if (not) + { + booleanQuery.add(any, Occur.MUST_NOT); + } + else + { + booleanQuery.add(any, Occur.SHOULD); + } + } + return booleanQuery; + } + } + + /* + * (non-Javadoc) + * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneInequality(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) + */ + public Query buildLuceneInequality(LuceneQueryParser lqp, Serializable value, PredicateMode mode) throws ParseException + { + String field = getLuceneFieldName(); + String stringValue = getValueAsString(value); + return lqp.getDoesNotMatchFieldQuery(field, stringValue); + } + + /* + * (non-Javadoc) + * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneLessThan(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) + */ + public Query buildLuceneLessThan(LuceneQueryParser lqp, Serializable value, PredicateMode mode) throws ParseException + { + String field = getLuceneFieldName(); + String stringValue = getValueAsString(value); + return lqp.getRangeQuery(field, getRangeMin(), stringValue, true, false); + } + + /* + * (non-Javadoc) + * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneLessThanOrEquals(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) + */ + public Query buildLuceneLessThanOrEquals(LuceneQueryParser lqp, Serializable value, PredicateMode mode) throws ParseException + { + String field = getLuceneFieldName(); + String stringValue = getValueAsString(value); + return lqp.getRangeQuery(field, getRangeMin(), stringValue, true, true); + } + + /* + * (non-Javadoc) + * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneLike(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, java.lang.Boolean) + */ + public Query buildLuceneLike(LuceneQueryParser lqp, Serializable value, Boolean not) throws ParseException + { + String field = getLuceneFieldName(); + String stringValue = getValueAsString(value); + + if (not) + { + BooleanQuery booleanQuery = new BooleanQuery(); + booleanQuery.add(new MatchAllDocsQuery(), Occur.MUST); + booleanQuery.add(lqp.getLikeQuery(field, stringValue), Occur.MUST_NOT); + return booleanQuery; + } + else + { + return lqp.getLikeQuery(field, stringValue); + } + } + + /* + * (non-Javadoc) + * @see org.alfresco.cmis.property.PropertyLuceneBuilder#getLuceneSortField() + */ + public String getLuceneSortField() + { + return getLuceneFieldName(); + } +} diff --git a/source/java/org/alfresco/cmis/mapping/CheckinCommentProperty.java b/source/java/org/alfresco/cmis/mapping/CheckinCommentProperty.java index ce277ae39e..3a9bf116c8 100644 --- a/source/java/org/alfresco/cmis/mapping/CheckinCommentProperty.java +++ b/source/java/org/alfresco/cmis/mapping/CheckinCommentProperty.java @@ -25,15 +25,11 @@ package org.alfresco.cmis.mapping; import java.io.Serializable; -import java.util.Collection; import org.alfresco.cmis.CMISDictionaryModel; -import org.alfresco.repo.search.impl.lucene.LuceneQueryParser; -import org.alfresco.repo.search.impl.querymodel.PredicateMode; import org.alfresco.service.ServiceRegistry; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.version.Version; -import org.apache.lucene.search.Query; /** * Accessor for the CMIS Checkin Comment @@ -68,104 +64,4 @@ public class CheckinCommentProperty extends AbstractProperty return null; } } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyAccessor#setValue(org.alfresco.service.cmr.repository.NodeRef, java.io.Serializable) - */ - public void setValue(NodeRef nodeRef, Serializable value) - { - throw new UnsupportedOperationException(); - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneEquality(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneEquality(LuceneQueryParser lqp, Serializable value, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneExists(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.lang.Boolean) - */ - public Query buildLuceneExists(LuceneQueryParser lqp, Boolean not) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneGreaterThan(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneGreaterThan(LuceneQueryParser lqp, Serializable value, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneGreaterThanOrEquals(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneGreaterThanOrEquals(LuceneQueryParser lqp, Serializable value, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneIn(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.util.Collection, java.lang.Boolean, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneIn(LuceneQueryParser lqp, Collection values, Boolean not, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneInequality(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneInequality(LuceneQueryParser lqp, Serializable value, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneLessThan(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneLessThan(LuceneQueryParser lqp, Serializable value, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneLessThanOrEquals(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneLessThanOrEquals(LuceneQueryParser lqp, Serializable value, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneLike(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, java.lang.Boolean) - */ - public Query buildLuceneLike(LuceneQueryParser lqp, Serializable value, Boolean not) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#getLuceneSortField() - */ - public String getLuceneSortField() - { - throw new UnsupportedOperationException(); - } - } diff --git a/source/java/org/alfresco/cmis/mapping/ContentStreamLengthProperty.java b/source/java/org/alfresco/cmis/mapping/ContentStreamLengthProperty.java index 6215632774..ea086a2d81 100644 --- a/source/java/org/alfresco/cmis/mapping/ContentStreamLengthProperty.java +++ b/source/java/org/alfresco/cmis/mapping/ContentStreamLengthProperty.java @@ -25,31 +25,22 @@ package org.alfresco.cmis.mapping; import java.io.Serializable; -import java.util.Collection; import org.alfresco.cmis.CMISDictionaryModel; import org.alfresco.model.ContentModel; -import org.alfresco.repo.search.impl.lucene.LuceneQueryParser; -import org.alfresco.repo.search.impl.querymodel.PredicateMode; import org.alfresco.service.ServiceRegistry; import org.alfresco.service.cmr.dictionary.DataTypeDefinition; import org.alfresco.service.cmr.repository.ContentData; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.datatype.DefaultTypeConverter; -import org.apache.lucene.index.Term; -import org.apache.lucene.queryParser.ParseException; -import org.apache.lucene.search.BooleanQuery; -import org.apache.lucene.search.MatchAllDocsQuery; -import org.apache.lucene.search.Query; -import org.apache.lucene.search.TermQuery; -import org.apache.lucene.search.BooleanClause.Occur; +import org.alfresco.service.namespace.QName; /** * Accessor for CMIS content stream length property * * @author andyh */ -public class ContentStreamLengthProperty extends AbstractProperty +public class ContentStreamLengthProperty extends AbstractSimpleProperty { /** * Construct @@ -78,18 +69,8 @@ public class ContentStreamLengthProperty extends AbstractProperty return 0L; } } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyAccessor#setValue(org.alfresco.service.cmr.repository.NodeRef, java.io.Serializable) - */ - public void setValue(NodeRef nodeRef, Serializable value) - { - throw new UnsupportedOperationException(); - } - - private String getLuceneFieldName() + public String getLuceneFieldName() { StringBuilder field = new StringBuilder(128); field.append("@"); @@ -98,169 +79,21 @@ public class ContentStreamLengthProperty extends AbstractProperty return field.toString(); } - private String getValueAsString(Serializable value) + protected String getValueAsString(Serializable value) { Object converted = DefaultTypeConverter.INSTANCE.convert(getServiceRegistry().getDictionaryService().getDataType(DataTypeDefinition.LONG), value); String asString = DefaultTypeConverter.INSTANCE.convert(String.class, converted); return asString; } - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneEquality(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneEquality(LuceneQueryParser lqp, Serializable value, PredicateMode mode) throws ParseException + protected QName getQNameForExists() { - return lqp.getFieldQuery(getLuceneFieldName(), getValueAsString(value)); + return ContentModel.PROP_CONTENT; } + - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneExists(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.lang.Boolean) - */ - public Query buildLuceneExists(LuceneQueryParser lqp, Boolean not) throws ParseException + protected DataTypeDefinition getInDataType() { - if (not) - { - return lqp.getFieldQuery("ISNULL", ContentModel.PROP_CONTENT.toString()); - } - else - { - return lqp.getFieldQuery("ISNOTNULL", ContentModel.PROP_CONTENT.toString()); - } + return getServiceRegistry().getDictionaryService().getDataType(DataTypeDefinition.LONG); } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneGreaterThan(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneGreaterThan(LuceneQueryParser lqp, Serializable value, PredicateMode mode) throws ParseException - { - return lqp.getRangeQuery(getLuceneFieldName(), getValueAsString(value), "MAX", false, true); - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneGreaterThanOrEquals(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneGreaterThanOrEquals(LuceneQueryParser lqp, Serializable value, PredicateMode mode) throws ParseException - { - return lqp.getRangeQuery(getLuceneFieldName(), getValueAsString(value), "MAX", true, true); - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneIn(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.util.Collection, java.lang.Boolean, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneIn(LuceneQueryParser lqp, Collection values, Boolean not, PredicateMode mode) throws ParseException - { - String field = getLuceneFieldName(); - - // Check type conversion - - @SuppressWarnings("unused") - Object converted = DefaultTypeConverter.INSTANCE.convert(getServiceRegistry().getDictionaryService().getDataType(DataTypeDefinition.LONG), values); - Collection asStrings = DefaultTypeConverter.INSTANCE.convert(String.class, values); - - if (asStrings.size() == 0) - { - if (not) - { - return new MatchAllDocsQuery(); - } - else - { - return new TermQuery(new Term("NO_TOKENS", "__")); - } - } - else if (asStrings.size() == 1) - { - String value = asStrings.iterator().next(); - if (not) - { - return lqp.getDoesNotMatchFieldQuery(field, value); - } - else - { - return lqp.getFieldQuery(field, value); - } - } - else - { - BooleanQuery booleanQuery = new BooleanQuery(); - if (not) - { - booleanQuery.add(new MatchAllDocsQuery(), Occur.MUST); - } - for (String value : asStrings) - { - Query any = lqp.getFieldQuery(field, value); - if (not) - { - booleanQuery.add(any, Occur.MUST_NOT); - } - else - { - booleanQuery.add(any, Occur.SHOULD); - } - } - return booleanQuery; - } - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneInequality(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneInequality(LuceneQueryParser lqp, Serializable value, PredicateMode mode) throws ParseException - { - return lqp.getDoesNotMatchFieldQuery(getLuceneFieldName(), getValueAsString(value)); - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneLessThan(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneLessThan(LuceneQueryParser lqp, Serializable value, PredicateMode mode) throws ParseException - { - return lqp.getRangeQuery(getLuceneFieldName(), "MIN", getValueAsString(value), true, false); - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneLessThanOrEquals(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneLessThanOrEquals(LuceneQueryParser lqp, Serializable value, PredicateMode mode) throws ParseException - { - return lqp.getRangeQuery(getLuceneFieldName(), "MIN", getValueAsString(value), true, true); - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneLike(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, java.lang.Boolean) - */ - public Query buildLuceneLike(LuceneQueryParser lqp, Serializable value, Boolean not) throws ParseException - { - if (not) - { - BooleanQuery booleanQuery = new BooleanQuery(); - booleanQuery.add(new MatchAllDocsQuery(), Occur.MUST); - booleanQuery.add(lqp.getLikeQuery(getLuceneFieldName(), getValueAsString(value)), Occur.MUST_NOT); - return booleanQuery; - } - else - { - return lqp.getLikeQuery(getLuceneFieldName(), getValueAsString(value)); - } - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#getLuceneSortField() - */ - public String getLuceneSortField() - { - return getLuceneFieldName(); - } - } diff --git a/source/java/org/alfresco/cmis/mapping/ContentStreamMimetypeProperty.java b/source/java/org/alfresco/cmis/mapping/ContentStreamMimetypeProperty.java index f7259dc167..b28d63ded4 100644 --- a/source/java/org/alfresco/cmis/mapping/ContentStreamMimetypeProperty.java +++ b/source/java/org/alfresco/cmis/mapping/ContentStreamMimetypeProperty.java @@ -25,31 +25,22 @@ package org.alfresco.cmis.mapping; import java.io.Serializable; -import java.util.Collection; import org.alfresco.cmis.CMISDictionaryModel; import org.alfresco.model.ContentModel; -import org.alfresco.repo.search.impl.lucene.LuceneQueryParser; -import org.alfresco.repo.search.impl.querymodel.PredicateMode; import org.alfresco.service.ServiceRegistry; import org.alfresco.service.cmr.dictionary.DataTypeDefinition; import org.alfresco.service.cmr.repository.ContentData; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.datatype.DefaultTypeConverter; -import org.apache.lucene.index.Term; -import org.apache.lucene.queryParser.ParseException; -import org.apache.lucene.search.BooleanQuery; -import org.apache.lucene.search.MatchAllDocsQuery; -import org.apache.lucene.search.Query; -import org.apache.lucene.search.TermQuery; -import org.apache.lucene.search.BooleanClause.Occur; +import org.alfresco.service.namespace.QName; /** * Accessor for CMIS content stream mimetype property * * @author andyh */ -public class ContentStreamMimetypeProperty extends AbstractProperty +public class ContentStreamMimetypeProperty extends AbstractSimpleProperty { /** * Construct @@ -79,16 +70,7 @@ public class ContentStreamMimetypeProperty extends AbstractProperty } } - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyAccessor#setValue(org.alfresco.service.cmr.repository.NodeRef, java.io.Serializable) - */ - public void setValue(NodeRef nodeRef, Serializable value) - { - throw new UnsupportedOperationException(); - } - - private String getLuceneFieldName() + public String getLuceneFieldName() { StringBuilder field = new StringBuilder(128); field.append("@"); @@ -97,170 +79,20 @@ public class ContentStreamMimetypeProperty extends AbstractProperty return field.toString(); } - private String getValueAsString(Serializable value) + protected String getValueAsString(Serializable value) { Object converted = DefaultTypeConverter.INSTANCE.convert(getServiceRegistry().getDictionaryService().getDataType(DataTypeDefinition.TEXT), value); String asString = DefaultTypeConverter.INSTANCE.convert(String.class, converted); return asString; } - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneEquality(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneEquality(LuceneQueryParser lqp, Serializable value, PredicateMode mode) throws ParseException + protected QName getQNameForExists() { - return lqp.getFieldQuery(getLuceneFieldName(), getValueAsString(value)); + return ContentModel.PROP_CONTENT; } - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneExists(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.lang.Boolean) - */ - public Query buildLuceneExists(LuceneQueryParser lqp, Boolean not) throws ParseException + protected DataTypeDefinition getInDataType() { - if (not) - { - return lqp.getFieldQuery("ISNULL", ContentModel.PROP_CONTENT.toString()); - } - else - { - return lqp.getFieldQuery("ISNOTNULL", ContentModel.PROP_CONTENT.toString()); - } - + return getServiceRegistry().getDictionaryService().getDataType(DataTypeDefinition.TEXT); } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneGreaterThan(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneGreaterThan(LuceneQueryParser lqp, Serializable value, PredicateMode mode) throws ParseException - { - return lqp.getRangeQuery(getLuceneFieldName(), getValueAsString(value), "\uFFFF", false, true); - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneGreaterThanOrEquals(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneGreaterThanOrEquals(LuceneQueryParser lqp, Serializable value, PredicateMode mode) throws ParseException - { - return lqp.getRangeQuery(getLuceneFieldName(), getValueAsString(value), "\uFFFF", true, true); - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneIn(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.util.Collection, java.lang.Boolean, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneIn(LuceneQueryParser lqp, Collection values, Boolean not, PredicateMode mode) throws ParseException - { - String field = getLuceneFieldName(); - - // Check type conversion - - @SuppressWarnings("unused") - Object converted = DefaultTypeConverter.INSTANCE.convert(getServiceRegistry().getDictionaryService().getDataType(DataTypeDefinition.TEXT), values); - Collection asStrings = DefaultTypeConverter.INSTANCE.convert(String.class, values); - - if (asStrings.size() == 0) - { - if (not) - { - return new MatchAllDocsQuery(); - } - else - { - return new TermQuery(new Term("NO_TOKENS", "__")); - } - } - else if (asStrings.size() == 1) - { - String value = asStrings.iterator().next(); - if (not) - { - return lqp.getDoesNotMatchFieldQuery(field, value); - } - else - { - return lqp.getFieldQuery(field, value); - } - } - else - { - BooleanQuery booleanQuery = new BooleanQuery(); - if (not) - { - booleanQuery.add(new MatchAllDocsQuery(), Occur.MUST); - } - for (String value : asStrings) - { - Query any = lqp.getFieldQuery(field, value); - if (not) - { - booleanQuery.add(any, Occur.MUST_NOT); - } - else - { - booleanQuery.add(any, Occur.SHOULD); - } - } - return booleanQuery; - } - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneInequality(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneInequality(LuceneQueryParser lqp, Serializable value, PredicateMode mode) throws ParseException - { - return lqp.getDoesNotMatchFieldQuery(getLuceneFieldName(), getValueAsString(value)); - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneLessThan(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneLessThan(LuceneQueryParser lqp, Serializable value, PredicateMode mode) throws ParseException - { - return lqp.getRangeQuery(getLuceneFieldName(), "\u0000", getValueAsString(value), true, false); - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneLessThanOrEquals(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneLessThanOrEquals(LuceneQueryParser lqp, Serializable value, PredicateMode mode) throws ParseException - { - return lqp.getRangeQuery(getLuceneFieldName(), "\u0000", getValueAsString(value), true, true); - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneLike(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, java.lang.Boolean) - */ - public Query buildLuceneLike(LuceneQueryParser lqp, Serializable value, Boolean not) throws ParseException - { - if (not) - { - BooleanQuery booleanQuery = new BooleanQuery(); - booleanQuery.add(new MatchAllDocsQuery(), Occur.MUST); - booleanQuery.add(lqp.getLikeQuery(getLuceneFieldName(), getValueAsString(value)), Occur.MUST_NOT); - return booleanQuery; - } - else - { - return lqp.getLikeQuery(getLuceneFieldName(), getValueAsString(value)); - } - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#getLuceneSortField() - */ - public String getLuceneSortField() - { - return getLuceneFieldName(); - } - } diff --git a/source/java/org/alfresco/cmis/mapping/ContentStreamUriProperty.java b/source/java/org/alfresco/cmis/mapping/ContentStreamUriProperty.java index ba33928e4b..17daf3ff45 100644 --- a/source/java/org/alfresco/cmis/mapping/ContentStreamUriProperty.java +++ b/source/java/org/alfresco/cmis/mapping/ContentStreamUriProperty.java @@ -25,15 +25,11 @@ package org.alfresco.cmis.mapping; import java.io.Serializable; -import java.util.Collection; import org.alfresco.cmis.CMISDictionaryModel; import org.alfresco.model.ContentModel; -import org.alfresco.repo.search.impl.lucene.LuceneQueryParser; -import org.alfresco.repo.search.impl.querymodel.PredicateMode; import org.alfresco.service.ServiceRegistry; import org.alfresco.service.cmr.repository.NodeRef; -import org.apache.lucene.search.Query; /** * Accessor for CMIS content stream length property @@ -73,103 +69,4 @@ public class ContentStreamUriProperty extends AbstractProperty } return sb.toString(); } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyAccessor#setValue(org.alfresco.service.cmr.repository.NodeRef, java.io.Serializable) - */ - public void setValue(NodeRef nodeRef, Serializable value) - { - throw new UnsupportedOperationException(); - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneEquality(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneEquality(LuceneQueryParser lqp, Serializable value, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneExists(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.lang.Boolean) - */ - public Query buildLuceneExists(LuceneQueryParser lqp, Boolean not) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneGreaterThan(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneGreaterThan(LuceneQueryParser lqp, Serializable value, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneGreaterThanOrEquals(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneGreaterThanOrEquals(LuceneQueryParser lqp, Serializable value, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneIn(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.util.Collection, java.lang.Boolean, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneIn(LuceneQueryParser lqp, Collection values, Boolean not, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneInequality(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneInequality(LuceneQueryParser lqp, Serializable value, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneLessThan(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneLessThan(LuceneQueryParser lqp, Serializable value, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneLessThanOrEquals(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneLessThanOrEquals(LuceneQueryParser lqp, Serializable value, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneLike(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, java.lang.Boolean) - */ - public Query buildLuceneLike(LuceneQueryParser lqp, Serializable value, Boolean not) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#getLuceneSortField() - */ - public String getLuceneSortField() - { - throw new UnsupportedOperationException(); - } } diff --git a/source/java/org/alfresco/cmis/mapping/DirectProperty.java b/source/java/org/alfresco/cmis/mapping/DirectProperty.java index ac2c39373c..8c07754ac0 100644 --- a/source/java/org/alfresco/cmis/mapping/DirectProperty.java +++ b/source/java/org/alfresco/cmis/mapping/DirectProperty.java @@ -25,29 +25,20 @@ package org.alfresco.cmis.mapping; import java.io.Serializable; -import java.util.Collection; -import org.alfresco.repo.search.impl.lucene.LuceneQueryParser; -import org.alfresco.repo.search.impl.querymodel.PredicateMode; import org.alfresco.service.ServiceRegistry; +import org.alfresco.service.cmr.dictionary.DataTypeDefinition; import org.alfresco.service.cmr.dictionary.PropertyDefinition; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.datatype.DefaultTypeConverter; import org.alfresco.service.namespace.QName; -import org.apache.lucene.index.Term; -import org.apache.lucene.queryParser.ParseException; -import org.apache.lucene.search.BooleanQuery; -import org.apache.lucene.search.MatchAllDocsQuery; -import org.apache.lucene.search.Query; -import org.apache.lucene.search.TermQuery; -import org.apache.lucene.search.BooleanClause.Occur; /** * A simple 1-1 property mapping from a CMIS property name to an alfresco property * * @author andyh */ -public class DirectProperty extends AbstractProperty +public class DirectProperty extends AbstractSimpleProperty { private QName alfrescoName; @@ -66,15 +57,17 @@ public class DirectProperty extends AbstractProperty /* * (non-Javadoc) + * * @see org.alfresco.cmis.property.AbstractPropertyAccessor#getMappedProperty() */ public QName getMappedProperty() { return alfrescoName; } - + /* * (non-Javadoc) + * * @see org.alfresco.cmis.property.PropertyAccessor#getValue(org.alfresco.service.cmr.repository.NodeRef) */ public Serializable getValue(NodeRef nodeRef) @@ -82,16 +75,7 @@ public class DirectProperty extends AbstractProperty return getServiceRegistry().getNodeService().getProperty(nodeRef, alfrescoName); } - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyAccessor#setValue(org.alfresco.service.cmr.repository.NodeRef, java.io.Serializable) - */ - public void setValue(NodeRef nodeRef, Serializable value) - { - throw new UnsupportedOperationException(); - } - - private String getLuceneFieldName() + public String getLuceneFieldName() { StringBuilder field = new StringBuilder(64); field.append("@"); @@ -99,7 +83,7 @@ public class DirectProperty extends AbstractProperty return field.toString(); } - private String getValueAsString(Serializable value) + protected String getValueAsString(Serializable value) { PropertyDefinition pd = getServiceRegistry().getDictionaryService().getProperty(alfrescoName); Object converted = DefaultTypeConverter.INSTANCE.convert(pd.getDataType(), value); @@ -107,175 +91,17 @@ public class DirectProperty extends AbstractProperty return asString; } - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneEquality(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneEquality(LuceneQueryParser lqp, Serializable value, PredicateMode mode) throws ParseException + protected QName getQNameForExists() { - return lqp.getFieldQuery(getLuceneFieldName(), getValueAsString(value)); - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneExists(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.lang.Boolean) - */ - public Query buildLuceneExists(LuceneQueryParser lqp, Boolean not) throws ParseException - { - if (not) - { - return lqp.getFieldQuery("ISNULL", alfrescoName.toString()); - } - else - { - return lqp.getFieldQuery("ISNOTNULL", alfrescoName.toString()); - } + return alfrescoName; } - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneGreaterThan(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneGreaterThan(LuceneQueryParser lqp, Serializable value, PredicateMode mode) throws ParseException + protected DataTypeDefinition getInDataType() { - String field = getLuceneFieldName(); - String stringValue = getValueAsString(value); - return lqp.getRangeQuery(field, stringValue, "\uFFFF", false, true); - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneGreaterThanOrEquals(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneGreaterThanOrEquals(LuceneQueryParser lqp, Serializable value, PredicateMode mode) throws ParseException - { - String field = getLuceneFieldName(); - String stringValue = getValueAsString(value); - return lqp.getRangeQuery(field, stringValue, "\uFFFF", true, true); - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneIn(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.util.Collection, java.lang.Boolean, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneIn(LuceneQueryParser lqp, Collection values, Boolean not, PredicateMode mode) throws ParseException - { - String field = getLuceneFieldName(); PropertyDefinition pd = getServiceRegistry().getDictionaryService().getProperty(alfrescoName); - - // Check type conversion - - @SuppressWarnings("unused") - Object converted = DefaultTypeConverter.INSTANCE.convert(pd.getDataType(), values); - Collection asStrings = DefaultTypeConverter.INSTANCE.convert(String.class, values); - - if (asStrings.size() == 0) - { - if (not) - { - return new MatchAllDocsQuery(); - } - else - { - return new TermQuery(new Term("NO_TOKENS", "__")); - } - } - else if (asStrings.size() == 1) - { - String value = asStrings.iterator().next(); - if (not) - { - return lqp.getDoesNotMatchFieldQuery(field, value); - } - else - { - return lqp.getFieldQuery(field, value); - } - } - else - { - BooleanQuery booleanQuery = new BooleanQuery(); - if (not) - { - booleanQuery.add(new MatchAllDocsQuery(), Occur.MUST); - } - for (String value : asStrings) - { - Query any = lqp.getFieldQuery(field, value); - if (not) - { - booleanQuery.add(any, Occur.MUST_NOT); - } - else - { - booleanQuery.add(any, Occur.SHOULD); - } - } - return booleanQuery; - } + return pd.getDataType(); } - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneInequality(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneInequality(LuceneQueryParser lqp, Serializable value, PredicateMode mode) throws ParseException - { - String field = getLuceneFieldName(); - String stringValue = getValueAsString(value); - return lqp.getDoesNotMatchFieldQuery(field, stringValue); - } + - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneLessThan(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneLessThan(LuceneQueryParser lqp, Serializable value, PredicateMode mode) throws ParseException - { - String field = getLuceneFieldName(); - String stringValue = getValueAsString(value); - return lqp.getRangeQuery(field, "\u0000", stringValue, true, false); - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneLessThanOrEquals(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneLessThanOrEquals(LuceneQueryParser lqp, Serializable value, PredicateMode mode) throws ParseException - { - String field = getLuceneFieldName(); - String stringValue = getValueAsString(value); - return lqp.getRangeQuery(field, "\u0000", stringValue, true, true); - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneLike(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, java.lang.Boolean) - */ - public Query buildLuceneLike(LuceneQueryParser lqp, Serializable value, Boolean not) throws ParseException - { - String field = getLuceneFieldName(); - String stringValue = getValueAsString(value); - - if (not) - { - BooleanQuery booleanQuery = new BooleanQuery(); - booleanQuery.add(new MatchAllDocsQuery(), Occur.MUST); - booleanQuery.add(lqp.getLikeQuery(field, stringValue), Occur.MUST_NOT); - return booleanQuery; - } - else - { - return lqp.getLikeQuery(field, stringValue); - } - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#getLuceneSortField() - */ - public String getLuceneSortField() - { - return getLuceneFieldName(); - } } diff --git a/source/java/org/alfresco/cmis/mapping/FixedValueProperty.java b/source/java/org/alfresco/cmis/mapping/FixedValueProperty.java index fca975e455..7cc3be3639 100644 --- a/source/java/org/alfresco/cmis/mapping/FixedValueProperty.java +++ b/source/java/org/alfresco/cmis/mapping/FixedValueProperty.java @@ -73,15 +73,6 @@ public class FixedValueProperty extends AbstractProperty return value; } - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyAccessor#setValue(org.alfresco.service.cmr.repository.NodeRef, java.io.Serializable) - */ - public void setValue(NodeRef nodeRef, Serializable value) - { - throw new UnsupportedOperationException(); - } - /* * (non-Javadoc) * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneEquality(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) @@ -316,4 +307,9 @@ public class FixedValueProperty extends AbstractProperty throw new UnsupportedOperationException(); } + public String getLuceneFieldName() + { + throw new UnsupportedOperationException(); + } + } diff --git a/source/java/org/alfresco/cmis/mapping/IsImmutableProperty.java b/source/java/org/alfresco/cmis/mapping/IsImmutableProperty.java index af26d9317f..033d76e58d 100644 --- a/source/java/org/alfresco/cmis/mapping/IsImmutableProperty.java +++ b/source/java/org/alfresco/cmis/mapping/IsImmutableProperty.java @@ -25,17 +25,13 @@ package org.alfresco.cmis.mapping; import java.io.Serializable; -import java.util.Collection; import org.alfresco.cmis.CMISDictionaryModel; import org.alfresco.model.ContentModel; -import org.alfresco.repo.search.impl.lucene.LuceneQueryParser; -import org.alfresco.repo.search.impl.querymodel.PredicateMode; import org.alfresco.service.ServiceRegistry; import org.alfresco.service.cmr.lock.LockType; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.datatype.DefaultTypeConverter; -import org.apache.lucene.search.Query; /** * Property accessor for CMIS is immutable property @@ -76,103 +72,4 @@ public class IsImmutableProperty extends AbstractProperty } return Boolean.valueOf(false); } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyAccessor#setValue(org.alfresco.service.cmr.repository.NodeRef, java.io.Serializable) - */ - public void setValue(NodeRef nodeRef, Serializable value) - { - throw new UnsupportedOperationException(); - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneEquality(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneEquality(LuceneQueryParser lqp, Serializable value, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneExists(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.lang.Boolean) - */ - public Query buildLuceneExists(LuceneQueryParser lqp, Boolean not) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneGreaterThan(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneGreaterThan(LuceneQueryParser lqp, Serializable value, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneGreaterThanOrEquals(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneGreaterThanOrEquals(LuceneQueryParser lqp, Serializable value, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneIn(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.util.Collection, java.lang.Boolean, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneIn(LuceneQueryParser lqp, Collection values, Boolean not, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneInequality(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneInequality(LuceneQueryParser lqp, Serializable value, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneLessThan(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneLessThan(LuceneQueryParser lqp, Serializable value, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneLessThanOrEquals(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneLessThanOrEquals(LuceneQueryParser lqp, Serializable value, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneLike(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, java.lang.Boolean) - */ - public Query buildLuceneLike(LuceneQueryParser lqp, Serializable value, Boolean not) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#getLuceneSortField() - */ - public String getLuceneSortField() - { - throw new UnsupportedOperationException(); - } } diff --git a/source/java/org/alfresco/cmis/mapping/IsLatestMajorVersionProperty.java b/source/java/org/alfresco/cmis/mapping/IsLatestMajorVersionProperty.java index ba219631c9..c90f888828 100644 --- a/source/java/org/alfresco/cmis/mapping/IsLatestMajorVersionProperty.java +++ b/source/java/org/alfresco/cmis/mapping/IsLatestMajorVersionProperty.java @@ -25,17 +25,13 @@ package org.alfresco.cmis.mapping; import java.io.Serializable; -import java.util.Collection; import org.alfresco.cmis.CMISDictionaryModel; import org.alfresco.model.ContentModel; -import org.alfresco.repo.search.impl.lucene.LuceneQueryParser; -import org.alfresco.repo.search.impl.querymodel.PredicateMode; import org.alfresco.service.ServiceRegistry; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.version.Version; import org.alfresco.service.cmr.version.VersionType; -import org.apache.lucene.search.Query; /** * Accessor for CMIS is latest major version property @@ -56,6 +52,7 @@ public class IsLatestMajorVersionProperty extends AbstractProperty /* * (non-Javadoc) + * * @see org.alfresco.cmis.property.PropertyAccessor#getValue(org.alfresco.service.cmr.repository.NodeRef) */ public Serializable getValue(NodeRef nodeRef) @@ -77,104 +74,4 @@ public class IsLatestMajorVersionProperty extends AbstractProperty } } } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyAccessor#setValue(org.alfresco.service.cmr.repository.NodeRef, java.io.Serializable) - */ - public void setValue(NodeRef nodeRef, Serializable value) - { - throw new UnsupportedOperationException(); - } - - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneEquality(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneEquality(LuceneQueryParser lqp, Serializable value, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneExists(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.lang.Boolean) - */ - public Query buildLuceneExists(LuceneQueryParser lqp, Boolean not) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneGreaterThan(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneGreaterThan(LuceneQueryParser lqp, Serializable value, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneGreaterThanOrEquals(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneGreaterThanOrEquals(LuceneQueryParser lqp, Serializable value, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneIn(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.util.Collection, java.lang.Boolean, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneIn(LuceneQueryParser lqp, Collection values, Boolean not, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneInequality(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneInequality(LuceneQueryParser lqp, Serializable value, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneLessThan(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneLessThan(LuceneQueryParser lqp, Serializable value, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneLessThanOrEquals(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneLessThanOrEquals(LuceneQueryParser lqp, Serializable value, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneLike(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, java.lang.Boolean) - */ - public Query buildLuceneLike(LuceneQueryParser lqp, Serializable value, Boolean not) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#getLuceneSortField() - */ - public String getLuceneSortField() - { - throw new UnsupportedOperationException(); - } } diff --git a/source/java/org/alfresco/cmis/mapping/IsLatestVersionProperty.java b/source/java/org/alfresco/cmis/mapping/IsLatestVersionProperty.java index fa96b3a686..92fd5de954 100644 --- a/source/java/org/alfresco/cmis/mapping/IsLatestVersionProperty.java +++ b/source/java/org/alfresco/cmis/mapping/IsLatestVersionProperty.java @@ -25,15 +25,11 @@ package org.alfresco.cmis.mapping; import java.io.Serializable; -import java.util.Collection; import org.alfresco.cmis.CMISDictionaryModel; import org.alfresco.model.ContentModel; -import org.alfresco.repo.search.impl.lucene.LuceneQueryParser; -import org.alfresco.repo.search.impl.querymodel.PredicateMode; import org.alfresco.service.ServiceRegistry; import org.alfresco.service.cmr.repository.NodeRef; -import org.apache.lucene.search.Query; /** * Accesser for CMIS is latest version property @@ -60,103 +56,4 @@ public class IsLatestVersionProperty extends AbstractProperty { return !getServiceRegistry().getNodeService().hasAspect(nodeRef, ContentModel.ASPECT_WORKING_COPY); } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyAccessor#setValue(org.alfresco.service.cmr.repository.NodeRef, java.io.Serializable) - */ - public void setValue(NodeRef nodeRef, Serializable value) - { - throw new UnsupportedOperationException(); - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneEquality(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneEquality(LuceneQueryParser lqp, Serializable value, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneExists(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.lang.Boolean) - */ - public Query buildLuceneExists(LuceneQueryParser lqp, Boolean not) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneGreaterThan(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneGreaterThan(LuceneQueryParser lqp, Serializable value, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneGreaterThanOrEquals(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneGreaterThanOrEquals(LuceneQueryParser lqp, Serializable value, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneIn(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.util.Collection, java.lang.Boolean, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneIn(LuceneQueryParser lqp, Collection values, Boolean not, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneInequality(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneInequality(LuceneQueryParser lqp, Serializable value, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneLessThan(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneLessThan(LuceneQueryParser lqp, Serializable value, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneLessThanOrEquals(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneLessThanOrEquals(LuceneQueryParser lqp, Serializable value, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneLike(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, java.lang.Boolean) - */ - public Query buildLuceneLike(LuceneQueryParser lqp, Serializable value, Boolean not) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#getLuceneSortField() - */ - public String getLuceneSortField() - { - throw new UnsupportedOperationException(); - } } diff --git a/source/java/org/alfresco/cmis/mapping/IsMajorVersionProperty.java b/source/java/org/alfresco/cmis/mapping/IsMajorVersionProperty.java index cee13de405..4b0e1903ae 100644 --- a/source/java/org/alfresco/cmis/mapping/IsMajorVersionProperty.java +++ b/source/java/org/alfresco/cmis/mapping/IsMajorVersionProperty.java @@ -25,17 +25,13 @@ package org.alfresco.cmis.mapping; import java.io.Serializable; -import java.util.Collection; import org.alfresco.cmis.CMISDictionaryModel; import org.alfresco.model.ContentModel; -import org.alfresco.repo.search.impl.lucene.LuceneQueryParser; -import org.alfresco.repo.search.impl.querymodel.PredicateMode; import org.alfresco.service.ServiceRegistry; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.version.Version; import org.alfresco.service.cmr.version.VersionType; -import org.apache.lucene.search.Query; /** * Accessor for CMIS is major version property @@ -77,104 +73,4 @@ public class IsMajorVersionProperty extends AbstractProperty } } } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyAccessor#setValue(org.alfresco.service.cmr.repository.NodeRef, java.io.Serializable) - */ - public void setValue(NodeRef nodeRef, Serializable value) - { - throw new UnsupportedOperationException(); - } - - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneEquality(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneEquality(LuceneQueryParser lqp, Serializable value, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneExists(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.lang.Boolean) - */ - public Query buildLuceneExists(LuceneQueryParser lqp, Boolean not) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneGreaterThan(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneGreaterThan(LuceneQueryParser lqp, Serializable value, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneGreaterThanOrEquals(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneGreaterThanOrEquals(LuceneQueryParser lqp, Serializable value, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneIn(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.util.Collection, java.lang.Boolean, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneIn(LuceneQueryParser lqp, Collection values, Boolean not, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneInequality(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneInequality(LuceneQueryParser lqp, Serializable value, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneLessThan(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneLessThan(LuceneQueryParser lqp, Serializable value, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneLessThanOrEquals(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneLessThanOrEquals(LuceneQueryParser lqp, Serializable value, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneLike(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, java.lang.Boolean) - */ - public Query buildLuceneLike(LuceneQueryParser lqp, Serializable value, Boolean not) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#getLuceneSortField() - */ - public String getLuceneSortField() - { - throw new UnsupportedOperationException(); - } } diff --git a/source/java/org/alfresco/cmis/mapping/IsVersionSeriesCheckedOutProperty.java b/source/java/org/alfresco/cmis/mapping/IsVersionSeriesCheckedOutProperty.java index 178b2eb05d..5989c9a4b0 100644 --- a/source/java/org/alfresco/cmis/mapping/IsVersionSeriesCheckedOutProperty.java +++ b/source/java/org/alfresco/cmis/mapping/IsVersionSeriesCheckedOutProperty.java @@ -25,16 +25,12 @@ package org.alfresco.cmis.mapping; import java.io.Serializable; -import java.util.Collection; import org.alfresco.cmis.CMISDictionaryModel; import org.alfresco.model.ContentModel; -import org.alfresco.repo.search.impl.lucene.LuceneQueryParser; -import org.alfresco.repo.search.impl.querymodel.PredicateMode; import org.alfresco.service.ServiceRegistry; import org.alfresco.service.cmr.lock.LockType; import org.alfresco.service.cmr.repository.NodeRef; -import org.apache.lucene.search.Query; /** * Get the CMIS version series checked out property @@ -77,103 +73,4 @@ public class IsVersionSeriesCheckedOutProperty extends AbstractProperty } } } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyAccessor#setValue(org.alfresco.service.cmr.repository.NodeRef, java.io.Serializable) - */ - public void setValue(NodeRef nodeRef, Serializable value) - { - throw new UnsupportedOperationException(); - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneEquality(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneEquality(LuceneQueryParser lqp, Serializable value, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneExists(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.lang.Boolean) - */ - public Query buildLuceneExists(LuceneQueryParser lqp, Boolean not) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneGreaterThan(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneGreaterThan(LuceneQueryParser lqp, Serializable value, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneGreaterThanOrEquals(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneGreaterThanOrEquals(LuceneQueryParser lqp, Serializable value, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneIn(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.util.Collection, java.lang.Boolean, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneIn(LuceneQueryParser lqp, Collection values, Boolean not, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneInequality(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneInequality(LuceneQueryParser lqp, Serializable value, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneLessThan(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneLessThan(LuceneQueryParser lqp, Serializable value, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneLessThanOrEquals(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneLessThanOrEquals(LuceneQueryParser lqp, Serializable value, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneLike(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, java.lang.Boolean) - */ - public Query buildLuceneLike(LuceneQueryParser lqp, Serializable value, Boolean not) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#getLuceneSortField() - */ - public String getLuceneSortField() - { - throw new UnsupportedOperationException(); - } } diff --git a/source/java/org/alfresco/cmis/mapping/ObjectIdProperty.java b/source/java/org/alfresco/cmis/mapping/ObjectIdProperty.java index 7b841aa171..af1a126e05 100644 --- a/source/java/org/alfresco/cmis/mapping/ObjectIdProperty.java +++ b/source/java/org/alfresco/cmis/mapping/ObjectIdProperty.java @@ -84,16 +84,7 @@ public class ObjectIdProperty extends AbstractProperty return nodeRef.toString(); } - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyAccessor#setValue(org.alfresco.service.cmr.repository.NodeRef, java.io.Serializable) - */ - public void setValue(NodeRef nodeRef, Serializable value) - { - throw new UnsupportedOperationException(); - } - - private String getLuceneFieldName() + public String getLuceneFieldName() { return "ID"; } diff --git a/source/java/org/alfresco/cmis/mapping/ObjectTypeIdProperty.java b/source/java/org/alfresco/cmis/mapping/ObjectTypeIdProperty.java index 0725aae3ca..f4f7392786 100644 --- a/source/java/org/alfresco/cmis/mapping/ObjectTypeIdProperty.java +++ b/source/java/org/alfresco/cmis/mapping/ObjectTypeIdProperty.java @@ -72,16 +72,8 @@ public class ObjectTypeIdProperty extends AbstractProperty return getServiceRegistry().getCMISDictionaryService().findTypeForClass(type).getTypeId().getId(); } - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyAccessor#setValue(org.alfresco.service.cmr.repository.NodeRef, java.io.Serializable) - */ - public void setValue(NodeRef nodeRef, Serializable value) - { - throw new UnsupportedOperationException(); - } - private String getLuceneFieldName() + public String getLuceneFieldName() { return "TYPE"; } diff --git a/source/java/org/alfresco/cmis/mapping/ParentProperty.java b/source/java/org/alfresco/cmis/mapping/ParentProperty.java index 6b6644fda0..3c7cfc069d 100644 --- a/source/java/org/alfresco/cmis/mapping/ParentProperty.java +++ b/source/java/org/alfresco/cmis/mapping/ParentProperty.java @@ -83,16 +83,7 @@ public class ParentProperty extends AbstractProperty } } - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyAccessor#setValue(org.alfresco.service.cmr.repository.NodeRef, java.io.Serializable) - */ - public void setValue(NodeRef nodeRef, Serializable value) - { - throw new UnsupportedOperationException(); - } - - private String getLuceneFieldName() + public String getLuceneFieldName() { return "PARENT"; } @@ -131,24 +122,6 @@ public class ParentProperty extends AbstractProperty } } - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneGreaterThan(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneGreaterThan(LuceneQueryParser lqp, Serializable value, PredicateMode mode) throws ParseException - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneGreaterThanOrEquals(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneGreaterThanOrEquals(LuceneQueryParser lqp, Serializable value, PredicateMode mode) throws ParseException - { - return null; - } - /* * (non-Javadoc) * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneIn(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.util.Collection, java.lang.Boolean, org.alfresco.repo.search.impl.querymodel.PredicateMode) @@ -220,23 +193,6 @@ public class ParentProperty extends AbstractProperty return lqp.getDoesNotMatchFieldQuery(field, stringValue); } - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneLessThan(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneLessThan(LuceneQueryParser lqp, Serializable value, PredicateMode mode) throws ParseException - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneLessThanOrEquals(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneLessThanOrEquals(LuceneQueryParser lqp, Serializable value, PredicateMode mode) throws ParseException - { - return null; - } /* * (non-Javadoc) diff --git a/source/java/org/alfresco/cmis/mapping/VersionSeriesCheckedOutByProperty.java b/source/java/org/alfresco/cmis/mapping/VersionSeriesCheckedOutByProperty.java index fcba7266c1..a1218770ee 100644 --- a/source/java/org/alfresco/cmis/mapping/VersionSeriesCheckedOutByProperty.java +++ b/source/java/org/alfresco/cmis/mapping/VersionSeriesCheckedOutByProperty.java @@ -25,16 +25,12 @@ package org.alfresco.cmis.mapping; import java.io.Serializable; -import java.util.Collection; import org.alfresco.cmis.CMISDictionaryModel; import org.alfresco.model.ContentModel; -import org.alfresco.repo.search.impl.lucene.LuceneQueryParser; -import org.alfresco.repo.search.impl.querymodel.PredicateMode; import org.alfresco.service.ServiceRegistry; import org.alfresco.service.cmr.lock.LockType; import org.alfresco.service.cmr.repository.NodeRef; -import org.apache.lucene.search.Query; /** * Get the CMIS version series checked out by property @@ -84,103 +80,4 @@ public class VersionSeriesCheckedOutByProperty extends AbstractProperty } } } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyAccessor#setValue(org.alfresco.service.cmr.repository.NodeRef, java.io.Serializable) - */ - public void setValue(NodeRef nodeRef, Serializable value) - { - throw new UnsupportedOperationException(); - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneEquality(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneEquality(LuceneQueryParser lqp, Serializable value, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneExists(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.lang.Boolean) - */ - public Query buildLuceneExists(LuceneQueryParser lqp, Boolean not) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneGreaterThan(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneGreaterThan(LuceneQueryParser lqp, Serializable value, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneGreaterThanOrEquals(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneGreaterThanOrEquals(LuceneQueryParser lqp, Serializable value, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneIn(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.util.Collection, java.lang.Boolean, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneIn(LuceneQueryParser lqp, Collection values, Boolean not, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneInequality(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneInequality(LuceneQueryParser lqp, Serializable value, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneLessThan(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneLessThan(LuceneQueryParser lqp, Serializable value, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneLessThanOrEquals(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneLessThanOrEquals(LuceneQueryParser lqp, Serializable value, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneLike(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, java.lang.Boolean) - */ - public Query buildLuceneLike(LuceneQueryParser lqp, Serializable value, Boolean not) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#getLuceneSortField() - */ - public String getLuceneSortField() - { - throw new UnsupportedOperationException(); - } } diff --git a/source/java/org/alfresco/cmis/mapping/VersionSeriesCheckedOutIdProperty.java b/source/java/org/alfresco/cmis/mapping/VersionSeriesCheckedOutIdProperty.java index 55bbe5b941..a298afb6e4 100644 --- a/source/java/org/alfresco/cmis/mapping/VersionSeriesCheckedOutIdProperty.java +++ b/source/java/org/alfresco/cmis/mapping/VersionSeriesCheckedOutIdProperty.java @@ -25,16 +25,12 @@ package org.alfresco.cmis.mapping; import java.io.Serializable; -import java.util.Collection; import org.alfresco.cmis.CMISDictionaryModel; import org.alfresco.model.ContentModel; -import org.alfresco.repo.search.impl.lucene.LuceneQueryParser; -import org.alfresco.repo.search.impl.querymodel.PredicateMode; import org.alfresco.service.ServiceRegistry; import org.alfresco.service.cmr.lock.LockType; import org.alfresco.service.cmr.repository.NodeRef; -import org.apache.lucene.search.Query; /** * Get the CMIS version series checked out id property @@ -77,104 +73,4 @@ public class VersionSeriesCheckedOutIdProperty extends AbstractProperty } } } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyAccessor#setValue(org.alfresco.service.cmr.repository.NodeRef, java.io.Serializable) - */ - public void setValue(NodeRef nodeRef, Serializable value) - { - throw new UnsupportedOperationException(); - } - - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneEquality(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneEquality(LuceneQueryParser lqp, Serializable value, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneExists(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.lang.Boolean) - */ - public Query buildLuceneExists(LuceneQueryParser lqp, Boolean not) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneGreaterThan(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneGreaterThan(LuceneQueryParser lqp, Serializable value, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneGreaterThanOrEquals(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneGreaterThanOrEquals(LuceneQueryParser lqp, Serializable value, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneIn(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.util.Collection, java.lang.Boolean, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneIn(LuceneQueryParser lqp, Collection values, Boolean not, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneInequality(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneInequality(LuceneQueryParser lqp, Serializable value, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneLessThan(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneLessThan(LuceneQueryParser lqp, Serializable value, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneLessThanOrEquals(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneLessThanOrEquals(LuceneQueryParser lqp, Serializable value, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneLike(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, java.lang.Boolean) - */ - public Query buildLuceneLike(LuceneQueryParser lqp, Serializable value, Boolean not) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#getLuceneSortField() - */ - public String getLuceneSortField() - { - throw new UnsupportedOperationException(); - } } diff --git a/source/java/org/alfresco/cmis/mapping/VersionSeriesIdProperty.java b/source/java/org/alfresco/cmis/mapping/VersionSeriesIdProperty.java index 6e6f4ede1d..2b17db7ecd 100644 --- a/source/java/org/alfresco/cmis/mapping/VersionSeriesIdProperty.java +++ b/source/java/org/alfresco/cmis/mapping/VersionSeriesIdProperty.java @@ -25,15 +25,11 @@ package org.alfresco.cmis.mapping; import java.io.Serializable; -import java.util.Collection; import org.alfresco.cmis.CMISDictionaryModel; import org.alfresco.model.ContentModel; -import org.alfresco.repo.search.impl.lucene.LuceneQueryParser; -import org.alfresco.repo.search.impl.querymodel.PredicateMode; import org.alfresco.service.ServiceRegistry; import org.alfresco.service.cmr.repository.NodeRef; -import org.apache.lucene.search.Query; /** * @author andyh @@ -63,103 +59,4 @@ public class VersionSeriesIdProperty extends AbstractProperty } return nodeRef.toString(); } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyAccessor#setValue(org.alfresco.service.cmr.repository.NodeRef, java.io.Serializable) - */ - public void setValue(NodeRef nodeRef, Serializable value) - { - throw new UnsupportedOperationException(); - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneEquality(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneEquality(LuceneQueryParser lqp, Serializable value, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneExists(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.lang.Boolean) - */ - public Query buildLuceneExists(LuceneQueryParser lqp, Boolean not) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneGreaterThan(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneGreaterThan(LuceneQueryParser lqp, Serializable value, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneGreaterThanOrEquals(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneGreaterThanOrEquals(LuceneQueryParser lqp, Serializable value, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneIn(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.util.Collection, java.lang.Boolean, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneIn(LuceneQueryParser lqp, Collection values, Boolean not, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneInequality(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneInequality(LuceneQueryParser lqp, Serializable value, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneLessThan(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneLessThan(LuceneQueryParser lqp, Serializable value, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneLessThanOrEquals(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, org.alfresco.repo.search.impl.querymodel.PredicateMode) - */ - public Query buildLuceneLessThanOrEquals(LuceneQueryParser lqp, Serializable value, PredicateMode mode) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#buildLuceneLike(org.alfresco.repo.search.impl.lucene.LuceneQueryParser, java.io.Serializable, java.lang.Boolean) - */ - public Query buildLuceneLike(LuceneQueryParser lqp, Serializable value, Boolean not) - { - return null; - } - - /* - * (non-Javadoc) - * @see org.alfresco.cmis.property.PropertyLuceneBuilder#getLuceneSortField() - */ - public String getLuceneSortField() - { - throw new UnsupportedOperationException(); - } } diff --git a/source/java/org/alfresco/cmis/search/CmisFunctionEvaluationContext.java b/source/java/org/alfresco/cmis/search/CmisFunctionEvaluationContext.java index c7339934f2..20a45731b2 100644 --- a/source/java/org/alfresco/cmis/search/CmisFunctionEvaluationContext.java +++ b/source/java/org/alfresco/cmis/search/CmisFunctionEvaluationContext.java @@ -307,4 +307,20 @@ public class CmisFunctionEvaluationContext implements FunctionEvaluationContext return propertyDef.isQueryable(); } } + + public String getLuceneFieldName(String propertyName) + { + CMISPropertyDefinition propertyDef = cmisDictionaryService.findProperty(propertyName, null); + if(propertyDef != null) + { + return propertyDef.getPropertyLuceneBuilder().getLuceneFieldName(); + } + else + { + // TODO: restrict to supported "special" fields + return propertyName; + } + } + + } diff --git a/source/java/org/alfresco/cmis/search/QueryTest.java b/source/java/org/alfresco/cmis/search/QueryTest.java index 33a0faf25d..aeae5377eb 100644 --- a/source/java/org/alfresco/cmis/search/QueryTest.java +++ b/source/java/org/alfresco/cmis/search/QueryTest.java @@ -1536,8 +1536,9 @@ public class QueryTest extends BaseCMISTest { testQuery("SELECT * FROM Document WHERE CONTAINS('\"zebra\"')", 9, false, "ObjectId", new String(), false); testQuery("SELECT * FROM Document WHERE CONTAINS('\"quick\"')", 1, false, "ObjectId", new String(), false); - testQuery("SELECT * FROM Document D WHERE CONTAINS(D, 'Name:\"quick\"')", 1, false, "ObjectId", new String(), false); - testQuery("SELECT Name as BOO FROM Document D WHERE CONTAINS('BOO:\"quick\"')", 1, false, "ObjectId", new String(), false); + testQuery("SELECT * FROM Document WHERE CONTAINS('TEXT:\"quick\"')", 1, false, "ObjectId", new String(), false); + testQuery("SELECT * FROM Document D WHERE CONTAINS(D, 'Name:\"Tutorial\"')", 1, false, "ObjectId", new String(), false); + testQuery("SELECT Name as BOO FROM Document D WHERE CONTAINS('BOO:\"Tutorial\"')", 1, false, "ObjectId", new String(), false); } public void testBasicSelectAsGuest() diff --git a/source/java/org/alfresco/repo/search/impl/lucene/ADMLuceneSearcherImpl.java b/source/java/org/alfresco/repo/search/impl/lucene/ADMLuceneSearcherImpl.java index 92669f0d47..dfea9df129 100644 --- a/source/java/org/alfresco/repo/search/impl/lucene/ADMLuceneSearcherImpl.java +++ b/source/java/org/alfresco/repo/search/impl/lucene/ADMLuceneSearcherImpl.java @@ -46,6 +46,7 @@ import org.alfresco.repo.search.QueryRegisterComponent; import org.alfresco.repo.search.SearcherException; import org.alfresco.repo.search.impl.NodeSearcher; import org.alfresco.repo.search.impl.lucene.analysis.DateTimeAnalyser; +import org.alfresco.repo.search.impl.parsers.AlfrescoFunctionEvaluationContext; import org.alfresco.repo.search.impl.parsers.FTSQueryParser; import org.alfresco.repo.search.impl.querymodel.Constraint; import org.alfresco.repo.search.impl.querymodel.QueryEngine; @@ -463,7 +464,8 @@ public class ADMLuceneSearcherImpl extends AbstractLuceneBase implements LuceneS String ftsExpression = searchParameters.getQuery(); FTSQueryParser ftsQueryParser = new FTSQueryParser(); QueryModelFactory factory = queryEngine.getQueryModelFactory(); - Constraint constraint = ftsQueryParser.buildFTS(ftsExpression.substring(1, ftsExpression.length() - 1), factory, null, null, null); + AlfrescoFunctionEvaluationContext context = new AlfrescoFunctionEvaluationContext(); + Constraint constraint = ftsQueryParser.buildFTS(ftsExpression, factory, context, null, null); org.alfresco.repo.search.impl.querymodel.Query query = factory.createQuery(null, null, constraint, null); QueryOptions options = new QueryOptions(searchParameters.getQuery(), null); options.setFetchSize(searchParameters.getBulkFecthSize()); @@ -480,7 +482,8 @@ public class ADMLuceneSearcherImpl extends AbstractLuceneBase implements LuceneS options.setLocales(searchParameters.getLocales()); options.setStores(searchParameters.getStores()); - QueryEngineResults results = queryEngine.executeQuery(query, options, null); + + QueryEngineResults results = queryEngine.executeQuery(query, options, context); return results.getResults().values().iterator().next(); } else diff --git a/source/java/org/alfresco/repo/search/impl/lucene/ADMLuceneTest.java b/source/java/org/alfresco/repo/search/impl/lucene/ADMLuceneTest.java index 693b8129ad..0c826369ad 100644 --- a/source/java/org/alfresco/repo/search/impl/lucene/ADMLuceneTest.java +++ b/source/java/org/alfresco/repo/search/impl/lucene/ADMLuceneTest.java @@ -54,7 +54,6 @@ import org.alfresco.repo.dictionary.DictionaryNamespaceComponent; import org.alfresco.repo.dictionary.M2Model; import org.alfresco.repo.dictionary.NamespaceDAOImpl; import org.alfresco.repo.domain.hibernate.HibernateL1CacheBulkLoader; -import org.alfresco.repo.domain.hibernate.HibernateSessionHelper; import org.alfresco.repo.domain.hibernate.SessionSizeResourceManager; import org.alfresco.repo.node.BaseNodeServiceTest; import org.alfresco.repo.search.MLAnalysisMode; @@ -62,7 +61,7 @@ import org.alfresco.repo.search.QueryParameterDefImpl; import org.alfresco.repo.search.QueryRegisterComponent; import org.alfresco.repo.search.impl.lucene.analysis.DateTimeAnalyser; import org.alfresco.repo.search.impl.lucene.fts.FullTextSearchIndexer; -import org.alfresco.repo.search.impl.lucene.index.IndexInfo; +import org.alfresco.repo.search.impl.querymodel.QueryEngine; import org.alfresco.repo.search.results.ChildAssocRefResultSet; import org.alfresco.repo.search.results.DetachedResultSet; import org.alfresco.repo.security.authentication.AuthenticationComponent; @@ -208,6 +207,8 @@ public class ADMLuceneTest extends TestCase private HibernateL1CacheBulkLoader hibernateL1CacheBulkLoader; + private QueryEngine queryEngine; + /** * */ @@ -230,6 +231,7 @@ public class ADMLuceneTest extends TestCase transactionService = (TransactionService) ctx.getBean("transactionComponent"); retryingTransactionHelper = (RetryingTransactionHelper) ctx.getBean("retryingTransactionHelper"); tenantService = (TenantService) ctx.getBean("tenantService"); + queryEngine = (QueryEngine) ctx.getBean("adm.luceneQueryEngineImpl"); hibernateL1CacheBulkLoader = (HibernateL1CacheBulkLoader) ctx.getBean("hibernateL1CacheBulkLoader"); @@ -539,7 +541,7 @@ public class ADMLuceneTest extends TestCase // testQuery(searcher, runner, "@"+LuceneQueryParser.escape(propQName.toString())+":\"lemon\""); } - + private void testQuery(ADMLuceneSearcherImpl searcher, Thread runner, String query) { for (int i = 0; i < 1; i++) @@ -637,6 +639,33 @@ public class ADMLuceneTest extends TestCase } + public void testFTS() throws InterruptedException + { + luceneFTS.pause(); + buildBaseIndex(); + + ADMLuceneSearcherImpl searcher = ADMLuceneSearcherImpl.getSearcher(rootNodeRef.getStoreRef(), indexerAndSearcher); + searcher.setNodeService(nodeService); + searcher.setDictionaryService(dictionaryService); + searcher.setTenantService(tenantService); + searcher.setNamespacePrefixResolver(getNamespacePrefixReolsver("namespace")); + searcher.setQueryRegister(queryRegisterComponent); + searcher.setQueryEngine(queryEngine); + ResultSet results; + + results = searcher.query(rootNodeRef.getStoreRef(), SearchService.LANGUAGE_FTS_ALFRESCO, "\"lazy\"", null, null); + assertEquals(1, results.length()); + results.close(); + + results = searcher.query(rootNodeRef.getStoreRef(), SearchService.LANGUAGE_FTS_ALFRESCO, "lazy and dog", null, null); + assertEquals(1, results.length()); + results.close(); + + results = searcher.query(rootNodeRef.getStoreRef(), SearchService.LANGUAGE_FTS_ALFRESCO, "TEXT:\"lazy\"", null, null); + assertEquals(1, results.length()); + results.close(); + } + public void testOverWritetoZeroSize() throws Exception { testTX.commit(); diff --git a/source/java/org/alfresco/repo/search/impl/parsers/AlfrescoFunctionEvaluationContext.java b/source/java/org/alfresco/repo/search/impl/parsers/AlfrescoFunctionEvaluationContext.java new file mode 100644 index 0000000000..4ffa57ef2f --- /dev/null +++ b/source/java/org/alfresco/repo/search/impl/parsers/AlfrescoFunctionEvaluationContext.java @@ -0,0 +1,137 @@ +/* + * Copyright (C) 2005-2007 Alfresco Software Limited. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + * As a special exception to the terms and conditions of version 2.0 of + * the GPL, you may redistribute this Program in connection with Free/Libre + * and Open Source Software ("FLOSS") applications as described in Alfresco's + * FLOSS exception. You should have recieved a copy of the text describing + * the FLOSS exception, and it is also available here: + * http://www.alfresco.com/legal/licensing" + */ +package org.alfresco.repo.search.impl.parsers; + +import java.io.Serializable; +import java.util.Collection; +import java.util.Map; + +import org.alfresco.repo.search.impl.lucene.LuceneQueryParser; +import org.alfresco.repo.search.impl.querymodel.FunctionEvaluationContext; +import org.alfresco.repo.search.impl.querymodel.PredicateMode; +import org.alfresco.service.cmr.repository.NodeRef; +import org.alfresco.service.cmr.repository.NodeService; +import org.apache.lucene.queryParser.ParseException; +import org.apache.lucene.search.Query; + +public class AlfrescoFunctionEvaluationContext implements FunctionEvaluationContext +{ + + public Query buildLuceneEquality(LuceneQueryParser lqp, String propertyName, Serializable value, PredicateMode mode) throws ParseException + { + throw new UnsupportedOperationException(); + } + + public Query buildLuceneExists(LuceneQueryParser lqp, String propertyName, Boolean not) throws ParseException + { + throw new UnsupportedOperationException(); + } + + public Query buildLuceneGreaterThan(LuceneQueryParser lqp, String propertyName, Serializable value, PredicateMode mode) throws ParseException + { + throw new UnsupportedOperationException(); + } + + public Query buildLuceneGreaterThanOrEquals(LuceneQueryParser lqp, String propertyName, Serializable value, PredicateMode mode) throws ParseException + { + throw new UnsupportedOperationException(); + } + + public Query buildLuceneIn(LuceneQueryParser lqp, String propertyName, Collection values, Boolean not, PredicateMode mode) throws ParseException + { + throw new UnsupportedOperationException(); + } + + public Query buildLuceneInequality(LuceneQueryParser lqp, String propertyName, Serializable value, PredicateMode mode) throws ParseException + { + throw new UnsupportedOperationException(); + } + + public Query buildLuceneLessThan(LuceneQueryParser lqp, String propertyName, Serializable value, PredicateMode mode) throws ParseException + { + throw new UnsupportedOperationException(); + } + + public Query buildLuceneLessThanOrEquals(LuceneQueryParser lqp, String propertyName, Serializable value, PredicateMode mode) throws ParseException + { + throw new UnsupportedOperationException(); + } + + public Query buildLuceneLike(LuceneQueryParser lqp, String propertyName, Serializable value, Boolean not) throws ParseException + { + throw new UnsupportedOperationException(); + } + + public String getLuceneSortField(String propertyName) + { + throw new UnsupportedOperationException(); + } + + public Map getNodeRefs() + { + throw new UnsupportedOperationException(); + } + + public NodeService getNodeService() + { + throw new UnsupportedOperationException(); + } + + public Serializable getProperty(NodeRef nodeRef, String propertyName) + { + throw new UnsupportedOperationException(); + } + + public Float getScore() + { + throw new UnsupportedOperationException(); + } + + public Map getScores() + { + throw new UnsupportedOperationException(); + } + + public boolean isObjectId(String propertyName) + { + return false; + } + + public boolean isOrderable(String fieldName) + { + return true; + } + + public boolean isQueryable(String fieldName) + { + return true; + } + + public String getLuceneFieldName(String propertyName) + { + return propertyName; + } + +} diff --git a/source/java/org/alfresco/repo/search/impl/parsers/CMISLexer.java b/source/java/org/alfresco/repo/search/impl/parsers/CMISLexer.java index c15d81a10e..162509bc34 100644 --- a/source/java/org/alfresco/repo/search/impl/parsers/CMISLexer.java +++ b/source/java/org/alfresco/repo/search/impl/parsers/CMISLexer.java @@ -1,4 +1,4 @@ -// $ANTLR !Unknown version! W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g 2009-04-14 14:31:11 +// $ANTLR !Unknown version! W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g 2009-04-16 10:13:00 package org.alfresco.repo.search.impl.parsers; import org.antlr.runtime.*; diff --git a/source/java/org/alfresco/repo/search/impl/parsers/CMISParser.java b/source/java/org/alfresco/repo/search/impl/parsers/CMISParser.java index ef699fc075..7d3a3bbfc2 100644 --- a/source/java/org/alfresco/repo/search/impl/parsers/CMISParser.java +++ b/source/java/org/alfresco/repo/search/impl/parsers/CMISParser.java @@ -1,4 +1,4 @@ -// $ANTLR !Unknown version! W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g 2009-04-14 14:31:09 +// $ANTLR !Unknown version! W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\CMIS.g 2009-04-16 10:12:59 package org.alfresco.repo.search.impl.parsers; import org.antlr.runtime.*; @@ -277,7 +277,7 @@ public class CMISParser extends Parser { // AST REWRITE - // elements: whereClause, fromClause, selectList, orderByClause + // elements: orderByClause, whereClause, selectList, fromClause // token labels: // rule labels: retval // token list labels: @@ -717,7 +717,7 @@ public class CMISParser extends Parser { // AST REWRITE - // elements: columnName, valueExpression + // elements: valueExpression, columnName // token labels: // rule labels: retval // token list labels: @@ -1111,7 +1111,7 @@ public class CMISParser extends Parser { // AST REWRITE - // elements: qualifier, columnName + // elements: columnName, qualifier // token labels: // rule labels: retval // token list labels: @@ -1256,7 +1256,7 @@ public class CMISParser extends Parser { // AST REWRITE - // elements: multiValuedColumnName, qualifier + // elements: qualifier, multiValuedColumnName // token labels: // rule labels: retval // token list labels: @@ -1384,7 +1384,7 @@ public class CMISParser extends Parser { // AST REWRITE - // elements: functionName, RPAREN, functionArgument, LPAREN + // elements: functionName, RPAREN, LPAREN, functionArgument // token labels: // rule labels: retval, functionName // token list labels: @@ -1597,7 +1597,7 @@ public class CMISParser extends Parser { // AST REWRITE - // elements: columnName, qualifier + // elements: qualifier, columnName // token labels: // rule labels: retval // token list labels: @@ -2208,7 +2208,7 @@ public class CMISParser extends Parser { // AST REWRITE - // elements: correlationName, tableName + // elements: tableName, correlationName // token labels: // rule labels: retval // token list labels: @@ -2401,7 +2401,7 @@ public class CMISParser extends Parser { // AST REWRITE - // elements: joinType, joinSpecification, JOIN, tableReference + // elements: JOIN, joinSpecification, tableReference, joinType // token labels: // rule labels: retval // token list labels: @@ -2529,7 +2529,7 @@ public class CMISParser extends Parser { // AST REWRITE - // elements: singleTable, joinedTable + // elements: joinedTable, singleTable // token labels: // rule labels: retval // token list labels: @@ -2788,7 +2788,7 @@ public class CMISParser extends Parser { // AST REWRITE - // elements: lhs, ON, rhs, EQUALS + // elements: EQUALS, rhs, ON, lhs // token labels: // rule labels: retval, rhs, lhs // token list labels: @@ -3638,7 +3638,7 @@ public class CMISParser extends Parser { // AST REWRITE - // elements: literalOrParameterName, valueExpression, compOp + // elements: literalOrParameterName, compOp, valueExpression // token labels: // rule labels: retval // token list labels: @@ -3999,7 +3999,7 @@ public class CMISParser extends Parser { // AST REWRITE - // elements: columnReference, NOT, inValueList + // elements: NOT, columnReference, inValueList // token labels: // rule labels: retval // token list labels: @@ -4244,7 +4244,7 @@ public class CMISParser extends Parser { // AST REWRITE - // elements: characterStringLiteral, NOT, columnReference + // elements: columnReference, NOT, characterStringLiteral // token labels: // rule labels: retval // token list labels: @@ -4745,7 +4745,7 @@ public class CMISParser extends Parser { // AST REWRITE - // elements: multiValuedColumnReference, literalOrParameterName, ANY, compOp + // elements: compOp, literalOrParameterName, ANY, multiValuedColumnReference // token labels: // rule labels: retval // token list labels: @@ -4881,7 +4881,7 @@ public class CMISParser extends Parser { // AST REWRITE - // elements: inValueList, NOT, multiValuedColumnReference, ANY + // elements: multiValuedColumnReference, NOT, inValueList, ANY // token labels: // rule labels: retval // token list labels: @@ -5322,7 +5322,7 @@ public class CMISParser extends Parser { // AST REWRITE - // elements: qualifier, folderId + // elements: folderId, qualifier // token labels: // rule labels: retval // token list labels: diff --git a/source/java/org/alfresco/repo/search/impl/parsers/FTSLexer.java b/source/java/org/alfresco/repo/search/impl/parsers/FTSLexer.java index d4312fb895..5b16aaba02 100644 --- a/source/java/org/alfresco/repo/search/impl/parsers/FTSLexer.java +++ b/source/java/org/alfresco/repo/search/impl/parsers/FTSLexer.java @@ -1,4 +1,4 @@ -// $ANTLR !Unknown version! W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g 2009-04-14 15:35:36 +// $ANTLR !Unknown version! W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g 2009-04-16 10:13:00 package org.alfresco.repo.search.impl.parsers; import org.antlr.runtime.*; diff --git a/source/java/org/alfresco/repo/search/impl/parsers/FTSParser.java b/source/java/org/alfresco/repo/search/impl/parsers/FTSParser.java index 94310988d8..07d722d0eb 100644 --- a/source/java/org/alfresco/repo/search/impl/parsers/FTSParser.java +++ b/source/java/org/alfresco/repo/search/impl/parsers/FTSParser.java @@ -1,4 +1,4 @@ -// $ANTLR !Unknown version! W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g 2009-04-14 15:35:35 +// $ANTLR !Unknown version! W:\\alfresco\\HEAD\\root\\projects\\Repository\\source\\java\\org\\alfresco\\repo\\search\\impl\\parsers\\FTS.g 2009-04-16 10:12:58 package org.alfresco.repo.search.impl.parsers; import org.antlr.runtime.*; @@ -1585,7 +1585,7 @@ public class FTSParser extends Parser { // AST REWRITE - // elements: FTSPHRASE, columnReference + // elements: columnReference, FTSPHRASE // token labels: // rule labels: retval // token list labels: @@ -1774,7 +1774,7 @@ public class FTSParser extends Parser { // AST REWRITE - // elements: ftsFieldGroupRange, columnReference + // elements: columnReference, ftsFieldGroupRange // token labels: // rule labels: retval // token list labels: diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/FunctionEvaluationContext.java b/source/java/org/alfresco/repo/search/impl/querymodel/FunctionEvaluationContext.java index 4258cba7ef..62d0a0443d 100644 --- a/source/java/org/alfresco/repo/search/impl/querymodel/FunctionEvaluationContext.java +++ b/source/java/org/alfresco/repo/search/impl/querymodel/FunctionEvaluationContext.java @@ -72,7 +72,9 @@ public interface FunctionEvaluationContext public boolean isObjectId(String propertyName); - public boolean isQueryable(String fieldName); + public boolean isQueryable(String propertyName); - public boolean isOrderable(String fieldName); + public boolean isOrderable(String propertyName); + + public String getLuceneFieldName(String propertyName); } diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneQuery.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneQuery.java index c8600c0b4e..7fb6ea49a5 100644 --- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneQuery.java +++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneQuery.java @@ -75,21 +75,24 @@ public class LuceneQuery extends BaseQuery implements LuceneQueryBuilder BooleanQuery luceneQuery = new BooleanQuery(); - for (String selector : selectors) + if (selectors != null) { - Selector current = getSource().getSelector(selector); - if (current instanceof LuceneQueryBuilderComponent) + for (String selector : selectors) { - LuceneQueryBuilderComponent luceneQueryBuilderComponent = (LuceneQueryBuilderComponent) current; - Query selectorQuery = luceneQueryBuilderComponent.addComponent(selectors, null, luceneContext, functionContext); - if (selectorQuery != null) + Selector current = getSource().getSelector(selector); + if (current instanceof LuceneQueryBuilderComponent) { - luceneQuery.add(selectorQuery, Occur.MUST); + LuceneQueryBuilderComponent luceneQueryBuilderComponent = (LuceneQueryBuilderComponent) current; + Query selectorQuery = luceneQueryBuilderComponent.addComponent(selectors, null, luceneContext, functionContext); + if (selectorQuery != null) + { + luceneQuery.add(selectorQuery, Occur.MUST); + } + } + else + { + throw new UnsupportedOperationException(); } - } - else - { - throw new UnsupportedOperationException(); } } diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneQueryEngine.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneQueryEngine.java index eaf75ec95f..62c1c33169 100644 --- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneQueryEngine.java +++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneQueryEngine.java @@ -122,20 +122,24 @@ public class LuceneQueryEngine implements QueryEngine public QueryEngineResults executeQuery(Query query, QueryOptions options, FunctionEvaluationContext functionContext) { - List> selectorGroups = query.getSource().getSelectorGroups(functionContext); - - if(selectorGroups.size() == 0) + Set selectorGroup = null; + if (query.getSource() != null) { - throw new UnsupportedOperationException("No selectors"); + List> selectorGroups = query.getSource().getSelectorGroups(functionContext); + + if (selectorGroups.size() == 0) + { + throw new UnsupportedOperationException("No selectors"); + } + + if (selectorGroups.size() > 1) + { + throw new UnsupportedOperationException("Advanced join is not supported"); + } + + selectorGroup = selectorGroups.get(0); } - - if(selectorGroups.size() > 1) - { - throw new UnsupportedOperationException("Advanced join is not supported"); - } - - Set selectorGroup = selectorGroups.get(0); - + SearchParameters searchParameters = new SearchParameters(); searchParameters.setBulkFetch(options.getFetchSize() > 0); searchParameters.setBulkFetchSize(options.getFetchSize()); @@ -164,7 +168,7 @@ public class LuceneQueryEngine implements QueryEngine LuceneQueryBuilder builder = (LuceneQueryBuilder) query; org.apache.lucene.search.Query luceneQuery = builder.buildQuery(selectorGroup, luceneContext, functionContext); - //System.out.println(luceneQuery); + // System.out.println(luceneQuery); Sort sort = builder.buildSort(selectorGroup, luceneContext, functionContext); @@ -203,5 +207,5 @@ public class LuceneQueryEngine implements QueryEngine throw new SearcherException("IO exception during search", e); } } - + } diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneFTSExactTerm.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneFTSExactTerm.java index 67bf7e8224..417db5271e 100644 --- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneFTSExactTerm.java +++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneFTSExactTerm.java @@ -30,6 +30,7 @@ import java.util.Set; import org.alfresco.repo.search.impl.lucene.LuceneQueryParser; import org.alfresco.repo.search.impl.querymodel.Argument; import org.alfresco.repo.search.impl.querymodel.FunctionEvaluationContext; +import org.alfresco.repo.search.impl.querymodel.PropertyArgument; import org.alfresco.repo.search.impl.querymodel.impl.functions.FTSExactTerm; import org.alfresco.repo.search.impl.querymodel.impl.lucene.LuceneQueryBuilderComponent; import org.alfresco.repo.search.impl.querymodel.impl.lucene.LuceneQueryBuilderContext; @@ -64,6 +65,9 @@ public class LuceneFTSExactTerm extends FTSExactTerm implements LuceneQueryBuild Argument argument = functionArgs.get(ARG_TERM); String term = (String) argument.getValue(functionContext); + PropertyArgument propArg = (PropertyArgument)functionArgs.get(ARG_PROPERTY); + String prop = propArg.getPropertyName(); + Query query = lqp.getFieldQuery("TEXT", term); return query; diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneFTSPhrase.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneFTSPhrase.java index 5210f3b0e8..585a3c1397 100644 --- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneFTSPhrase.java +++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneFTSPhrase.java @@ -30,6 +30,7 @@ import java.util.Set; import org.alfresco.repo.search.impl.lucene.LuceneQueryParser; import org.alfresco.repo.search.impl.querymodel.Argument; import org.alfresco.repo.search.impl.querymodel.FunctionEvaluationContext; +import org.alfresco.repo.search.impl.querymodel.PropertyArgument; import org.alfresco.repo.search.impl.querymodel.impl.functions.FTSPhrase; import org.alfresco.repo.search.impl.querymodel.impl.lucene.LuceneQueryBuilderComponent; import org.alfresco.repo.search.impl.querymodel.impl.lucene.LuceneQueryBuilderContext; @@ -64,8 +65,18 @@ public class LuceneFTSPhrase extends FTSPhrase implements LuceneQueryBuilderComp Argument argument = functionArgs.get(ARG_PHRASE); String term = (String) argument.getValue(functionContext); - Query query = lqp.getFieldQuery("TEXT", term); + PropertyArgument propArg = (PropertyArgument) functionArgs.get(ARG_PROPERTY); + Query query; + if (propArg != null) + { + String prop = propArg.getPropertyName(); + query = lqp.getFieldQuery(functionContext.getLuceneFieldName(prop), term); + } + else + { + query = lqp.getFieldQuery("TEXT", term); + + } return query; - } } diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneFTSTerm.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneFTSTerm.java index 5544aee7b3..5772a3a533 100644 --- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneFTSTerm.java +++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneFTSTerm.java @@ -30,6 +30,7 @@ import java.util.Set; import org.alfresco.repo.search.impl.lucene.LuceneQueryParser; import org.alfresco.repo.search.impl.querymodel.Argument; import org.alfresco.repo.search.impl.querymodel.FunctionEvaluationContext; +import org.alfresco.repo.search.impl.querymodel.PropertyArgument; import org.alfresco.repo.search.impl.querymodel.impl.functions.FTSTerm; import org.alfresco.repo.search.impl.querymodel.impl.lucene.LuceneQueryBuilderComponent; import org.alfresco.repo.search.impl.querymodel.impl.lucene.LuceneQueryBuilderContext; @@ -63,9 +64,19 @@ public class LuceneFTSTerm extends FTSTerm implements LuceneQueryBuilderComponen Argument argument = functionArgs.get(ARG_TERM); String term = (String) argument.getValue(functionContext); - Query query = lqp.getFieldQuery("TEXT", term); + PropertyArgument propArg = (PropertyArgument) functionArgs.get(ARG_PROPERTY); + Query query; + if (propArg != null) + { + String prop = propArg.getPropertyName(); + query = lqp.getFieldQuery(functionContext.getLuceneFieldName(prop), term); + } + else + { + query = lqp.getFieldQuery("TEXT", term); + + } return query; - } }