001    package com.softwarementors.extjs.djn.config;
002    
003    import com.softwarementors.extjs.djn.StringUtils;
004    import com.softwarementors.extjs.djn.router.DefaultGsonBuilderConfigurator;
005    import com.softwarementors.extjs.djn.router.GsonBuilderConfigurator;
006    
007    public class GlobalConfiguration {
008      public static final boolean DEFAULT_DEBUG_VALUE = false;
009      public static final Class<? extends GsonBuilderConfigurator> DEFAULT_GSON_BUILDER_CONFIGURATOR_CLASS = DefaultGsonBuilderConfigurator.class;
010      private String providersUrl;
011      private boolean debug;
012      private Class<? extends GsonBuilderConfigurator> gsonBuilderConfiguratorClass;
013      private boolean batchRequestsMultithreadingEnabled;
014      private int batchRequestsMinThreadsPoolSize;
015      private int batchRequestsMaxThreadsPoolSize; 
016      private int batchRequestsThreadKeepAliveSeconds;
017      private int batchRequestsMaxThreadsPerRequest; 
018      
019      public static final int MIN_BATCH_REQUESTS_MIN_THREAD_POOL_SIZE = 0;
020      public static final int MIN_BATCH_REQUESTS_MAX_THREAD_POOL_SIZE = 1;
021      public static final int MIN_BATCH_REQUESTS_MAX_THREADS_PER_REQUEST = 1;
022      public static final int MIN_BATCH_REQUESTS_THREAD_KEEP_ALIVE_SECONDS = 0;
023    
024      public static final boolean DEFAULT_BATCH_REQUESTS_MULTITHREADING_ENABLED_VALUE = true;
025      public static final int DEFAULT_BATCH_REQUESTS_MAX_THREADS_PER_REQUEST = 6;
026      public static final int DEFAULT_BATCH_REQUESTS_MIN_THREAD_POOL_SIZE = DEFAULT_BATCH_REQUESTS_MAX_THREADS_PER_REQUEST * 3;
027      public static final int DEFAULT_BATCH_REQUESTS_MAX_THREAD_POOL_SIZE = DEFAULT_BATCH_REQUESTS_MAX_THREADS_PER_REQUEST * 10;
028      public static final int DEFAULT_BATCH_REQUESTS_THREAD_KEEP_ALIVE_SECONDS = 60;
029    
030      public GlobalConfiguration( String providersUrl, boolean debug, Class<? extends GsonBuilderConfigurator> gsonBuilderConfiguratorClass, 
031          boolean batchRequestsMultithreadingEnabled, int batchRequestsMinThreadsPoolSize, int batchRequestsMaxThreadsPoolSize, 
032          int batchRequestsThreadKeepAliveSeconds, int batchRequestsMaxThreadsPerRequest) 
033      {
034        assert !StringUtils.isEmpty( providersUrl );
035        assert batchRequestsMinThreadsPoolSize >= MIN_BATCH_REQUESTS_MIN_THREAD_POOL_SIZE;
036        assert batchRequestsMaxThreadsPoolSize >= MIN_BATCH_REQUESTS_MAX_THREAD_POOL_SIZE;
037        assert batchRequestsThreadKeepAliveSeconds >= MIN_BATCH_REQUESTS_THREAD_KEEP_ALIVE_SECONDS;
038        assert batchRequestsMaxThreadsPerRequest >= MIN_BATCH_REQUESTS_MAX_THREADS_PER_REQUEST;
039        assert batchRequestsMinThreadsPoolSize <= batchRequestsMaxThreadsPoolSize;
040        
041        this.providersUrl = providersUrl;
042        this.debug = debug;
043        this.gsonBuilderConfiguratorClass = gsonBuilderConfiguratorClass;
044            
045        this.batchRequestsMultithreadingEnabled = batchRequestsMultithreadingEnabled;
046        this.batchRequestsMinThreadsPoolSize = batchRequestsMinThreadsPoolSize;
047        this.batchRequestsMaxThreadsPoolSize = batchRequestsMaxThreadsPoolSize; 
048        this.batchRequestsThreadKeepAliveSeconds = batchRequestsThreadKeepAliveSeconds;
049        this.batchRequestsMaxThreadsPerRequest = batchRequestsMaxThreadsPerRequest; 
050        
051      }
052      
053      public String getProvidersUrl() {
054        return this.providersUrl;
055      }
056      
057      public boolean getDebug() {
058        return this.debug;
059      }
060    
061      public Class<? extends GsonBuilderConfigurator> getGsonBuilderConfiguratorClass() {
062        return this.gsonBuilderConfiguratorClass;
063      }
064    
065      public boolean getBatchRequestsMultithreadingEnabled() {
066        return this.batchRequestsMultithreadingEnabled;
067      }
068    
069      public int getBatchRequestsMinThreadsPoolSize() {
070        return this.batchRequestsMinThreadsPoolSize;
071      }
072    
073      public int getBatchRequestsMaxThreadsPoolSize() {
074        return this.batchRequestsMaxThreadsPoolSize;
075      }
076    
077      public int getBatchRequestsThreadKeepAliveSeconds() {
078        return this.batchRequestsThreadKeepAliveSeconds;
079      }
080    
081      public int getBatchRequestsMaxThreadsPerRequest() {
082        return this.batchRequestsMaxThreadsPerRequest;
083      }
084    }