All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.avaje.ebean.config.PropertyMap Maven / Gradle / Ivy

The newest version!
package com.avaje.ebean.config;

import java.io.Serializable;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;

/**
 * A map like structure of properties.
 */
final class PropertyMap implements Serializable {

  private static final long serialVersionUID = 1L;

  private LinkedHashMap map = new LinkedHashMap();

  public String toString() {
    return map.toString();
  }

  /**
   * Go through all the properties and evaluate any expressions that have not
   * been resolved.
   */
  public void evaluateProperties() {

    for (Entry e : entrySet()) {
      String key = e.getKey();
      String val = e.getValue();
      String eval = eval(val);
      if (eval != null && !eval.equals(val)) {
        put(key, eval);
      }
    }
  }

  public synchronized String eval(String val) {
    return PropertyExpression.eval(val, this);
  }

  public synchronized boolean getBoolean(String key, boolean defaultValue) {
    String value = get(key);
    if (value == null) {
      return defaultValue;
    } else {
      return Boolean.parseBoolean(value);
    }
  }

  public synchronized int getInt(String key, int defaultValue) {
    String value = get(key);
    if (value == null) {
      return defaultValue;
    } else {
      return Integer.parseInt(value);
    }
  }

  public synchronized String get(String key, String defaultValue) {
    String value = map.get(key.toLowerCase());
    return value == null ? defaultValue : value;
  }

  public synchronized String get(String key) {
    return map.get(key.toLowerCase());
  }

  synchronized void putAll(Map keyValueMap) {
    Iterator> it = keyValueMap.entrySet().iterator();
    while (it.hasNext()) {
      Map.Entry entry = it.next();
      put(entry.getKey(), entry.getValue());
    }
  }

  synchronized String putEval(String key, String value) {
    value = PropertyExpression.eval(value, this);
    return map.put(key.toLowerCase(), value);
  }

  synchronized String put(String key, String value) {
    return map.put(key.toLowerCase(), value);
  }

  synchronized String remove(String key) {
    return map.remove(key.toLowerCase());
  }

  synchronized Set> entrySet() {
    return map.entrySet();
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy