com.cloudera.exhibit.core.multi.MultiExhibitStore.java Source code

Java tutorial

Introduction

Here is the source code for com.cloudera.exhibit.core.multi.MultiExhibitStore.java

Source

/*
 * Copyright (c) 2015, Cloudera, Inc. All Rights Reserved.
 *
 * Cloudera, Inc. 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
 *
 * This software 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.
 */
package com.cloudera.exhibit.core.multi;

import com.cloudera.exhibit.core.Exhibit;
import com.cloudera.exhibit.core.ExhibitId;
import com.cloudera.exhibit.core.ExhibitStore;
import com.google.common.base.Optional;
import com.google.common.base.Preconditions;
import com.google.common.collect.Maps;

import java.util.List;
import java.util.Map;
import java.util.Set;

public class MultiExhibitStore implements ExhibitStore {

    private final Map<String, ExhibitStore> stores;

    public static MultiExhibitStore create(List<ExhibitStore> stores) {
        Map<String, ExhibitStore> storeMap = Maps.newHashMap();
        for (ExhibitStore store : stores) {
            for (String entity : store.entities()) {
                // TODO double check this
                storeMap.put(entity, store);
            }
        }
        return new MultiExhibitStore(storeMap);
    }

    public MultiExhibitStore(Map<String, ExhibitStore> stores) {
        this.stores = Preconditions.checkNotNull(stores);
    }

    @Override
    public boolean isConnected() {
        for (ExhibitStore store : stores.values()) {
            if (!store.isConnected()) {
                return false;
            }
        }
        return true;
    }

    @Override
    public Set<String> entities() {
        return stores.keySet();
    }

    @Override
    public Optional<Exhibit> find(ExhibitId id) {
        return stores.get(id.getEntity()).find(id);
    }
}