Search in sources :

Example 26 with FieldMetadataOverride

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

the class AdornedTargetCollectionFieldMetadataProvider method overrideViaAnnotation.

@Override
public MetadataProviderResponse overrideViaAnnotation(OverrideViaAnnotationRequest overrideViaAnnotationRequest, Map<String, FieldMetadata> metadata) {
    if (!canHandleAnnotationOverride(overrideViaAnnotationRequest, metadata)) {
        return MetadataProviderResponse.NOT_HANDLED;
    }
    Map<String, AdminPresentationAdornedTargetCollectionOverride> presentationAdornedTargetCollectionOverrides = new HashMap<String, AdminPresentationAdornedTargetCollectionOverride>();
    AdminPresentationOverrides myOverrides = overrideViaAnnotationRequest.getRequestedEntity().getAnnotation(AdminPresentationOverrides.class);
    if (myOverrides != null) {
        for (AdminPresentationAdornedTargetCollectionOverride myOverride : myOverrides.adornedTargetCollections()) {
            presentationAdornedTargetCollectionOverrides.put(myOverride.name(), myOverride);
        }
    }
    for (String propertyName : presentationAdornedTargetCollectionOverrides.keySet()) {
        for (String key : metadata.keySet()) {
            if (key.startsWith(propertyName)) {
                buildAdminPresentationAdornedTargetCollectionOverride(overrideViaAnnotationRequest.getPrefix(), overrideViaAnnotationRequest.getParentExcluded(), metadata, presentationAdornedTargetCollectionOverrides, propertyName, key, overrideViaAnnotationRequest.getDynamicEntityDao());
            }
        }
    }
    AdminPresentationMergeOverrides myMergeOverrides = overrideViaAnnotationRequest.getRequestedEntity().getAnnotation(AdminPresentationMergeOverrides.class);
    if (myMergeOverrides != null) {
        for (AdminPresentationMergeOverride override : myMergeOverrides.value()) {
            String propertyName = override.name();
            Map<String, FieldMetadata> loopMap = new HashMap<String, FieldMetadata>();
            loopMap.putAll(metadata);
            for (Map.Entry<String, FieldMetadata> entry : loopMap.entrySet()) {
                if (entry.getKey().startsWith(propertyName) || StringUtils.isEmpty(propertyName)) {
                    FieldMetadata targetMetadata = entry.getValue();
                    if (targetMetadata instanceof AdornedTargetCollectionMetadata) {
                        AdornedTargetCollectionMetadata serverMetadata = (AdornedTargetCollectionMetadata) targetMetadata;
                        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 = overrideViaAnnotationRequest.getDynamicEntityDao().getFieldManager().getField(targetClass, fieldName);
                                Map<String, FieldMetadata> temp = new HashMap<String, FieldMetadata>(1);
                                temp.put(field.getName(), serverMetadata);
                                FieldInfo info = buildFieldInfo(field);
                                FieldMetadataOverride fieldMetadataOverride = overrideAdornedTargetMergeMetadata(override);
                                if (serverMetadata.getExcluded() != null && serverMetadata.getExcluded() && (fieldMetadataOverride.getExcluded() == null || fieldMetadataOverride.getExcluded())) {
                                    continue;
                                }
                                buildAdornedTargetCollectionMetadata(parentClass, targetClass, temp, info, fieldMetadataOverride, overrideViaAnnotationRequest.getDynamicEntityDao());
                                serverMetadata = (AdornedTargetCollectionMetadata) temp.get(field.getName());
                                metadata.put(entry.getKey(), serverMetadata);
                            } catch (Exception e) {
                                throw new RuntimeException(e);
                            }
                        }
                    }
                }
            }
        }
    }
    return MetadataProviderResponse.HANDLED;
}
Also used : AdminPresentationOverrides(org.broadleafcommerce.common.presentation.override.AdminPresentationOverrides) 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) AdminPresentationMergeOverride(org.broadleafcommerce.common.presentation.override.AdminPresentationMergeOverride) Field(java.lang.reflect.Field) AdminPresentationMergeOverrides(org.broadleafcommerce.common.presentation.override.AdminPresentationMergeOverrides) HashMap(java.util.HashMap) Map(java.util.Map) 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 27 with FieldMetadataOverride

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

the class AdornedTargetCollectionFieldMetadataProvider method constructAdornedTargetCollectionMetadataOverride.

protected FieldMetadataOverride constructAdornedTargetCollectionMetadataOverride(AdminPresentationAdornedTargetCollection adornedTargetCollection) {
    if (adornedTargetCollection != null) {
        FieldMetadataOverride override = new FieldMetadataOverride();
        override.setGridVisibleFields(adornedTargetCollection.gridVisibleFields());
        override.setSelectizeVisibleField(adornedTargetCollection.selectizeVisibleField());
        override.setIgnoreAdornedProperties(adornedTargetCollection.ignoreAdornedProperties());
        override.setMaintainedAdornedTargetFields(adornedTargetCollection.maintainedAdornedTargetFields());
        override.setParentObjectIdProperty(adornedTargetCollection.parentObjectIdProperty());
        override.setParentObjectProperty(adornedTargetCollection.parentObjectProperty());
        override.setSortAscending(adornedTargetCollection.sortAscending());
        override.setSortProperty(adornedTargetCollection.sortProperty());
        override.setTargetObjectIdProperty(adornedTargetCollection.targetObjectIdProperty());
        override.setTargetObjectProperty(adornedTargetCollection.targetObjectProperty());
        override.setJoinEntityClass(adornedTargetCollection.joinEntityClass());
        override.setCustomCriteria(adornedTargetCollection.customCriteria());
        override.setUseServerSideInspectionCache(adornedTargetCollection.useServerSideInspectionCache());
        override.setExcluded(adornedTargetCollection.excluded());
        override.setFriendlyName(adornedTargetCollection.friendlyName());
        override.setReadOnly(adornedTargetCollection.readOnly());
        override.setOrder(adornedTargetCollection.order());
        override.setTab(adornedTargetCollection.tab());
        override.setTabOrder(adornedTargetCollection.tabOrder());
        override.setGroup(adornedTargetCollection.group());
        override.setSecurityLevel(adornedTargetCollection.securityLevel());
        override.setAddType(adornedTargetCollection.operationTypes().addType());
        override.setFetchType(adornedTargetCollection.operationTypes().fetchType());
        override.setRemoveType(adornedTargetCollection.operationTypes().removeType());
        override.setUpdateType(adornedTargetCollection.operationTypes().updateType());
        override.setInspectType(adornedTargetCollection.operationTypes().inspectType());
        override.setShowIfProperty(adornedTargetCollection.showIfProperty());
        override.setCurrencyCodeField(adornedTargetCollection.currencyCodeField());
        override.setAdornedTargetAddMethodType(adornedTargetCollection.addType());
        override.setLazyFetch(adornedTargetCollection.lazyFetch());
        override.setManualFetch(adornedTargetCollection.manualFetch());
        if (adornedTargetCollection.showIfFieldEquals().length != 0) {
            processShowIfFieldEqualsAnnotations(adornedTargetCollection.showIfFieldEquals(), override);
        }
        return override;
    }
    throw new IllegalArgumentException("AdminPresentationAdornedTargetCollection annotation not found on field.");
}
Also used : FieldMetadataOverride(org.broadleafcommerce.openadmin.dto.override.FieldMetadataOverride)

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