001/* 
002 * JKNIV, SQLegance keeping queries maintainable.
003 * 
004 * Copyright (C) 2017, the original author or authors.
005 *
006 * This library is free software; you can redistribute it and/or
007 * modify it under the terms of the GNU Lesser General Public
008 * License as published by the Free Software Foundation; either
009 * version 2.1 of the License.
010 * 
011 * This library is distributed in the hope that it will be useful,
012 * but WITHOUT ANY WARRANTY; without even the implied warranty of
013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
014 * Lesser General Public License for more details.
015 * 
016 * You should have received a copy of the GNU Lesser General Public
017 * License along with this library; if not, write to the Free Software Foundation, Inc., 
018 * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
019 */
020package net.sf.jkniv.sqlegance.validation;
021
022import java.util.Map;
023
024import net.sf.jkniv.sqlegance.ConstraintException;
025
026public interface Validatory
027{
028    /**
029     * Use validator (JSR 303) to perform validation against domain model
030     * @param params the domain model to validate
031     * @param validateType type of validation
032     * @throws ConstraintException when some constraint is violated
033     */
034    void assertValidate(Object params, ValidateType  validateType);
035
036    /**
037     * Use validator (JSR 303) to perform validation against domain model
038     * @param params the domain model to validate
039     * @param validateGroup type of validation
040     * @throws ConstraintException when some constraint is violated
041     */
042    <T> void assertValidate(Object params, Class<T> validateGroup);
043    
044    /**
045     * Use validator (JSR 303) to perform validation against domain model
046     * @param params the domain model to validate
047     * @param validateType type of validation
048     * @return the pairs field and constraints violated, an empty Map is return when any constraint is violated
049     */
050    Map<String, String> validate(Object params, ValidateType  validateType);
051    
052    /**
053     * Use validator (JSR 303) to perform validation against domain model
054     * @param params the domain model to validate
055     * @param validateGroup type of validation
056     * @return the pairs field and constraints violated, an empty Map is return when any constraint is violated
057     */
058    <T> Map<String, String> validate(Object params, Class<T> validateGroup);
059    
060}