@Override @SuppressWarnings({"unchecked"}) public <X, K, V> MapJoin<X, K, V> joinMap(String attributeName, JoinType jt) { final Attribute<X, ?> attribute = (Attribute<X, ?>) locateAttribute( attributeName ); if ( !attribute.isCollection() ) { throw new IllegalArgumentException( "Requested attribute was not a map" ); } final PluralAttribute pluralAttribute = (PluralAttribute) attribute; if ( !PluralAttribute.CollectionType.MAP.equals( pluralAttribute.getCollectionType() ) ) { throw new IllegalArgumentException( "Requested attribute was not a map" ); } return (MapJoin<X, K, V>) join( (MapAttribute) attribute, jt ); }
@Override @SuppressWarnings({"unchecked"}) public <X, Y> ListJoin<X, Y> joinList(String attributeName, JoinType jt) { final Attribute<X, ?> attribute = (Attribute<X, ?>) locateAttribute( attributeName ); if ( !attribute.isCollection() ) { throw new IllegalArgumentException( "Requested attribute was not a list" ); } final PluralAttribute pluralAttribute = (PluralAttribute) attribute; if ( !PluralAttribute.CollectionType.LIST.equals( pluralAttribute.getCollectionType() ) ) { throw new IllegalArgumentException( "Requested attribute was not a list" ); } return (ListJoin<X, Y>) join( (ListAttribute) attribute, jt ); }
@Override @SuppressWarnings({"unchecked"}) public <X, Y> SetJoin<X, Y> joinSet(String attributeName, JoinType jt) { final Attribute<X, ?> attribute = (Attribute<X, ?>) locateAttribute( attributeName ); if ( !attribute.isCollection() ) { throw new IllegalArgumentException( "Requested attribute was not a set" ); } final PluralAttribute pluralAttribute = (PluralAttribute) attribute; if ( !PluralAttribute.CollectionType.SET.equals( pluralAttribute.getCollectionType() ) ) { throw new IllegalArgumentException( "Requested attribute was not a set" ); } return (SetJoin<X, Y>) join( (SetAttribute) attribute, jt ); }
@Override @SuppressWarnings({"unchecked"}) public <X, Y> BlazeCollectionJoin<X, Y> joinCollection(String attributeName, String alias, JoinType jt) { final Attribute<X, ?> attribute = (Attribute<X, ?>) getAttribute(attributeName); if (!attribute.isCollection()) { throw new IllegalArgumentException("Requested attribute was not a collection"); } final PluralAttribute pluralAttribute = (PluralAttribute) attribute; if (!PluralAttribute.CollectionType.COLLECTION.equals(pluralAttribute.getCollectionType())) { throw new IllegalArgumentException("Requested attribute was not a collection"); } return (BlazeCollectionJoin<X, Y>) join((CollectionAttribute) attribute, alias, jt); }
@Override @SuppressWarnings({ "unchecked" }) public <X,Y> ListJoin<X, Y> joinList(String attributeName, JoinType jt) { final Attribute<X,?> attribute = (Attribute<X, ?>) locateAttribute( attributeName ); if ( ! attribute.isCollection() ) { throw new IllegalArgumentException( "Requested attribute was not a list" ); } final PluralAttribute pluralAttribute = ( PluralAttribute ) attribute; if ( ! PluralAttribute.CollectionType.LIST.equals( pluralAttribute.getCollectionType() ) ) { throw new IllegalArgumentException( "Requested attribute was not a list" ); } return (ListJoin<X,Y>) join( (ListAttribute) attribute, jt ); }
@Override @SuppressWarnings({"unchecked"}) public <X, Y> BlazeCollectionJoin<X, Y> joinCollection(String attributeName, String alias, JoinType jt) { final Attribute<X, ?> attribute = (Attribute<X, ?>) getAttribute(attributeName); if (!attribute.isCollection()) { throw new IllegalArgumentException("Requested attribute was not a collection"); } final PluralAttribute pluralAttribute = (PluralAttribute) attribute; if (!PluralAttribute.CollectionType.COLLECTION.equals(pluralAttribute.getCollectionType())) { throw new IllegalArgumentException("Requested attribute was not a collection"); } return (BlazeCollectionJoin<X, Y>) join((CollectionAttribute) attribute, alias, jt); }
@Override @SuppressWarnings({ "unchecked" }) public <X, K, V> MapJoin<X, K, V> joinMap(String attributeName, JoinType jt) { final Attribute<X,?> attribute = (Attribute<X, ?>) locateAttribute( attributeName ); if ( ! attribute.isCollection() ) { throw new IllegalArgumentException( "Requested attribute was not a map" ); } final PluralAttribute pluralAttribute = ( PluralAttribute ) attribute; if ( ! PluralAttribute.CollectionType.MAP.equals( pluralAttribute.getCollectionType() ) ) { throw new IllegalArgumentException( "Requested attribute was not a map" ); } return (MapJoin<X,K,V>) join( (MapAttribute) attribute, jt ); }
@Override @SuppressWarnings({"unchecked"}) public <X, Y> BlazeListJoin<X, Y> joinList(String attributeName, String alias, JoinType jt) { final Attribute<X, ?> attribute = (Attribute<X, ?>) getAttribute(attributeName); if (!attribute.isCollection()) { throw new IllegalArgumentException("Requested attribute was not a list"); } final PluralAttribute pluralAttribute = (PluralAttribute) attribute; if (!PluralAttribute.CollectionType.LIST.equals(pluralAttribute.getCollectionType())) { throw new IllegalArgumentException("Requested attribute was not a list"); } return (BlazeListJoin<X, Y>) join((ListAttribute) attribute, alias, jt); }
@Override @SuppressWarnings({ "unchecked" }) public <X,Y> CollectionJoin<X, Y> joinCollection(String attributeName, JoinType jt) { final Attribute<X,?> attribute = (Attribute<X, ?>) locateAttribute( attributeName ); if ( ! attribute.isCollection() ) { throw new IllegalArgumentException( "Requested attribute was not a collection" ); } final PluralAttribute pluralAttribute = ( PluralAttribute ) attribute; if ( ! PluralAttribute.CollectionType.COLLECTION.equals( pluralAttribute.getCollectionType() ) ) { throw new IllegalArgumentException( "Requested attribute was not a collection" ); } return (CollectionJoin<X,Y>) join( (CollectionAttribute) attribute, jt ); }
@Override @SuppressWarnings({"unchecked"}) public <X, K, V> BlazeMapJoin<X, K, V> joinMap(String attributeName, String alias, JoinType jt) { final Attribute<X, ?> attribute = (Attribute<X, ?>) getAttribute(attributeName); if (!attribute.isCollection()) { throw new IllegalArgumentException("Requested attribute was not a map"); } final PluralAttribute pluralAttribute = (PluralAttribute) attribute; if (!PluralAttribute.CollectionType.MAP.equals(pluralAttribute.getCollectionType())) { throw new IllegalArgumentException("Requested attribute was not a map"); } return (BlazeMapJoin<X, K, V>) join((MapAttribute) attribute, alias, jt); }
@Override @SuppressWarnings({"unchecked"}) public <X, Y> BlazeSetJoin<X, Y> joinSet(String attributeName, String alias, JoinType jt) { final Attribute<X, ?> attribute = (Attribute<X, ?>) getAttribute(attributeName); if (!attribute.isCollection()) { throw new IllegalArgumentException("Requested attribute was not a set"); } final PluralAttribute pluralAttribute = (PluralAttribute) attribute; if (!PluralAttribute.CollectionType.SET.equals(pluralAttribute.getCollectionType())) { throw new IllegalArgumentException("Requested attribute was not a set"); } return (BlazeSetJoin<X, Y>) join((SetAttribute) attribute, alias, jt); }
@Override @SuppressWarnings({ "unchecked" }) public <X,Y> SetJoin<X, Y> joinSet(String attributeName, JoinType jt) { final Attribute<X,?> attribute = (Attribute<X, ?>) locateAttribute( attributeName ); if ( ! attribute.isCollection() ) { throw new IllegalArgumentException( "Requested attribute was not a set" ); } final PluralAttribute pluralAttribute = ( PluralAttribute ) attribute; if ( ! PluralAttribute.CollectionType.SET.equals( pluralAttribute.getCollectionType() ) ) { throw new IllegalArgumentException( "Requested attribute was not a set" ); } return (SetJoin<X,Y>) join( (SetAttribute) attribute, jt ); }
/** * Checks if is map attribute. * * @param attribute * the attribute * @return true, if is map attribute */ private boolean isMapAttribute(PluralAttribute<? super X, ?, ?> attribute) { return attribute != null && attribute.getCollectionType().equals(CollectionType.MAP); }
/** * Checks if is sets the attribute. * * @param attribute * the attribute * @return true, if is sets the attribute */ private boolean isSetAttribute(PluralAttribute<? super X, ?, ?> attribute) { return attribute != null && attribute.getCollectionType().equals(CollectionType.SET); }
/** * Checks if is collection attribute. * * @param attribute * the attribute * @return true, if is collection attribute */ private boolean isCollectionAttribute(PluralAttribute<? super X, ?, ?> attribute) { return attribute != null && attribute.getCollectionType().equals(CollectionType.COLLECTION); }
/** * Checks if is list attribute. * * @param attribute * the attribute * @return true, if is list attribute */ private boolean isListAttribute(PluralAttribute<? super X, ?, ?> attribute) { return attribute != null && attribute.getCollectionType().equals(CollectionType.LIST); }
@Override @SuppressWarnings({"unchecked"}) public <X, Y> Join<X, Y> join(String attributeName, JoinType jt) { if ( !canBeJoinSource() ) { throw illegalJoin(); } if ( jt.equals( JoinType.RIGHT ) ) { throw new UnsupportedOperationException( "RIGHT JOIN not supported" ); } final Attribute<X, ?> attribute = (Attribute<X, ?>) locateAttribute( attributeName ); if ( attribute.isCollection() ) { final PluralAttribute pluralAttribute = (PluralAttribute) attribute; if ( PluralAttribute.CollectionType.COLLECTION.equals( pluralAttribute.getCollectionType() ) ) { return (Join<X, Y>) join( (CollectionAttribute) attribute, jt ); } else if ( PluralAttribute.CollectionType.LIST.equals( pluralAttribute.getCollectionType() ) ) { return (Join<X, Y>) join( (ListAttribute) attribute, jt ); } else if ( PluralAttribute.CollectionType.SET.equals( pluralAttribute.getCollectionType() ) ) { return (Join<X, Y>) join( (SetAttribute) attribute, jt ); } else { return (Join<X, Y>) join( (MapAttribute) attribute, jt ); } } else { return (Join<X, Y>) join( (SingularAttribute) attribute, jt ); } }
@Override public <Y> Fetch<X, Y> fetch(PluralAttribute<? super X, ?, Y> pluralAttribute, JoinType jt) { if ( !canBeFetchSource() ) { throw illegalFetch(); } final Fetch<X, Y> fetch; // TODO : combine Fetch and Join hierarchies (JoinImplementor extends Join,Fetch???) if ( PluralAttribute.CollectionType.COLLECTION.equals( pluralAttribute.getCollectionType() ) ) { fetch = constructJoin( (CollectionAttribute<X, Y>) pluralAttribute, jt ); } else if ( PluralAttribute.CollectionType.LIST.equals( pluralAttribute.getCollectionType() ) ) { fetch = constructJoin( (ListAttribute<X, Y>) pluralAttribute, jt ); } else if ( PluralAttribute.CollectionType.SET.equals( pluralAttribute.getCollectionType() ) ) { fetch = constructJoin( (SetAttribute<X, Y>) pluralAttribute, jt ); } else { fetch = constructJoin( (MapAttribute<X, ?, Y>) pluralAttribute, jt ); } joinScope.addFetch( fetch ); return fetch; }
@Override @SuppressWarnings({ "unchecked" }) public <Y> Path<Y> get(String attributeName) { if ( ! canBeDereferenced() ) { throw illegalDereference(); } final Attribute attribute = locateAttribute( attributeName ); if ( attribute.isCollection() ) { final PluralAttribute<X,Y,?> pluralAttribute = (PluralAttribute<X,Y,?>) attribute; if ( PluralAttribute.CollectionType.MAP.equals( pluralAttribute.getCollectionType() ) ) { return (PluralAttributePath<Y>) this.<Object,Object,Map<Object, Object>>get( (MapAttribute) pluralAttribute ); } else { return (PluralAttributePath<Y>) this.get( (PluralAttribute) pluralAttribute ); } } else { return get( (SingularAttribute<X,Y>) attribute ); } }
@Override @SuppressWarnings({"unchecked"}) public <X, Y> CollectionJoin<X, Y> joinCollection(String attributeName, JoinType jt) { final Attribute<X, ?> attribute = (Attribute<X, ?>) locateAttribute( attributeName ); if ( !attribute.isCollection() ) { throw new IllegalArgumentException( "Requested attribute was not a collection" ); } final PluralAttribute pluralAttribute = (PluralAttribute) attribute; if ( !PluralAttribute.CollectionType.COLLECTION.equals( pluralAttribute.getCollectionType() ) ) { throw new IllegalArgumentException( "Requested attribute was not a collection" ); } return (CollectionJoin<X, Y>) join( (CollectionAttribute) attribute, jt ); }