package org.openlca.core.database.usage;
import java.util.ArrayList;
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.FlowDescriptor;
/**
* Searches for the use of flows in other entities. Flows can be used in
* processes and impact methods.
*/
public class FlowUseSearch extends BaseUseSearch<FlowDescriptor> {
public FlowUseSearch(IDatabase database) {
super(database);
}
@Override
public List<CategorizedDescriptor> findUses(Set<Long> ids) {
List<CategorizedDescriptor> results = new ArrayList<>();
Set<Long> categoryIds = queryForIds("f_impact_category",
"tbl_impact_factors", ids, "f_flow");
results.addAll(queryFor(ModelType.IMPACT_METHOD, "f_impact_method",
"tbl_impact_categories", categoryIds, "id"));
results.addAll(queryFor(ModelType.PROCESS, "f_owner", "tbl_exchanges",
ids, "f_flow"));
return results;
}
}