
io.ebeaninternal.server.deploy.BeanCollectionHelpFactory Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of ebean Show documentation
Show all versions of ebean Show documentation
composite of common runtime dependencies for all platforms
package io.ebeaninternal.server.deploy;
import io.ebeaninternal.api.SpiQuery;
import io.ebeaninternal.server.core.OrmQueryRequest;
import io.ebeaninternal.server.el.ElPropertyValue;
import io.ebeaninternal.server.query.CQueryCollectionAdd;
/**
* Creates Helpers specific to the type of the property (List Set or Map).
*/
public class BeanCollectionHelpFactory {
@SuppressWarnings("rawtypes")
private static final BeanListHelp LIST_HELP = new BeanListHelp();
@SuppressWarnings("rawtypes")
private static final BeanSetHelp SET_HELP = new BeanSetHelp();
/**
* Create the helper based on the many property.
*/
public static BeanCollectionHelp create(BeanPropertyAssocMany many) {
boolean elementCollection = many.isElementCollection();
ManyType manyType = many.getManyType();
switch (manyType) {
case LIST:
return elementCollection ? new BeanListHelpElement<>(many) : new BeanListHelp<>(many);
case SET:
return elementCollection ? new BeanSetHelpElement<>(many) : new BeanSetHelp<>(many);
case MAP:
return elementCollection ? new BeanMapHelpElement<>(many) :new BeanMapHelp<>(many);
default:
throw new RuntimeException("Invalid type " + manyType);
}
}
@SuppressWarnings("unchecked")
public static CQueryCollectionAdd create(SpiQuery.Type manyType, OrmQueryRequest request) {
if (manyType == SpiQuery.Type.LIST) {
return LIST_HELP;
} else if (manyType == SpiQuery.Type.SET) {
return SET_HELP;
} else if (manyType == SpiQuery.Type.MAP) {
BeanDescriptor target = request.getBeanDescriptor();
ElPropertyValue elProperty = target.getElGetValue(request.getQuery().getMapKey());
return new BeanMapQueryHelp<>(elProperty);
} else {
return null;
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy