View Javadoc

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