⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 idtable.java

📁 Rapla是一个灵活的多用户资源管理系统。它提供的一些功能有:日历GUI
💻 JAVA
字号:
/*--------------------------------------------------------------------------*
  | Copyright (C) 2006 Christopher Kohlhaas                                  |
  |                                                                          |
  | This program is free software; you can redistribute it and/or modify     |
  | it under the terms of the GNU General Public License as published by the |
  | Free Software Foundation. A copy of the license has been included with   |
  | these distribution in the COPYING file, if not go to www.fsf.org .       |
  |                                                                          |
  | As a special exception, you are granted the permissions to link this     |
  | program with every library, which license fulfills the Open Source       |
  | Definition as published by the Open Source Initiative (OSI).             |
  *--------------------------------------------------------------------------*/

package org.rapla.storage;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import org.rapla.entities.RaplaType;
import org.rapla.entities.storage.RefEntity;
import org.rapla.entities.storage.internal.SimpleIdentifier;
import org.rapla.framework.RaplaException;

/** Maintains the highest ids for every RaplaType in the LocalCache.*/
public class IdTable {
    Map idTable = new HashMap();
    LocalCache cache;
    /** increment and return the highest id for the selected RaplaType */
    public Object createId(RaplaType raplaType) throws RaplaException {
        SimpleIdentifier oldId = (SimpleIdentifier) idTable.get(raplaType);
        if ( oldId == null) {
            oldId = calc(cache, raplaType);
            idTable.put(raplaType, oldId);
        }
        if (oldId == null)
            throw new RaplaException("Error in Program: RaplaType '" + raplaType +
                                     "' not found in idtable. Have you called recalc?");
        Object newId = new SimpleIdentifier(raplaType,oldId.getKey() + 1);
        idTable.put(raplaType,newId);
        return newId;
    }

    /** Finds the highest id in an entity-collection */
    protected SimpleIdentifier calc(LocalCache cache,RaplaType raplaType) throws RaplaException {
        int max = 0;
        Iterator it = cache.getIterator(raplaType);
        while (it.hasNext()) {
            SimpleIdentifier id =(SimpleIdentifier) ((RefEntity)it.next()).getId();
            if (id != null && id.getKey() > max)
                max = id.getKey();
        }
        return new SimpleIdentifier(raplaType,max);
    }
    
    public void setCache(LocalCache cache) throws RaplaException {
        this.cache = cache;
        idTable.clear();
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -