1 package com.sourceforge.jpatterns.core.configuration; 2 3 import com.sourceforge.jpatterns.core.configuration.model.JPatternsConfigsBean; 4 5 import java.io.File; 6 import java.util.List; 7 8 /** 9 * This interface is a single entry point for the castor based configuration would be used to provide the framework with the working 10 * data. This interface would be used for the both purposes: 11 * <ul> 12 * <li>First one is to obtain the system configuration which would be used for the making the framework configured itself - the 13 * idea of this self configuration is as follows. First of all the initial stuff to be configured is obtained using the properties 14 * file, but then when the "factory" pattern would implemented (meaning at the appropriate layer of JPatterns, cause we can not 15 * use it here for example), we would be able to use JPatterns mechanisms itself to allow configuring the system effectively</li> 16 * <li>The second case is when JPatterns would be used by the user - then we should provide the way to another stuff of the 17 * JPatterns to receive the configuration to be used later</li> 18 * </ul> 19 * <br/> 20 * The implementations of this interface could deal also with the overriden files/folders(where to search for the JPatterns 21 * configuration). This overriding could be done via JVM and default properties files. It would allow to the user to override 22 * everything though the properties files, through JVM params etc. 23 * <br/> 24 * Please review the ways use of the framework is able to customize the behaviour of the system: 25 * <br/> 26 * The instance we need to use is configured at the 27 * properties file, so there is a way for the developer to override this implementation by the custom one. 28 * todo [zmicer]: pleaes think over how to configure this through the properties files at the PropertiesBasedFactory - currently it is not 29 * done in this way 30 * 31 * $Author:: zmicer $<br/> 32 * $Rev:: 57 $<br/> * $Date:: 2007-08-23 09:16:37 #$<br/> 33 * $Date:: 2007-08-23 09:16:37 #$<br/> 34 */ 35 public interface IJPConfigurator 36 { 37 /** 38 * @return the name of the configuration file is used for the configuration of the working JPatterns itself 39 * <br/> 40 * Please review the Java Docs of the concrete implementation to obtain the algorithms for getting this name. 41 */ 42 String getJPatternsFrameworkConfigurationFileName(); 43 44 /** 45 * @return the name of the configuration file is used for the configuration of the working JPatterns itself (custom configuration) 46 * Returns the custom configuration. 47 */ 48 String getJPatternsFrameworkCustomConfigurationFileName(); 49 50 /** 51 * @return the List of String objects representing the configuration file names is provided by the consumers of the JPatterns 52 * (simply speaking the configuration of the third party factories, and another patterns, the configuration which is necessary to 53 * be parsed by JPatterns to make this framework help other developers - consumers of the framework) 54 */ 55 List<File> getJPatternsConsumerConfigurationFiles(); 56 57 /** 58 * @return the List of String objects representing the configuration file names is provided by the consumers of the JPatterns 59 * (simply speaking the configuration of the third party factories, and another patterns, the configuration which is necessary to 60 * be parsed by JPatterns to make this framework help other developers - consumers of the framework). 61 * <br/> 62 * Returns the custom configuration. 63 */ 64 List<File> getJPatternsConsumerCustomConfigurationFiles(); 65 66 /** 67 * @return true in the case the default XML framework configuration is presents. 68 */ 69 boolean defaultJPatternsFrameworkConfigurationPresents(); 70 71 /** 72 * @return true in the case the system custom configuration is presents (the value was provided via the JVM parameter 73 * using the 74 * <code>com.sourceforge.jpatterns.core.JPConstants.XMLConfigFilesConstants.CUSTOM_XML_FRAMEWORK_CONFIG_FILE_NAME_JVM_PARAM</code> 75 * or this file with the name 76 * <code>com.sourceforge.jpatterns.core.JPConstants.XMLConfigFilesConstants.CUSTOM_XML_FRAMEWORK_CONFIG_FILE_NAME</code> exists) 77 */ 78 boolean customJPatternsFrameworkConfigurationPresents(); 79 80 /** 81 * @return true in the case the default XML framework configuration is presents. 82 */ 83 boolean defaultJPatternsConsumerConfigurationPresents(); 84 85 /** 86 * @return true in the case the system custom configuration is presents (the value was provided via the JVM parameter 87 * using the 88 * <code>com.sourceforge.jpatterns.core.JPConstants.XMLConfigFilesConstants.CUSTOM_XML_FRAMEWORK_CONFIG_FILE_NAME_JVM_PARAM</code> 89 * or this file with the name 90 * <code>com.sourceforge.jpatterns.core.JPConstants.XMLConfigFilesConstants.CUSTOM_XML_FRAMEWORK_CONFIG_FILE_NAME</code> exists) 91 */ 92 boolean customJPatternsConsumerConfigurationPresents(); 93 94 /** 95 * @return the entry point for the system configuration is used for the JPatterns itself. 96 * <br/> 97 * Please be noticed this configuration is a merged one: the default and custom configuration are used 98 */ 99 JPatternsConfigsBean getJPatternsFrameworkConfiguration(); 100 101 /** 102 * @return the JPatternsConfig storing all the users configuration. 103 * <br/> 104 * Please be noticed this configuration is a merged one: the default and custom configuration files are used (there are lots of 105 * the configurations files could be at the default pathes and at the custom specific pathes) 106 */ 107 JPatternsConfigsBean getJPatternsConsumerConfiguration(); 108 } 109