mirror of
				https://github.com/Alfresco/alfresco-community-repo.git
				synced 2025-10-29 15:21:53 +00:00 
			
		
		
		
	- Was being used as a residual property (d:any) - To avoid storage as a serializable, the property is now d:text - Added conversion from String back to VersionType enum git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@22007 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
		
			
				
	
	
		
			217 lines
		
	
	
		
			7.0 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			217 lines
		
	
	
		
			7.0 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| /*
 | |
|  * Copyright (C) 2005-2010 Alfresco Software Limited.
 | |
|  *
 | |
|  * This file is part of Alfresco
 | |
|  *
 | |
|  * 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/>.
 | |
|  */
 | |
| package org.alfresco.repo.version.common;
 | |
| 
 | |
| import java.io.Serializable;
 | |
| import java.util.Date;
 | |
| import java.util.Map;
 | |
| 
 | |
| import org.alfresco.repo.version.Version2Model;
 | |
| import org.alfresco.repo.version.VersionBaseModel;
 | |
| import org.alfresco.repo.version.VersionModel;
 | |
| import org.alfresco.service.cmr.repository.NodeRef;
 | |
| import org.alfresco.service.cmr.repository.StoreRef;
 | |
| import org.alfresco.service.cmr.repository.datatype.DefaultTypeConverter;
 | |
| import org.alfresco.service.cmr.repository.datatype.TypeConverter;
 | |
| import org.alfresco.service.cmr.version.Version;
 | |
| import org.alfresco.service.cmr.version.VersionServiceException;
 | |
| import org.alfresco.service.cmr.version.VersionType;
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * Version class implementation.
 | |
|  * 
 | |
|  * Used to represent the data about a version stored in a version store.
 | |
|  * 
 | |
|  * @author Roy Wetherall
 | |
|  */
 | |
| 
 | |
| public class VersionImpl implements Version
 | |
| {
 | |
|     /**
 | |
|      * Serial version UID
 | |
|      */
 | |
|     private static final long serialVersionUID = 3257567304324888881L;
 | |
|     
 | |
|     /**
 | |
|      * Error message(s)
 | |
|      */
 | |
|     private static final String ERR_NO_NODE_REF = "A valid node reference must be supplied when creating a verison.";       
 | |
|     
 | |
|     /**
 | |
|      * The properties of the version
 | |
|      */
 | |
|     private Map<String, Serializable> versionProperties = null;
 | |
|     
 | |
|     /**
 | |
|      * The node reference that represents the frozen state of the versioned object
 | |
|      */
 | |
|     private NodeRef nodeRef = null;        
 | |
|     
 | |
|     /**
 | |
|      * Constructor that initialises the state of the version object.
 | |
|      * 
 | |
|      * @param  versionProperties  the version properties
 | |
|      * @param  nodeRef            the forzen state node reference
 | |
|      */
 | |
|     public VersionImpl(
 | |
|             Map<String, Serializable> versionProperties, 
 | |
|             NodeRef nodeRef)
 | |
|     {
 | |
|         if (nodeRef == null)
 | |
|         {
 | |
|             // Exception - a node ref must be specified
 | |
|             throw new VersionServiceException(VersionImpl.ERR_NO_NODE_REF);
 | |
|         }
 | |
|         
 | |
|         this.versionProperties = versionProperties;
 | |
|         this.nodeRef = nodeRef;        
 | |
|     }
 | |
|     
 | |
| 
 | |
|     @Override
 | |
|     public String toString()
 | |
|     {
 | |
|         return versionProperties.toString();
 | |
|     }
 | |
|     
 | |
|     public Date getFrozenModifiedDate()
 | |
|     {
 | |
|         Date modifiedDate = (Date)this.versionProperties.get(Version2Model.PROP_FROZEN_MODIFIED);
 | |
|         if (modifiedDate == null)
 | |
|         {
 | |
|             // Assume deprecated V1 version store
 | |
|             modifiedDate = (Date)this.versionProperties.get(VersionBaseModel.PROP_CREATED_DATE);
 | |
|         }
 | |
|         return modifiedDate;
 | |
|     }
 | |
|     
 | |
|     public String getFrozenModifier()
 | |
|     {
 | |
|         String modifier = (String)this.versionProperties.get(Version2Model.PROP_FROZEN_MODIFIER);
 | |
|         if (modifier == null)
 | |
|         {
 | |
|             // Assume deprecated V1 version store
 | |
|             modifier = (String)this.versionProperties.get(VersionBaseModel.PROP_CREATOR);
 | |
|         }
 | |
|         return modifier;
 | |
|     }
 | |
|     
 | |
|     public Date getCreatedDate()
 | |
|     {
 | |
|         // note: internal version node created date can be retrieved via standard node service
 | |
|         return getFrozenModifiedDate();
 | |
|     }
 | |
|     
 | |
|     public String getCreator()
 | |
|     {
 | |
|         // note: internal version node creator can be retrieved via standard node service
 | |
|         return getFrozenModifier();
 | |
|     }
 | |
|     
 | |
|     public String getVersionLabel()
 | |
|     {
 | |
|         return (String)this.versionProperties.get(VersionBaseModel.PROP_VERSION_LABEL);
 | |
|     }    
 | |
|     
 | |
|     public VersionType getVersionType()
 | |
|     {
 | |
|         return DefaultTypeConverter.INSTANCE.convert(
 | |
|                 VersionType.class,
 | |
|                 this.versionProperties.get(VersionBaseModel.PROP_VERSION_TYPE));
 | |
|     }
 | |
|     
 | |
|     public String getDescription()
 | |
|     {
 | |
|         return (String)this.versionProperties.get(Version.PROP_DESCRIPTION);
 | |
|     }
 | |
|     
 | |
|     public Map<String, Serializable> getVersionProperties()
 | |
|     {
 | |
|         return this.versionProperties;
 | |
|     }
 | |
|     
 | |
|     public Serializable getVersionProperty(String name)
 | |
|     {
 | |
|         Serializable result = null;
 | |
|         if (this.versionProperties != null)
 | |
|         {
 | |
|             result = this.versionProperties.get(name);
 | |
|         }
 | |
|         return result;
 | |
|     }
 | |
|     
 | |
|     public NodeRef getVersionedNodeRef()
 | |
|     {
 | |
|         NodeRef versionedNodeRef = null;
 | |
|         
 | |
|         // Switch VersionStore depending on configured impl
 | |
|         if (nodeRef.getStoreRef().getIdentifier().equals(Version2Model.STORE_ID))
 | |
|         {
 | |
|             // V2 version store (eg. workspace://version2Store)
 | |
|             versionedNodeRef = (NodeRef)this.versionProperties.get(Version2Model.PROP_FROZEN_NODE_REF);
 | |
|         } 
 | |
|         else if (nodeRef.getStoreRef().getIdentifier().equals(VersionModel.STORE_ID))
 | |
|         {
 | |
|             // Deprecated V1 version store (eg. workspace://lightWeightVersionStore)
 | |
|             String storeProtocol = (String)this.versionProperties.get(VersionModel.PROP_FROZEN_NODE_STORE_PROTOCOL);
 | |
|             String storeId = (String)this.versionProperties.get(VersionModel.PROP_FROZEN_NODE_STORE_ID);
 | |
|             String nodeId = (String)this.versionProperties.get(VersionModel.PROP_FROZEN_NODE_ID);
 | |
|             versionedNodeRef = new NodeRef(new StoreRef(storeProtocol, storeId), nodeId);
 | |
|         }
 | |
|         
 | |
|         return versionedNodeRef;
 | |
|     }
 | |
|     
 | |
|     public NodeRef getFrozenStateNodeRef()
 | |
|     {
 | |
|         return this.nodeRef;
 | |
|     }
 | |
|     
 | |
|     /**
 | |
|      * Static block to register the version type converters
 | |
|      */
 | |
|     static
 | |
|     {
 | |
|         DefaultTypeConverter.INSTANCE.addConverter(
 | |
|                 String.class, 
 | |
|                 VersionType.class, 
 | |
|                 new TypeConverter.Converter<String, VersionType>()
 | |
|                 {
 | |
|                     public VersionType convert(String source)
 | |
|                     {
 | |
|                         return VersionType.valueOf(source);
 | |
|                     }
 | |
|         
 | |
|                 });
 | |
|         
 | |
|         DefaultTypeConverter.INSTANCE.addConverter(
 | |
|                 VersionType.class,
 | |
|                 String.class,
 | |
|                 new TypeConverter.Converter<VersionType, String>()
 | |
|                 {
 | |
|                     public String convert(VersionType source)
 | |
|                     {
 | |
|                         return source.toString();
 | |
|                     }
 | |
|         
 | |
|                 });
 | |
|     }
 | |
|  }
 |