/* * Copyright 2014 Red Hat, Inc. and/or its affiliates. * * 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.dashbuilder.dataset.engine.index; import java.util.HashMap; import java.util.Map; import org.dashbuilder.dataset.DataSet; import org.dashbuilder.dataset.engine.index.spi.DataSetIndexRegistry; import org.dashbuilder.dataset.uuid.UUIDGenerator; public class TransientDataSetIndexRegistry implements DataSetIndexRegistry { protected UUIDGenerator uuidGenerator; protected Map<String,DataSetIndex> indexMap = new HashMap<String, DataSetIndex>(); public TransientDataSetIndexRegistry(UUIDGenerator uuidGenerator) { this.uuidGenerator = uuidGenerator; } public DataSetIndex put(DataSet dataSet) { if (dataSet == null) { return null; } String uuid = dataSet.getUUID(); if (uuid == null || uuid.length() == 0) { uuid = uuidGenerator.newUuidBase64(); dataSet.setUUID(uuid); } DataSetIndex dsIndex = new DataSetStaticIndex(dataSet); indexMap.put(uuid, dsIndex); return dsIndex; } public DataSetIndex get(String uuid) { DataSetIndex index = indexMap.get(uuid); if (index != null) { index.reuseHit(); } return index; } public DataSetIndex remove(String uuid) { return indexMap.remove(uuid); } }