@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 ); } }
if (assoc.getCollectionType().equals(CollectionType.COLLECTION)) { fetch = new BasicCollectionJoinImpl<X, Y>(this, this.metamodel, ((PluralAttribute) assoc).getBindableJavaType(), node, (Bindable) assoc, jt); } else if (assoc.getCollectionType().equals(CollectionType.LIST)) { fetch = new BasicListJoinImpl<X, Y>(this, this.metamodel, ((PluralAttribute) assoc).getBindableJavaType(), node, (Bindable) assoc, jt); } else if (assoc.getCollectionType().equals(CollectionType.SET)) { fetch = new BasicSetJoinImpl<X, Y>(this, this.metamodel, ((PluralAttribute) assoc).getBindableJavaType(), node, (Bindable) assoc, jt); } else { if (assoc.getCollectionType().equals(CollectionType.COLLECTION)) { fetch = new CollectionJoinImpl<X, Y>(this, metamodel.managedType(((PluralAttribute) assoc).getBindableJavaType()), this.metamodel, ((PluralAttribute) assoc).getBindableJavaType(), node, (Bindable) assoc, jt); } else if (assoc.getCollectionType().equals(CollectionType.LIST)) { fetch = new ListJoinImpl<X, Y>(this, metamodel.managedType(((PluralAttribute) assoc).getBindableJavaType()), this.metamodel, ((PluralAttribute) assoc).getBindableJavaType(), node, (Bindable) assoc, jt); } else if (assoc.getCollectionType().equals(CollectionType.SET)) { fetch = new SetJoinImpl<X, Y>(this, metamodel.managedType(((PluralAttribute) assoc).getBindableJavaType()), this.metamodel, ((PluralAttribute) assoc).getBindableJavaType(), node, (Bindable) assoc, jt); } else {
if (((PluralAttribute) attribute).getCollectionType().equals(CollectionType.COLLECTION)) { join = new BasicCollectionJoinImpl(this, this.metamodel, ((PluralAttribute) attribute).getBindableJavaType(), node, (Bindable) attribute, jt); } else if (((PluralAttribute) attribute).getCollectionType().equals(CollectionType.LIST)) { join = new BasicListJoinImpl(this, this.metamodel, ((PluralAttribute) attribute).getBindableJavaType(), node, (Bindable) attribute, jt); } else if (((PluralAttribute) attribute).getCollectionType().equals(CollectionType.SET)) { join = new BasicSetJoinImpl(this, this.metamodel, ((PluralAttribute) attribute).getBindableJavaType(), node, (Bindable) attribute, jt); } else{ if (((PluralAttribute) attribute).getCollectionType().equals(CollectionType.COLLECTION)) { join = new CollectionJoinImpl(this, metamodel.managedType(((PluralAttribute) attribute).getBindableJavaType()), this.metamodel, ((PluralAttribute) attribute).getBindableJavaType(), node, (Bindable) attribute, jt); } else if (((PluralAttribute) attribute).getCollectionType().equals(CollectionType.LIST)) { join = new ListJoinImpl(this, metamodel.managedType(((PluralAttribute) attribute).getBindableJavaType()), this.metamodel, ((PluralAttribute) attribute).getBindableJavaType(), node, (Bindable) attribute, jt); } else if (((PluralAttribute) attribute).getCollectionType().equals(CollectionType.SET)) { join = new SetJoinImpl(this, metamodel.managedType(((PluralAttribute) attribute).getBindableJavaType()), this.metamodel, ((PluralAttribute) attribute).getBindableJavaType(), node, (Bindable) attribute, jt); } else {
if (attribute.isCollection()) { if (!((PluralAttribute) attribute).getElementType().getPersistenceType().equals(PersistenceType.BASIC)) { if (((PluralAttribute) attribute).getCollectionType().equals(CollectionType.COLLECTION)) { join = new CollectionJoinImpl<X, Y>(this, metamodel.managedType(((PluralAttribute) attribute).getBindableJavaType()), this.metamodel, ((PluralAttribute) attribute).getBindableJavaType(), this.currentNode.anyOf(attribute.getName()), (Bindable) attribute); } else if (((PluralAttribute) attribute).getCollectionType().equals(CollectionType.LIST)) { join = new ListJoinImpl<X, Y>(this, metamodel.managedType(((PluralAttribute) attribute).getBindableJavaType()), this.metamodel, ((PluralAttribute) attribute).getBindableJavaType(), this.currentNode.anyOf(attribute.getName()), (Bindable) attribute); } else if (((PluralAttribute) attribute).getCollectionType().equals(CollectionType.SET)) { join = new SetJoinImpl<X, Y>(this, metamodel.managedType(((PluralAttribute) attribute).getBindableJavaType()), this.metamodel, ((PluralAttribute) attribute).getBindableJavaType(), this.currentNode.anyOf(attribute.getName()), (Bindable) attribute); } else { if (((PluralAttribute) attribute).getCollectionType().equals(CollectionType.COLLECTION)) { join = new BasicCollectionJoinImpl<X, Y>(this, this.metamodel, ((PluralAttribute) attribute).getBindableJavaType(), this.currentNode.anyOf(attribute.getName()), (Bindable) attribute); } else if (((PluralAttribute) attribute).getCollectionType().equals(CollectionType.LIST)) { join = new BasicListJoinImpl<X, Y>(this, this.metamodel, ((PluralAttribute) attribute).getBindableJavaType(), this.currentNode.anyOf(attribute.getName()), (Bindable) attribute); } else if (((PluralAttribute) attribute).getCollectionType().equals(CollectionType.SET)) { join = new BasicSetJoinImpl<X, Y>(this, this.metamodel, ((PluralAttribute) attribute).getBindableJavaType(), this.currentNode.anyOf(attribute.getName()), (Bindable) attribute); } else{
if(((PluralAttribute)anAttribute).getCollectionType().equals(aReturnCollectionType)) {
@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 @SuppressWarnings({"unchecked"}) public <X, Y> BlazeJoin<X, Y> join(String attributeName, String alias, JoinType jt) { checkJoinAllowed(); if (jt == JoinType.RIGHT) { throw new UnsupportedOperationException("RIGHT JOIN not supported"); } final Attribute<X, ?> attribute = (Attribute<X, ?>) getAttribute(attributeName); if (attribute.isCollection()) { final PluralAttribute pluralAttribute = (PluralAttribute) attribute; if (PluralAttribute.CollectionType.COLLECTION.equals(pluralAttribute.getCollectionType())) { return (BlazeJoin<X, Y>) join((CollectionAttribute) attribute, alias, jt); } else if (PluralAttribute.CollectionType.LIST.equals(pluralAttribute.getCollectionType())) { return (BlazeJoin<X, Y>) join((ListAttribute) attribute, alias, jt); } else if (PluralAttribute.CollectionType.SET.equals(pluralAttribute.getCollectionType())) { return (BlazeJoin<X, Y>) join((SetAttribute) attribute, alias, jt); } else { return (BlazeJoin<X, Y>) join((MapAttribute) attribute, alias, jt); } } else { return (BlazeJoin<X, Y>) join((SingularAttribute) attribute, alias, jt); } }
@Override @SuppressWarnings({"unchecked"}) public <X, Y> BlazeJoin<X, Y> join(String attributeName, String alias, JoinType jt) { checkJoinAllowed(); if (jt == JoinType.RIGHT) { throw new UnsupportedOperationException("RIGHT JOIN not supported"); } final Attribute<X, ?> attribute = (Attribute<X, ?>) getAttribute(attributeName); if (attribute.isCollection()) { final PluralAttribute pluralAttribute = (PluralAttribute) attribute; if (PluralAttribute.CollectionType.COLLECTION.equals(pluralAttribute.getCollectionType())) { return (BlazeJoin<X, Y>) join((CollectionAttribute) attribute, alias, jt); } else if (PluralAttribute.CollectionType.LIST.equals(pluralAttribute.getCollectionType())) { return (BlazeJoin<X, Y>) join((ListAttribute) attribute, alias, jt); } else if (PluralAttribute.CollectionType.SET.equals(pluralAttribute.getCollectionType())) { return (BlazeJoin<X, Y>) join((SetAttribute) attribute, alias, jt); } else { return (BlazeJoin<X, Y>) join((MapAttribute) attribute, alias, jt); } } else { return (BlazeJoin<X, Y>) join((SingularAttribute) attribute, alias, 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; }
/** * {@inheritDoc} */ @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 <Y> BlazeJoin<X, Y> fetch(PluralAttribute<? super X, ?, Y> pluralAttribute, String alias, JoinType jt) { checkFetchAllowed(); final AbstractJoin<X, Y> fetch; if (PluralAttribute.CollectionType.COLLECTION.equals(pluralAttribute.getCollectionType())) { fetch = constructJoin((CollectionAttribute<X, Y>) pluralAttribute, alias, jt); } else if (PluralAttribute.CollectionType.LIST.equals(pluralAttribute.getCollectionType())) { fetch = constructJoin((ListAttribute<X, Y>) pluralAttribute, alias, jt); } else if (PluralAttribute.CollectionType.SET.equals(pluralAttribute.getCollectionType())) { fetch = constructJoin((SetAttribute<X, Y>) pluralAttribute, alias, jt); } else { fetch = constructJoin((MapAttribute<X, ?, Y>) pluralAttribute, alias, jt); } joinScope.addFetch(fetch); return fetch; }
@Override @SuppressWarnings({"unchecked"}) public <Y> BlazePath<Y> get(String attributeName) { checkDereferenceAllowed(); final Attribute<?, ?> attribute = getAttribute(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 <Y> BlazeJoin<X, Y> fetch(PluralAttribute<? super X, ?, Y> pluralAttribute, String alias, JoinType jt) { checkFetchAllowed(); final AbstractJoin<X, Y> fetch; if (PluralAttribute.CollectionType.COLLECTION.equals(pluralAttribute.getCollectionType())) { fetch = constructJoin((CollectionAttribute<X, Y>) pluralAttribute, alias, jt); } else if (PluralAttribute.CollectionType.LIST.equals(pluralAttribute.getCollectionType())) { fetch = constructJoin((ListAttribute<X, Y>) pluralAttribute, alias, jt); } else if (PluralAttribute.CollectionType.SET.equals(pluralAttribute.getCollectionType())) { fetch = constructJoin((SetAttribute<X, Y>) pluralAttribute, alias, jt); } else { fetch = constructJoin((MapAttribute<X, ?, Y>) pluralAttribute, alias, jt); } joinScope.addFetch(fetch); return fetch; }
@Override @SuppressWarnings({"unchecked"}) public <Y> BlazePath<Y> get(String attributeName) { checkDereferenceAllowed(); final Attribute<?, ?> attribute = getAttribute(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, 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> 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> 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> 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); }