All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.dashbuilder.dataprovider.StaticDataSetProvider Maven / Gradle / Ivy

There is a newer version: 1.0.0.Final
Show newest version
/**
 * 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.dataprovider;

import org.apache.commons.lang3.StringUtils;
import org.dashbuilder.dataset.DataSet;
import org.dashbuilder.dataset.DataSetLookup;
import org.dashbuilder.dataset.DataSetMetadata;
import org.dashbuilder.dataset.def.DataSetDef;
import org.dashbuilder.dataset.engine.SharedDataSetOpEngine;
import org.dashbuilder.dataset.engine.index.DataSetIndex;
import org.dashbuilder.dataset.filter.DataSetFilter;

/**
 * DataSetProvider implementation for static (in-memory) data sets.
 * 

It's been designed with several goals in mind: *

    *
  • To provide a highly reusable data set cache.
  • *
  • To index almost every operation performed over a data set.
  • *
  • Multiple clients requesting the same data set operations will benefit from the indexing/caching services provided.
  • *
*

*/ public class StaticDataSetProvider implements DataSetProvider { private SharedDataSetOpEngine dataSetOpEngine; public StaticDataSetProvider() { } public StaticDataSetProvider(SharedDataSetOpEngine dataSetOpEngine) { this.dataSetOpEngine = dataSetOpEngine; } public DataSetProviderType getType() { return DataSetProviderType.STATIC; } public DataSetMetadata getDataSetMetadata(DataSetDef def) { DataSet dataSet = lookupDataSet(def, null); if (dataSet == null) return null; return dataSet.getMetadata(); } public void registerDataSet(DataSet dataSet) { dataSetOpEngine.getIndexRegistry().put(dataSet); } public DataSet removeDataSet(String uuid) { DataSetIndex index = dataSetOpEngine.getIndexRegistry().remove(uuid); return (index == null ? null : index.getDataSet()); } public DataSet lookupDataSet(DataSetDef def, DataSetLookup lookup) { String uuid = def.getUUID(); if (StringUtils.isEmpty(uuid)) return null; boolean isRoot = (lookup == null || lookup.isEmpty()); // Be aware of filters on the data set definition DataSetFilter filter = def.getDataSetFilter(); if (filter != null) { if (lookup == null) lookup = new DataSetLookup(uuid, filter); else lookup.addOperation(0, filter); } // Lookup the data set (with any existing filters) DataSet dataSet = lookupDataSet(uuid, lookup); // Add the proper metadata to any root data set retrieval call if (dataSet != null && isRoot) { dataSet.setUUID(uuid); dataSet.setDefinition(def); } return dataSet; } public DataSet lookupDataSet(String uuid, DataSetLookup lookup) { if (StringUtils.isEmpty(uuid)) return null; // Get the target data set DataSetIndex dataSetIndex = dataSetOpEngine.getIndexRegistry().get(uuid); if (dataSetIndex == null) return null; DataSet dataSet = dataSetIndex.getDataSet(); if (lookup == null) return dataSet; // Apply the list of operations specified (if any). if (!lookup.getOperationList().isEmpty()) { dataSet = dataSetOpEngine.execute(uuid, lookup.getOperationList()); } // Trim the data set as requested. dataSet = dataSet.trim(lookup.getRowOffset(), lookup.getNumberOfRows()); return dataSet; } public boolean isDataSetOutdated(DataSetDef def) { return false; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy