001: /*
002: * Copyright (c) 1998-2007 Caucho Technology -- all rights reserved
003: *
004: * This file is part of Resin(R) Open Source
005: *
006: * Each copy or derived work must preserve the copyright notice and this
007: * notice unmodified.
008: *
009: * Resin Open Source is free software; you can redistribute it and/or modify
010: * it under the terms of the GNU General Public License as published by
011: * the Free Software Foundation; either version 2 of the License, or
012: * (at your option) any later version.
013: *
014: * Resin Open Source is distributed in the hope that it will be useful,
015: * but WITHOUT ANY WARRANTY; without even the implied warranty of
016: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, or any warranty
017: * of NON-INFRINGEMENT. See the GNU General Public License for more
018: * details.
019: *
020: * You should have received a copy of the GNU General Public License
021: * along with Resin Open Source; if not, write to the
022: *
023: * Free Software Foundation, Inc.
024: * 59 Temple Place, Suite 330
025: * Boston, MA 02111-1307 USA
026: *
027: * @author Sam
028: */
029:
030: package com.caucho.quercus.module;
031:
032: import com.caucho.quercus.env.BooleanValue;
033: import com.caucho.quercus.env.LongValue;
034: import com.caucho.quercus.env.StringValue;
035: import com.caucho.quercus.env.Value;
036: import com.caucho.quercus.env.NullValue;
037:
038: import java.util.Collections;
039: import java.util.HashMap;
040: import java.util.Map;
041: import java.util.Set;
042:
043: public class IniDefinitions {
044: public static final IniDefinitions EMPTY = new IniDefinitions();
045:
046: private HashMap<String, IniDefinition> _defaultMap;
047:
048: /**
049: * Add an ini default for an ini that has a boolean value.
050: */
051: public IniDefinition add(String name, boolean deflt, int scope) {
052: return add(name, IniDefinition.Type.BOOLEAN, BooleanValue
053: .create(deflt), scope);
054: }
055:
056: /**
057: * Add an ini default for an ini that has a long value.
058: */
059: public IniDefinition add(String name, long deflt, int scope) {
060: return add(name, IniDefinition.Type.LONG, LongValue
061: .create(deflt), scope);
062: }
063:
064: /**
065: * Add an ini default for an ini that has a string value.
066: */
067: public IniDefinition add(String name, String deflt, int scope) {
068: return add(name, IniDefinition.Type.STRING, StringValue
069: .create(deflt), scope);
070: }
071:
072: private IniDefinition add(String name, IniDefinition.Type type,
073: Value deflt, int scope) {
074: return add(new IniDefinition(name, type, deflt, scope));
075: }
076:
077: private IniDefinition add(IniDefinition iniDefinition) {
078: if (_defaultMap == null)
079: _defaultMap = new HashMap<String, IniDefinition>();
080:
081: _defaultMap.put(iniDefinition.getName(), iniDefinition);
082:
083: return iniDefinition;
084: }
085:
086: /**
087: * Add an unsupported ini default for an ini that has a boolean value.
088: */
089: public IniDefinition addUnsupported(String name, boolean deflt,
090: int scope) {
091: return addUnsupported(name, IniDefinition.Type.BOOLEAN,
092: BooleanValue.create(deflt), scope);
093: }
094:
095: /**
096: * Add an unsupported ini default for an ini that has a long value.
097: */
098: public IniDefinition addUnsupported(String name, long deflt,
099: int scope) {
100: return addUnsupported(name, IniDefinition.Type.LONG, LongValue
101: .create(deflt), scope);
102: }
103:
104: /**
105: * Add an unsupported ini default for an ini that has a string value.
106: */
107: public IniDefinition addUnsupported(String name, String deflt,
108: int scope) {
109: return addUnsupported(name, IniDefinition.Type.STRING,
110: StringValue.create(deflt), scope);
111: }
112:
113: private IniDefinition addUnsupported(String name,
114: IniDefinition.Type type, Value deflt, int scope) {
115: return add(new IniDefinition.Unsupported(name, type, deflt,
116: scope));
117: }
118:
119: public void addAll(IniDefinitions iniDefinitions) {
120: if (iniDefinitions._defaultMap == null)
121: return;
122:
123: if (_defaultMap == null)
124: _defaultMap = new HashMap<String, IniDefinition>();
125:
126: _defaultMap.putAll(iniDefinitions._defaultMap);
127: }
128:
129: /**
130: * Return a set of all of the names.
131: */
132: public Set<String> getNames() {
133: if (_defaultMap == null)
134: return Collections.emptySet();
135: else
136: return _defaultMap.keySet();
137: }
138:
139: /*
140: * Returns the set of all ini name/value pairs.
141: */
142: public Set<Map.Entry<String, IniDefinition>> entrySet() {
143: if (_defaultMap == null)
144: return null;
145: else
146: return _defaultMap.entrySet();
147: }
148:
149: public IniDefinition get(String name) {
150: IniDefinition iniDefinition = _defaultMap == null ? null
151: : _defaultMap.get(name);
152:
153: if (iniDefinition == null) {
154: iniDefinition = new IniDefinition.Runtime(name);
155:
156: add(iniDefinition);
157: }
158:
159: return iniDefinition;
160: }
161: }
|