Package net.sf.cache4j

Source Code of net.sf.cache4j.CacheFactory

/* =========================================================================
* File: $Id: $CacheFactory.java,v$
*
* Copyright (c) 2006, Yuriy Stepovoy. All rights reserved.
* email: stepovoy@gmail.com
*
* =========================================================================
*/

package net.sf.cache4j;

import net.sf.cache4j.Cache;
import net.sf.cache4j.CacheConfig;
import net.sf.cache4j.CacheException;
import net.sf.cache4j.impl.Configurator;

import java.util.Map;
import java.util.HashMap;
import java.io.InputStream;

/**
* ����� CacheFactory ��������� ������������ �����.
*
* @version $Revision: 1.0 $ $Date:$
* @author Yuriy Stepovoy. <a href="mailto:stepovoy@gmail.com">stepovoy@gmail.com</a>
**/

public class CacheFactory {
// ----------------------------------------------------------------------------- ���������
// ----------------------------------------------------------------------------- �������� ������
// ----------------------------------------------------------------------------- ����������� ����������

    /**
     * ����� � ������������ �����
     */
    private Map _cacheMap;

    /**
     * ����� ������������ �������� ����
     */
    private CacheCleaner _cleaner;

    /**
     * Singleton
     */
    private static final CacheFactory _cacheFactory = new CacheFactory();

// ----------------------------------------------------------------------------- ������������

    /**
     * �����������
     */
    public CacheFactory() {
        _cacheMap = new HashMap();
        _cleaner = new CacheCleaner(30000); //default 30sec
        _cleaner.start();
    }

// ----------------------------------------------------------------------------- Public ������

    /**
     * ���������� ��������� CacheFactory
     */
    public static CacheFactory getInstance(){
        return _cacheFactory;
    }

    /**
     * ��������� ������ ����� �� xml ������������, ��� ������� CacheFactory.
     * @param in ������� ����� � xml �������������
     * @throws CacheException
     */
    public void loadConfig(InputStream in) throws CacheException {
        Configurator.loadConfig(in);
    }

    /**
     * ��������� ���. ��� ����� ���������� Cache ������ ������������� ��������� ManagedCache.
     * @param cache ���
     * @throws NullPointerException ���� cache==null ��� cache.getCacheConfig()==null
     * ��� cache.getCacheConfig().getCacheId()==null
     * @throws CacheException ���� ��� ��� ���������� ��� ���� ����������� ��� ��
     * ��������� ��������� ManagedCache
     */
    public void addCache(Cache cache) throws CacheException {
        if(cache==null){
            throw new NullPointerException("cache is null");
        }
        CacheConfig cacheConfig = cache.getCacheConfig();
        if(cacheConfig==null) {
            throw new NullPointerException("cache config is null");
        }
        if(cacheConfig.getCacheId()==null) {
            throw new NullPointerException("config.getCacheId() is null");
        }
        if(!(cache instanceof Cache)) {
            throw new CacheException("cache not instance of "+ManagedCache.class.getName());
        }

        synchronized(_cacheMap){
            if(_cacheMap.containsKey(cacheConfig.getCacheId())) {
                throw new CacheException("Cache id:"+cacheConfig.getCacheId()+" exists");
            }

            _cacheMap.put(cacheConfig.getCacheId(), cache);
        }
    }

    /**
     * ���������� ���
     * @param cacheId ������������� ����
     * @throws NullPointerException ���� cacheId==null
     */
    public Cache getCache(Object cacheId) throws CacheException {
        if(cacheId==null) {
            throw new NullPointerException("cacheId is null");
        }

        synchronized(_cacheMap){
            return (Cache)_cacheMap.get(cacheId);
        }
    }

    /**
     * ������� ���
     * @param cacheId ������������� ����
     * @throws NullPointerException ���� cacheId==null
     */
    public void removeCache(Object cacheId) throws CacheException {
        if(cacheId==null) {
            throw new NullPointerException("cacheId is null");
        }

        synchronized(_cacheMap){
            _cacheMap.remove(cacheId);
        }
    }

    /**
     * ���������� ������ � ���������������� �����
     */
    public Object[] getCacheIds() {
        synchronized(_cacheMap) {
            return _cacheMap.keySet().toArray();
        }
    }

    /**
     * ������������� �������� ������� ����
     * @param time ���������� �����������
     */
    public void setCleanInterval(long time) {
        _cleaner.setCleanInterval(time);
    }

// ----------------------------------------------------------------------------- Package scope ������
// ----------------------------------------------------------------------------- Protected ������
// ----------------------------------------------------------------------------- Private ������
// ----------------------------------------------------------------------------- Inner ������

}

/*
$Log: CacheFactory.java,v $
*/
 
TOP

Related Classes of net.sf.cache4j.CacheFactory

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.