/*******************************************************************************
* Copyright (c) 2010 Robert "Unlogic" Olofsson (unlogic@unlogic.se).
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Lesser Public License v3
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/lgpl-3.0-standalone.html
******************************************************************************/
package se.unlogic.standardutils.dao;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class RelationQuery {
private List<Field> relations;
private List<Field> excludedRelations;
private boolean disableAutoRelations;
public RelationQuery() {}
public RelationQuery(List<Field> relations) {
this.relations = relations;
}
public RelationQuery(Field... relations) {
this.addRelations(relations);
}
public RelationQuery(RelationQuery relationQuery) {
this.addRelations(relationQuery);
}
public List<Field> getRelations() {
return relations;
}
public void setRelations(List<Field> relations) {
this.relations = relations;
}
public void addRelation(Field relation){
if(this.relations == null){
this.relations = new ArrayList<Field>();
}
this.relations.add(relation);
}
public void addRelations(Field... relations){
if(this.relations == null){
this.relations = new ArrayList<Field>();
}
this.relations.addAll(Arrays.asList(relations));
}
public static boolean hasRelations(RelationQuery query){
if(query == null || query.getRelations() == null || query.getRelations().isEmpty()){
return false;
}
return true;
}
public boolean hasRelations(){
return hasRelations(this);
}
public void addRelations(RelationQuery relationQuery) {
if(hasRelations(relationQuery)){
this.addRelations(relationQuery.getRelations());
}
}
public void addRelations(List<Field> relations){
if(this.relations == null){
this.relations = relations;
}else{
this.relations.addAll(relations);
}
}
public List<Field> getExcludedRelations() {
return excludedRelations;
}
public void setExcludedRelations(List<Field> excludedRelations) {
this.excludedRelations = excludedRelations;
}
public void addExcludedRelation(Field relation){
if(this.excludedRelations == null){
this.excludedRelations = new ArrayList<Field>();
}
this.excludedRelations.add(relation);
}
public void addExcludedRelations(Field... excludedRelations){
if(this.excludedRelations == null){
this.excludedRelations = new ArrayList<Field>();
}
this.excludedRelations.addAll(Arrays.asList(excludedRelations));
}
public static boolean hasExcludedRelations(RelationQuery query){
if(query == null || query.getExcludedRelations() == null || query.getExcludedRelations().isEmpty()){
return false;
}
return true;
}
public boolean hasExcludedRelations(){
return hasExcludedRelations(this);
}
public void addExcludedRelations(RelationQuery relationQuery) {
if(hasExcludedRelations(relationQuery)){
this.addExcludedRelations(relationQuery.getExcludedRelations());
}
}
public void addExcludedRelations(List<Field> excludedRelations){
if(this.excludedRelations == null){
this.excludedRelations = excludedRelations;
}else{
this.excludedRelations.addAll(excludedRelations);
}
}
public boolean containsRelation(Field field) {
if(this.relations != null){
return this.relations.contains(field);
}
return false;
}
public boolean containsExcludedRelation(Field field) {
if(this.excludedRelations != null){
return this.excludedRelations.contains(field);
}
return false;
}
public boolean isDisableAutoRelations() {
return disableAutoRelations;
}
public void disableAutoRelations(boolean disableAutoRelations) {
this.disableAutoRelations = disableAutoRelations;
}
}