/******************************************************************************* * 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; } }