项目:crnk-framework
文件:QueryUtil.java
public static boolean containsRelation(Object expr) {
if (expr instanceof Join) {
return true;
} else if (expr instanceof Singularattribute) {
Singularattribute<?,?> attr = (Singularattribute<?,?>) expr;
return attr.isAssociation();
} else if (expr instanceof Path) {
Path<?> attrPath = (Path<?>) expr;
Bindable<?> model = attrPath.getModel();
Path<?> parent = attrPath.getParentPath();
return containsRelation(parent) || containsRelation(model);
} else {
// we may can do better here...
return false;
}
}
private Map<String,String> getReferenceColumnNamesMapForReferenceAttribute(Singularattribute<?,?> attribute,ManagedType<?> targetEntity) {
List<String> idAttributeNames = targetEntity.getSingularattributes().stream()
.filter(this::isIdAttribute)
.map(this::getSingularattributeColumnName)
.collect(Collectors.toList());
JoinColumns joinColumnsAnnotation =
((AnnotatedElement) attribute.getJavaMember()).getAnnotation(JoinColumns.class);
JoinColumn joinColumnAnnotation =
((AnnotatedElement) attribute.getJavaMember()).getAnnotation(JoinColumn.class);
JoinColumn[] joinColumns = joinColumnsAnnotation != null ? joinColumnsAnnotation.value() :
joinColumnAnnotation != null ? new JoinColumn[]{joinColumnAnnotation} : null;
Map<String,String> referenceColumnNamesMap;
if (joinColumns != null) {
referenceColumnNamesMap = Arrays.stream(joinColumns)
.collect(Collectors.toMap(JoinColumn::name,joinColumn ->
joinColumn.referencedColumnName().length() > 0 ? joinColumn.referencedColumnName() :
idAttributeNames.get(0)));
} else {
referenceColumnNamesMap = idAttributeNames.stream()
.collect(Collectors.toMap(idAttributeName -> attribute.getName().toupperCase() + "_"
+ idAttributeName,idAttributeName -> idAttributeName));
}
return referenceColumnNamesMap;
}
项目:tap17-muggl-javaee
文件:EntityConstraintAnalyzer.java
public static Set<String> getIdFieldNames(metamodel metamodel,String entityName) {
Set<String> ids = entityIdMap.get(entityName);
if(ids == null) {
ids = new HashSet<>();
for(EntityType<?> et : metamodel.getEntities()) {
if(et.getJavaType().getName().equals(entityName)) {
if(et.hasSingleIdAttribute()) {
ids.add(et.getId(et.getIdType().getJavaType()).getName());
} else {
for(Singularattribute<?,?> idAttribute : et.getIdClassAttributes()) {
ids.add(idAttribute.getName());
}
}
}
}
}
if(ids.size() == 0) {
ids.add("id");
}
return ids;
}
项目:linq
文件:LinqImpl.java
@SuppressWarnings("rawtypes")
public LinqImpl(Class<?> domainClass,Class<?> resultClass,EntityManager entityManager) {
super(domainClass,entityManager);
if (Tuple.class.isAssignableFrom(resultClass)) {
criteria = cb.createTupleQuery();
root = criteria.from(domainClass);
} else if (Map.class.isAssignableFrom(resultClass)) {
criteria = cb.createquery(Object[].class);
root = criteria.from(domainClass);
resultTransformer = Transformers.ALIAS_TO_MAP;
Set<?> attrs = em.getmetamodel().entity(domainClass).getDeclaredSingularattributes();
String[] selections = new String[attrs.size()];
int i = 0;
for (Object attr : attrs) {
selections[i] = ((Singularattribute)attr).getName();
i++;
}
select(selections);
} else {
criteria = cb.createquery(resultClass);
root = criteria.from(domainClass);
}
this.resultClass = resultClass;
}
项目:bootstrap
文件:CsvForJpa.java
/**
* Return JPA managed properties.
*
* @param <T>
* Bean type.
* @param beanType
* the bean type.
* @return the headers built from given type.
*/
public <T> String[] getJpaHeaders(final Class<T> beanType) {
// Build descriptor list respecting the declaration order
final OrderedFieldCallback fieldCallBack = new OrderedFieldCallback();
ReflectionUtils.doWithFields(beanType,fieldCallBack);
final List<String> orderedDescriptors = fieldCallBack.descriptorsOrdered;
// Now filter the properties
final List<String> descriptorsFiltered = new ArrayList<>();
final ManagedType<T> managedType = transactionManager.getEntityManagerFactory().getmetamodel().managedType(beanType);
for (final String propertyDescriptor : orderedDescriptors) {
for (final Attribute<?,?> attribute : managedType.getAttributes()) {
// Match only basic attributes
if (attribute instanceof Singularattribute<?,?> && propertyDescriptor.equals(attribute.getName())) {
descriptorsFiltered.add(attribute.getName());
break;
}
}
}
// Initialize the CSV reader
return descriptorsFiltered.toArray(new String[descriptorsFiltered.size()]);
}
项目:oma-riista-web
文件:CriteriaUtils.java
public static <T,U> BiConsumer<T,U> createSetterInvoker(
@Nonnull final Singularattribute<? super T,U> attribute) {
Objects.requireNonNull(attribute);
final Class<?> declaringClass = attribute.getDeclaringType().getJavaType();
final String setterName = getSetterName(attribute.getName());
final Method setterMethod = BeanUtils.findDeclaredMethod(declaringClass,setterName,attribute.getJavaType());
if (setterMethod == null) {
throw new IllegalStateException(String.format(
"Class %s does not declare method named '%s'",declaringClass.getName(),setterName));
}
setterMethod.setAccessible(true);
return (object,value) -> {
try {
setterMethod.invoke(object,value);
} catch (final illegalaccessexception | InvocationTargetException e) {
throw new RuntimeException(e);
}
};
}
private void testGetobservationFieldMetadataForSingleSpecies_forState(
final Singularattribute<ObservationContextSensitiveFields,required> fieldAttribute,final required stateRequirement,final ObservedGameState expectedStateValue) {
final GameSpecies species = newGameSpecies();
final ObservationContextSensitiveFields ctxFields =
newObservationContextSensitiveFields(species,required.NO,required.VOLUNTARY);
CriteriaUtils.createSetterInvoker(fieldAttribute).accept(ctxFields,stateRequirement);
persistInCurrentlyOpenTransaction();
final ContextSensitiveFieldSetDTO ctxFieldsDTO =
invokeServiceAndGetContextSensitiveFieldSetDTO(species,ctxFields.getobservationType());
assertEquals(stateRequirement,ctxFieldsDTO.getState());
assertEquals(EnumSet.of(HEALTHY,ILL,expectedStateValue),ctxFieldsDTO.getAllowedStates());
}
private Class<?> getSelectedType(Path entityPath,Set<TypeDeFinition> typeDeFinitions) {
if (entityPath.isKeyPath()) {
TypeDeFinition typeDeFinition = typeForAlias(entityPath.getRootAlias())
.withmetamodel(metamodel)
.filter(typeDeFinitions);
MapAttribute<?,?,?> mapAttribute = (MapAttribute<?,?>)attributeForPath(typeDeFinition.getJoinPath())
.withmetamodel(metamodel)
.filter(typeDeFinitions);
Class<?> keyType = mapAttribute.getKeyJavaType();
if (!entityPath.hasSubpath()) {
return keyType;
}
return attributeForPath(new Path(entityPath.getSubpath()))
.withmetamodel(metamodel)
.withRoottype(keyType)
.filter()
.getJavaType();
} else if (entityPath.hasSubpath()) {
Singularattribute<?,?> attribute = (Singularattribute<?,?>)attributeForPath(entityPath)
.withmetamodel(metamodel)
.filter(typeDeFinitions);
return attribute.getType().getJavaType();
} else {
return typeForAlias(entityPath.getRootAlias()).withmetamodel(metamodel).filter(typeDeFinitions).getType();
}
}
public boolean visit(JpqlPath node,Set<TypeDeFinition> typeDeFinitions) {
Alias alias = new Alias(node.jjtGetChild(0).getValue());
Class<?> type = getType(alias,typeDeFinitions);
for (int i = 1; i < node.jjtGetNumChildren(); i++) {
ManagedType<?> managedType = forModel(metamodel).filter(type);
String attributeName = node.jjtGetChild(i).getValue();
Attribute<?,?> attribute = managedType.getAttribute(attributeName);
if (attribute instanceof Singularattribute
&& ((Singularattribute<?,?>)attribute).getType().getPersistenceType() == PersistenceType.BASIC
&& i < node.jjtGetNumChildren() - 1) {
String error = "Cannot navigate through simple property "
+ attributeName + " in class " + type.getName();
throw new PersistenceException(error);
}
type = attribute.getJavaType();
}
return false;
}
public Attribute<?,?> filter() {
Type<?> type = forModel(metamodel).filter(roottype);
Attribute<?,?> result = null;
for (int i = 1; i < pathelements.length; i++) {
if (!(type instanceof ManagedType)) {
throw new PersistenceException("Cannot navigate through simple property "
+ pathelements[i] + " of type " + type.getJavaType());
}
result = ((ManagedType<?>)type).getAttribute(pathelements[i]);
if (result.isCollection()) {
type = ((PluralAttribute<?,?>)result).getElementType();
} else {
type = ((Singularattribute<?,?>)result).getType();
}
}
return result;
}
项目:rpb
文件:ByExampleUtil.java
/**
* Invoke byExample method for each not null x-to-one association when their pk is not set. This allows you to search entities based on an associated
* entity's properties value.
*/
@SuppressWarnings("unchecked")
public <T extends Identifiable<?>,M2O extends Identifiable<?>> List<Predicate> byExampleOnXToOne(ManagedType<T> mt,Root<T> mtPath,final T mtValue,SearchParameters sp,CriteriaBuilder builder) {
List<Predicate> predicates = newArrayList();
for (Singularattribute<? super T,?> attr : mt.getSingularattributes()) {
if (attr.getPersistentAttributeType() == MANY_TO_ONE || attr.getPersistentAttributeType() == ONE_TO_ONE) { //
M2O m2ovalue = (M2O) getValue(mtValue,mt.getAttribute(attr.getName()));
if (m2ovalue != null && !m2ovalue.isIdSet()) {
Class<M2O> m2oType = (Class<M2O>) attr.getBindableJavaType();
ManagedType<M2O> m2oMt = em.getmetamodel().entity(m2oType);
Path<M2O> m2oPath = (Path<M2O>) mtPath.get(attr);
predicates.addAll(byExample(m2oMt,m2oPath,m2ovalue,sp,builder));
}
}
}
return predicates;
}
项目:os
文件:GenericRepositoryImpl.java
@Override
public <S> S sum(Class<S> resultClass,Specification<E> spec,LockModeType lockMode,List<Singularattribute<E,? extends Number>> properties) {
CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery<S> query = builder.createquery(resultClass);
Root<E> root = query.from(getDomainClass());
List<Selection<?>> selectionList = Lists.newArrayList();
for (Singularattribute<E,? extends Number> property : properties) {
selectionList.add(builder.sum(root.get(property)));
}
return aggregate(builder,query,root,spec,selectionList,lockMode);
}
项目:os
文件:GenericService.java
@Override
@SuppressWarnings("unchecked")
@Transactional(propagation = Propagation.NOT_SUPPORTED,readOnly = true)
public <S> S sum(Class<S> resultClass,Singularattribute<E,? extends Number>... properties) {
return getRepository().sum(resultClass,properties);
}
private String getSingularattributeColumnName(Singularattribute attribute) {
Column columnAnnotation = ((AnnotatedElement) attribute.getJavaMember()).getAnnotation(Column.class);
if (columnAnnotation != null && columnAnnotation.name().length() > 0) {
return columnAnnotation.name().toupperCase();
} else {
return attribute.getName().toupperCase();
}
}
@Override
public String getCanonicalDataTypeName(schemacrawler.schema.Column column) {
Singularattribute singularattribute;
if (column.isPartOfForeignKey()) {
Optional<ForeignKeyColumnReference> foreignKeyColumnReferenceOptional = column.getParent().getForeignKeys().stream()
.flatMap(foreignKeyColumnReferences -> foreignKeyColumnReferences.getColumnReferences().stream())
.filter(foreignKeyColumnReference -> foreignKeyColumnReference.getForeignKeyColumn().getName().equals(column.getName()))
.findFirst();
if (foreignKeyColumnReferenceOptional.isPresent()) {
ForeignKeyColumnReference ref = foreignKeyColumnReferenceOptional.get();
Singularattribute targetSingularattribute =
singularattributesByColumnName.get(new QualifiedColumnName(ref.getPrimaryKeyColumn().getParent().getName(),ref.getPrimaryKeyColumn().getName()));
if (targetSingularattribute != null) {
return targetSingularattribute.getJavaType().getCanonicalName();
} else {
LOG.warn("Could not find target singular attribute for column " + column.getParent().getName() + "." + column.getName());
return fallbackDataTypeProvider.getCanonicalDataTypeName(column);
}
} else {
return fallbackDataTypeProvider.getCanonicalDataTypeName(column);
}
} else {
singularattribute =
singularattributesByColumnName.get(new QualifiedColumnName(column.getParent().getName(),column.getName()));
if (singularattribute != null) {
return singularattribute.getJavaType().getCanonicalName();
} else {
return fallbackDataTypeProvider.getCanonicalDataTypeName(column);
}
}
}
项目:linq
文件:LinuImpl.java
@Override
public <Y,X extends Y> Linu set(Singularattribute<? super Object,Y> attribute,X value) {
if (!beforeMethodInvoke()) {
return this;
}
criteria.set(attribute,value);;
return this;
}
项目:linq
文件:LinuImpl.java
@Override
public <Y> Linu set(Singularattribute<? super Object,Expression<? extends Y> value) {
if (!beforeMethodInvoke()) {
return this;
}
criteria.set(attribute,value);
return this;
}
@Nonnull
public static <T,U> Specification<T> equalValueWithHarvestOrObservation(
@Nonnull final Singularattribute<? super T,Harvest> harvestAttribute,@Nonnull final Singularattribute<? super T,Observation> observationAttribute,@Nonnull final Singularattribute<? super GameDiaryEntry,U> valueAttribute,@Nullable final U value) {
Objects.requireNonNull(harvestAttribute,"harvestAttribute must not be null");
Objects.requireNonNull(observationAttribute,"observationAttribute must not be null");
Objects.requireNonNull(valueAttribute,"valueAttribute must not be null");
return (root,cb) -> cb.or(
JpaPreds.equal(cb,root.join(harvestAttribute,JoinType.LEFT).get(valueAttribute),value),JpaPreds.equal(cb,root.join(observationAttribute,value));
}
项目:oma-riista-web
文件:JpaSubQuery.java
@Nonnull
public static <P,S> JpaSubQuery<P,S> inverSEOf(@Nonnull final Singularattribute<S,P> attribute) {
return new AbstractReverseSubQuery<P,S,Singularattribute<S,P>>(Objects.requireNonNull(attribute)) {
@Override
protected Path<P> getPathToParentRoot(final Root<S> root) {
return root.get(attribute);
}
};
}
项目:oma-riista-web
文件:CriteriaUtils.java
@Nullable
@Override
public Function<?,?> load(@Nullable final Singularattribute<?,?> key) {
if (key == null) {
return null;
}
@SuppressWarnings("rawtypes")
final Singularattribute attribute = key;
@SuppressWarnings("unchecked")
final Function<?,?> result = jpaPropertyInternal(attribute);
return result;
}
项目:oma-riista-web
文件:CriteriaUtils.java
@Nonnull
static <T,U> Function<? super T,U> jpaProperty(@Nonnull final Singularattribute<? super T,U> attribute) {
Objects.requireNonNull(attribute);
try {
@SuppressWarnings("unchecked")
final Function<? super T,U> result = (Function<? super T,U>) JPA_PROPERTY_FUNCTIONS.get(attribute);
return result;
} catch (final ExecutionException e) {
throw new RuntimeException(e);
}
}
项目:oma-riista-web
文件:CriteriaUtils.java
@Nonnull
public static <ID extends Serializable,T extends Persistable<ID> & HasID<ID>,U> Function<T,Long> createAssociationCountFunction(
@Nonnull final Iterable<? extends T> collection,@Nonnull final Class<U> associatedClass,@Nonnull final Singularattribute<? super U,T> associationAttribute,@Nonnull final EntityManager entityManager) {
Objects.requireNonNull(collection,"collection is null");
Objects.requireNonNull(associatedClass,"associatedClass is null");
Objects.requireNonNull(associationAttribute,"associationAttribute is null");
Objects.requireNonNull(entityManager,"entityManager is null");
if (Iterables.isEmpty(collection)) {
return t -> 0L;
}
final CriteriaBuilder cb = entityManager.getCriteriaBuilder();
final CriteriaQuery<Object> query = cb.createquery();
final Root<U> root = query.from(associatedClass);
final EntityType<T> targetEntityType = entityManager.getmetamodel().entity(associationAttribute.getJavaType());
final Path<ID> targetEntityIdpath =
root.get(associationAttribute).get(getSingularIdAttribute(targetEntityType));
query.select(cb.construct(Tuple2.class,targetEntityIdpath,cb.count(root)))
.where(targetEntityIdpath.in(cb.literal(F.getUniqueIds(collection))))
.groupBy(targetEntityIdpath);
@SuppressWarnings({ "rawtypes","unchecked" })
final List<Tuple2<ID,Long>> pairs = (List) entityManager.createquery(query).getResultList();
if (pairs.isEmpty()) {
return t -> 0L;
}
final HashMap<ID,Long> idToCount = HashMap.ofEntries(pairs);
return t -> idToCount.get(F.getId(t)).getorElse(0L);
}
项目:oma-riista-web
文件:CriteriaUtils.java
@Nonnull
private static <T,U> jpaPropertyInternal(@Nonnull final Singularattribute<? super T,U> attr) {
Objects.requireNonNull(attr);
final Method readMethod = BeanUtils.getPropertyDescriptor(attr.getDeclaringType().getJavaType(),attr.getName())
.getReadMethod();
return obj -> invokeAndCast(readMethod,obj,attr.getJavaType());
}
项目:oma-riista-web
文件:CriteriaUtils.java
private static <ID extends Serializable,T extends Persistable<ID>> Singularattribute<? super T,ID> getSingularIdAttribute(
final EntityType<T> entityType) {
if (!entityType.hasSingleIdAttribute()) {
throw new UnsupportedOperationException("Multi-attribute-ID not supported.");
}
@SuppressWarnings("unchecked")
final Class<ID> idClass = (Class<ID>) entityType.getIdType().getJavaType();
return entityType.getId(idClass);
}
项目:oma-riista-web
文件:JpaGroupingUtils.java
项目:oma-riista-web
文件:JpaGroupingUtils.java
@Nonnull
public static <T,@Nonnull final JpaSpecificationExecutor<U> repository,@Nullable final Specification<U> constraint) {
return groupRelations(objects,constraint,@Nullable final Sort sortCriteria) {
return groupRelations(objects,sortCriteria);
}
项目:oma-riista-web
文件:JpaGroupingUtils.java
项目:oma-riista-web
文件:JpaGroupingUtils.java
@Nonnull
public static <ID extends Serializable,T extends HasID<ID>,U> Map<ID,List<U>> groupRelationsById(
@Nonnull final Collection<? extends T> objects,@Nullable final Specification<U> constraint) {
return groupRelationsById(objects,null);
}
项目:oma-riista-web
文件:JpaGroupingUtils.java
@Nonnull
public static <ID extends Serializable,objects);
final Function<U,ID> idFunction = Functions.idOf(CriteriaUtils.jpaProperty(singularattribute));
return groupRelationsInternal(objects,idFunction,List<U>> groupRelationsById(
@Nonnull final Collection<ID> ids,ID> idAttribute,@Nonnull final JpaSpecificationExecutor<U> repository) {
return groupRelationsById(ids,associationAttribute,idAttribute,@Nullable final Specification<U> constraint) {
return groupRelationsById(ids,@Nullable final Sort sortCriteria) {
final Specification<U> inSpec = inIdCollection(associationAttribute,ids);
final Function<U,ID> idFunction = Functions.idOf(CriteriaUtils.jpaProperty(associationAttribute));
return groupRelationsInternal(ids,sortCriteria);
}
项目:oma-riista-web
文件:JpaGroupingUtils.java
public static <ID extends Serializable,List<U>> createInverseMappingFunction(
@Nonnull final Collection<? extends T> objects,final boolean letFunctionThrowExceptionOnEmptyResult) {
return createInverseMappingFunction(
objects,letFunctionThrowExceptionOnEmptyResult);
}
项目:oma-riista-web
文件:JpaGroupingUtils.java
public static <ID extends Serializable,final boolean letFunctionThrowExceptionOnEmptyResult) {
Objects.requireNonNull(objects,"objects must not be null");
Objects.requireNonNull(singularattribute,"singularattribute must not be null");
Objects.requireNonNull(repository,"repository must not be null");
if (Iterables.isEmpty(objects)) {
return input -> Collections.emptyList();
}
final Specification<U> relationSpec = inCollection(singularattribute,objects);
final Specification<U> compoundSpec =
constraint != null ? JpaSpecs.and(relationSpec,constraint) : relationSpec;
final List<U> relatedobjects = repository.findAll(compoundSpec);
if (relatedobjects.isEmpty()) {
return input -> Collections.emptyList();
}
final Map<ID,List<U>> index =
F.groupByIdAfterTransform(relatedobjects,CriteriaUtils.jpaProperty(singularattribute));
final Function<ID,List<U>> indexFunc =
letFunctionThrowExceptionOnEmptyResult ? forMap(index) : forMap(index,null);
return indexFunc.compose(F::getId);
}
@Nonnull
public static <ID extends Serializable,T extends HasID<ID>> Specification<T> withId(
@Nonnull final Singularattribute<? super T,ID> attribute,@Nonnull final ID id) {
Objects.requireNonNull(attribute,"attribute must not be null");
Objects.requireNonNull(id,"id must not be null");
return (root,cb) -> cb.equal(root.get(attribute),id);
}
@Nonnull
public static <T,U> Specification<T> equal(
@Nonnull final Singularattribute<? super T,U> attribute,@Nullable final U value) {
Objects.requireNonNull(attribute,"attribute must not be null");
return (root,cb) -> JpaPreds.equal(cb,root.get(attribute),value);
}
@Nonnull
public static <T,X,Y> Specification<T> equal(
@Nonnull final Singularattribute<? super T,X> attribute1,@Nonnull final Singularattribute<? super X,Y> attribute2,@Nullable final Y value) {
Objects.requireNonNull(attribute1,"attribute1 must not be null");
Objects.requireNonNull(attribute2,"attribute2 must not be null");
return (root,root.join(attribute1).get(attribute2),Y> Specification<T> equal(
@Nonnull final PluralAttribute<? super T,CriteriaUtils.join(root,attribute1).get(attribute2),Y,Z> Specification<T> equal(
@Nonnull final Singularattribute<? super T,@Nonnull final Singularattribute<? super Y,Z> attribute3,@Nullable final Z value) {
Objects.requireNonNull(attribute1,"attribute2 must not be null");
Objects.requireNonNull(attribute3,"attribute3 must not be null");
return (root,root.join(attribute1).join(attribute2).get(attribute3),value);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。