/*
* Copyright (C) 2009 eXo Platform SAS.
*
* This 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 2.1 of
* the License, or (at your option) any later version.
*
* This software 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 this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.exoplatform.services.cache;
/**
* This class defines the main configuration properties of an {@link org.exoplatform.services.cache.ExoCache}
*
* @author Tuan Nguyen (tuan08@users.sourceforge.net)
* @since Feb 20, 2005
* @version $Id: ExoCacheConfig.java 5799 2006-05-28 17:55:42Z geaz $
* @LevelAPI Platform
*/
public class ExoCacheConfig implements Cloneable
{
/**
* The name of the cache.
*/
private String name;
/**
* The label of the cache.
*/
private String label;
/**
* The maximum numbers of elements in cache.
*/
private int maxSize;
/**
* The amount of time (in seconds) an element is not written or
* read before it is evicted.
*/
private long liveTime;
/**
* Indicates if the cache is distributed
*/
private boolean distributed;
/**
* Indicates if the cache is replicated
*/
private boolean replicated;
/**
* The full qualified name of the cache implementation to use
*/
private String implementation;
/**
* Indicates if the log is enabled
*/
private boolean logEnabled;
/**
* Indicates whether or not the replication of the values should be avoided
*/
public boolean avoidValueReplication;
/**
* Returns the cache name
*
* @return the cache name
*/
public String getName()
{
return name;
}
/**
* Sets the cache name
*
* @param s the cache name
*/
public void setName(String s)
{
name = s;
}
/**
* Returns the cache label
*
* @return the cache label
*/
public String getLabel()
{
return label;
}
/**
* Sets the cache label
*
* @param s the cache label
*/
public void setLabel(String s)
{
label = s;
}
/**
* Returns the maximum amount of entries allowed in the cache
*
* @return the max size of the cache.
*/
public int getMaxSize()
{
return maxSize;
}
/**
* Sets the maximum amount of entries allowed in the cache
*
* @param size the max size of the cache
*/
public void setMaxSize(int size)
{
maxSize = size;
}
/**
* Returns the amount of time (in seconds) a cache entry is not written
* or read before it is evicted
*
* @return the live time
*/
public long getLiveTime()
{
return liveTime;
}
/**
* Sets the amount of time (in seconds) a cache entry is not written
* or read before it is evicted
*
* @param period the value of the live time
*/
public void setLiveTime(long period)
{
liveTime = period;
}
/**
* Indicates if the cache is distributed or not.
*
* @return flag that indicates if the cache is distributed or not.
*/
public boolean isDistributed()
{
return distributed;
}
/**
* Sets distributed state
*
* @param b flag that indicates if the cache is distributed or not.
*/
public void setDistributed(boolean b)
{
distributed = b;
}
/**
* Indicates if the cache is replicated or not.
*
* @return flag that indicates if the cache is repicated or not.
*/
public boolean isRepicated()
{
return replicated;
}
/**
* Sets replicated state
*
* @param b flag that indicates if the cache is repicated or not.
*/
public void setReplicated(boolean b)
{
replicated = b;
}
/**
* Returns the full qualified name of the cache implementation to use.
*
* @return the full qualified name
*/
public String getImplementation()
{
return implementation;
}
/**
* Sets the full qualified name of the cache implementation to use.
*
* @param alg the full qualified name of the cache implementation
*/
public void setImplementation(String alg)
{
implementation = alg;
}
public boolean isLogEnabled()
{
return logEnabled;
}
public void setLogEnabled(boolean enableLogging)
{
this.logEnabled = enableLogging;
}
/**
* @return the avoidValueReplication
*/
public boolean avoidValueReplication()
{
return avoidValueReplication;
}
/**
* @param avoidValueReplication the avoidValueReplication to set
*/
public void setAvoidValueReplication(boolean avoidValueReplication)
{
this.avoidValueReplication = avoidValueReplication;
}
/**
* @see java.lang.Object#clone()
*/
@Override
public ExoCacheConfig clone() throws CloneNotSupportedException
{
return (ExoCacheConfig)super.clone();
}
}