X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2Fconfig%2FModuleConfig.java;h=d5094a56910a473aab52f4ef72a77147df7e64cf;hb=925cb4a228d0fda99c7bfeb432eb25285a223887;hp=1a309a06c0bfadc56f8104817b56daa1e832b844;hpb=5273c33b6f2051a7e3b1afcc4eeae4e457b6f26c;p=controller.git diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/config/ModuleConfig.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/config/ModuleConfig.java index 1a309a06c0..d5094a5691 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/config/ModuleConfig.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/config/ModuleConfig.java @@ -7,10 +7,14 @@ */ package org.opendaylight.controller.cluster.datastore.config; +import com.google.common.base.Preconditions; +import com.google.common.collect.ImmutableMap; import java.util.Collection; import java.util.HashMap; import java.util.Map; -import java.util.Set; +import javax.annotation.Nonnull; +import javax.annotation.Nullable; +import org.opendaylight.controller.cluster.access.concepts.MemberName; import org.opendaylight.controller.cluster.datastore.shardstrategy.ShardStrategy; /** @@ -20,47 +24,98 @@ import org.opendaylight.controller.cluster.datastore.shardstrategy.ShardStrategy */ public class ModuleConfig { private final String name; - private String nameSpace; - private ShardStrategy shardStrategy; - private final Map shardConfigs = new HashMap<>(); + private final String nameSpace; + private final ShardStrategy shardStrategy; + private final Map shardConfigs; - public ModuleConfig(final String name) { + private ModuleConfig(String name, String nameSpace, ShardStrategy shardStrategy, + Map shardConfigs) { this.name = name; + this.nameSpace = nameSpace; + this.shardStrategy = shardStrategy; + this.shardConfigs = shardConfigs; } + @Nonnull public String getName() { return name; } + @Nullable public String getNameSpace() { return nameSpace; } + @Nullable public ShardStrategy getShardStrategy() { return shardStrategy; } - public ShardConfig getShardConfig(String name) { - return shardConfigs.get(name); + @Nullable + public ShardConfig getShardConfig(String forName) { + return shardConfigs.get(forName); } + @Nonnull public Collection getShardConfigs() { return shardConfigs.values(); } + @Nonnull public Collection getShardNames() { return shardConfigs.keySet(); } - public void addShardConfig(String name, Set replicas) { - shardConfigs.put(name, new ShardConfig(name, replicas)); + public static Builder builder(String name) { + return new Builder(name); } - public void setNameSpace(String nameSpace) { - this.nameSpace = nameSpace; + public static Builder builder(ModuleConfig moduleConfig) { + return new Builder(moduleConfig); } - public void setShardStrategy(ShardStrategy shardStrategy) { - this.shardStrategy = shardStrategy; + public static class Builder { + private String name; + private String nameSpace; + private ShardStrategy shardStrategy; + private final Map shardConfigs = new HashMap<>(); + + private Builder(String name) { + this.name = name; + } + + private Builder(ModuleConfig moduleConfig) { + this.name = moduleConfig.getName(); + this.nameSpace = moduleConfig.getNameSpace(); + this.shardStrategy = moduleConfig.getShardStrategy(); + for (ShardConfig shardConfig : moduleConfig.getShardConfigs()) { + shardConfigs.put(shardConfig.getName(), shardConfig); + } + } + + public Builder name(String newName) { + this.name = newName; + return this; + } + + public Builder nameSpace(String newNameSpace) { + this.nameSpace = newNameSpace; + return this; + } + + public Builder shardStrategy(ShardStrategy newShardStrategy) { + this.shardStrategy = newShardStrategy; + return this; + } + + public Builder shardConfig(String shardName, Collection replicas) { + shardConfigs.put(shardName, new ShardConfig(shardName, replicas)); + return this; + } + + public ModuleConfig build() { + return new ModuleConfig(Preconditions.checkNotNull(name), nameSpace, shardStrategy, + ImmutableMap.copyOf(shardConfigs)); + } } -} \ No newline at end of file +}