mirror of
				https://github.com/Alfresco/alfresco-community-repo.git
				synced 2025-10-29 15:21:53 +00:00 
			
		
		
		
	git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@10735 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
		
			
				
	
	
		
			611 lines
		
	
	
		
			21 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			611 lines
		
	
	
		
			21 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| /*
 | |
|  * 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.property;
 | |
| 
 | |
| import java.io.Serializable;
 | |
| import java.util.Collection;
 | |
| import java.util.Collections;
 | |
| import java.util.HashMap;
 | |
| import java.util.Map;
 | |
| 
 | |
| import org.alfresco.cmis.CMISService;
 | |
| import org.alfresco.cmis.CMISContentStreamAllowedEnum;
 | |
| import org.alfresco.cmis.dictionary.CMISMapping;
 | |
| import org.alfresco.cmis.dictionary.CMISScope;
 | |
| import org.alfresco.model.ContentModel;
 | |
| import org.alfresco.repo.search.impl.lucene.LuceneQueryParser;
 | |
| import org.alfresco.repo.search.impl.lucene.ParseException;
 | |
| 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.search.Query;
 | |
| import org.springframework.beans.factory.InitializingBean;
 | |
| 
 | |
| /**
 | |
|  * Mapping between Alfresco and CMIS property types
 | |
|  * 
 | |
|  * @author andyh
 | |
|  */
 | |
| public class CMISPropertyServiceImpl implements CMISPropertyService, InitializingBean
 | |
| {
 | |
|     private HashMap<String, NamedPropertyAccessor> namedPropertyAccessors = new HashMap<String, NamedPropertyAccessor>();
 | |
| 
 | |
|     private AbstractGenericPropertyAccessor genericPropertyAccessor;
 | |
| 
 | |
|     private CMISService cmisService;
 | |
| 
 | |
|     private CMISMapping cmisMapping;
 | |
| 
 | |
|     private ServiceRegistry serviceRegistry;
 | |
| 
 | |
|     private boolean strict = false;
 | |
| 
 | |
|     /**
 | |
|      * @param cmisService
 | |
|      */
 | |
|     public void setCMISService(CMISService cmisService)
 | |
|     {
 | |
|         this.cmisService = cmisService;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @param cmisMapping
 | |
|      */
 | |
|     public void setCMISMapping(CMISMapping cmisMapping)
 | |
|     {
 | |
|         this.cmisMapping = cmisMapping;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @return cmis mapping service
 | |
|      */
 | |
|     public CMISMapping getCMISMapping()
 | |
|     {
 | |
|         return cmisMapping;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @param serviceRegistry
 | |
|      */
 | |
|     public void setServiceRegistry(ServiceRegistry serviceRegistry)
 | |
|     {
 | |
|         this.serviceRegistry = serviceRegistry;
 | |
|     }
 | |
| 
 | |
|     public boolean isStrict()
 | |
|     {
 | |
|         return strict;
 | |
|     }
 | |
| 
 | |
|     public void setStrict(boolean strict)
 | |
|     {
 | |
|         this.strict = strict;
 | |
|     }
 | |
| 
 | |
|     public Map<String, Serializable> getProperties(NodeRef nodeRef)
 | |
|     {
 | |
|         // Map
 | |
|         QName typeQName = cmisMapping.getCmisType(serviceRegistry.getNodeService().getType(nodeRef));
 | |
|         CMISScope scope;
 | |
|         if (cmisMapping.isValidCmisDocument(typeQName))
 | |
|         {
 | |
|             scope = CMISScope.DOCUMENT;
 | |
|         }
 | |
|         else if (cmisMapping.isValidCmisFolder(typeQName))
 | |
|         {
 | |
|             scope = CMISScope.FOLDER;
 | |
|         }
 | |
|         else
 | |
|         {
 | |
|             scope = null;
 | |
|         }
 | |
| 
 | |
|         if (scope == null)
 | |
|         {
 | |
|             return Collections.<String, Serializable> emptyMap();
 | |
|         }
 | |
| 
 | |
|         HashMap<String, Serializable> mapped = new HashMap<String, Serializable>();
 | |
|         if (!strict)
 | |
|         {
 | |
|             Map<QName, Serializable> unmapped = serviceRegistry.getNodeService().getProperties(nodeRef);
 | |
|             for (QName propertyQName : unmapped.keySet())
 | |
|             {
 | |
|                 String cmisPropertyName = cmisMapping.getCmisPropertyName(propertyQName);
 | |
|                 mapped.put(cmisPropertyName, unmapped.get(propertyQName));
 | |
|             }
 | |
|         }
 | |
|         // Add core
 | |
|         for (String cmisPropertyName : namedPropertyAccessors.keySet())
 | |
|         {
 | |
|             NamedPropertyAccessor accessor = namedPropertyAccessors.get(cmisPropertyName);
 | |
|             if ((accessor.getScope() == CMISScope.OBJECT) || accessor.getScope().equals(scope))
 | |
|             {
 | |
|                 mapped.put(cmisPropertyName, accessor.getProperty(nodeRef));
 | |
|                 // Could hide properties here ....
 | |
|             }
 | |
|         }
 | |
|         return mapped;
 | |
|     }
 | |
| 
 | |
|     public Serializable getProperty(NodeRef nodeRef, String propertyName)
 | |
|     {
 | |
| 
 | |
|         QName typeQName = cmisMapping.getCmisType(serviceRegistry.getNodeService().getType(nodeRef));
 | |
|         CMISScope scope;
 | |
|         if (cmisMapping.isValidCmisDocument(typeQName))
 | |
|         {
 | |
|             scope = CMISScope.DOCUMENT;
 | |
|         }
 | |
|         else if (cmisMapping.isValidCmisFolder(typeQName))
 | |
|         {
 | |
|             scope = CMISScope.FOLDER;
 | |
|         }
 | |
|         else
 | |
|         {
 | |
|             scope = null;
 | |
|         }
 | |
| 
 | |
|         if (scope == null)
 | |
|         {
 | |
|             return null;
 | |
|         }
 | |
| 
 | |
|         NamedPropertyAccessor accessor = namedPropertyAccessors.get(propertyName);
 | |
|         if (accessor != null)
 | |
|         {
 | |
|             if ((accessor.getScope() == CMISScope.OBJECT) || accessor.getScope().equals(scope))
 | |
|             {
 | |
|                 return accessor.getProperty(nodeRef);
 | |
|             }
 | |
|             else
 | |
|             {
 | |
|                 return null;
 | |
|             }
 | |
|         }
 | |
|         else
 | |
|         {
 | |
|             if (strict)
 | |
|             {
 | |
|                 return null;
 | |
|             }
 | |
|             else
 | |
|             {
 | |
|                 return genericPropertyAccessor.getProperty(nodeRef, propertyName);
 | |
|             }
 | |
|         }
 | |
| 
 | |
|     }
 | |
| 
 | |
|     public void setProperties(NodeRef nodeRef, Map<String, Serializable> values)
 | |
|     {
 | |
|         throw new UnsupportedOperationException();
 | |
|     }
 | |
| 
 | |
|     public void setProperty(NodeRef nodeRef, String propertyName, Serializable value)
 | |
|     {
 | |
|         throw new UnsupportedOperationException();
 | |
|     }
 | |
| 
 | |
|     public void afterPropertiesSet() throws Exception
 | |
|     {
 | |
|         // Generic Alfresco mappings
 | |
|         genericPropertyAccessor = new MappingPropertyAccessor();
 | |
|         genericPropertyAccessor.setServiceRegistry(serviceRegistry);
 | |
|         genericPropertyAccessor.setCMISMapping(cmisMapping);
 | |
| 
 | |
|         // CMIS Object
 | |
|         addNamedPropertyAccessor(getObjectIdPropertyAccessor());
 | |
|         addNamedPropertyAccessor(getFixedValuePropertyAccessor(CMISMapping.PROP_URI, null, CMISScope.OBJECT));
 | |
|         addNamedPropertyAccessor(getObjectTypeIdPropertyAccessor());
 | |
|         addNamedPropertyAccessor(getSimplePropertyAccessor(CMISMapping.PROP_CREATED_BY, ContentModel.PROP_CREATOR, CMISScope.OBJECT));
 | |
|         addNamedPropertyAccessor(getSimplePropertyAccessor(CMISMapping.PROP_CREATION_DATE, ContentModel.PROP_CREATED, CMISScope.OBJECT));
 | |
|         addNamedPropertyAccessor(getSimplePropertyAccessor(CMISMapping.PROP_LAST_MODIFIED_BY, ContentModel.PROP_MODIFIER, CMISScope.OBJECT));
 | |
|         addNamedPropertyAccessor(getSimplePropertyAccessor(CMISMapping.PROP_LAST_MODIFICATION_DATE, ContentModel.PROP_MODIFIED, CMISScope.OBJECT));
 | |
|         addNamedPropertyAccessor(getFixedValuePropertyAccessor(CMISMapping.PROP_CHANGE_TOKEN, null, CMISScope.OBJECT));
 | |
| 
 | |
|         // CMIS Document and Folder
 | |
|         addNamedPropertyAccessor(getSimplePropertyAccessor(CMISMapping.PROP_NAME, ContentModel.PROP_NAME, CMISScope.OBJECT));
 | |
| 
 | |
|         // CMIS Document
 | |
|         addNamedPropertyAccessor(getIsImmutablePropertyAccessor());
 | |
|         addNamedPropertyAccessor(getIsLatestVersionPropertyAccessor());
 | |
|         addNamedPropertyAccessor(getIsMajorVersionPropertyAccessor());
 | |
|         addNamedPropertyAccessor(getIsLatestMajorVersionPropertyAccessor());
 | |
|         addNamedPropertyAccessor(getSimplePropertyAccessor(CMISMapping.PROP_VERSION_LABEL, ContentModel.PROP_VERSION_LABEL, CMISScope.DOCUMENT));
 | |
|         addNamedPropertyAccessor(getVersionSeriesIdPropertyAccessor());
 | |
|         addNamedPropertyAccessor(getVersionSeriesIsCheckedOutPropertyAccessor());
 | |
|         addNamedPropertyAccessor(getVersionSeriesCheckedOutByPropertyAccessor());
 | |
|         addNamedPropertyAccessor(getVersionSeriesCheckedOutIdPropertyAccessor());
 | |
|         addNamedPropertyAccessor(getCheckinCommentPropertyAccessor());
 | |
|         addNamedPropertyAccessor(getFixedValuePropertyAccessor(CMISMapping.PROP_CONTENT_STREAM_ALLOWED, CMISContentStreamAllowedEnum.ALLOWED.toString(), CMISScope.DOCUMENT));
 | |
|         addNamedPropertyAccessor(getContentStreamLengthPropertyAccessor());
 | |
|         addNamedPropertyAccessor(getContentStreamMimetypePropertyAccessor());
 | |
|         addNamedPropertyAccessor(getSimplePropertyAccessor(CMISMapping.PROP_CONTENT_STREAM_FILENAME, ContentModel.PROP_NAME, CMISScope.DOCUMENT));
 | |
|         addNamedPropertyAccessor(getFixedValuePropertyAccessor(CMISMapping.PROP_CONTENT_STREAM_URI, null, CMISScope.DOCUMENT));
 | |
| 
 | |
|         // CMIS Folder
 | |
|         addNamedPropertyAccessor(getParentPropertyAccessor());
 | |
|         addNamedPropertyAccessor(getFixedValuePropertyAccessor(CMISMapping.PROP_ALLOWED_CHILD_OBJECT_TYPE_IDS, null, CMISScope.FOLDER));
 | |
|     }
 | |
| 
 | |
|     public void addNamedPropertyAccessor(NamedPropertyAccessor namedPropertyAccessor)
 | |
|     {
 | |
| 
 | |
|         namedPropertyAccessors.put(namedPropertyAccessor.getPropertyName(), namedPropertyAccessor);
 | |
|     }
 | |
| 
 | |
|     public NamedPropertyAccessor getSimplePropertyAccessor(String propertyName, QName to, CMISScope scope)
 | |
|     {
 | |
|         SimplePropertyAccessor accessor = new SimplePropertyAccessor();
 | |
|         accessor.setServiceRegistry(serviceRegistry);
 | |
|         accessor.setCMISMapping(cmisMapping);
 | |
|         accessor.setPropertyName(propertyName);
 | |
|         accessor.setMapping(to.toString());
 | |
|         accessor.setScope(scope);
 | |
|         try
 | |
|         {
 | |
|             accessor.afterPropertiesSet();
 | |
|         }
 | |
|         catch (Exception e)
 | |
|         {
 | |
|             // TODO Auto-generated catch block
 | |
|             e.printStackTrace();
 | |
|         }
 | |
|         return accessor;
 | |
|     }
 | |
| 
 | |
|     public NamedPropertyAccessor getObjectIdPropertyAccessor()
 | |
|     {
 | |
|         ObjectIdPropertyAccessor accessor = new ObjectIdPropertyAccessor();
 | |
|         accessor.setServiceRegistry(serviceRegistry);
 | |
|         accessor.setCMISMapping(cmisMapping);
 | |
|         return accessor;
 | |
|     }
 | |
| 
 | |
|     public NamedPropertyAccessor getFixedValuePropertyAccessor(String propertyName, Serializable fixedValue, CMISScope scope)
 | |
|     {
 | |
|         FixedValuePropertyAccessor accessor = new FixedValuePropertyAccessor();
 | |
|         accessor.setServiceRegistry(serviceRegistry);
 | |
|         accessor.setCMISMapping(cmisMapping);
 | |
|         accessor.setPropertyName(propertyName);
 | |
|         accessor.setFixedValue(fixedValue);
 | |
|         accessor.setScope(scope);
 | |
|         return accessor;
 | |
|     }
 | |
| 
 | |
|     public NamedPropertyAccessor getObjectTypeIdPropertyAccessor()
 | |
|     {
 | |
|         ObjectTypeIdPropertyAccessor accessor = new ObjectTypeIdPropertyAccessor();
 | |
|         accessor.setServiceRegistry(serviceRegistry);
 | |
|         accessor.setCMISMapping(cmisMapping);
 | |
|         return accessor;
 | |
|     }
 | |
| 
 | |
|     public NamedPropertyAccessor getIsImmutablePropertyAccessor()
 | |
|     {
 | |
|         IsImmutablePropertyAccessor accessor = new IsImmutablePropertyAccessor();
 | |
|         accessor.setServiceRegistry(serviceRegistry);
 | |
|         accessor.setCMISMapping(cmisMapping);
 | |
|         return accessor;
 | |
|     }
 | |
| 
 | |
|     public NamedPropertyAccessor getIsLatestVersionPropertyAccessor()
 | |
|     {
 | |
|         IsLatestVersionPropertyAccessor accessor = new IsLatestVersionPropertyAccessor();
 | |
|         accessor.setServiceRegistry(serviceRegistry);
 | |
|         accessor.setCMISMapping(cmisMapping);
 | |
|         return accessor;
 | |
|     }
 | |
| 
 | |
|     public NamedPropertyAccessor getIsMajorVersionPropertyAccessor()
 | |
|     {
 | |
|         IsMajorVersionPropertyAccessor accessor = new IsMajorVersionPropertyAccessor();
 | |
|         accessor.setServiceRegistry(serviceRegistry);
 | |
|         accessor.setCMISMapping(cmisMapping);
 | |
|         return accessor;
 | |
|     }
 | |
| 
 | |
|     public NamedPropertyAccessor getIsLatestMajorVersionPropertyAccessor()
 | |
|     {
 | |
|         IsLatestMajorVersionPropertyAccessor accessor = new IsLatestMajorVersionPropertyAccessor();
 | |
|         accessor.setServiceRegistry(serviceRegistry);
 | |
|         accessor.setCMISMapping(cmisMapping);
 | |
|         return accessor;
 | |
|     }
 | |
| 
 | |
|     public NamedPropertyAccessor getVersionSeriesIdPropertyAccessor()
 | |
|     {
 | |
|         VersionSeriesIdPropertyAccessor accessor = new VersionSeriesIdPropertyAccessor();
 | |
|         accessor.setServiceRegistry(serviceRegistry);
 | |
|         accessor.setCMISMapping(cmisMapping);
 | |
|         return accessor;
 | |
|     }
 | |
| 
 | |
|     public NamedPropertyAccessor getVersionSeriesIsCheckedOutPropertyAccessor()
 | |
|     {
 | |
|         IsVersionSeriesCheckedOutPropertyAccessor accessor = new IsVersionSeriesCheckedOutPropertyAccessor();
 | |
|         accessor.setServiceRegistry(serviceRegistry);
 | |
|         accessor.setCMISMapping(cmisMapping);
 | |
|         return accessor;
 | |
|     }
 | |
| 
 | |
|     public NamedPropertyAccessor getVersionSeriesCheckedOutByPropertyAccessor()
 | |
|     {
 | |
|         VersionSeriesCheckedOutByPropertyAccessor accessor = new VersionSeriesCheckedOutByPropertyAccessor();
 | |
|         accessor.setServiceRegistry(serviceRegistry);
 | |
|         accessor.setCMISMapping(cmisMapping);
 | |
|         return accessor;
 | |
|     }
 | |
| 
 | |
|     public NamedPropertyAccessor getVersionSeriesCheckedOutIdPropertyAccessor()
 | |
|     {
 | |
|         VersionSeriesCheckedOutIdPropertyAccessor accessor = new VersionSeriesCheckedOutIdPropertyAccessor();
 | |
|         accessor.setServiceRegistry(serviceRegistry);
 | |
|         accessor.setCMISMapping(cmisMapping);
 | |
|         return accessor;
 | |
|     }
 | |
| 
 | |
|     public NamedPropertyAccessor getCheckinCommentPropertyAccessor()
 | |
|     {
 | |
|         CheckinCommentPropertyAccessor accessor = new CheckinCommentPropertyAccessor();
 | |
|         accessor.setServiceRegistry(serviceRegistry);
 | |
|         accessor.setCMISMapping(cmisMapping);
 | |
|         return accessor;
 | |
|     }
 | |
| 
 | |
|     public NamedPropertyAccessor getContentStreamLengthPropertyAccessor()
 | |
|     {
 | |
|         ContentStreamLengthPropertyAccessor accessor = new ContentStreamLengthPropertyAccessor();
 | |
|         accessor.setServiceRegistry(serviceRegistry);
 | |
|         accessor.setCMISMapping(cmisMapping);
 | |
|         return accessor;
 | |
|     }
 | |
| 
 | |
|     public NamedPropertyAccessor getContentStreamMimetypePropertyAccessor()
 | |
|     {
 | |
|         ContentStreamMimetypePropertyAccessor accessor = new ContentStreamMimetypePropertyAccessor();
 | |
|         accessor.setServiceRegistry(serviceRegistry);
 | |
|         accessor.setCMISMapping(cmisMapping);
 | |
|         return accessor;
 | |
|     }
 | |
| 
 | |
|     public NamedPropertyAccessor getParentPropertyAccessor()
 | |
|     {
 | |
|         ParentPropertyAccessor accessor = new ParentPropertyAccessor();
 | |
|         accessor.setServiceRegistry(serviceRegistry);
 | |
|         accessor.setCMISMapping(cmisMapping);
 | |
|         accessor.setCMISService(cmisService);
 | |
|         return accessor;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @param lqp
 | |
|      * @param propertyName
 | |
|      * @param value
 | |
|      * @param mode 
 | |
|      * @return
 | |
|      * @throws ParseException 
 | |
|      */
 | |
|     public Query buildLuceneEquality(LuceneQueryParser lqp, String propertyName, Serializable value, PredicateMode mode) throws ParseException
 | |
|     {
 | |
|         NamedPropertyAccessor accessor = namedPropertyAccessors.get(propertyName);
 | |
|         if (accessor != null)
 | |
|         {
 | |
|             return accessor.buildLuceneEquality(lqp, propertyName, value, mode);
 | |
|         }
 | |
|         else
 | |
|         {
 | |
|             return genericPropertyAccessor.buildLuceneEquality(lqp, propertyName, value, mode);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @param lqp
 | |
|      * @param propertyName
 | |
|      * @param not
 | |
|      * @return
 | |
|      */
 | |
|     public Query buildLuceneExists(LuceneQueryParser lqp, String propertyName, Boolean not) throws ParseException
 | |
|     {
 | |
|         NamedPropertyAccessor accessor = namedPropertyAccessors.get(propertyName);
 | |
|         if (accessor != null)
 | |
|         {
 | |
|             return accessor.buildLuceneExists(lqp, propertyName, not);
 | |
|         }
 | |
|         else
 | |
|         {
 | |
|             return genericPropertyAccessor.buildLuceneExists(lqp, propertyName, not);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @param lqp
 | |
|      * @param propertyName
 | |
|      * @param value
 | |
|      * @param mode
 | |
|      * @return
 | |
|      * @throws ParseException 
 | |
|      */
 | |
|     public Query buildLuceneGreaterThan(LuceneQueryParser lqp, String propertyName, Serializable value, PredicateMode mode) throws ParseException
 | |
|     {
 | |
|         NamedPropertyAccessor accessor = namedPropertyAccessors.get(propertyName);
 | |
|         if (accessor != null)
 | |
|         {
 | |
|             return accessor.buildLuceneGreaterThan(lqp, propertyName, value, mode);
 | |
|         }
 | |
|         else
 | |
|         {
 | |
|             return genericPropertyAccessor.buildLuceneGreaterThan(lqp, propertyName, value, mode);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @param lqp
 | |
|      * @param propertyName
 | |
|      * @param value
 | |
|      * @param mode
 | |
|      * @return
 | |
|      * @throws ParseException 
 | |
|      */
 | |
|     public Query buildLuceneGreaterThanOrEquals(LuceneQueryParser lqp, String propertyName, Serializable value, PredicateMode mode) throws ParseException
 | |
|     {
 | |
|         NamedPropertyAccessor accessor = namedPropertyAccessors.get(propertyName);
 | |
|         if (accessor != null)
 | |
|         {
 | |
|             return accessor.buildLuceneGreaterThanOrEquals(lqp, propertyName, value, mode);
 | |
|         }
 | |
|         else
 | |
|         {
 | |
|             return genericPropertyAccessor.buildLuceneGreaterThanOrEquals(lqp, propertyName, value, mode);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @param lqp
 | |
|      * @param propertyName
 | |
|      * @param values
 | |
|      * @param not
 | |
|      * @param mode
 | |
|      * @return
 | |
|      * @throws ParseException 
 | |
|      */
 | |
|     public Query buildLuceneIn(LuceneQueryParser lqp, String propertyName, Collection<Serializable> values, Boolean not, PredicateMode mode) throws ParseException
 | |
|     {
 | |
|         NamedPropertyAccessor accessor = namedPropertyAccessors.get(propertyName);
 | |
|         if (accessor != null)
 | |
|         {
 | |
|             return accessor.buildLuceneIn(lqp, propertyName, values, not,  mode);
 | |
|         }
 | |
|         else
 | |
|         {
 | |
|             return genericPropertyAccessor.buildLuceneIn(lqp, propertyName, values, not, mode);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @param lqp
 | |
|      * @param propertyName
 | |
|      * @param value
 | |
|      * @param mode
 | |
|      * @return
 | |
|      * @throws ParseException 
 | |
|      */
 | |
|     public Query buildLuceneInequality(LuceneQueryParser lqp, String propertyName, Serializable value, PredicateMode mode) throws ParseException
 | |
|     {
 | |
|         NamedPropertyAccessor accessor = namedPropertyAccessors.get(propertyName);
 | |
|         if (accessor != null)
 | |
|         {
 | |
|             return accessor.buildLuceneInequality(lqp, propertyName, value, mode);
 | |
|         }
 | |
|         else
 | |
|         {
 | |
|             return genericPropertyAccessor.buildLuceneInequality(lqp, propertyName, value, mode);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @param lqp
 | |
|      * @param propertyName
 | |
|      * @param value
 | |
|      * @param mode
 | |
|      * @return
 | |
|      * @throws ParseException 
 | |
|      */
 | |
|     public Query buildLuceneLessThan(LuceneQueryParser lqp, String propertyName, Serializable value, PredicateMode mode) throws ParseException
 | |
|     {
 | |
|         NamedPropertyAccessor accessor = namedPropertyAccessors.get(propertyName);
 | |
|         if (accessor != null)
 | |
|         {
 | |
|             return accessor.buildLuceneLessThan(lqp, propertyName, value, mode);
 | |
|         }
 | |
|         else
 | |
|         {
 | |
|             return genericPropertyAccessor.buildLuceneLessThan(lqp, propertyName, value, mode);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @param lqp
 | |
|      * @param propertyName
 | |
|      * @param value
 | |
|      * @param mode
 | |
|      * @return
 | |
|      * @throws ParseException 
 | |
|      */
 | |
|     public Query buildLuceneLessThanOrEquals(LuceneQueryParser lqp, String propertyName, Serializable value, PredicateMode mode) throws ParseException
 | |
|     {
 | |
|         NamedPropertyAccessor accessor = namedPropertyAccessors.get(propertyName);
 | |
|         if (accessor != null)
 | |
|         {
 | |
|             return accessor.buildLuceneLessThanOrEquals(lqp, propertyName, value, mode);
 | |
|         }
 | |
|         else
 | |
|         {
 | |
|             return genericPropertyAccessor.buildLuceneLessThanOrEquals(lqp, propertyName, value, mode);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @param lqp
 | |
|      * @param propertyName
 | |
|      * @param value
 | |
|      * @param not
 | |
|      * @return
 | |
|      * @throws ParseException 
 | |
|      */
 | |
|     public Query buildLuceneLike(LuceneQueryParser lqp, String propertyName, Serializable value, Boolean not) throws ParseException
 | |
|     {
 | |
|         NamedPropertyAccessor accessor = namedPropertyAccessors.get(propertyName);
 | |
|         if (accessor != null)
 | |
|         {
 | |
|             return accessor.buildLuceneLike(lqp, propertyName, value, not);
 | |
|         }
 | |
|         else
 | |
|         {
 | |
|             return genericPropertyAccessor.buildLuceneLike(lqp, propertyName, value, not);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @param propertyName
 | |
|      * @return
 | |
|      */
 | |
|     public String getLuceneSortField(String propertyName)
 | |
|     {
 | |
|         NamedPropertyAccessor accessor = namedPropertyAccessors.get(propertyName);
 | |
|         if (accessor != null)
 | |
|         {
 | |
|             return accessor.getLuceneSortField(propertyName);
 | |
|         }
 | |
|         else
 | |
|         {
 | |
|             return genericPropertyAccessor.getLuceneSortField(propertyName);
 | |
|         }
 | |
|     }
 | |
| 
 | |
| }
 |