package fr.adrienbrault.idea.symfony2plugin.doctrine.querybuilder;
import fr.adrienbrault.idea.symfony2plugin.doctrine.querybuilder.dict.QueryBuilderJoin;
import fr.adrienbrault.idea.symfony2plugin.doctrine.querybuilder.dict.QueryBuilderPropertyAlias;
import fr.adrienbrault.idea.symfony2plugin.doctrine.querybuilder.dict.QueryBuilderRelation;
import java.util.*;
/**
* @author Daniel Espendiller <daniel@espendiller.net>
*/
public class QueryBuilderScopeContext {
final private Set<String> parameters = new HashSet<>();
final private Set<String> selects = new HashSet<>();
final private Map<String, String> tableMap = new HashMap<>();
final private Map<String, QueryBuilderJoin> joinMap = new HashMap<>();
final private Map<String, List<QueryBuilderRelation>> relationMap = new HashMap<>();
final private Map<String, QueryBuilderPropertyAlias> propertyAliasMap = new HashMap<>();
public void addParameter(String parameterName) {
this.parameters.add(parameterName);
}
public void addRelation(String relationName, List<QueryBuilderRelation> relations) {
this.relationMap.put(relationName, relations);
}
public void addPropertyAlias(String relationName, QueryBuilderPropertyAlias propertyAlias) {
this.propertyAliasMap.put(relationName, propertyAlias);
}
public void addTable(String model, String alias) {
this.tableMap.put(model, alias);
}
public void addJoin(String join, QueryBuilderJoin queryBuilderJoin) {
this.joinMap.put(join, queryBuilderJoin);
}
public void addSelect(String select) {
this.selects.add(select);
}
public void addSelect(Collection<String> selects) {
this.selects.addAll(selects);
}
public Set<String> getSelects() {
return selects;
}
public Set<String> getParameters() {
return parameters;
}
public Map<String, QueryBuilderJoin> getJoinMap() {
return joinMap;
}
public Map<String, String> getTableMap() {
return tableMap;
}
public Map<String, List<QueryBuilderRelation>> getRelationMap() {
return relationMap;
}
public Map<String, QueryBuilderPropertyAlias> getPropertyAliasMap() {
return propertyAliasMap;
}
}