/*
* Copyright 2015-2016 Cask Data, Inc.
*
* 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 co.cask.cdap.data2.metadata.store;
import co.cask.cdap.data2.metadata.indexer.Indexer;
import co.cask.cdap.proto.Id;
import co.cask.cdap.proto.metadata.MetadataRecord;
import co.cask.cdap.proto.metadata.MetadataScope;
import co.cask.cdap.proto.metadata.MetadataSearchResultRecord;
import co.cask.cdap.proto.metadata.MetadataSearchTargetType;
import com.google.common.collect.ImmutableSet;
import java.util.Collections;
import java.util.Map;
import java.util.Set;
/**
* Implementation of {@link MetadataStore} used in memory mode.
*/
public class NoOpMetadataStore implements MetadataStore {
@Override
public void setProperties(MetadataScope scope, Id.NamespacedId entityId, Map<String, String> properties) {
// NO-OP
}
@Override
public void setProperties(MetadataScope scope, Id.NamespacedId entityId, Map<String, String> properties,
Indexer indexer) {
// NO-OP
}
@Override
public void addTags(MetadataScope scope, Id.NamespacedId entityId, String... tagsToAdd) {
// NO-OP
}
@Override
public Set<MetadataRecord> getMetadata(Id.NamespacedId entityId) {
return ImmutableSet.of(new MetadataRecord(entityId, MetadataScope.USER),
new MetadataRecord(entityId, MetadataScope.SYSTEM));
}
@Override
public MetadataRecord getMetadata(MetadataScope scope, Id.NamespacedId entityId) {
return new MetadataRecord(entityId, scope);
}
@Override
public Set<MetadataRecord> getMetadata(MetadataScope scope, Set<Id.NamespacedId> entityIds) {
return Collections.emptySet();
}
@Override
public Map<String, String> getProperties(Id.NamespacedId entityId) {
return Collections.emptyMap();
}
@Override
public Map<String, String> getProperties(MetadataScope scope, Id.NamespacedId entityId) {
return Collections.emptyMap();
}
@Override
public Set<String> getTags(Id.NamespacedId entityId) {
return Collections.emptySet();
}
@Override
public Set<String> getTags(MetadataScope scope, Id.NamespacedId entityId) {
return Collections.emptySet();
}
@Override
public void removeMetadata(Id.NamespacedId entityId) {
// NO-OP
}
@Override
public void removeMetadata(MetadataScope scope, Id.NamespacedId entityId) {
// NO-OP
}
@Override
public void removeProperties(MetadataScope scope, Id.NamespacedId entityId) {
// NO-OP
}
@Override
public void removeProperties(MetadataScope scope, Id.NamespacedId entityId, String... keys) {
// NO-OP
}
@Override
public void removeTags(MetadataScope scope, Id.NamespacedId entityId) {
// NO-OP
}
@Override
public void removeTags(MetadataScope scope, Id.NamespacedId entityId, String... tagsToRemove) {
// NO-OP
}
@Override
public Set<MetadataSearchResultRecord> searchMetadata(String namespaceId, String searchQuery) {
return Collections.emptySet();
}
@Override
public Set<MetadataSearchResultRecord> searchMetadata(MetadataScope scope, String namespaceId, String searchQuery) {
return Collections.emptySet();
}
@Override
public Set<MetadataSearchResultRecord> searchMetadataOnType(String namespaceId, String searchQuery,
Set<MetadataSearchTargetType> types) {
return Collections.emptySet();
}
@Override
public Set<MetadataSearchResultRecord> searchMetadataOnType(MetadataScope scope, String namespaceId,
String searchQuery, Set<MetadataSearchTargetType> types) {
return Collections.emptySet();
}
@Override
public Set<MetadataRecord> getSnapshotBeforeTime(Set<Id.NamespacedId> entityIds, long timeMillis) {
return ImmutableSet.<MetadataRecord>builder()
.addAll(getSnapshotBeforeTime(MetadataScope.USER, entityIds, timeMillis))
.addAll(getSnapshotBeforeTime(MetadataScope.SYSTEM, entityIds, timeMillis))
.build();
}
@Override
public Set<MetadataRecord> getSnapshotBeforeTime(MetadataScope scope, Set<Id.NamespacedId> entityIds,
long timeMillis) {
ImmutableSet.Builder<MetadataRecord> builder = ImmutableSet.builder();
for (Id.NamespacedId entityId : entityIds) {
builder.add(new MetadataRecord(entityId, scope));
}
return builder.build();
}
@Override
public void rebuildIndexes() {
// NO-OP
}
@Override
public void deleteAllIndexes() {
// NO-OP
}
}