protected Map<String, Path> generateEntitiesPaths() { Map<String, Path> paths = new LinkedHashMap<>(); for (MetaClass metaClass : metadataTools.getAllPersistentMetaClasses()) { if (metadataTools.isSystemLevel(metaClass)) { continue; } paths.putAll(generateEntityPaths(metaClass)); } return paths; }
/** * @return MetaProperty representing a primary key attribute, or null if the entity has no primary key (e.g. * embeddable) */ @Nullable public MetaProperty getPrimaryKeyProperty(MetaClass metaClass) { String primaryKeyName = getPrimaryKeyName(metaClass); return primaryKeyName == null ? null : metaClass.getPropertyNN(primaryKeyName); }
@Override public String apply(E entity) { return entity != null ? metadataTools.getInstanceName(entity) : ""; } }
/** * Create a new instance and make it a shallow copy of the instance given. <br> This method copies attributes * according to the metadata and relies on {@link com.haulmont.chile.core.model.Instance#getMetaClass()} method * which should not return null. * * @param source source instance * @return new instance of the same Java class as source */ public <T extends Instance> T copy(T source) { checkNotNullArgument(source, "source is null"); //noinspection unchecked T dest = createInstance((Class<T>) source.getClass()); copy(source, dest); return dest; }
public CrossDataStoreProperty(MetaProperty metaProperty, ViewProperty viewProperty) { this.property = metaProperty; this.viewProperty = viewProperty; List<String> relatedProperties = metadataTools.getRelatedProperties(property); relatedPropertyName = relatedProperties.get(0); String pkName = metadataTools.getPrimaryKeyName(property.getRange().asClass()); primaryKeyName = pkName != null ? pkName : "id"; // sensible default for non-persistent entities }
MetaClass propertyMetaClass = metadata.getTools().getPropertyEnclosingMetaClass(propertyPath); String storeName = metadata.getTools().getStoreName(propertyMetaClass); if (!metadata.getTools().isLob(metaProperty) || supportsLobSortingAndFiltering(storeName)) { sortProperties.add(propertyPath.toString()); Collection<MetaProperty> properties = metadata.getTools().getNamePatternProperties(range.asClass()); if (!properties.isEmpty()) { sortProperties.addAll(properties.stream() .filter(prop -> { if (metadata.getTools().isPersistent(prop)) { String storeName = metadata.getTools().getStoreName(range.asClass()); return !metadata.getTools().isLob(prop) || supportsLobSortingAndFiltering(storeName);
@SuppressWarnings("unchecked") protected void assignIdentifier(Entity entity) { if (!(entity instanceof BaseGenericIdEntity)) return; MetaClass metaClass = getClassNN(entity.getClass()); MetaProperty primaryKeyProperty = tools.getPrimaryKeyProperty(metaClass); if (primaryKeyProperty != null && tools.isEmbedded(primaryKeyProperty)) { // create an instance of embedded ID Entity key = create(primaryKeyProperty.getRange().asClass()); ((BaseGenericIdEntity) entity).setId(key); } else { if (!config.getEnableIdGenerationForEntitiesInAdditionalDataStores() && !Stores.MAIN.equals(tools.getStoreName(metaClass))) { return; } if (tools.isPersistent(metaClass)) { if (entity instanceof BaseLongIdEntity) { ((BaseGenericIdEntity<Long>) entity).setId(numberIdSource.createLongId(getEntityNameForIdGeneration(metaClass))); } else if (entity instanceof BaseIntegerIdEntity) { ((BaseGenericIdEntity<Integer>) entity).setId(numberIdSource.createIntegerId(getEntityNameForIdGeneration(metaClass))); } } } }
protected boolean isManagedAttribute(MetaClass metaClass, MetaProperty metaProperty) { if (metadataTools.isSystem(metaProperty) || metadataTools.isNotPersistent(metaProperty) || metadataTools.isSystemLevel(metaProperty) || metaProperty.getRange().getCardinality().isMany() || !isPermitted(metaClass, metaProperty)) { return false; } if (metaProperty.getRange().isDatatype() && (isByteArray(metaProperty) || isUuid(metaProperty))) { return false; } if (!isRangeClassPermitted(metaProperty)) { return false; } if (includeProperties != null && !includeProperties.isEmpty()) { return includeProperties.contains(metaProperty.getName()); } return !(excludeRegex != null && excludeRegex.matcher(metaProperty.getName()).matches()); }
@Override protected boolean isLoadedSpecificCheck(Object entity, String property, MetaClass metaClass, MetaProperty metaProperty) { if (metadataTools.isEmbeddable(metaClass) || (entity instanceof BaseGenericIdEntity && BaseEntityInternalAccess.isNew((BaseGenericIdEntity) entity))) { //TODO eude: // this is workaround for unexpected EclipseLink behaviour when PersistenceUnitUtil.isLoaded // throws exception if embedded entity refers to persistent entity return checkIsLoadedWithGetter(entity, property); } if (!metadataTools.isPersistent(metaClass)) { return checkIsLoadedWithGetter(entity, property); } EntityManagerFactory jpaEmf = ((PersistenceImpl) persistence).getJpaEmf(metadataTools.getStoreName(metaClass)); return jpaEmf.getPersistenceUnitUtil().isLoaded(entity, property); } }
/** * Determine whether the given property is not persistent. Inverse of {@link #isPersistent(MetaProperty)}. */ public boolean isNotPersistent(MetaProperty metaProperty) { return !isPersistent(metaProperty); }
@PostConstruct protected void init() { this.storeName = metadata.getTools().getStoreName(metaClass); }
protected void setupAutowiredColumns(EntityDataGridItems<E> entityDataGridSource) { Collection<MetaPropertyPath> paths = getAutowiredProperties(entityDataGridSource); for (MetaPropertyPath metaPropertyPath : paths) { MetaProperty property = metaPropertyPath.getMetaProperty(); if (!property.getRange().getCardinality().isMany() && !metadataTools.isSystem(property)) { String propertyName = property.getName(); ColumnImpl<E> column = new ColumnImpl<>(propertyName, metaPropertyPath, this); MetaClass propertyMetaClass = metadataTools.getPropertyEnclosingMetaClass(metaPropertyPath); column.setCaption(messageTools.getPropertyCaption(propertyMetaClass, propertyName)); addColumn(column); } } }
public TreeMap<String, String> getEntityMetaClasses() { TreeMap<String, String> options = new TreeMap<>(); for (MetaClass metaClass : metadata.getTools().getAllPersistentMetaClasses()) { if (metadata.getExtendedEntities().getExtendedClass(metaClass) == null) { MetaClass originalMetaClass = metadata.getExtendedEntities().getOriginalOrThisMetaClass(metaClass); String originalName = originalMetaClass.getName(); Class javaClass = originalMetaClass.getJavaClass(); if (metadata.getTools().hasCompositePrimaryKey(metaClass) && !HasUuid.class.isAssignableFrom(javaClass)) { continue; } String caption = messages.getMessage(javaClass, javaClass.getSimpleName()) + " (" + originalName + ")"; options.put(caption, originalName); } } return options; }
protected void addColumnInternal(ColumnImpl<E> column, int index) { Grid.Column<E, ?> gridColumn = component.addColumn( new EntityValueProvider<>(column.getPropertyPath())); columns.put(column.getId(), column); columnsOrder.add(index, column); final String caption = StringUtils.capitalize(column.getCaption() != null ? column.getCaption() : generateColumnCaption(column)); column.setCaption(caption); if (column.getOwner() == null) { column.setOwner(this); } MetaPropertyPath propertyPath = column.getPropertyPath(); if (propertyPath != null) { MetaProperty metaProperty = propertyPath.getMetaProperty(); MetaClass propertyMetaClass = metadataTools.getPropertyEnclosingMetaClass(propertyPath); String storeName = metadataTools.getStoreName(propertyMetaClass); if (metadataTools.isLob(metaProperty) && !persistenceManagerClient.supportsLobSortingAndFiltering(storeName)) { column.setSortable(false); } } setupGridColumnProperties(gridColumn, column); component.setColumnOrder(getColumnOrder()); }
/** * @param metaClass of entity * @return metaProperty name for loading entity from database by primary key stored in the database */ public String getPrimaryKeyForLoadingEntity(MetaClass metaClass) { if (HasUuid.class.isAssignableFrom(metaClass.getJavaClass())) { MetaProperty primaryKeyProperty = metadata.getTools().getPrimaryKeyProperty(metaClass); if (primaryKeyProperty != null && !UUID.class.isAssignableFrom(primaryKeyProperty.getJavaType())) return "uuid"; } return metadata.getTools().getPrimaryKeyName(metaClass); } }
protected boolean isPropertyAllowed(MetaClass metaClass, MetaProperty property) { return security.isEntityAttrPermitted(metaClass, property.getName(), EntityAttrAccess.VIEW) && !metadataTools.isSystemLevel(property) // exclude system level attributes && (metadataTools.isPersistent(property) // exclude transient properties || (metadataTools.getCrossDataStoreReferenceIdProperty(storeName, property) != null)) && !defaultExcludedProps.contains(property.getName()) && !(byte[].class.equals(property.getJavaType())) && !property.getRange().getCardinality().isMany(); // exclude ToMany }
public void setEntity(Entity entity) { this.entity = entity; this.metaClass = metadata.getSession().getClass(entity.getClass()); primaryKeyName = metadata.getTools().getPrimaryKeyName(metaClass); String storeName = metadata.getTools().getStoreName(metaClass); entityManager = persistence.getEntityManager(storeName == null ? Stores.MAIN : storeName); }
/** * @return true if passed MetaClass has a composite primary key */ public boolean hasCompositePrimaryKey(MetaClass metaClass) { MetaProperty primaryKeyProperty = getPrimaryKeyProperty(metaClass); return primaryKeyProperty != null && primaryKeyProperty.getAnnotatedElement().isAnnotationPresent(EmbeddedId.class); }
/** * Use com.haulmont.cuba.core.global.MetadataTools#copy instead */ @Deprecated public static Instance copy(Instance source) { return AppBeans.get(MetadataTools.NAME, MetadataTools.class).copy(source); }
protected void loadAllPersistentClasses() { List<MetaClass> metaClasses = new ArrayList<>(metadata.getTools().getAllPersistentMetaClasses()); metaClassLookup.setOptionsList(metaClasses); }