1 /* 2 * #%L 3 * Nuiton Validator 4 * %% 5 * Copyright (C) 2013 - 2014 Code Lutin, Tony Chemit 6 * %% 7 * This program is free software: you can redistribute it and/or modify 8 * it under the terms of the GNU Lesser General Public License as 9 * published by the Free Software Foundation, either version 3 of the 10 * License, or (at your option) any later version. 11 * 12 * This program is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Lesser Public License for more details. 16 * 17 * You should have received a copy of the GNU General Lesser Public 18 * License along with this program. If not, see 19 * <http://www.gnu.org/licenses/lgpl-3.0.html>. 20 * #L% 21 */ 22 package org.nuiton.validator; 23 24 import java.io.Serializable; 25 import java.util.Collections; 26 import java.util.Map; 27 import java.util.Set; 28 29 /** 30 * Represents the model of a {@link NuitonValidator}. 31 * 32 * This model describing properties of a validator : 33 * <ul> 34 * <li>{@link #type} : the type of object which can be validated by the validator</li> 35 * <li>{@link #context} : the context of validation, if no context is required then the context is {@code null}. 36 * <li>{@link #scopes} : the scopes of validation (see {@link NuitonValidatorScope})</li> 37 * <li>{@link #fields} : the fields that can be validated by the validator</li> 38 * </ul> 39 * 40 * @author Tony Chemit - chemit@codelutin.com 41 * @since 2.0 42 */ 43 public class NuitonValidatorModel<O> implements Serializable { 44 45 private static final long serialVersionUID = 1L; 46 47 /** Type of object to validate */ 48 protected Class<O> type; 49 50 /** Context of validation (can be {@code null}, for no context). */ 51 protected String context; 52 53 /** Set of scopes that can be validated for the type and context */ 54 protected Set<NuitonValidatorScope> scopes; 55 56 /** Set of fields that can be validated for the type and context */ 57 protected Map<NuitonValidatorScope, String[]> fields; 58 59 public NuitonValidatorModel(Class<O> type, 60 String context, 61 Set<NuitonValidatorScope> scopes, 62 Map<NuitonValidatorScope, String[]> fields) { 63 this.type = type; 64 this.context = context; 65 this.scopes = Collections.unmodifiableSet(scopes); 66 this.fields = Collections.unmodifiableMap(fields); 67 } 68 69 public Class<O> getType() { 70 return type; 71 } 72 73 public String getContext() { 74 return context; 75 } 76 77 public Set<NuitonValidatorScope> getScopes() { 78 return scopes; 79 } 80 81 public Map<NuitonValidatorScope, String[]> getFields() { 82 return fields; 83 } 84 }