com.redhat.lightblue.metadata.Indexes Maven / Gradle / Ivy
/*
Copyright 2013 Red Hat, Inc. and/or its affiliates.
This file is part of lightblue.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
package com.redhat.lightblue.metadata;
import com.redhat.lightblue.util.Path;
import java.util.*;
/**
*
* @author nmalik
*/
public class Indexes extends MetadataObject {
private final ArrayList indexes = new ArrayList<>();
public Indexes() {
}
public Indexes(Index... ix) {
for (Index x : ix) {
indexes.add(x);
}
}
public void add(Index x) {
indexes.add(x);
}
public void setIndexes(Collection indexes) {
this.indexes.clear();
if (indexes != null) {
this.indexes.addAll(indexes);
}
}
@SuppressWarnings("unchecked")
public List getIndexes() {
return (List) indexes.clone();
}
public boolean isEmpty() {
return indexes.isEmpty();
}
/**
* Returns the indexes that can be used to evaluate a search criteria
* containing the given fields
*
* @param fields List of fields for which a search will be conducted
*
* @return A map of index -> set where for each index, the mapped path
* set gives the fields that can be searched efficiently using that index.
*/
public Map> getUsefulIndexes(Collection fields) {
Map> m = new HashMap<>();
for (Index ix : indexes) {
Set u = ix.getUsefulness(fields);
if (!u.isEmpty()) {
m.put(ix, u);
}
}
return m;
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy