/* * #%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.service.persistence.module.provider; import org.broadleafcommerce.common.web.BroadleafRequestContext; import org.broadleafcommerce.openadmin.dto.FieldMetadata; import org.broadleafcommerce.openadmin.dto.Property; import org.broadleafcommerce.openadmin.server.service.persistence.module.criteria.FilterMapping; import org.broadleafcommerce.openadmin.server.service.persistence.module.provider.request.AddFilterPropertiesRequest; import org.broadleafcommerce.openadmin.server.service.persistence.module.provider.request.AddSearchMappingRequest; import org.broadleafcommerce.openadmin.server.service.persistence.module.provider.request.ExtractValueRequest; import org.broadleafcommerce.openadmin.server.service.persistence.module.provider.request.PopulateValueRequest; import org.broadleafcommerce.openadmin.server.service.type.FieldProviderResponse; import org.springframework.context.MessageSource; import org.springframework.core.Ordered; import java.io.Serializable; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.List; import java.util.Map; /** * @author Jeff Fischer */ public class FieldPersistenceProviderAdapter extends AbstractFieldPersistenceProvider { @Override public FieldProviderResponse addSearchMapping(AddSearchMappingRequest addSearchMappingRequest, List<FilterMapping> filterMappings) { return FieldProviderResponse.NOT_HANDLED; } @Override public FieldProviderResponse populateValue(PopulateValueRequest populateValueRequest, Serializable instance) { return FieldProviderResponse.NOT_HANDLED; } @Override public FieldProviderResponse extractValue(ExtractValueRequest extractValueRequest, Property property) { return FieldProviderResponse.NOT_HANDLED; } @Override public FieldProviderResponse filterProperties(AddFilterPropertiesRequest addFilterPropertiesRequest, Map<String, FieldMetadata> properties) { return FieldProviderResponse.NOT_HANDLED; } @Override public int getOrder() { return Ordered.LOWEST_PRECEDENCE; } protected boolean checkDirtyState(PopulateValueRequest request, Object instance, Object checkValue) throws Exception { boolean dirty = !(instance == null && checkValue == null) && (instance == null || checkValue == null); if (!dirty) { Object value = request.getFieldManager().getFieldValue(instance, request.getProperty().getName()); if (checkValue instanceof String) { checkValue = ((String) checkValue).trim(); } if (value instanceof String) { value = ((String) value).trim(); } if (value instanceof BigDecimal) { BigDecimal origValue = (BigDecimal) value; BigDecimal newValue = (BigDecimal) checkValue; //set the scale of one of the BigDecimal values to the larger of the two scales if (newValue.scale() < origValue.scale()) { checkValue = newValue.setScale(origValue.scale(), RoundingMode.UNNECESSARY); } else if (origValue.scale() < newValue.scale()) { value = origValue.setScale(newValue.scale(), RoundingMode.UNNECESSARY); } } dirty = value == null || !value.equals(checkValue); } return dirty; } protected void setNonDisplayableValues(PopulateValueRequest request) { BroadleafRequestContext context = BroadleafRequestContext.getBroadleafRequestContext(); MessageSource messages = context.getMessageSource(); String label = "(" + messages.getMessage("Workflow_not_displayable", null, "Not Displayable", context.getJavaLocale()) + ")"; request.getProperty().setDisplayValue(label); request.getProperty().setOriginalDisplayValue(label); } }