Search in sources :

Example 21 with FieldMetadataOverride

use of org.broadleafcommerce.openadmin.dto.override.FieldMetadataOverride in project BroadleafCommerce by BroadleafCommerce.

the class MapFieldMetadataProvider method overrideMapMergeMetadata.

protected FieldMetadataOverride overrideMapMergeMetadata(AdminPresentationMergeOverride merge) {
    FieldMetadataOverride fieldMetadataOverride = new FieldMetadataOverride();
    Map<String, AdminPresentationMergeEntry> overrideValues = getAdminPresentationEntries(merge.mergeEntries());
    for (Map.Entry<String, AdminPresentationMergeEntry> entry : overrideValues.entrySet()) {
        String stringValue = entry.getValue().overrideValue();
        if (entry.getKey().equals(PropertyType.AdminPresentationMap.CURRENCYCODEFIELD)) {
            fieldMetadataOverride.setCurrencyCodeField(stringValue);
        } else if (entry.getKey().equals(PropertyType.AdminPresentationMap.CUSTOMCRITERIA)) {
            fieldMetadataOverride.setCustomCriteria(entry.getValue().stringArrayOverrideValue());
        } else if (entry.getKey().equals(PropertyType.AdminPresentationMap.DELETEENTITYUPONREMOVE)) {
            fieldMetadataOverride.setDeleteEntityUponRemove(StringUtils.isEmpty(stringValue) ? entry.getValue().booleanOverrideValue() : Boolean.parseBoolean(stringValue));
        } else if (entry.getKey().equals(PropertyType.AdminPresentationMap.EXCLUDED)) {
            fieldMetadataOverride.setExcluded(StringUtils.isEmpty(stringValue) ? entry.getValue().booleanOverrideValue() : Boolean.parseBoolean(stringValue));
        } else if (entry.getKey().equals(PropertyType.AdminPresentationMap.FORCEFREEFORMKEYS)) {
            fieldMetadataOverride.setForceFreeFormKeys(StringUtils.isEmpty(stringValue) ? entry.getValue().booleanOverrideValue() : Boolean.parseBoolean(stringValue));
        } else if (entry.getKey().equals(PropertyType.AdminPresentationMap.FRIENDLYNAME)) {
            fieldMetadataOverride.setFriendlyName(stringValue);
        } else if (entry.getKey().equals(PropertyType.AdminPresentationMap.ISSIMPLEVALUE)) {
            fieldMetadataOverride.setSimpleValue(UnspecifiedBooleanType.valueOf(stringValue));
        } else if (entry.getKey().equals(PropertyType.AdminPresentationMap.KEYCLASS)) {
            fieldMetadataOverride.setKeyClass(stringValue);
        } else if (entry.getKey().equals(PropertyType.AdminPresentationMap.KEYPROPERTYFRIENDLYNAME)) {
            fieldMetadataOverride.setKeyPropertyFriendlyName(stringValue);
        } else if (entry.getKey().equals(PropertyType.AdminPresentationMap.MAPKEYVALUEPROPERTY)) {
            fieldMetadataOverride.setMapKeyValueProperty(stringValue);
        } else if (entry.getKey().equals(PropertyType.AdminPresentationMap.KEYS)) {
            if (!ArrayUtils.isEmpty(entry.getValue().keys())) {
                String[][] keys = new String[entry.getValue().keys().length][2];
                for (int j = 0; j < keys.length; j++) {
                    keys[j][0] = entry.getValue().keys()[j].keyName();
                    keys[j][1] = entry.getValue().keys()[j].friendlyKeyName();
                }
                fieldMetadataOverride.setKeys(keys);
            }
        } else if (entry.getKey().equals(PropertyType.AdminPresentationMap.MANYTOFIELD)) {
            fieldMetadataOverride.setManyToField(stringValue);
        } else if (entry.getKey().equals(PropertyType.AdminPresentationMap.MAPKEYOPTIONENTITYCLASS)) {
            fieldMetadataOverride.setMapKeyOptionEntityClass(stringValue);
        } else if (entry.getKey().equals(PropertyType.AdminPresentationMap.MAPKEYOPTIONENTITYDISPLAYFIELD)) {
            fieldMetadataOverride.setMapKeyOptionEntityDisplayField(stringValue);
        } else if (entry.getKey().equals(PropertyType.AdminPresentationMap.MAPKEYOPTIONENTITYVALUEFIELD)) {
            fieldMetadataOverride.setMapKeyOptionEntityValueField(stringValue);
        } else if (entry.getKey().equals(PropertyType.AdminPresentationMap.MEDIAFIELD)) {
            fieldMetadataOverride.setMediaField(stringValue);
        } else if (entry.getKey().equals(PropertyType.AdminPresentationMap.OPERATIONTYPES)) {
            AdminPresentationOperationTypes operationType = entry.getValue().operationTypes();
            fieldMetadataOverride.setAddType(operationType.addType());
            fieldMetadataOverride.setRemoveType(operationType.removeType());
            fieldMetadataOverride.setUpdateType(operationType.updateType());
            fieldMetadataOverride.setFetchType(operationType.fetchType());
            fieldMetadataOverride.setInspectType(operationType.inspectType());
        } else if (entry.getKey().equals(PropertyType.AdminPresentationMap.ORDER)) {
            fieldMetadataOverride.setOrder(StringUtils.isEmpty(stringValue) ? entry.getValue().intOverrideValue() : Integer.parseInt(stringValue));
        } else if (entry.getKey().equals(PropertyType.AdminPresentationMap.READONLY)) {
            fieldMetadataOverride.setReadOnly(StringUtils.isEmpty(stringValue) ? entry.getValue().booleanOverrideValue() : Boolean.parseBoolean(stringValue));
        } else if (entry.getKey().equals(PropertyType.AdminPresentationMap.SECURITYLEVEL)) {
            fieldMetadataOverride.setSecurityLevel(stringValue);
        } else if (entry.getKey().equals(PropertyType.AdminPresentationMap.SHOWIFPROPERTY)) {
            fieldMetadataOverride.setShowIfProperty(stringValue);
        } else if (entry.getKey().equals(PropertyType.AdminPresentationMap.SHOWIFFIELDEQUALS)) {
            processShowIfFieldEqualsAnnotations(entry.getValue().showIfFieldEquals(), fieldMetadataOverride);
        } else if (entry.getKey().equals(PropertyType.AdminPresentationMap.TAB)) {
            fieldMetadataOverride.setTab(stringValue);
        } else if (entry.getKey().equals(PropertyType.AdminPresentationMap.TABORDER)) {
            fieldMetadataOverride.setTabOrder(StringUtils.isEmpty(stringValue) ? entry.getValue().intOverrideValue() : Integer.parseInt(stringValue));
        } else if (entry.getKey().equals(PropertyType.AdminPresentationMap.USESERVERSIDEINSPECTIONCACHE)) {
            fieldMetadataOverride.setUseServerSideInspectionCache(StringUtils.isEmpty(stringValue) ? entry.getValue().booleanOverrideValue() : Boolean.parseBoolean(stringValue));
        } else if (entry.getKey().equals(PropertyType.AdminPresentationMap.VALUECLASS)) {
            fieldMetadataOverride.setValueClass(stringValue);
        } else if (entry.getKey().equals(PropertyType.AdminPresentationMap.VALUEPROPERTYFRIENDLYNAME)) {
            fieldMetadataOverride.setValuePropertyFriendlyName(stringValue);
        } else {
            if (LOG.isDebugEnabled()) {
                LOG.debug("Unrecognized type: " + entry.getKey() + ". Not setting on map field.");
            }
        }
    }
    return fieldMetadataOverride;
}
Also used : AdminPresentationMergeEntry(org.broadleafcommerce.common.presentation.override.AdminPresentationMergeEntry) AdminPresentationOperationTypes(org.broadleafcommerce.common.presentation.AdminPresentationOperationTypes) HashMap(java.util.HashMap) Map(java.util.Map) AdminPresentationMap(org.broadleafcommerce.common.presentation.AdminPresentationMap) FieldMetadataOverride(org.broadleafcommerce.openadmin.dto.override.FieldMetadataOverride)

Example 22 with FieldMetadataOverride

use of org.broadleafcommerce.openadmin.dto.override.FieldMetadataOverride in project BroadleafCommerce by BroadleafCommerce.

the class MapFieldsFieldMetadataProvider method addMetadata.

@Override
public MetadataProviderResponse addMetadata(AddFieldMetadataRequest addMetadataRequest, Map<String, FieldMetadata> metadata) {
    if (!canHandleFieldForConfiguredMetadata(addMetadataRequest, metadata)) {
        return MetadataProviderResponse.NOT_HANDLED;
    }
    AdminPresentationMapFields annot = addMetadataRequest.getRequestedField().getAnnotation(AdminPresentationMapFields.class);
    for (AdminPresentationMapField mapField : annot.mapDisplayFields()) {
        if (mapField.fieldPresentation().fieldType() == SupportedFieldType.UNKNOWN) {
            throw new IllegalArgumentException("fieldType property on AdminPresentation must be set for AdminPresentationMapField");
        }
        FieldMetadataOverride override = constructBasicMetadataOverride(mapField.fieldPresentation(), null, null);
        override.setFriendlyName(mapField.fieldPresentation().friendlyName());
        FieldInfo myInfo = new FieldInfo();
        myInfo.setName(addMetadataRequest.getRequestedField().getName() + FieldManager.MAPFIELDSEPARATOR + mapField.fieldName());
        buildBasicMetadata(addMetadataRequest.getParentClass(), addMetadataRequest.getTargetClass(), metadata, myInfo, override, addMetadataRequest.getDynamicEntityDao());
        setClassOwnership(addMetadataRequest.getParentClass(), addMetadataRequest.getTargetClass(), metadata, myInfo);
        BasicFieldMetadata basicFieldMetadata = (BasicFieldMetadata) metadata.get(myInfo.getName());
        if (!mapField.targetClass().equals(Void.class)) {
            if (mapField.targetClass().isInterface()) {
                throw new IllegalArgumentException("targetClass on @AdminPresentationMapField must be a concrete class");
            }
            basicFieldMetadata.setMapFieldValueClass(mapField.targetClass().getName());
        }
        if (!StringUtils.isEmpty(mapField.manyToField())) {
            basicFieldMetadata.setManyToField(mapField.manyToField());
        }
        AdminPresentationMap annotMap = addMetadataRequest.getRequestedField().getAnnotation(AdminPresentationMap.class);
        if (annotMap != null && !StringUtils.isEmpty(annotMap.toOneTargetProperty())) {
            basicFieldMetadata.setToOneTargetProperty(annotMap.toOneTargetProperty());
        } else if (!StringUtils.isEmpty(annot.toOneTargetProperty())) {
            basicFieldMetadata.setToOneTargetProperty(annot.toOneTargetProperty());
        }
        if (annotMap != null && !StringUtils.isEmpty(annotMap.toOneParentProperty())) {
            basicFieldMetadata.setToOneParentProperty(annotMap.toOneParentProperty());
        } else if (!StringUtils.isEmpty(annot.toOneParentProperty())) {
            basicFieldMetadata.setToOneParentProperty(annot.toOneParentProperty());
        }
        String mapKeyValueProperty = "key";
        if (StringUtils.isNotBlank(myInfo.getMapKey())) {
            mapKeyValueProperty = myInfo.getMapKey();
        }
        if (annotMap != null) {
            if (StringUtils.isNotBlank(annotMap.mapKeyValueProperty())) {
                mapKeyValueProperty = annotMap.mapKeyValueProperty();
            }
        }
        basicFieldMetadata.setMapKeyValueProperty(mapKeyValueProperty);
    }
    return MetadataProviderResponse.HANDLED;
}
Also used : AdminPresentationMapField(org.broadleafcommerce.common.presentation.AdminPresentationMapField) AdminPresentationMapFields(org.broadleafcommerce.common.presentation.AdminPresentationMapFields) BasicFieldMetadata(org.broadleafcommerce.openadmin.dto.BasicFieldMetadata) FieldMetadataOverride(org.broadleafcommerce.openadmin.dto.override.FieldMetadataOverride) FieldInfo(org.broadleafcommerce.openadmin.server.dao.FieldInfo) AdminPresentationMap(org.broadleafcommerce.common.presentation.AdminPresentationMap) FieldMetadataOverride(org.broadleafcommerce.openadmin.dto.override.FieldMetadataOverride)

Example 23 with FieldMetadataOverride

use of org.broadleafcommerce.openadmin.dto.override.FieldMetadataOverride in project BroadleafCommerce by BroadleafCommerce.

the class AdornedTargetCollectionFieldMetadataProvider method overrideViaXml.

@Override
public MetadataProviderResponse overrideViaXml(OverrideViaXmlRequest overrideViaXmlRequest, Map<String, FieldMetadata> metadata) {
    Map<String, MetadataOverride> overrides = getTargetedOverride(overrideViaXmlRequest.getDynamicEntityDao(), overrideViaXmlRequest.getRequestedConfigKey(), overrideViaXmlRequest.getRequestedCeilingEntity());
    if (overrides != null) {
        for (String propertyName : overrides.keySet()) {
            MetadataOverride localMetadata = overrides.get(propertyName);
            if (localMetadata instanceof FieldMetadataOverride) {
                FieldMetadataOverride localFieldMetadata = (FieldMetadataOverride) localMetadata;
                for (String key : metadata.keySet()) {
                    if (key.equals(propertyName)) {
                        try {
                            if (metadata.get(key) instanceof AdornedTargetCollectionMetadata) {
                                AdornedTargetCollectionMetadata serverMetadata = (AdornedTargetCollectionMetadata) metadata.get(key);
                                if (serverMetadata.getTargetClass() != null) {
                                    Class<?> targetClass = Class.forName(serverMetadata.getTargetClass());
                                    Class<?> parentClass = null;
                                    if (serverMetadata.getOwningClass() != null) {
                                        parentClass = Class.forName(serverMetadata.getOwningClass());
                                    }
                                    String fieldName = serverMetadata.getFieldName();
                                    Field field = overrideViaXmlRequest.getDynamicEntityDao().getFieldManager().getField(targetClass, fieldName);
                                    Map<String, FieldMetadata> temp = new HashMap<String, FieldMetadata>(1);
                                    temp.put(field.getName(), serverMetadata);
                                    FieldInfo info = buildFieldInfo(field);
                                    buildAdornedTargetCollectionMetadata(parentClass, targetClass, temp, info, localFieldMetadata, overrideViaXmlRequest.getDynamicEntityDao());
                                    serverMetadata = (AdornedTargetCollectionMetadata) temp.get(field.getName());
                                    metadata.put(key, serverMetadata);
                                    if (overrideViaXmlRequest.getParentExcluded()) {
                                        if (LOG.isDebugEnabled()) {
                                            LOG.debug("applyAdornedTargetCollectionMetadataOverrides:Excluding " + key + "because parent is marked as excluded.");
                                        }
                                        serverMetadata.setExcluded(true);
                                    }
                                }
                            }
                        } catch (Exception e) {
                            throw new RuntimeException(e);
                        }
                    }
                }
            }
        }
    }
    return MetadataProviderResponse.HANDLED;
}
Also used : FieldMetadata(org.broadleafcommerce.openadmin.dto.FieldMetadata) HashMap(java.util.HashMap) FieldMetadataOverride(org.broadleafcommerce.openadmin.dto.override.FieldMetadataOverride) NoSuchBeanDefinitionException(org.springframework.beans.factory.NoSuchBeanDefinitionException) Field(java.lang.reflect.Field) FieldMetadataOverride(org.broadleafcommerce.openadmin.dto.override.FieldMetadataOverride) MetadataOverride(org.broadleafcommerce.openadmin.dto.override.MetadataOverride) AdornedTargetCollectionMetadata(org.broadleafcommerce.openadmin.dto.AdornedTargetCollectionMetadata) FieldInfo(org.broadleafcommerce.openadmin.server.dao.FieldInfo) AdminPresentationAdornedTargetCollectionOverride(org.broadleafcommerce.common.presentation.override.AdminPresentationAdornedTargetCollectionOverride) FieldMetadataOverride(org.broadleafcommerce.openadmin.dto.override.FieldMetadataOverride) AdminPresentationMergeOverride(org.broadleafcommerce.common.presentation.override.AdminPresentationMergeOverride) MetadataOverride(org.broadleafcommerce.openadmin.dto.override.MetadataOverride)

Example 24 with FieldMetadataOverride

use of org.broadleafcommerce.openadmin.dto.override.FieldMetadataOverride in project BroadleafCommerce by BroadleafCommerce.

the class AdornedTargetCollectionFieldMetadataProvider method buildAdminPresentationAdornedTargetCollectionOverride.

protected void buildAdminPresentationAdornedTargetCollectionOverride(String prefix, Boolean isParentExcluded, Map<String, FieldMetadata> mergedProperties, Map<String, AdminPresentationAdornedTargetCollectionOverride> presentationAdornedTargetCollectionOverrides, String propertyName, String key, DynamicEntityDao dynamicEntityDao) {
    AdminPresentationAdornedTargetCollectionOverride override = presentationAdornedTargetCollectionOverrides.get(propertyName);
    if (override != null) {
        AdminPresentationAdornedTargetCollection annot = override.value();
        if (annot != null) {
            String testKey = prefix + key;
            if ((testKey.startsWith(propertyName + ".") || testKey.equals(propertyName)) && annot.excluded()) {
                FieldMetadata metadata = mergedProperties.get(key);
                if (LOG.isDebugEnabled()) {
                    LOG.debug("buildAdminPresentationAdornedTargetCollectionOverride:Excluding " + key + "because an override annotation declared " + testKey + "to be excluded");
                }
                metadata.setExcluded(true);
                return;
            }
            if ((testKey.startsWith(propertyName + ".") || testKey.equals(propertyName)) && !annot.excluded()) {
                FieldMetadata metadata = mergedProperties.get(key);
                if (!isParentExcluded) {
                    if (LOG.isDebugEnabled()) {
                        LOG.debug("buildAdminPresentationAdornedTargetCollectionOverride:Showing " + key + "because an override annotation declared " + testKey + " to not be excluded");
                    }
                    metadata.setExcluded(false);
                }
            }
            if (!(mergedProperties.get(key) instanceof AdornedTargetCollectionMetadata)) {
                return;
            }
            AdornedTargetCollectionMetadata serverMetadata = (AdornedTargetCollectionMetadata) mergedProperties.get(key);
            if (serverMetadata.getTargetClass() != null) {
                try {
                    Class<?> targetClass = Class.forName(serverMetadata.getTargetClass());
                    Class<?> parentClass = null;
                    if (serverMetadata.getOwningClass() != null) {
                        parentClass = Class.forName(serverMetadata.getOwningClass());
                    }
                    String fieldName = serverMetadata.getFieldName();
                    Field field = dynamicEntityDao.getFieldManager().getField(targetClass, fieldName);
                    FieldMetadataOverride localMetadata = constructAdornedTargetCollectionMetadataOverride(annot);
                    // do not include the previous metadata - we want to construct a fresh metadata from the override annotation
                    Map<String, FieldMetadata> temp = new HashMap<String, FieldMetadata>(1);
                    FieldInfo info = buildFieldInfo(field);
                    buildAdornedTargetCollectionMetadata(parentClass, targetClass, temp, info, localMetadata, dynamicEntityDao);
                    AdornedTargetCollectionMetadata result = (AdornedTargetCollectionMetadata) temp.get(field.getName());
                    result.setInheritedFromType(serverMetadata.getInheritedFromType());
                    result.setAvailableToTypes(serverMetadata.getAvailableToTypes());
                    mergedProperties.put(key, result);
                    if (isParentExcluded) {
                        if (LOG.isDebugEnabled()) {
                            LOG.debug("buildAdminPresentationAdornedTargetCollectionOverride:Excluding " + key + "because the parent was excluded");
                        }
                        serverMetadata.setExcluded(true);
                    }
                } catch (Exception e) {
                    throw new RuntimeException(e);
                }
            }
        }
    }
}
Also used : AdminPresentationAdornedTargetCollection(org.broadleafcommerce.common.presentation.AdminPresentationAdornedTargetCollection) FieldMetadata(org.broadleafcommerce.openadmin.dto.FieldMetadata) HashMap(java.util.HashMap) FieldMetadataOverride(org.broadleafcommerce.openadmin.dto.override.FieldMetadataOverride) NoSuchBeanDefinitionException(org.springframework.beans.factory.NoSuchBeanDefinitionException) AdminPresentationAdornedTargetCollectionOverride(org.broadleafcommerce.common.presentation.override.AdminPresentationAdornedTargetCollectionOverride) Field(java.lang.reflect.Field) AdornedTargetCollectionMetadata(org.broadleafcommerce.openadmin.dto.AdornedTargetCollectionMetadata) FieldInfo(org.broadleafcommerce.openadmin.server.dao.FieldInfo)

Example 25 with FieldMetadataOverride

use of org.broadleafcommerce.openadmin.dto.override.FieldMetadataOverride in project BroadleafCommerce by BroadleafCommerce.

the class AdornedTargetCollectionFieldMetadataProvider method addMetadata.

@Override
public MetadataProviderResponse addMetadata(AddFieldMetadataRequest addMetadataRequest, Map<String, FieldMetadata> metadata) {
    if (!canHandleFieldForConfiguredMetadata(addMetadataRequest, metadata)) {
        return MetadataProviderResponse.NOT_HANDLED;
    }
    AdminPresentationAdornedTargetCollection annot = addMetadataRequest.getRequestedField().getAnnotation(AdminPresentationAdornedTargetCollection.class);
    FieldInfo info = buildFieldInfo(addMetadataRequest.getRequestedField());
    FieldMetadataOverride override = constructAdornedTargetCollectionMetadataOverride(annot);
    buildAdornedTargetCollectionMetadata(addMetadataRequest.getParentClass(), addMetadataRequest.getTargetClass(), metadata, info, override, addMetadataRequest.getDynamicEntityDao());
    setClassOwnership(addMetadataRequest.getParentClass(), addMetadataRequest.getTargetClass(), metadata, info);
    return MetadataProviderResponse.HANDLED;
}
Also used : AdminPresentationAdornedTargetCollection(org.broadleafcommerce.common.presentation.AdminPresentationAdornedTargetCollection) FieldInfo(org.broadleafcommerce.openadmin.server.dao.FieldInfo) FieldMetadataOverride(org.broadleafcommerce.openadmin.dto.override.FieldMetadataOverride) AdminPresentationAdornedTargetCollectionOverride(org.broadleafcommerce.common.presentation.override.AdminPresentationAdornedTargetCollectionOverride) FieldMetadataOverride(org.broadleafcommerce.openadmin.dto.override.FieldMetadataOverride) AdminPresentationMergeOverride(org.broadleafcommerce.common.presentation.override.AdminPresentationMergeOverride) MetadataOverride(org.broadleafcommerce.openadmin.dto.override.MetadataOverride)

Aggregations

FieldMetadataOverride (org.broadleafcommerce.openadmin.dto.override.FieldMetadataOverride)27 FieldInfo (org.broadleafcommerce.openadmin.server.dao.FieldInfo)17 HashMap (java.util.HashMap)16 MetadataOverride (org.broadleafcommerce.openadmin.dto.override.MetadataOverride)14 FieldMetadata (org.broadleafcommerce.openadmin.dto.FieldMetadata)13 Field (java.lang.reflect.Field)12 AdminPresentationMergeOverride (org.broadleafcommerce.common.presentation.override.AdminPresentationMergeOverride)12 Map (java.util.Map)8 NoSuchBeanDefinitionException (org.springframework.beans.factory.NoSuchBeanDefinitionException)6 AdminPresentationMap (org.broadleafcommerce.common.presentation.AdminPresentationMap)5 BasicFieldMetadata (org.broadleafcommerce.openadmin.dto.BasicFieldMetadata)5 LinkedHashMap (java.util.LinkedHashMap)4 AdminPresentationAdornedTargetCollectionOverride (org.broadleafcommerce.common.presentation.override.AdminPresentationAdornedTargetCollectionOverride)4 AdminPresentationCollectionOverride (org.broadleafcommerce.common.presentation.override.AdminPresentationCollectionOverride)4 AdminPresentationMapOverride (org.broadleafcommerce.common.presentation.override.AdminPresentationMapOverride)4 AdminPresentationMergeEntry (org.broadleafcommerce.common.presentation.override.AdminPresentationMergeEntry)4 AdminPresentationMergeOverrides (org.broadleafcommerce.common.presentation.override.AdminPresentationMergeOverrides)4 AdminPresentationOverride (org.broadleafcommerce.common.presentation.override.AdminPresentationOverride)4 AdminPresentationOverrides (org.broadleafcommerce.common.presentation.override.AdminPresentationOverrides)4 AdminPresentationOperationTypes (org.broadleafcommerce.common.presentation.AdminPresentationOperationTypes)3