View Javadoc
1   package com.atlassian.activeobjects.config.internal;
2   
3   import com.atlassian.activeobjects.config.ActiveObjectsConfiguration;
4   import com.atlassian.activeobjects.config.PluginKey;
5   import com.atlassian.activeobjects.external.ActiveObjectsUpgradeTask;
6   import com.atlassian.activeobjects.internal.DataSourceType;
7   import com.atlassian.activeobjects.internal.DataSourceTypeResolver;
8   import com.atlassian.activeobjects.internal.Prefix;
9   import net.java.ao.RawEntity;
10  import net.java.ao.SchemaConfiguration;
11  import net.java.ao.schema.NameConverters;
12  import org.apache.commons.lang3.builder.EqualsBuilder;
13  import org.apache.commons.lang3.builder.HashCodeBuilder;
14  
15  import java.util.List;
16  import java.util.Set;
17  
18  import static com.google.common.base.Preconditions.checkNotNull;
19  
20  /**
21   * <p>Default implementation of the {@link com.atlassian.activeobjects.config.ActiveObjectsConfiguration}.</p>
22   * <p>Note: it implements {@link #hashCode()} and {@link #equals(Object)} correctly to be used safely with collections. Those
23   * implementation are based solely on the {@link com.atlassian.activeobjects.config.PluginKey} and nothing else as this is
24   * the only immutable field.</p>
25   */
26  public final class DefaultActiveObjectsConfiguration implements ActiveObjectsConfiguration {
27      private final PluginKey pluginKey;
28      private final DataSourceTypeResolver dataSourceTypeResolver;
29      private Prefix tableNamePrefix;
30      private NameConverters nameConverters;
31      private SchemaConfiguration schemaConfiguration;
32  
33      private Set<Class<? extends RawEntity<?>>> entities;
34      private List<ActiveObjectsUpgradeTask> upgradeTasks;
35  
36      public DefaultActiveObjectsConfiguration(PluginKey pluginKey, DataSourceTypeResolver dataSourceTypeResolver) {
37          this.pluginKey = checkNotNull(pluginKey);
38          this.dataSourceTypeResolver = checkNotNull(dataSourceTypeResolver);
39      }
40  
41      @Override
42      public PluginKey getPluginKey() {
43          return pluginKey;
44      }
45  
46      @Override
47      public DataSourceType getDataSourceType() {
48          return dataSourceTypeResolver.getDataSourceType(getTableNamePrefix());
49      }
50  
51      @Override
52      public Prefix getTableNamePrefix() {
53          return tableNamePrefix;
54      }
55  
56      public void setTableNamePrefix(Prefix tableNamePrefix) {
57          this.tableNamePrefix = tableNamePrefix;
58      }
59  
60      @Override
61      public NameConverters getNameConverters() {
62          return nameConverters;
63      }
64  
65      public void setNameConverters(NameConverters nameConverters) {
66          this.nameConverters = nameConverters;
67      }
68  
69      @Override
70      public SchemaConfiguration getSchemaConfiguration() {
71          return schemaConfiguration;
72      }
73  
74      public void setSchemaConfiguration(SchemaConfiguration schemaConfiguration) {
75          this.schemaConfiguration = schemaConfiguration;
76      }
77  
78      @Override
79      public Set<Class<? extends RawEntity<?>>> getEntities() {
80          return entities;
81      }
82  
83      public void setEntities(Set<Class<? extends RawEntity<?>>> entities) {
84          this.entities = entities;
85      }
86  
87      @Override
88      public List<ActiveObjectsUpgradeTask> getUpgradeTasks() {
89          return upgradeTasks;
90      }
91  
92      public void setUpgradeTasks(List<ActiveObjectsUpgradeTask> upgradeTasks) {
93          this.upgradeTasks = upgradeTasks;
94      }
95  
96      @Override
97      public final int hashCode() {
98          return new HashCodeBuilder(5, 13).append(pluginKey).toHashCode();
99      }
100 
101     @Override
102     public final boolean equals(Object o) {
103         if (o == null) {
104             return false;
105         }
106         if (o == this) {
107             return true;
108         }
109         if (o.getClass() != getClass()) {
110             return false;
111         }
112 
113         final DefaultActiveObjectsConfiguration configuration = (DefaultActiveObjectsConfiguration) o;
114         return new EqualsBuilder().append(pluginKey, configuration.pluginKey).isEquals();
115     }
116 }