View Javadoc

1   /*
2    *   Magic-Project is a turn based strategy simulator
3    *   Copyright (C) 2003-2007 Fabrice Daugan
4    *
5    *   This program is free software; you can redistribute it and/or modify it 
6    * under the terms of the GNU General Public License as published by the Free 
7    * Software Foundation; either version 2 of the License, or (at your option) any
8    * later version.
9    *
10   *   This program is distributed in the hope that it will be useful, but WITHOUT 
11   * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
12   * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more 
13   * details.
14   *
15   *   You should have received a copy of the GNU General Public License along  
16   * with this program; if not, write to the Free Software Foundation, Inc., 
17   * 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
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  		// Nothing to do
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  }