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@18931 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
		
			
				
	
	
		
			205 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			205 lines
		
	
	
		
			5.2 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.domain.locks;
 | 
						|
 | 
						|
import org.alfresco.util.EqualsHelper;
 | 
						|
 | 
						|
/**
 | 
						|
 * Entity bean for <b>alf_lock</b> table.
 | 
						|
 * <p>
 | 
						|
 * These are unique (see {@link #equals(Object) equals} and {@link #hashCode() hashCode}) based
 | 
						|
 * on the shared and exclusive resource ID combination.
 | 
						|
 * 
 | 
						|
 * @author Derek Hulley
 | 
						|
 * @since 3.2
 | 
						|
 */
 | 
						|
public class LockEntity
 | 
						|
{
 | 
						|
    public static final Long CONST_LONG_ZERO = new Long(0L);
 | 
						|
    
 | 
						|
    private Long id;
 | 
						|
    private Long version;
 | 
						|
    private Long sharedResourceId;
 | 
						|
    private Long exclusiveResourceId;
 | 
						|
    private String lockToken;
 | 
						|
    private Long startTime;
 | 
						|
    private Long expiryTime = Long.MIN_VALUE;           // 'expired' unless set 
 | 
						|
    
 | 
						|
    @Override
 | 
						|
    public int hashCode()
 | 
						|
    {
 | 
						|
        return (sharedResourceId == null ? 0 : sharedResourceId.hashCode()) +
 | 
						|
                (exclusiveResourceId == null ? 0 : exclusiveResourceId.hashCode());
 | 
						|
    }
 | 
						|
    
 | 
						|
    @Override
 | 
						|
    public boolean equals(Object obj)
 | 
						|
    {
 | 
						|
        if (this == obj)
 | 
						|
        {
 | 
						|
            return true;
 | 
						|
        }
 | 
						|
        else if (obj instanceof LockEntity)
 | 
						|
        {
 | 
						|
            LockEntity that = (LockEntity) obj;
 | 
						|
            return EqualsHelper.nullSafeEquals(this.sharedResourceId, that.sharedResourceId) &&
 | 
						|
                   EqualsHelper.nullSafeEquals(this.exclusiveResourceId, that.exclusiveResourceId);
 | 
						|
        }
 | 
						|
        else
 | 
						|
        {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    
 | 
						|
    @Override
 | 
						|
    public String toString()
 | 
						|
    {
 | 
						|
        StringBuilder sb = new StringBuilder(512);
 | 
						|
        sb.append("LockEntity")
 | 
						|
          .append("[ ID=").append(id)
 | 
						|
          .append(", sharedResourceId=").append(sharedResourceId)
 | 
						|
          .append(", exclusiveResourceId=").append(exclusiveResourceId)
 | 
						|
          .append("]");
 | 
						|
        return sb.toString();
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Determine if the lock is logically exclusive.  A lock is <b>exclusive</b> if the
 | 
						|
     * shared lock resource matches the exclusive lock resource.
 | 
						|
     * 
 | 
						|
     * @return      Returns <tt>true</tt> if the lock is exclusive or <tt>false<tt> if it is not
 | 
						|
     */
 | 
						|
    public boolean isExclusive()
 | 
						|
    {
 | 
						|
        if (sharedResourceId == null || exclusiveResourceId == null)
 | 
						|
        {
 | 
						|
            throw new IllegalStateException("LockEntity has not been populated");
 | 
						|
        }
 | 
						|
        return sharedResourceId.equals(exclusiveResourceId);
 | 
						|
    }
 | 
						|
    
 | 
						|
    public boolean hasExpired()
 | 
						|
    {
 | 
						|
        return System.currentTimeMillis() > expiryTime;
 | 
						|
    }
 | 
						|
    
 | 
						|
    public Long getId()
 | 
						|
    {
 | 
						|
        return id;
 | 
						|
    }
 | 
						|
 | 
						|
    public void setId(Long id)
 | 
						|
    {
 | 
						|
        this.id = id;
 | 
						|
    }
 | 
						|
 | 
						|
    public Long getVersion()
 | 
						|
    {
 | 
						|
        return version;
 | 
						|
    }
 | 
						|
 | 
						|
    public void setVersion(Long version)
 | 
						|
    {
 | 
						|
        this.version = version;
 | 
						|
    }
 | 
						|
    
 | 
						|
    /**
 | 
						|
     * Increments the version number or resets it if it reaches a large number
 | 
						|
     */
 | 
						|
    public void incrementVersion()
 | 
						|
    {
 | 
						|
        long currentVersion = version.longValue();
 | 
						|
        if (currentVersion >= 10E6)
 | 
						|
        {
 | 
						|
            this.version = CONST_LONG_ZERO;
 | 
						|
        }
 | 
						|
        else
 | 
						|
        {
 | 
						|
            this.version = new Long(version.longValue() + 1L);
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @return                  Returns the ID of the shared lock resource
 | 
						|
     */
 | 
						|
    public Long getSharedResourceId()
 | 
						|
    {
 | 
						|
        return sharedResourceId;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * 
 | 
						|
     * @param sharedResourceId  the ID of the shared lock resource
 | 
						|
     */
 | 
						|
    public void setSharedResourceId(Long sharedResourceId)
 | 
						|
    {
 | 
						|
        this.sharedResourceId = sharedResourceId;
 | 
						|
    }
 | 
						|
 | 
						|
    public Long getExclusiveResourceId()
 | 
						|
    {
 | 
						|
        return exclusiveResourceId;
 | 
						|
    }
 | 
						|
 | 
						|
    public void setExclusiveResourceId(Long exclusiveResourceId)
 | 
						|
    {
 | 
						|
        this.exclusiveResourceId = exclusiveResourceId;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @return              Returns the token assigned when the lock was created
 | 
						|
     */
 | 
						|
    public String getLockToken()
 | 
						|
    {
 | 
						|
        return lockToken;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @param lockToken     the token assigned when the lock was created
 | 
						|
     */
 | 
						|
    public void setLockToken(String lockToken)
 | 
						|
    {
 | 
						|
        this.lockToken = lockToken;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * 
 | 
						|
     * @return              Returns the time when the lock was started
 | 
						|
     */
 | 
						|
    public Long getStartTime()
 | 
						|
    {
 | 
						|
        return startTime;
 | 
						|
    }
 | 
						|
 | 
						|
    public void setStartTime(Long startTime)
 | 
						|
    {
 | 
						|
        this.startTime = startTime;
 | 
						|
    }
 | 
						|
 | 
						|
    public Long getExpiryTime()
 | 
						|
    {
 | 
						|
        return expiryTime;
 | 
						|
    }
 | 
						|
 | 
						|
    public void setExpiryTime(Long expiryTime)
 | 
						|
    {
 | 
						|
        this.expiryTime = expiryTime;
 | 
						|
    }
 | 
						|
}
 |