1
2
3
4
5
6
7 package org.weda.property.impl;
8
9 import java.util.HashMap;
10 import java.util.List;
11 import java.util.Map;
12 import org.weda.property.Constraint;
13 import org.weda.property.ConstraintsFactory;
14 import org.weda.property.ConstraintsRegistry;
15 import org.weda.property.ConstraintsRegistryException;
16
17 /**
18 *
19 * @author Mikhail Titov
20 */
21 public class ConstraintsRegistryImpl implements ConstraintsRegistry{
22 private List<ConstraintsFactory> constraintsFactories;
23 private Map<String
24
25 public void init() throws ConstraintsRegistryException{
26 if (constraintsFactories.size()>0){
27 constraints = new HashMap<String, Constraint>();
28 for (ConstraintsFactory factory: constraintsFactories){
29 for (Constraint constraint: factory.getConstraints()){
30 Constraint constraint2 =
31 constraints.get(constraint.getId());
32 if (constraint2==null)
33 constraints.put(constraint.getId(), constraint);
34 else
35 throw new ConstraintsRegistryException(
36 String.format(
37 "Two constraints has the same id (%s). " +
38 "Constraints types: (%s), (%s)"
39 , constraint.getId()
40 , constraint2.getClass().getName()
41 , constraint.getClass().getName()));
42 }
43 }
44 }
45 }
46
47 public Constraint getConstraint(String id)
48 throws ConstraintsRegistryException
49 {
50 Constraint constraint = constraints.get(id);
51 if (constraint==null)
52 throw new ConstraintsRegistryException(
53 String.format(
54 "Constraint with id (%s) not found in registry", id));
55 return constraint;
56 }
57
58 public void setConstraintsFactories(
59 List<ConstraintsFactory> constraintsFactories)
60 {
61 this.constraintsFactories = constraintsFactories;
62 }
63
64 }