// Copyright 2017 JanusGraph Authors // // Licensed 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. package org.janusgraph.diskstorage.common; import com.google.common.collect.Lists; import org.janusgraph.diskstorage.EntryMetaData; import org.janusgraph.diskstorage.configuration.Configuration; import org.janusgraph.diskstorage.keycolumnvalue.StoreFeatures; import org.janusgraph.diskstorage.keycolumnvalue.StoreManager; import org.janusgraph.diskstorage.util.StaticArrayEntry; import java.util.List; import static org.janusgraph.graphdb.configuration.GraphDatabaseConfiguration.*; /** * Abstract Store Manager used as the basis for concrete StoreManager implementations. * Simplifies common configuration management. * * @author Matthias Broecheler (me@matthiasb.com) */ public abstract class AbstractStoreManager implements StoreManager { protected final boolean transactional; protected final boolean batchLoading; protected final Configuration storageConfig; public AbstractStoreManager(Configuration storageConfig) { batchLoading = storageConfig.get(STORAGE_BATCH); boolean transactional = storageConfig.get(STORAGE_TRANSACTIONAL); if (batchLoading) { transactional = false; } this.transactional = transactional; this.storageConfig = storageConfig; } public Configuration getStorageConfig() { return storageConfig; } public EntryMetaData[] getMetaDataSchema(String storeName) { List<EntryMetaData> schemaBuilder = Lists.newArrayList(); StoreFeatures features = getFeatures(); if (features.hasTimestamps() && storageConfig.get(STORE_META_TIMESTAMPS,storeName)) schemaBuilder.add(EntryMetaData.TIMESTAMP); if (features.hasCellTTL() && storageConfig.get(STORE_META_TTL,storeName)) schemaBuilder.add(EntryMetaData.TTL); if (features.hasVisibility() && storageConfig.get(STORE_META_VISIBILITY,storeName)) schemaBuilder.add(EntryMetaData.VISIBILITY); if (schemaBuilder.isEmpty()) return StaticArrayEntry.EMPTY_SCHEMA; return schemaBuilder.toArray(new EntryMetaData[schemaBuilder.size()]); } }