/* * #%L * BroadleafCommerce Open Admin Platform * %% * Copyright (C) 2009 - 2013 Broadleaf Commerce * %% * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * #L% */ package org.broadleafcommerce.openadmin.server.dao.provider.metadata; import org.broadleafcommerce.common.presentation.client.SupportedFieldType; import org.broadleafcommerce.openadmin.dto.BasicFieldMetadata; import org.broadleafcommerce.openadmin.dto.FieldMetadata; import org.broadleafcommerce.openadmin.server.dao.provider.metadata.request.AddMetadataFromFieldTypeRequest; import org.broadleafcommerce.openadmin.server.dao.provider.metadata.request.AddMetadataFromMappingDataRequest; import org.broadleafcommerce.openadmin.server.dao.provider.metadata.request.AddMetadataRequest; import org.broadleafcommerce.openadmin.server.dao.provider.metadata.request.LateStageAddMetadataRequest; import org.broadleafcommerce.openadmin.server.dao.provider.metadata.request.OverrideViaAnnotationRequest; import org.broadleafcommerce.openadmin.server.dao.provider.metadata.request.OverrideViaXmlRequest; import org.broadleafcommerce.openadmin.server.service.type.FieldProviderResponse; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; import java.util.HashMap; import java.util.Map; /** * Adds a new 'passwordConfirm' field to the metadata as well as ensures that the field type for the password field is * actually a password * * @author Phillip Verheyden (phillipuniverse) */ @Component("blPasswordFieldMetadataProvider") @Scope("prototype") public class PasswordFieldMetadataProvider extends AbstractFieldMetadataProvider implements FieldMetadataProvider { @Override public int getOrder() { return FieldMetadataProvider.BASIC; } @Override public FieldProviderResponse addMetadataFromFieldType(AddMetadataFromFieldTypeRequest addMetadataFromFieldTypeRequest, Map<String, FieldMetadata> metadata) { if (addMetadataFromFieldTypeRequest.getPresentationAttribute() instanceof BasicFieldMetadata && SupportedFieldType.PASSWORD.equals(((BasicFieldMetadata) addMetadataFromFieldTypeRequest.getPresentationAttribute()).getExplicitFieldType())) { //build the metadata for the password field addMetadataFromFieldTypeRequest.getDynamicEntityDao().getDefaultFieldMetadataProvider().addMetadataFromFieldType(addMetadataFromFieldTypeRequest, metadata); ((BasicFieldMetadata)addMetadataFromFieldTypeRequest.getPresentationAttribute()).setFieldType(SupportedFieldType.PASSWORD); //clone the password field and add in a custom one BasicFieldMetadata confirmMd = (BasicFieldMetadata) addMetadataFromFieldTypeRequest.getPresentationAttribute().cloneFieldMetadata(); confirmMd.setFieldName("passwordConfirm"); confirmMd.setFriendlyName("AdminUserImpl_Admin_Password_Confirm"); confirmMd.setExplicitFieldType(SupportedFieldType.PASSWORD_CONFIRM); confirmMd.setValidationConfigurations(new HashMap<String, Map<String,String>>()); metadata.put("passwordConfirm", confirmMd); return FieldProviderResponse.HANDLED; } else { return FieldProviderResponse.NOT_HANDLED; } } @Override public FieldProviderResponse addMetadata(AddMetadataRequest addMetadataRequest, Map<String, FieldMetadata> metadata) { return FieldProviderResponse.NOT_HANDLED; } @Override public FieldProviderResponse lateStageAddMetadata(LateStageAddMetadataRequest addMetadataRequest, Map<String, FieldMetadata> metadata) { return FieldProviderResponse.NOT_HANDLED; } @Override public FieldProviderResponse overrideViaAnnotation(OverrideViaAnnotationRequest overrideViaAnnotationRequest, Map<String, FieldMetadata> metadata) { return FieldProviderResponse.NOT_HANDLED; } @Override public FieldProviderResponse overrideViaXml(OverrideViaXmlRequest overrideViaXmlRequest, Map<String, FieldMetadata> metadata) { return FieldProviderResponse.NOT_HANDLED; } @Override public FieldProviderResponse addMetadataFromMappingData(AddMetadataFromMappingDataRequest addMetadataFromMappingDataRequest, FieldMetadata metadata) { return FieldProviderResponse.NOT_HANDLED; } }