// Near Infinity - An Infinity Engine Browser and Editor
// Copyright (C) 2001 - 2005 Jon Olav Hauglid
// See LICENSE.txt for license information
package org.infinity.util;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import org.infinity.resource.ResourceFactory;
import org.infinity.resource.key.ResourceEntry;
public final class IdsMapCache
{
private static final Map<String, IdsMap> common = new HashMap<String, IdsMap>();
public static void cacheInvalid(ResourceEntry entry)
{
if (entry != null) {
common.remove(entry.toString().toUpperCase(Locale.ENGLISH));
}
}
public static void clearCache()
{
common.clear();
}
public static synchronized IdsMap get(String name)
{
IdsMap retVal = null;
if (name != null) {
name = name.trim().toUpperCase(Locale.ENGLISH);
retVal = common.get(name);
if (retVal == null) {
ResourceEntry resEntry = ResourceFactory.getResourceEntry(name);
if (resEntry == null && name.equals("ATTSTYLE.IDS")) {
resEntry = ResourceFactory.getResourceEntry("ATTSTYL.IDS");
}
if (resEntry == null) {
System.err.println("Could not find " + name);
} else {
retVal = new IdsMap(resEntry);
common.put(name, retVal);
}
}
}
return retVal;
}
private IdsMapCache(){}
}