1 package com.sourceforge.jpatterns.core;
2
3 import org.apache.log4j.Logger;
4
5 import java.util.regex.Pattern;
6
7 /**
8 * This class contains the global constants which are usefull for the development of the JPatterns
9 *
10 * $Author:: zmicer $<br/>
11 * $Rev:: 67 $<br/> * $Date:: 2007-08-28 21:37:07 #$<br/>
12 * $Date:: 2007-08-28 21:37:07 #$<br/>
13 */
14 public class JPConstants
15 {
16 /**
17 * Logger instance.
18 */
19 final public static Logger LOG = Logger.getLogger(JPConstants.class);
20
21 /**
22 * This *compiled* pattern represents the mask for the configuration files which should be used by the JPatterns to initialize
23 * the patterns stuff.
24 * <br/>
25 * This patterns excludes the names of the files are used by the framework for the initializing the framework itself.
26 */
27 final public static Pattern PATTERN =
28 Pattern.compile(".*jpatterns.*(?<!^jpatterns_framework)(?<!^jpatterns_framework_custom)\\.xml");
29
30 /**
31 * This interface stores the constants related to the configuration of all the XML configuration files might be used at the JPatterns
32 */
33 public interface XMLConfigFilesConstants
34 {
35 /**
36 * This is the file name where the JPatterns configuration would be stored (the idea is when JPattern would have the patterns
37 * implemented, then another functionality would be forced to use these patterns as base - e.g. initially implementations of
38 * JPatterns base interfaces are taken from the properties file, but when "factory" pattern would be implemented we would be
39 * able to use the xml for the storing implementations defined per interfaces etc.)
40 * <br/>
41 * The customer specific configuration file can not be the same name with this provided below. It is reserved one.
42 * When for the XML configuration files for the JPatterns this name would be simply excluded.
43 * (<strong>jpatterns_framework_custom</strong> and <strong>jpatterns_framework</strong>)
44 */
45 String DEFAULT_XML_FRAMEWORK_CONFIG_FILE_NAME = "jpatterns_framework.xml";
46
47 /**
48 * The JVM param is used for the obtaining the overriden configuration for the framework default configuration (is used for
49 * the wramework itself)
50 */
51 String DEFAULT_XML_FRAMEWORK_CONFIG_FILE_NAME_JVM_PARAM = DEFAULT_XML_FRAMEWORK_CONFIG_FILE_NAME;
52
53 /**
54 * The key is used for the obtaining the configuration for the default framework xml file.
55 */
56 String DEFAULT_XML_FRAMEWORK_CONFIG_FILE_NAME_PROPS_PARAM = "jpatterns.configuration.xml.default.framework.file";
57
58 /**
59 * Please review the Java Docs to the {@link JPConstants.XMLConfigFilesConstants#DEFAULT_XML_FRAMEWORK_CONFIG_FILE_NAME}.
60 * <br/>
61 * The file with such name allows to override/extend the configuration is written and this default file.
62 */
63 String CUSTOM_XML_FRAMEWORK_CONFIG_FILE_NAME = "jpatterns_framework_custom.xml";
64
65 /**
66 * The JVM param is used for the obtaining the overriden configuration for the custom framework xml file.
67 */
68 String CUSTOM_XML_FRAMEWORK_CONFIG_FILE_NAME_JVM_PARAM = CUSTOM_XML_FRAMEWORK_CONFIG_FILE_NAME;
69
70 /**
71 * The key is used for the obtaining the overriden configuration for the custom framework xml file.
72 */
73 String CUSTOM_XML_FRAMEWORK_CONFIG_FILE_NAME_PROPS_PARAM = "jpatterns.configuration.xml.custom.framework.file";
74
75 /**
76 * The JVM param is used for the obtaining the path to the directory where the overriden XML customer specific configuration
77 * should be seached
78 */
79 String CUSTOM_XML_CONSUMER_CONFIG_DIR_NAME_JVM_PARAM = "jpatterns.configuration.xml.custom.consumer.config.dir";
80
81 /**
82 * The JVM param is used for the obtaining the path to the directory where the default XML customer specific configuration
83 * should be seached
84 */
85 String DEFAULT_XML_CONSUMER_CONFIG_DIR_NAME_JVM_PARAM = "jpatterns.configuration.xml.default.consumer.config.dir";
86
87 /**
88 * The key for the properties settings defining the directory where to find all the jpatterns configuration.
89 */
90 String CUSTOM_XML_CONSUMER_CONFIG_DIR_NAME_PROPS_PARAM = CUSTOM_XML_CONSUMER_CONFIG_DIR_NAME_JVM_PARAM;
91
92 /**
93 * The key for the properties settings defining the directory where to find default consumer jpatterns configuration.
94 */
95 String DEFAULT_XML_CONSUMER_CONFIG_DIR_NAME_PROPS_PARAM = DEFAULT_XML_CONSUMER_CONFIG_DIR_NAME_JVM_PARAM;
96 }
97
98 /**
99 * This interface stores the constants related to the configuration of all the properties based configuration files
100 */
101 public interface PropertiesConfigFilesConstants
102 {
103 /**
104 * PROPERTIES_EXTENSION
105 */
106 String PROPERTIES_EXTENSION = ".properties";
107
108 /**
109 * DEFAULT_PROPERTIES_BASE_NAME
110 */
111 String DEFAULT_PROPERTIES_BASE_NAME = "jpatterns";
112
113 /**
114 * The name of the default jpatterns properties file - these properties are necessary to setup configuration only for the
115 * JPatterns core files - when factory pattern would be implemented the configuration would be taken from the xml file with
116 * the name <code>DEFAULT_XML_CONFIG_FILE_NAME</code>
117 */
118 String DEFAULT_PROPERTIES_FILE_NAME = DEFAULT_PROPERTIES_BASE_NAME + PROPERTIES_EXTENSION;
119
120 /**
121 * It is possible to override the name to the default properties file using the JVM parameter
122 */
123 String DEFAULT_PROPERTIES_FILE_NAME_JVM_PARAM = DEFAULT_PROPERTIES_FILE_NAME;
124
125 /**
126 * CUSTOM_PROPERTIES_BASE_NAME
127 */
128 String CUSTOM_PROPERTIES_BASE_NAME = "jpatterns_custom";
129
130 /**
131 * The name of the file where the custom properties woduld be stored - it would allow the developers using JPatterns,
132 * to override the default settings would be stored at the Jar file.
133 */
134 String CUSTOM_PROPERTIES_FILE_NAME = CUSTOM_PROPERTIES_BASE_NAME + PROPERTIES_EXTENSION;
135
136 /**
137 * It is possible to override the name to the custom properties file using the JVM parameter
138 */
139 String CUSTOM_PROPERTIES_FILE_NAME_JVM_PARAM = CUSTOM_PROPERTIES_FILE_NAME;
140 }
141
142 /**
143 * Defines the logging categories to be used by the JPatterns core
144 */
145 public enum LoggingCategory
146 {
147 /**
148 * All the debug messages related to the Factory pattern
149 */
150 FACTORY,
151
152 /**
153 * All the messages related to the obtaining patterns from the JPatterns consumer/framework configuration
154 */
155 OBTAIN_PATTERNS
156 }
157
158 /**
159 * This enumeration defines the possible categories for the configuration JPatterns engine would use for the obtain the patterns implementations
160 * (for nowe it is just consumer but in the future when some different providers appear - it could be extended or made even dynamical)
161 * <br/>
162 * todo [zmicer]: review the above mentioned. It is logged as the 4 item of the release 1.1 requirements.
163 */
164 public enum EngineConfigCaregory
165 {
166 /**
167 * Framework configuration
168 */
169 FRAMEWORK,
170 /**
171 * Consumer configuration
172 */
173 CONSUMER
174 }
175
176 /**
177 * This interface stores the names of the config elements which are the part of the FrameworkConfig
178 */
179 public interface FrameworkConfigEntities
180 {
181 /**
182 * Defines the name of the factory woul dbe used for the factory core settings
183 */
184 String FACTORY_JPATTERNS_CORE = "JPatternsCore";
185 /**
186 * Defines the item with the configuration for the plugins
187 */
188 String ITEM_JPATTERNS_PLUGIN = "JPatternsPlugins";
189 }
190
191 /**
192 * The default scope name constant.
193 */
194 public static final String DEFAULT_SCOPE_NAME = "DEFAULT_SCOPE";
195
196 /**
197 * default priority to be used with the not prioritized JPatternsConfig child elements
198 */
199 public static final int DEFAULT_PRIORITY = -1;
200
201 /**
202 * Prioritized priority prefix.
203 */
204 public static final String PRIORITIZED_PRIOTITY_PREFIX = "PRIORITIZED_PRIORITY_";
205 }
206