/* * Copyright 2008-2014 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.kaleidofoundry.core.config; import java.io.Serializable; import java.net.URI; import java.util.concurrent.ConcurrentMap; import org.kaleidofoundry.core.cache.CacheManagerFactory; import org.kaleidofoundry.core.context.AbstractRuntimeContextBuilder; import org.kaleidofoundry.core.context.RuntimeContext; /** * {@link Configuration} base {@link RuntimeContext} builder & properties.<br/> * <p> * <b>{@link Configuration} commons context properties</b> : <br/> * <table border="1"> * <tr> * <td><b>Property name</b></td> * <td><b>Perimeter</b></td> * <td><b>Property description</b></td> * </tr> * <tr> * <td>name</td> * <td>all</td> * <td>unique name identifier of the configuration</td> * </tr> * <tr> * <td>storageAllowed</td> * <td>all</td> * <td><code>true|false</code> , active or not readonly usage (for storage) of the configuration</td> * </tr> * <tr> * <td>updateAllowed</td> * <td>all</td> * <td><code>true|false</code> , active or not readonly usage (no updates) of the configuration</td> * </tr> * <tr> * <td>fileStoreUri</td> * <td>all</td> * <td>cache configuration resource uri</td> * </tr> * <tr> * <td>fileStoreRef</td> * <td>all</td> * <td>file store context name that will be used to access the fileStoreUri (if configuration resource uri need a specific file store for * authentication, or other needs..)</td> * </tr> * <tr> * <td>cacheManagerRef</td> * <td>all</td> * <td>cache manager context name to use, if not specify default will be used (see {@link CacheManagerFactory})</td> * </tr> * <tr> * <td>multiValuesSeparator</td> * <td>all</td> * <td>separator used for property having multi-values : <code>;|,| </code></td> * </tr> * <tr> * <td>dateTimeFormat</td> * <td>all</td> * <td>used for property having a date time format : <code>yyyy-MM-dd'T'hh:mm:ss</code></td> * </tr> * <tr> * <td>numberFormat</td> * <td>all</td> * <td>used for property having a number format : <code>##0.0####</code></td> * </tr> * <tr> * <td><b>Property name</b></td> * <td><b>Perimeter</b></td> * <td><b>Property description</b></td> * </tr> * <tr> * <td>argsMainString</td> * <td>mainArgs</td> * <td>string representation parameters of the main arguments array</td> * </tr> * <tr> * <td>argsSeparator</td> * <td>mainArgs</td> * <td>string arguments separator character</td> * </tr> * </table> * </p> * * @author jraduget */ public class ConfigurationContextBuilder extends AbstractRuntimeContextBuilder<Configuration> { /** * common configuration context property - unique name identifier of the configuration * * @see Configuration#getName() */ public static final String Name = "name"; /** common configuration context property - read-only storage usage <code>true|false</code> value */ public static final String StorageAllowed = "storageAllowed"; /** common configuration context property - read-only update usage <code>true|false</code> value */ public static final String UpdateAllowed = "updateAllowed"; /** common configuration context property - file store {@link URI} to accessed the configuration file */ public static final String FileStoreUri = "fileStoreUri"; /** common configuration context property - file store context name that will be used to access the fileStoreUri */ public static final String FileStoreRef = "fileStoreRef"; /** common configuration context property - cache manager context name to use */ public static final String CacheManagerRef = "cacheManagerRef"; /** common - separator used for property having multi-values : <code>;|,| </code> */ public static final String MultiValuesSeparator = "multiValuesSeparator"; /** common - used for property having a date format : <code>yyyy-MM-dd'T'hh:mm:ss */ public static final String DateTimeFormat = "dateTimeFormat"; /** common - used for property having a number format : <code>##0.0#### */ public static final String NumberFormat = "numberFormat"; /** * {@link MainArgsConfiguration} configuration context property - string representation parameters of the main arguments array * * @see #ArgsSeparator * @see MainArgsConfiguration */ public static final String ArgsMainString = "argsMainString"; /** * {@link MainArgsConfiguration} configuration context property - string arguments separator character * * @see #ArgsMainString * @see MainArgsConfiguration */ public static final String ArgsSeparator = "argsSeparator"; /** * */ public ConfigurationContextBuilder() { super(); } /** * @param pluginInterface * @param configurations */ public ConfigurationContextBuilder(final Class<Configuration> pluginInterface, final Configuration... configurations) { super(pluginInterface, configurations); } /** * @param pluginInterface * @param staticParameters */ public ConfigurationContextBuilder(final Class<Configuration> pluginInterface, final ConcurrentMap<String, Serializable> staticParameters) { super(pluginInterface, staticParameters); } /** * @param pluginInterface */ public ConfigurationContextBuilder(final Class<Configuration> pluginInterface) { super(pluginInterface); } /** * @param staticParameters * @param configurations */ public ConfigurationContextBuilder(final ConcurrentMap<String, Serializable> staticParameters, final Configuration... configurations) { super(staticParameters, configurations); } /** * @param name * @param pluginInterface * @param configurations */ public ConfigurationContextBuilder(final String name, final Class<Configuration> pluginInterface, final Configuration... configurations) { super(name, pluginInterface, configurations); } /** * @param name * @param pluginInterface * @param staticParameters * @param configurations */ public ConfigurationContextBuilder(final String name, final Class<Configuration> pluginInterface, final ConcurrentMap<String, Serializable> staticParameters, final Configuration... configurations) { super(name, pluginInterface, staticParameters, configurations); } /** * @param name * @param configurations */ public ConfigurationContextBuilder(final String name, final Configuration... configurations) { super(name, configurations); } /** * @param name * @param prefixProperty * @param configurations */ public ConfigurationContextBuilder(final String name, final String prefixProperty, final Configuration... configurations) { super(name, prefixProperty, configurations); } /** * @param name * @param prefixProperty * @param staticParameters * @param configurations */ public ConfigurationContextBuilder(final String name, final String prefixProperty, final ConcurrentMap<String, Serializable> staticParameters, final Configuration... configurations) { super(name, prefixProperty, staticParameters, configurations); } /** * @param name * @param prefix */ public ConfigurationContextBuilder(final String name, final String prefix) { super(name, prefix); } /** * @param name */ public ConfigurationContextBuilder(final String name) { super(name); } /** * @param name * @return set name context parameter */ public ConfigurationContextBuilder withName(final String name) { getContextParameters().put(Name, name); return this; } /** * @param allowStorage * @return set allow storage context parameter */ public ConfigurationContextBuilder withStorageAllowed(final boolean allowStorage) { getContextParameters().put(StorageAllowed, Boolean.valueOf(allowStorage).toString()); return this; } /** * @param allowUpdate * @return set allow update context parameter */ public ConfigurationContextBuilder withUpdateAllowed(final String allowUpdate) { getContextParameters().put(UpdateAllowed, allowUpdate); return this; } /** * @param fileStoreUri * @return set fileStoreUri context parameter */ public ConfigurationContextBuilder withFileStoreUri(final String fileStoreUri) { getContextParameters().put(FileStoreUri, fileStoreUri); return this; } /** * @param fileStoreRef * @return set fileStoreRef context parameter */ public ConfigurationContextBuilder withFileStoreRef(final String fileStoreRef) { getContextParameters().put(FileStoreRef, fileStoreRef); return this; } /** * @param cacheManagerRef * @return set cacheManagerRef context parameter */ public ConfigurationContextBuilder withCacheManagerRef(final String cacheManagerRef) { getContextParameters().put(CacheManagerRef, cacheManagerRef); return this; } /** * @param args * @return set main args context parameter */ public ConfigurationContextBuilder withMainArgsString(final String args) { getContextParameters().put(ArgsMainString, args); return this; } /** * @param separator * @return set main args separator context parameter */ public ConfigurationContextBuilder withMainArgsSeparator(final String separator) { getContextParameters().put(ArgsSeparator, separator); return this; } /** * @param multiValuesSeparator * @return set main args separator context parameter */ public ConfigurationContextBuilder withMultiValuesSeparator(final String multiValuesSeparator) { getContextParameters().put(MultiValuesSeparator, multiValuesSeparator); return this; } /** * @param dateTimeFormat * @return set main args separator context parameter */ public ConfigurationContextBuilder withDateTimeFormat(final String dateTimeFormat) { getContextParameters().put(DateTimeFormat, dateTimeFormat); return this; } /** * @param numberFormat * @return set main args separator context parameter */ public ConfigurationContextBuilder withNumberFormat(final String numberFormat) { getContextParameters().put(NumberFormat, numberFormat); return this; } }