package net.sourceforge.pain.data;
import net.sourceforge.pain.data.type.*;
import net.sourceforge.pain.db.*;
import java.util.*;
/**
* PAiN Date: 14.06.2003 Time: 0:58:00
*/
public final class IndexedSpacesRegistry extends DbObject {
private static final int SPACE_BY_ID = 0;
private static final int NFIELDS = 1;
public IndexedSpacesRegistry() {
}
public IndexedSpacesRegistry(PainDB db) {
super(db);
}
protected DbClassSchema provideSchema() {
byte types[] = new byte[NFIELDS];
String names[] = new String[NFIELDS];
types[SPACE_BY_ID] = DbType.STRING_KEY_MAP;
names[SPACE_BY_ID] = "named_space_map";
return new DbClassSchema(types, names);
}
public IndexedSpace getSpace(String spaceUniqueId) {
return (IndexedSpace) getStringKeyMap(SPACE_BY_ID).get(spaceUniqueId);
}
public void registerSpace(IndexedSpace space) {
final Map m = getStringKeyMap(SPACE_BY_ID);
final String id = space.getSpaceUniqueId();
if (m.containsKey(id)) {
throw new RuntimeException("Dublicate space id:" + id);
}
m.put(id, space);
}
public void unregisterSpace(IndexedSpace space) {
final Map m = getStringKeyMap(SPACE_BY_ID);
final String name = space.getSpaceUniqueId();
m.remove(name);
}
}