001 /*
002 * Copyright 2005,2009 Ivan SZKIBA
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016 package org.ini4j.test;
017
018 import org.ini4j.sample.Dwarf;
019 import org.ini4j.sample.Dwarfs;
020
021 import java.beans.PropertyChangeListener;
022 import java.beans.PropertyVetoException;
023 import java.beans.VetoableChangeListener;
024
025 import java.net.URI;
026
027 public final class DwarfsData implements Dwarfs
028 {
029 public static final DwarfData bashful;
030 public static final DwarfData doc;
031 public static final DwarfData dopey;
032 public static final DwarfData grumpy;
033 public static final DwarfData happy;
034 public static final DwarfData sleepy;
035 public static final DwarfData sneezy;
036 public static final Dwarfs dwarfs;
037 public static final String[] dwarfNames;
038 public static final String INI_DOPEY_WEIGHT = "${bashful/weight}";
039 public static final String INI_DOPEY_HEIGHT = "${doc/height}";
040 public static final String INI_GRUMPY_HEIGHT = "${dopey/height}";
041 public static final String INI_SLEEPY_HEIGHT = "${doc/height}8";
042 public static final String INI_SNEEZY_HOME_PAGE = "${happy/homePage}/~sneezy";
043 public static final String OPT_DOPEY_WEIGHT = "${bashful.weight}";
044 public static final String OPT_DOPEY_HEIGHT = "${doc.height}";
045 public static final String OPT_GRUMPY_HEIGHT = "${dopey.height}";
046 public static final String OPT_SLEEPY_HEIGHT = "${doc.height}8";
047 public static final String OPT_SNEEZY_HOME_PAGE = "${happy.homePage}/~sneezy";
048
049 static
050 {
051
052 // age, fortuneNumber, height, homeDir, homePage, weight
053 bashful = new DwarfData(PROP_BASHFUL, 67, null, 98.8, "/home/bashful", "http://snowwhite.tale/~bashful", 45.7);
054 doc = new DwarfData(PROP_DOC, 63, null, 87.7, "c:Documents and Settingsdoc", "http://doc.dwarfs", 49.5);
055 dopey = new DwarfData(PROP_DOPEY, 23, new int[] { 11, 33, 55 }, doc.height, "c:\\Documents and Settings\\dopey", "http://dopey.snowwhite.tale/", bashful.weight);
056 grumpy = new DwarfData(PROP_GRUMPY, 76, null, dopey.height, "/home/grumpy", "http://snowwhite.tale/~grumpy/", 65.3);
057 happy = new DwarfData(PROP_HAPPY, 99, null, 77.66, "/home/happy", "http://happy.smurf", 56.4);
058 sleepy = new DwarfData(PROP_SLEEPY, 121, new int[] { 99 }, doc.height + 0.08, "/home/sleepy", "http://snowwhite.tale/~sleepy", 76.11);
059 sneezy = new DwarfData(PROP_SNEEZY, 64, new int[] { 11, 22, 33, 44 }, 76.88, "/home/sneezy", happy.homePage.toString() + "/~sneezy", 69.7);
060 dwarfs = new DwarfsData();
061 dwarfNames = new String[] { bashful.name, doc.name, dopey.name, grumpy.name, happy.name, sleepy.name, sneezy.name };
062 }
063
064 @SuppressWarnings("empty-statement")
065 private DwarfsData()
066 {
067 ;
068 }
069
070 public Dwarf getBashful()
071 {
072 return bashful;
073 }
074
075 public Dwarf getDoc()
076 {
077 return doc;
078 }
079
080 public Dwarf getDopey()
081 {
082 return dopey;
083 }
084
085 public Dwarf getGrumpy()
086 {
087 return grumpy;
088 }
089
090 public Dwarf getHappy()
091 {
092 return happy;
093 }
094
095 public Dwarf getSleepy()
096 {
097 return sleepy;
098 }
099
100 public Dwarf getSneezy()
101 {
102 return sneezy;
103 }
104
105 public static class DwarfData implements Dwarf
106 {
107 private static final String READ_ONLY_INSTANCE = "Read only instance";
108 public final int age;
109 public final int[] fortuneNumber;
110 public final double height;
111 public final String homeDir;
112 public final URI homePage;
113 public final String name;
114 public final double weight;
115
116 public DwarfData(String name, int age, int[] fortuneNumber, double height, String homeDir, String homePage, double weight)
117 {
118 this.name = name;
119 this.age = age;
120 this.fortuneNumber = fortuneNumber;
121 this.height = height;
122 this.homeDir = homeDir;
123 this.homePage = URI.create(homePage);
124 this.weight = weight;
125 }
126
127 public int getAge()
128 {
129 return age;
130 }
131
132 public void setAge(int age)
133 {
134 throw new UnsupportedOperationException(READ_ONLY_INSTANCE);
135 }
136
137 public int[] getFortuneNumber()
138 {
139 return fortuneNumber;
140 }
141
142 public void setFortuneNumber(int[] value)
143 {
144 throw new UnsupportedOperationException(READ_ONLY_INSTANCE);
145 }
146
147 public double getHeight()
148 {
149 return height;
150 }
151
152 public void setHeight(double height) throws PropertyVetoException
153 {
154 throw new UnsupportedOperationException(READ_ONLY_INSTANCE);
155 }
156
157 public String getHomeDir()
158 {
159 return homeDir;
160 }
161
162 public void setHomeDir(String dir)
163 {
164 throw new UnsupportedOperationException(READ_ONLY_INSTANCE);
165 }
166
167 public URI getHomePage()
168 {
169 return homePage;
170 }
171
172 public void setHomePage(URI location)
173 {
174 throw new UnsupportedOperationException(READ_ONLY_INSTANCE);
175 }
176
177 public double getWeight()
178 {
179 return weight;
180 }
181
182 public void setWeight(double weight)
183 {
184 throw new UnsupportedOperationException(READ_ONLY_INSTANCE);
185 }
186
187 public void addPropertyChangeListener(String property, PropertyChangeListener listener)
188 {
189 throw new UnsupportedOperationException(READ_ONLY_INSTANCE);
190 }
191
192 public void addVetoableChangeListener(String property, VetoableChangeListener listener)
193 {
194 throw new UnsupportedOperationException(READ_ONLY_INSTANCE);
195 }
196
197 public boolean hasAge()
198 {
199 return age != 0;
200 }
201
202 public boolean hasHeight()
203 {
204 return height != 0.0;
205 }
206
207 public boolean hasHomePage()
208 {
209 return homePage != null;
210 }
211
212 public boolean hasWeight()
213 {
214 return weight != 0.0;
215 }
216
217 public void removePropertyChangeListener(String property, PropertyChangeListener listener)
218 {
219 throw new UnsupportedOperationException(READ_ONLY_INSTANCE);
220 }
221
222 public void removeVetoableChangeListener(String property, VetoableChangeListener listener)
223 {
224 throw new UnsupportedOperationException(READ_ONLY_INSTANCE);
225 }
226 }
227 }