View Javadoc

1   package net.sourceforge.jgeocoder.tiger;
2   
3   import java.io.Serializable;
4   
5   import javax.sql.DataSource;
6   
7   import net.sourceforge.jgeocoder.CommonUtils;
8   
9   import org.apache.commons.lang.builder.EqualsBuilder;
10  import org.apache.commons.lang.builder.HashCodeBuilder;
11  import org.apache.commons.lang.builder.ToStringBuilder;
12  /***
13   * TODO javadocs me
14   * @author jliang
15   *
16   */
17  public class JGeocoderConfig implements Serializable{
18    private static final long serialVersionUID = 20080604L;
19    public static final JGeocoderConfig DEFAULT = new JGeocoderConfig();
20    private String _jgeocoderDataHome = 
21      CommonUtils.nvl(System.getProperty("jgeocoder.data.home"), "/usr/local/jgeocoder/data");
22  
23    private DataSource _tigerDataSource = null; 
24     
25    private long _berkeleyDbCacheSize = -1;
26    private int _berkeleyDbCachePercent = -1;
27    
28    /***
29     * get the {@link DataSource} to the tiger/line address database
30     * @return
31     */
32    public synchronized DataSource getTigerDataSource() {
33      if(_tigerDataSource == null){
34        _tigerDataSource = H2DbDataSourceFactory.getH2DbDataSource();
35      }
36      return _tigerDataSource;
37    }
38    
39    public synchronized void setTigerDataSource(DataSource tigerDataSource) {
40      _tigerDataSource = tigerDataSource;
41    }
42    
43    /***
44     *  <p>By default, JE sets its cache size proportionally to the JVM
45       memory. This formula is used:</p>
46      
47       <blockquote><pre>je.maxMemoryPercent *  JVM maximum memory
48       </pre></blockquote>
49      
50       <p>where JVM maximum memory is specified by the JVM -Xmx flag.
51       setCachePercent() specifies the percentage used and is equivalent to
52       setting the je.maxMemoryPercent property in the je.properties file.</p>
53      
54       <p>Calling setCacheSize() with a non-zero value overrides the percentage
55       based calculation and sets the cache size explicitly.</p>
56      
57       <p>Note that the log buffer cache may be cleared if the cache size is
58       changed after the environment has been opened.</p>
59      
60       <p>If setSharedCache(true) is called, setCacheSize and setCachePercent
61       specify the total size of the shared cache, and changing these
62       parameters will change the size of the shared cache.</p>
63     * @param berkeleyDbCachePercent berkeleyDb default will be used if set to negative
64     */
65    public int getBerkeleyDbCachePercent() {
66      return _berkeleyDbCachePercent;
67    }
68    
69    public void setBerkeleyDbCachePercent(int berkeleyDbCachePercent) {
70      _berkeleyDbCachePercent = berkeleyDbCachePercent;
71    }
72    /***
73     * see http://www.oracle.com/technology/documentation/berkeley-db/je/java/com/sleepycat/je/EnvironmentMutableConfig.html#setCachePercent(int)
74     * @return
75     */
76    public long getBerkeleyDbCacheSize() {
77      return _berkeleyDbCacheSize;
78    }
79    /***
80     * Configures the memory available to the database system, in bytes.
81   <p>Equivalent to setting the je.maxMemory property in the je.properties
82   file. The system will evict database objects when it comes within a
83   prescribed margin of the limit.</p>
84  
85   <p>By default, JE sets the cache size to:</p>
86  
87   <pre><blockquote>je.maxMemoryPercent *  JVM maximum memory
88   </blockquote></pre>
89  
90   <p>where JVM maximum memory is specified by the JVM -Xmx flag. However,
91   calling setCacheSize() with a non-zero value overrides the percentage
92   based calculation and sets the cache size explicitly.</p>
93  
94   <p>Note that the cache does not include transient objects created by the
95   JE library, such as cursors, locks and transactions.</p>
96  
97   <p>Note that the log buffer cache may be cleared if the cache size is
98   changed after the environment has been opened.</p>
99  
100  <p>If setSharedCache(true) is called, setCacheSize and setCachePercent
101  specify the total size of the shared cache, and changing these
102  parameters will change the size of the shared cache.</p>
103  @param berkeleyDbCacheSize berkeleyDb default will be used if set to negative
104    */
105   public void setBerkeleyDbCacheSize(long berkeleyDbCacheSize) {
106     _berkeleyDbCacheSize = berkeleyDbCacheSize;
107   }
108   
109   public String getJgeocoderDataHome() {
110     return _jgeocoderDataHome;
111   }
112   public void setJgeocoderDataHome(String jgeocoderDataHome) {
113     _jgeocoderDataHome = jgeocoderDataHome;
114   }
115   
116   @Override
117   public String toString() {
118     return ToStringBuilder.reflectionToString(this);
119   }
120   @Override
121   public int hashCode() {
122     return HashCodeBuilder.reflectionHashCode(this);
123   }
124   @Override
125   public boolean equals(Object obj) {
126     return EqualsBuilder.reflectionEquals(this, obj);
127   }
128   
129   
130   
131 }