protected boolean isEmbeddedProperty(AbstractConditionDescriptor item) { if (item instanceof PropertyConditionDescriptor) { MetaProperty metaProperty = ((PropertyConditionDescriptor) item).getMetaProperty(); if (metaProperty != null && metadata.getTools().isEmbedded(metaProperty)) { return true; } } return false; }
protected List<ManagedField> getManagedFields(MetaProperty embeddedProperty, String fqnPrefix, String localePrefix) { List<ManagedField> managedFields = new ArrayList<>(); MetaClass metaClass = embeddedProperty.getRange().asClass(); for (MetaProperty metaProperty : metaClass.getProperties()) { if (isManagedAttribute(metaClass, metaProperty)) { String fqn = fqnPrefix + "." + metaProperty.getName(); String localeName = localePrefix + " " + messageTools.getPropertyCaption(metaClass, metaProperty.getName()); if (!metadataTools.isEmbedded(metaProperty)) { managedFields.add(new ManagedField(fqn, metaProperty, localeName, fqnPrefix)); } else { List<ManagedField> nestedFields = getManagedFields(metaProperty, fqn, localeName); if (nestedFields.size() > 0) { managedEmbeddedProperties.add(fqn); } managedFields.addAll(nestedFields); } } } return managedFields; }
public void addProperty(String name) { MetaPropertyPath propertyPath = metaClass.getPropertyPath(name); if (propertyPath == null) throw new RuntimeException("Property " + name + " doesn't exist for entity " + metaClass.getName()); if (propertyPath.getMetaProperties().length > 1 && !propertyPath.getRange().isClass() && !AppBeans.get(MetadataTools.class).isEmbedded(propertyPath.getMetaProperties()[0])) throw new RuntimeException("Property " + name + " must be an entity (" + metaClass.getName() + ")"); properties.put(name, propertyPath.getRange().isClass()); }
protected void createEmbedded(Entity entity) { MetaClass metaClass = getClassNN(entity.getClass()); for (MetaProperty property : metaClass.getProperties()) { if (property.getRange().isClass() && tools.isEmbedded(property)) { EmbeddedParameters embeddedParameters = property.getAnnotatedElement().getAnnotation(EmbeddedParameters.class); if (embeddedParameters != null && !embeddedParameters.nullAllowed()) { MetaClass embeddableMetaClass = property.getRange().asClass(); Entity embeddableEntity = create(embeddableMetaClass); entity.setValue(property.getName(), embeddableEntity); } } } }
if (isManagedAttribute(metaClass, metaProperty)) { String propertyCaption = messageTools.getPropertyCaption(metaClass, metaProperty.getName()); if (!metadataTools.isEmbedded(metaProperty)) { managedFields.add(new ManagedField(metaProperty.getName(), metaProperty, propertyCaption, null));
/** * Recursively instantiates the embedded properties. * E.g. embedded properties of the embedded property will also be instantiated. * * @param metaClass meta class of the entity * @param item entity instance */ protected void createEmbeddedFields(MetaClass metaClass, Entity item, String fqnPrefix) { for (MetaProperty metaProperty : metaClass.getProperties()) { String fqn = metaProperty.getName(); if (StringUtils.isNotEmpty(fqnPrefix)) { fqn = fqnPrefix + "." + fqn; } if (managedEmbeddedProperties.contains(fqn) && metadataTools.isEmbedded(metaProperty)) { MetaClass embeddedMetaClass = metaProperty.getRange().asClass(); Entity embedded = item.getValue(metaProperty.getName()); if (embedded == null) { embedded = metadata.create(embeddedMetaClass); item.setValue(metaProperty.getName(), embedded); } createEmbeddedFields(embeddedMetaClass, embedded, fqn); } } }
protected void createNestedEmbeddedDatasources(Datasource masterDs, MetaClass metaClass, String fqnPrefix) { for (MetaProperty metaProperty : metaClass.getProperties()) { if (MetaProperty.Type.ASSOCIATION == metaProperty.getType() || MetaProperty.Type.COMPOSITION == metaProperty.getType()) { String fqn = metaProperty.getName(); if (StringUtils.isNotEmpty(fqnPrefix)) { fqn = fqnPrefix + "." + fqn; } if (managedEmbeddedProperties.contains(fqn) && metadataTools.isEmbedded(metaProperty)) { MetaClass propertyMetaClass = metaProperty.getRange().asClass(); @SuppressWarnings("unchecked") NestedDatasource<Entity> propertyDs = new EmbeddedDatasourceImpl(); propertyDs.setup(fqn + "Ds", masterDs, metaProperty.getName()); propertyDs.setAllowCommit(false); createNestedEmbeddedDatasources(propertyDs, propertyMetaClass, fqn); datasources.put(fqn, propertyDs); dsContext.register(propertyDs); } } } }
MetaProperty metaProperty = metaClass.getProperty(property); MetadataTools metadataTools = AppBeans.get(MetadataTools.NAME); isEmbedded = metadataTools.isEmbedded(metaProperty);
if (metadataTools.isEmbedded(metaProperty)) { entity.setValue(propertyName, readEmbeddedEntity(propertyValue.getAsJsonObject(), metaProperty)); } else {
protected void ensureEmbeddedPropertyCreated(Entity item, String propertyPath) { if (!StringUtils.contains(propertyPath, ".")) { return; } MetaPropertyPath path = metaClass.getPropertyPath(propertyPath); if (path != null) { Entity currentItem = item; for (MetaProperty property : path.getMetaProperties()) { if (metadataTools.isEmbedded(property)) { Object currentItemValue = currentItem.getValue(property.getName()); if (currentItemValue == null) { Entity newItem = metadata.create(property.getRange().asClass()); currentItem.setValue(property.getName(), newItem); currentItem = newItem; } else { currentItem = (Entity) currentItemValue; } } else { break; } } } }
@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))); } } } }
if (srcProperty.getRange().isClass() && !metadataTools.isEmbedded(srcProperty)) { if (!metadataTools.isOwningSide(srcProperty)) continue; } else if (metadataTools.isEmbedded(srcProperty)) { Entity srcRef = (Entity) value; Entity destRef = dest.getValue(name);
case COMPOSITION: View propView; if (!metadataTools.isEmbedded(metaProperty)) { propView = viewRepository.getView(metaProperty.getRange().asClass(), View.MINIMAL); } else {
case COMPOSITION: View propView; if (!metadataTools.isEmbedded(metaProperty)) { propView = viewRepository.getView(metaProperty.getRange().asClass(), View.MINIMAL);
/** * Should be called before merging an entity. * * @param entity detached entity */ public void beforeMerge(Entity entity) { if (!config.getEntityAttributePermissionChecking()) { return; } checkRequiredAttributes(entity); applySecurityToFetchGroup(entity); //apply fetch group constraints to embedded for (MetaProperty metaProperty : entity.getMetaClass().getProperties()) { String name = metaProperty.getName(); if (metadataTools.isEmbedded(metaProperty) && entityStates.isLoaded(entity, name)) { Entity embedded = entity.getValue(name); checkRequiredAttributes(embedded); applySecurityToFetchGroup(embedded); } } }
Entity managedRef = internalMerge(srcRef, mergedSet); ((AbstractInstance) dstEntity).setValue(propertyName, managedRef, false); if (getMetadataTools().isEmbedded(property)) { EmbeddedPropertyChangeListener listener = new EmbeddedPropertyChangeListener(dstEntity); managedRef.addPropertyChangeListener(listener);
protected View createFullView(MetaClass metaClass) { View view = new View(metaClass.getJavaClass()); for (MetaProperty metaProperty : metaClass.getProperties()) { if (metadataTools.isEmbedded(metaProperty)) { view.addProperty(metaProperty.getName(), createFullView(metaProperty.getRange().asClass())); } else if (isReferenceField(metaProperty)) { view.addProperty(metaProperty.getName(), viewRepository.getView(metaProperty.getRange().asClass(), View.MINIMAL)); } else if (isDataField(metaProperty)) { view.addProperty(metaProperty.getName()); } } return view; }
for (MetaProperty property : metaProperties) { if (allowLogProperty(property, null)) { if (metadata.getTools().isEmbedded(property)) { MetaClass embeddedMetaClass = property.getRange().asClass(); for (MetaProperty embeddedProperty : embeddedMetaClass.getProperties()) {
String metaPropertyClassName = metaPropertyClass.getName(); if (metadata.getTools().isEmbedded(metaProperty)) { View embeddedViewWithRelations = createEmbeddedView(metaPropertyClass); view.addProperty(metaProperty.getName(), embeddedViewWithRelations);
userFriendlyName = messageTools.getPropertyCaption(metaClass, prop.getName()); boolean isEmbedded = metadataTools.isEmbedded(prop); MetaProperty.Type type = prop.getType(); Class<?> javaType = prop.getJavaType();