mirror of
				https://github.com/Alfresco/alfresco-community-repo.git
				synced 2025-10-22 15:12:38 +00:00 
			
		
		
		
	125606 rmunteanu: Merged 5.1.1 (5.1.1) to 5.1.N (5.1.2)
      125515 slanglois: MNT-16155 Update source headers - add new Copyrights for Java and JSP source files + automatic check in the build
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/DEV/5.2.N/root@125788 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
		
	
		
			
				
	
	
		
			140 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			140 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| /*
 | |
|  * #%L
 | |
|  * Alfresco Repository
 | |
|  * %%
 | |
|  * Copyright (C) 2005 - 2016 Alfresco Software Limited
 | |
|  * %%
 | |
|  * This file is part of the Alfresco software. 
 | |
|  * If the software was purchased under a paid Alfresco license, the terms of 
 | |
|  * the paid license agreement will prevail.  Otherwise, the software is 
 | |
|  * provided under the following open source license terms:
 | |
|  * 
 | |
|  * Alfresco is free software: you can redistribute it and/or modify
 | |
|  * it under the terms of the GNU Lesser General Public License as published by
 | |
|  * the Free Software Foundation, either version 3 of the License, or
 | |
|  * (at your option) any later version.
 | |
|  * 
 | |
|  * Alfresco 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 Lesser General Public License for more details.
 | |
|  * 
 | |
|  * You should have received a copy of the GNU Lesser General Public License
 | |
|  * along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
 | |
|  * #L%
 | |
|  */
 | |
| package org.alfresco.repo.domain.encoding;
 | |
| 
 | |
| import org.alfresco.repo.cache.SimpleCache;
 | |
| import org.alfresco.util.Pair;
 | |
| import org.alfresco.repo.cache.lookup.EntityLookupCache;
 | |
| import org.alfresco.repo.cache.lookup.EntityLookupCache.EntityLookupCallbackDAOAdaptor;
 | |
| import org.springframework.extensions.surf.util.ParameterCheck;
 | |
| 
 | |
| /**
 | |
|  * Abstract implementation for Encoding DAO.
 | |
|  * <p>
 | |
|  * This provides basic services such as caching, but defers to the underlying implementation
 | |
|  * for CRUD operations. 
 | |
|  * 
 | |
|  * @author Derek Hulley
 | |
|  * @since 3.2
 | |
|  */
 | |
| public abstract class AbstractEncodingDAOImpl implements EncodingDAO
 | |
| {
 | |
|     private static final String CACHE_REGION_ENCODING = "Encoding";
 | |
|     
 | |
|     /**
 | |
|      * Cache for the Locale values:<br/>
 | |
|      * KEY: ID<br/>
 | |
|      * VALUE: String<br/>
 | |
|      * VALUE KEY: String<br/>
 | |
|      */
 | |
|     private EntityLookupCache<Long, String, String> encodingEntityCache;
 | |
|     
 | |
|     /**
 | |
|      * Set the cache that maintains the ID-Encoding mappings and vice-versa (bi-directional)
 | |
|      * 
 | |
|      * @param encodingEntityCache        the cache
 | |
|      */
 | |
|     public void setEncodingEntityCache(SimpleCache<Long, String> encodingEntityCache)
 | |
|     {
 | |
|         this.encodingEntityCache = new EntityLookupCache<Long, String, String>(
 | |
|                 encodingEntityCache,
 | |
|                 CACHE_REGION_ENCODING,
 | |
|                 new EncodingEntityCallbackDAO());
 | |
|     }
 | |
|     
 | |
|     public Pair<Long, String> getEncoding(Long id)
 | |
|     {
 | |
|         return encodingEntityCache.getByKey(id);
 | |
|     }
 | |
| 
 | |
|     public Pair<Long, String> getEncoding(String encoding)
 | |
|     {
 | |
|         encoding = encoding.toUpperCase();
 | |
|         ParameterCheck.mandatory("encoding", encoding);
 | |
|         return encodingEntityCache.getByValue(encoding);
 | |
|     }
 | |
| 
 | |
|     public Pair<Long, String> getOrCreateEncoding(String encoding)
 | |
|     {
 | |
|         encoding = encoding.toUpperCase();
 | |
|         ParameterCheck.mandatory("encoding", encoding);
 | |
|         return encodingEntityCache.getOrCreateByValue(encoding);
 | |
|     }
 | |
|     
 | |
|     /**
 | |
|      * Callback for <b>alf_encoding</b> DAO
 | |
|      */
 | |
|     private class EncodingEntityCallbackDAO extends EntityLookupCallbackDAOAdaptor<Long, String, String>
 | |
|     {
 | |
|         @Override
 | |
|         public String getValueKey(String value)
 | |
|         {
 | |
|             return value;
 | |
|         }
 | |
| 
 | |
|         public Pair<Long, String> findByKey(Long id)
 | |
|         {
 | |
|             EncodingEntity entity = getEncodingEntity(id);
 | |
|             if (entity == null)
 | |
|             {
 | |
|                 return null;
 | |
|             }
 | |
|             else
 | |
|             {
 | |
|                 return new Pair<Long, String>(id, entity.getEncoding().toUpperCase());
 | |
|             }
 | |
|         }
 | |
|         
 | |
|         @Override
 | |
|         public Pair<Long, String> findByValue(String encoding)
 | |
|         {
 | |
|             EncodingEntity entity = getEncodingEntity(encoding);
 | |
|             if (entity == null)
 | |
|             {
 | |
|                 return null;
 | |
|             }
 | |
|             else
 | |
|             {
 | |
|                 return new Pair<Long, String>(entity.getId(), encoding);
 | |
|             }
 | |
|         }
 | |
|         
 | |
|         public Pair<Long, String> createValue(String encoding)
 | |
|         {
 | |
|             EncodingEntity entity = createEncodingEntity(encoding);
 | |
|             return new Pair<Long, String>(entity.getId(), encoding);
 | |
|         }
 | |
|     }
 | |
|     
 | |
|     /**
 | |
|      * @param id            the ID of the encoding entity
 | |
|      * @return              Return the entity or <tt>null</tt> if it doesn't exist
 | |
|      */
 | |
|     protected abstract EncodingEntity getEncodingEntity(Long id);
 | |
|     protected abstract EncodingEntity getEncodingEntity(String encoding);
 | |
|     protected abstract EncodingEntity createEncodingEntity(String encoding);
 | |
| }
 |