/
area/
classes/net/sourceforge/pain/logic/
classes/net/sourceforge/pain/logic/event/
classes/net/sourceforge/pain/logic/fn/util/
classes/net/sourceforge/pain/network/console/
classes/net/sourceforge/pain/plugin/
classes/net/sourceforge/pain/plugin/reset/
classes/net/sourceforge/pain/plugin/shutdown/
classes/net/sourceforge/pain/plugin/social/
classest/net/sourceforge/pain/db/data/
doc/
doc/paindb/resources/
src/net/sourceforge/pain/logic/
src/net/sourceforge/pain/logic/event/
src/net/sourceforge/pain/logic/fn/util/
src/net/sourceforge/pain/network/console/
src/net/sourceforge/pain/network/console/telnet/
src/net/sourceforge/pain/plugin/
src/net/sourceforge/pain/plugin/command/
src/net/sourceforge/pain/plugin/reset/
src/net/sourceforge/pain/plugin/shutdown/
src/net/sourceforge/pain/plugin/social/
src/net/sourceforge/pain/util/
tests/
tests/net/sourceforge/pain/db/data/
package net.sourceforge.pain.db;

import java.util.*;

/**
 * This class implements the <tt>Map</tt> interface. Only not null String keys and values supported.<br>
 */

public final class DbStringMap extends DbAbstractStringMap implements Map {

	public DbStringMap(final DbObject owner, final String[] image, final int fid) {
		super(owner, image, fid);
	}

	public DbStringMap(final DbObject owner, final int fid) {
		super(owner, fid);
	}

	Object createBackupImage() {
		if (nElements == 0) {
			return DbConstants.ZERO_STRING_ARRAY;
		}
		final int imageLen = nElements * 2;
		final String image[] = new String[imageLen];
		int pos = 0;
		for (int i = 0; pos < imageLen; i++) {
			for (AStringMapEntry e = data[i]; e != null; e = e.next) {
				image[pos] = e.key;
				image[pos + 1] = e.value;
				pos += 2;
			}
		}
		return image;
	}

	void restoreFromImage(final String[] image) {
		final int len = image.length;
		nElements = len / 2;
		if (data == null || data.length < nElements || data.length > nElements * 2) {
			data = nElements == 0 ? ZERO_DATA : new AStringMapEntry[(int) (nElements / DEFAULT_LOAD_FACTOR)];
		}
		for (int i = 0; i < len; i += 2) {
			final String key = image[i];
			final String value = image[i + 1];
			new AStringMapEntry(key, value);
		}
	}


/* ----------------- SET interface Impl ----------------*/

	public int size() {
		return x_size();
	}

	public void clear() {
		x_clear();
	}

	public boolean isEmpty() {
		return x_isEmpty();
	}

	public boolean containsKey(Object key) {
		return x_get(key) != null;
	}

	public boolean containsValue(Object value) {
		return x_containsValue(value);
	}

	public Collection values() {
		return x_values();
	}

	public void putAll(Map t) {
		throw new UnsupportedOperationException();
	}

	public Set entrySet() {
		return x_entrySet();
	}

	public Set keySet() {
		return x_keySet();
	}

	public Object get(Object key) {
		return x_get(key);
	}

	public Object remove(Object key) {
		return x_remove((String)key);
	}

	public Object put(Object key, Object value) {
		return x_put((String)key, (String)value);
	}
}