View Javadoc
1   package de.fhdw.wtf.context.model;
2   
3   import java.util.Collection;
4   import java.util.Vector;
5   
6   import de.fhdw.wtf.context.core.ObjectFactoryProvider;
7   import de.fhdw.wtf.context.core.TransactionManager;
8   import de.fhdw.wtf.persistence.meta.UnidirectionalLink;
9   import de.fhdw.wtf.persistence.meta.UserObject;
10  import de.fhdw.wtf.persistence.utils.Tuple;
11  
12  public abstract class SymmetricRelationAccess {
13  	
14  	protected <T extends AnyType> T inverseGet(final AnyType anyType, final String association) {
15  		final Collection<T> result = this.inverseGetCollection(anyType, association);
16  		if (result.isEmpty()) {
17  			return null;
18  		} else {
19  			return result.iterator().next();
20  		}
21  	}
22  	
23  	protected <T extends AnyType> Collection<T> inverseGetCollection(final AnyType anyType, final String association) {
24  		final Vector<T> resultVector = new Vector<>();
25  		final Collection<Tuple<UnidirectionalLink, UserObject>> databaseResults =
26  				TransactionManager.getContext().inverseGet(association, anyType.getObject());
27  		for (final Tuple<UnidirectionalLink, UserObject> databaseResult : databaseResults) {
28  			final UserObject object = databaseResult.getSecond();
29  			@SuppressWarnings("unchecked")
30  			final T result = (T) ObjectFactoryProvider.instance().createObject(object);
31  			resultVector.add(result);
32  		}
33  		return resultVector;
34  	}
35  }