1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package net.sf.magicproject.database.propertyconfig;
20
21 import java.io.IOException;
22 import java.io.InputStream;
23
24 import net.sf.magicproject.token.IdPropertyType;
25
26
27 /***
28 * Abstract class that holds information about a property name and its
29 * translation in the selected language in the <code>LanguageManager</code>
30 * class.
31 *
32 * @author <a href="mailto:fabdouglas@users.sourceforge.net">Fabrice Daugan </a>
33 * @since 0.90
34 */
35 public abstract class PropertyConfigFactory {
36
37 /***
38 * Prevent this class to be instanciated
39 */
40 private PropertyConfigFactory() {
41
42 }
43
44 /***
45 * Return the next PropertyConfig instance read from the given stream.
46 *
47 * @param dbStream
48 * the stream containing the PropertyConfig data.
49 * @return the next PropertyConfig instance read from the given stream.
50 * @throws IOException
51 * when I/O error occurs durin the instance build.
52 */
53 public static PropertyConfig getPropertyConfig(InputStream dbStream)
54 throws IOException {
55 final IdPropertyType propertyType = IdPropertyType.deserialize(dbStream);
56 switch (propertyType) {
57 case COLLECTION_PROPERTY:
58 return new Collection(dbStream);
59 case COLLECTION_TRANSLATABLE_PROPERTY:
60 return new CollectionTranslatable(dbStream);
61 case SIMPLE_PROPERTY:
62 return new Cache(dbStream);
63 case SIMPLE_TRANSLATABLE_PROPERTY:
64 return new Translatable(dbStream);
65 default:
66 throw new InternalError("Unknow property type : '" + propertyType + "'");
67 }
68 }
69 }