various fixes/cleanup: old producers are now completely gone, old logfile class too
[mir.git] / source / mir / storage / store / StoreContainerType.java
1 /*\r
2  * Copyright (C) 2001, 2002  The Mir-coders group\r
3  *\r
4  * This file is part of Mir.\r
5  *\r
6  * Mir is free software; you can redistribute it and/or modify\r
7  * it under the terms of the GNU General Public License as published by\r
8  * the Free Software Foundation; either version 2 of the License, or\r
9  * (at your option) any later version.\r
10  *\r
11  * Mir is distributed in the hope that it will be useful,\r
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
14  * GNU General Public License for more details.\r
15  *\r
16  * You should have received a copy of the GNU General Public License\r
17  * along with Mir; if not, write to the Free Software\r
18  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
19  *\r
20  * In addition, as a special exception, The Mir-coders gives permission to link\r
21  * the code of this program with the com.oreilly.servlet library, any library\r
22  * licensed under the Apache Software License, The Sun (tm) Java Advanced\r
23  * Imaging library (JAI), The Sun JIMI library (or with modified versions of\r
24  * the above that use the same license as the above), and distribute linked\r
25  * combinations including the two.  You must obey the GNU General Public\r
26  * License in all respects for all of the code used other than the above\r
27  * mentioned libraries.  If you modify this file, you may extend this exception\r
28  * to your version of the file, but you are not obligated to do so.  If you do\r
29  * not wish to do so, delete this exception statement from your version.\r
30  */\r
31 \r
32 package mir.storage.store;\r
33 \r
34 /**\r
35  * Title:         StoreContainerType\r
36  *\r
37  * Description:   StoreContainerTypes are uniqe Objects and are generated\r
38  *                via @see valueOf(Class stocClass, int stocType).\r
39  *                For every combination of stocClass and stocType there is\r
40  *                only one Object instantiated.\r
41  *\r
42  * Copyright:     Copyright (c) 2002\r
43  * Company:       indy\r
44  *\r
45  * @author        rk\r
46  * @version 1.0\r
47  */\r
48 \r
49 import java.util.HashMap;\r
50 \r
51 import mir.misc.StringUtil;\r
52 \r
53 public class StoreContainerType {\r
54 \r
55   public final static int STOC_TYPE_UNKNOWN = -1;\r
56   public final static int STOC_TYPE_ENTITY = 0;\r
57   public final static int STOC_TYPE_ENTITYLIST = 1;\r
58   public final static int STOC_TYPE_MAX = STOC_TYPE_ENTITYLIST;\r
59 \r
60   private static HashMap[] uniqueTypes = new HashMap[STOC_TYPE_MAX + 1];\r
61   private static ObjectStore o_store = ObjectStore.getInstance();\r
62   private Class stocClass = null;\r
63   private int stocType = STOC_TYPE_UNKNOWN;\r
64 \r
65   static {\r
66     uniqueTypes[STOC_TYPE_ENTITY] = new HashMap();\r
67     uniqueTypes[STOC_TYPE_ENTITYLIST] = new HashMap();\r
68   }\r
69 \r
70   private StoreContainerType() {}\r
71 \r
72   private StoreContainerType(Class stocClass, int stocType) {\r
73     this.stocClass = stocClass;\r
74     this.stocType = stocType;\r
75   }\r
76 \r
77   public static StoreContainerType valueOf(Class stoc_class, int stoc_type) {\r
78     StoreContainerType returnStocType = null;\r
79     if (stoc_type >= 0 && stoc_type <= STOC_TYPE_MAX) {\r
80       HashMap current = uniqueTypes[stoc_type];\r
81       if (current.containsKey(stoc_class))\r
82         returnStocType = (StoreContainerType) current.get(stoc_class);\r
83       else {\r
84         returnStocType = new StoreContainerType(stoc_class, stoc_type);\r
85         current.put(stoc_class, returnStocType);\r
86       }\r
87     }\r
88     return returnStocType;\r
89   }\r
90 \r
91   public int getStocType() {\r
92     return stocType;\r
93   }\r
94 \r
95   public Class getStocClass() {\r
96     return stocClass;\r
97   }\r
98 \r
99   public String getConfPrefix() {\r
100     return StoreUtil.getPropNameFor(stocClass) + "." +\r
101         stringForStoreType(stocType);\r
102   }\r
103 \r
104   public int getDefaultSize() {\r
105     String confProperty = "StoreContainer." + stringForStoreType(stocType) +\r
106         ".DefaultSize";\r
107     return\r
108         StringUtil.parseInt(o_store.getConfProperty(confProperty), 10);\r
109   }\r
110 \r
111   public String toString() {\r
112     StringBuffer sb = new StringBuffer(this.stocClass.toString());\r
113     sb.append("@").append(stringForStoreType(stocType));\r
114     return sb.toString();\r
115   }\r
116 \r
117   private static String stringForStoreType(int stocType) {\r
118     switch (stocType) {\r
119       case STOC_TYPE_ENTITY:\r
120         return "Entity";\r
121       case STOC_TYPE_ENTITYLIST:\r
122         return "EntityList";\r
123       default:\r
124         return "UNKNOWN";\r
125     }\r
126   }\r
127 }