package org.openlca.core.database.usage;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.openlca.core.database.IDatabase;
import org.openlca.core.model.ModelType;
import org.openlca.core.model.descriptors.CategorizedDescriptor;
import org.openlca.core.model.descriptors.SourceDescriptor;
/**
* Searches for the use of sources in other entities. Sources can be used in
* processes.
*/
public class SourceUseSearch extends BaseUseSearch<SourceDescriptor> {
public SourceUseSearch(IDatabase database) {
super(database);
}
@Override
public List<CategorizedDescriptor> findUses(Set<Long> ids) {
Set<Long> processDocIds = new HashSet<>();
processDocIds.addAll(queryForIds("id", "tbl_process_docs", ids, "f_publication"));
processDocIds.addAll(queryForIds("f_process_doc", "tbl_process_sources", ids, "f_source"));
Set<CategorizedDescriptor> result = new HashSet<>();
result.addAll(queryFor(ModelType.PROCESS, processDocIds, "f_process_doc"));
result.addAll(queryFor(ModelType.DQ_SYSTEM, ids, "f_source"));
return new ArrayList<>(result);
}
}