View Javadoc

1   /*
2    * ConstraintsRegistryImpl.java
3    *
4    * Created on 25 Июнь 2006 г., 2:44
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/*constraint id*/, Constraint> constraints;
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  }