001/*
002 * #%L
003 * GwtBootstrap3
004 * %%
005 * Copyright (C) 2015 GwtBootstrap3
006 * %%
007 * Licensed under the Apache License, Version 2.0 (the "License");
008 * you may not use this file except in compliance with the License.
009 * You may obtain a copy of the License at
010 * 
011 *      http://www.apache.org/licenses/LICENSE-2.0
012 * 
013 * Unless required by applicable law or agreed to in writing, software
014 * distributed under the License is distributed on an "AS IS" BASIS,
015 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
016 * See the License for the specific language governing permissions and
017 * limitations under the License.
018 * #L%
019 */
020package gwt.material.design.client.base.validator;
021
022import gwt.material.design.client.base.validator.ValidationMessages.Keys;
023
024/**
025 * Decimal min validator. Checks to see if the decimal value is under the minimum value.
026 *
027 * @param <T> the generic type
028 * @author Steven Jardine
029 */
030public class DecimalMinValidator<T extends Number> extends AbstractValidator<T> {
031
032    private Number minValue;
033
034    /**
035     * Constructor.
036     *
037     * @param minValue the min value
038     */
039    public DecimalMinValidator(Number minValue) {
040        super(Keys.DECIMAL_MIN, new Object[]{minValue.toString()});
041        this.minValue = minValue;
042    }
043
044    /**
045     * Constructor.
046     *
047     * @param minValue               the min value
048     * @param invalidMessageOverride the invalid message override
049     */
050    public DecimalMinValidator(Number minValue, String invalidMessageOverride) {
051        super(invalidMessageOverride);
052        this.minValue = minValue;
053    }
054
055    /**
056     * {@inheritDoc}
057     */
058    @Override
059    public int getPriority() {
060        return Priority.MEDIUM;
061    }
062
063    /**
064     * {@inheritDoc}
065     */
066    @Override
067    public boolean isValid(T value) {
068        return value == null || value.doubleValue() >= minValue.doubleValue();
069    }
070}