package org.openlca.core.database.references;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.openlca.core.Tests;
import org.openlca.core.database.references.IReferenceSearch.Reference;
import org.openlca.core.model.AbstractEntity;
import org.openlca.core.model.Exchange;
import org.openlca.core.model.Flow;
import org.openlca.core.model.FlowProperty;
import org.openlca.core.model.FlowPropertyFactor;
import org.openlca.core.model.ModelType;
import org.openlca.core.model.Process;
import org.openlca.core.model.Unit;
import org.openlca.core.model.UnitGroup;
public class ExchangeReferenceSearchTest extends BaseReferenceSearchTest {
private Map<Long, Class<? extends AbstractEntity>> ownerTypes = new HashMap<>();
private Map<Long, Long> ownerIds = new HashMap<>();
@Override
protected ModelType getModelType() {
return null;
}
@Override
protected Class<? extends AbstractEntity> getModelClass() {
return Exchange.class;
}
@Override
protected boolean isNestedSearchTest() {
return true;
}
@Override
protected List<Reference> findReferences(Set<Long> ids) {
return new ExchangeReferenceSearch(Tests.getDb(), ownerTypes, ownerIds)
.findReferences(ids);
}
@Override
protected Exchange createModel() {
Process process = new Process();
Flow flow = new Flow();
FlowPropertyFactor factor = new FlowPropertyFactor();
factor.setFlowProperty(Tests.insert(new FlowProperty()));
flow.getFlowPropertyFactors().add(factor);
flow = Tests.insert(flow);
UnitGroup group = new UnitGroup();
Unit unit = new Unit();
unit.setName("unit");
group.getUnits().add(unit);
group = Tests.insert(group);
factor = flow.getFactor(factor.getFlowProperty());
unit = group.getUnit(unit.getName());
Exchange exchange = new Exchange();
exchange.setFlow(flow);
exchange.setFlowPropertyFactor(factor);
exchange.setUnit(unit);
process.getExchanges().add(exchange);
process = Tests.insert(process);
exchange = process.getExchanges().get(0);
ownerIds.put(exchange.getId(), process.getId());
ownerTypes.put(exchange.getId(), Process.class);
addExpected(new Reference("flow", Flow.class, flow.getId(),
Process.class, process.getId(), "exchanges", Exchange.class,
exchange.getId(), false));
addExpected(new Reference("flowPropertyFactor",
FlowPropertyFactor.class, factor.getId(), Process.class,
process.getId(), "exchanges", Exchange.class, exchange.getId(),
false));
addExpected(new Reference("unit", Unit.class, unit.getId(),
Process.class, process.getId(), "exchanges", Exchange.class,
exchange.getId(), false));
return exchange;
}
}