/* Copyright (c) 2001 - 2007 TOPP - http://topp.openplans.org. * All rights reserved. * This code is licensed under the GPL 2.0 license, availible in the * license.txt file of the documents directory off the root directory. */ package org.vfny.geoserver.control.internal; import org.vfny.geoserver.control.IPreferenceStore; import org.vfny.geoserver.control.IValidator; /** * <b>NOT API.</b> Default implementation that backs onto a {@link * IPreferenceStoreStrategy}. * * @author Jesse */ public class PreferenceStoreImpl implements IPreferenceStore { private static final IValidator TRUE_VALIDATOR = new IValidator(){ public boolean isValid(String key, String value) { return true; } }; private IPreferenceStoreStrategy store; private IValidator validator; public PreferenceStoreImpl(IPreferenceStoreStrategy store) { this.store = store; store.setValidator(TRUE_VALIDATOR); } public IValidator getValidator() { return validator; } public void setValidator(IValidator validator) { store.setValidator(validator); this.validator = validator; } public boolean getBoolean(String key) { String tmp = store.get(getKey(key, false)); if (tmp == null) { tmp = this.store.get(getKey(key, true)); } if (tmp == null) { return false; } if (tmp.equals("false")) { return false; } if (tmp.equals("true")) { return true; } throw new IllegalArgumentException(key + " is not a boolean. value=" + tmp); } public char getChar(String key) { String tmp = store.get(getKey(key, false)); if (tmp == null) { tmp = this.store.get(getKey(key, true)); } if (tmp == null) { return ' '; } if (tmp.length() > 1) { throw new IllegalArgumentException(key + "is not a character. value=" + tmp); } return tmp.charAt(0); } public double getDouble(String key) { String tmp = store.get(getKey(key, false)); if (tmp == null) { tmp = this.store.get(getKey(key, true)); } if (tmp == null) { return 0; } double d; try { d = Double.parseDouble(tmp); } catch (Exception e) { throw new IllegalArgumentException(key + "is not a double it is " + tmp); } return d; } public float getFloat(String key) { String tmp = store.get(getKey(key, false)); if (tmp == null) { tmp = this.store.get(getKey(key, true)); } if (tmp == null) { return 0; } float d; try { d = Float.parseFloat(tmp); } catch (Exception e) { throw new IllegalArgumentException(key + "is not a float it is " + tmp); } return d; } public int getInt(String key) { String tmp = store.get(getKey(key, false)); if (tmp == null) { tmp = this.store.get(getKey(key, true)); } if (tmp == null) { return 0; } int d; try { d = Integer.parseInt(tmp); } catch (Exception e) { throw new IllegalArgumentException(key + "is not a int it is " + tmp); } return d; } public long getLong(String key) { String tmp = store.get(getKey(key, false)); if (tmp == null) { tmp = this.store.get(getKey(key, true)); } if (tmp == null) { return 0; } long d; try { d = Long.parseLong(tmp); } catch (Exception e) { throw new IllegalArgumentException(key + "is not a long it is " + tmp); } return d; } public String getString(String key) { String tmp = this.store.get(getKey(key, false)); if (tmp == null) { tmp = this.store.get(getKey(key, true)); } if (tmp == null) { return ""; } return tmp; } public void set(String key, String value) { store.put(getKey(key, false), value); } public void set(String key, int value) { store.put(getKey(key, false), String.valueOf(value)); } public void set(String key, float value) { store.put(getKey(key, false), String.valueOf(value)); } public void set(String key, boolean value) { store.put(getKey(key, false), String.valueOf(value)); } public void set(String key, char value) { store.put(getKey(key, false), String.valueOf(value)); } public void set(String key, double value) { store.put(getKey(key, false), String.valueOf(value)); } public void set(String key, long value) { store.put(getKey(key, false), String.valueOf(value)); } private String getKey(String key, boolean getDefault) { if (getDefault) { return "@#$@3default__" + key; } else { return key; } } public void unset(String key) { store.unset(key); } public void setDefault(String key, String value) { store.put(getKey(key, true), value); } public void setDefault(String key, int value) { store.put(getKey(key, true), String.valueOf(value)); } public void setDefault(String key, float value) { store.put(getKey(key, true), String.valueOf(value)); } public void setDefault(String key, boolean value) { store.put(getKey(key, true), String.valueOf(value)); } public void setDefault(String key, char value) { store.put(getKey(key, true), String.valueOf(value)); } public void setDefault(String key, double value) { store.put(getKey(key, true), String.valueOf(value)); } public void setDefault(String key, long value) { store.put(getKey(key, true), String.valueOf(value)); } public String[] keys() { return store.keys(); } }