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