| /* |
| * |
| * * Licensed to the Apache Software Foundation (ASF) under one or more |
| * * contributor license agreements. The ASF licenses this file to You |
| * * 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. For additional information regarding |
| * * copyright in this work, please see the NOTICE file in the top level |
| * * directory of this distribution. |
| * |
| */ |
| package org.apache.usergrid.corepersistence.index; |
| |
| import com.fasterxml.jackson.databind.annotation.JsonDeserialize; |
| import com.fasterxml.jackson.databind.annotation.JsonSerialize; |
| import org.apache.usergrid.persistence.core.scope.ApplicationScope; |
| import org.apache.usergrid.persistence.index.IndexAlias; |
| import org.apache.usergrid.persistence.index.IndexLocationStrategy; |
| |
| import java.io.Serializable; |
| |
| /** |
| * Strategy to replicate an index naming convention and publish elsewhere |
| */ |
| public class ReplicatedIndexLocationStrategy implements IndexLocationStrategy { |
| |
| private IndexAlias alias; |
| private String rootName; |
| private String indexInitialName; |
| private ApplicationScope applicationScope; |
| private int numberShards; |
| private int numberReplicas; |
| |
| public ReplicatedIndexLocationStrategy(){ |
| |
| } |
| |
| public ReplicatedIndexLocationStrategy(IndexLocationStrategy indexLocationStrategy){ |
| rootName = indexLocationStrategy.getIndexRootName(); |
| indexInitialName = indexLocationStrategy.getIndexInitialName(); |
| applicationScope = indexLocationStrategy.getApplicationScope(); |
| numberShards = indexLocationStrategy.getNumberOfShards(); |
| numberReplicas = indexLocationStrategy.getNumberOfReplicas(); |
| alias = new ReplicatedIndexAlias( indexLocationStrategy.getAlias() ); |
| } |
| |
| @Override |
| @JsonSerialize() |
| @JsonDeserialize(as=ReplicatedIndexAlias.class) |
| public IndexAlias getAlias() { |
| return alias; |
| } |
| |
| protected void setAlias(IndexAlias alias) { |
| this.alias = alias; |
| } |
| |
| |
| @Override |
| @JsonSerialize() |
| public String getIndexRootName() { |
| return rootName; |
| } |
| protected void setIndexRootName(String indexRootName) { |
| this.rootName = indexRootName; |
| } |
| |
| @Override |
| @JsonSerialize() |
| public String getIndexInitialName() { |
| return indexInitialName; |
| } |
| |
| protected void setIndexInitialName(String indexInitialName) { |
| this.indexInitialName = indexInitialName; |
| } |
| |
| |
| @Override |
| @JsonSerialize() |
| public ApplicationScope getApplicationScope() { |
| return applicationScope; |
| } |
| |
| protected void setApplicationScope(ApplicationScope applicationScope) { |
| this.applicationScope = applicationScope; |
| } |
| |
| |
| @Override |
| @JsonSerialize() |
| public int getNumberOfShards() { |
| return numberShards; |
| } |
| public void setNumberOfShards(int shards) { |
| numberShards = shards; |
| } |
| @Override |
| @JsonSerialize() |
| public int getNumberOfReplicas() { |
| return numberReplicas; |
| } |
| |
| public void setNumberOfReplicas(int replicas) { |
| numberReplicas = replicas; |
| } |
| public static class ReplicatedIndexAlias implements IndexAlias, Serializable { |
| |
| private String readAlias; |
| private String writeAlias; |
| |
| public ReplicatedIndexAlias(){ |
| |
| } |
| public ReplicatedIndexAlias(IndexAlias alias){ |
| this.readAlias = alias.getReadAlias(); |
| this.writeAlias = alias.getWriteAlias(); |
| } |
| @Override |
| @JsonSerialize() |
| public String getReadAlias() { |
| return readAlias; |
| } |
| |
| @Override |
| @JsonSerialize() |
| public String getWriteAlias() { |
| return writeAlias; |
| } |
| } |
| } |