package org.openlca.core.database;
import java.sql.SQLException;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.openlca.core.model.DQSystem;
import org.openlca.core.model.descriptors.DQSystemDescriptor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class DQSystemDao extends CategorizedEntityDao<DQSystem, DQSystemDescriptor> {
private final static Logger log = LoggerFactory.getLogger(DQSystemDao.class);
public DQSystemDao(IDatabase database) {
super(DQSystem.class, DQSystemDescriptor.class, database);
}
public List<DQSystemDescriptor> getProcessDqSystems(long productSystemId) {
return getDqSystems("f_dq_system", productSystemId);
}
public List<DQSystemDescriptor> getExchangeDqSystems(long productSystemId) {
return getDqSystems("f_exchange_dq_system", productSystemId);
}
private List<DQSystemDescriptor> getDqSystems(String field, long productSystemId) {
String query = "SELECT DISTINCT " + field + " FROM tbl_processes ";
query += "INNER JOIN tbl_product_system_processes ON tbl_product_system_processes.f_process = tbl_processes.id ";
query += "WHERE f_product_system = " + productSystemId;
Set<Long> ids = new HashSet<>();
try {
NativeSql.on(database).query(query, (rs) -> {
ids.add(rs.getLong(field));
return true;
});
} catch (SQLException e) {
log.error("Error loading data quality systems (" + field + ") for product system " + productSystemId, e);
}
return getDescriptors(ids);
}
}