1 package org.sat4j.csp.xml;
2 import org.xml.sax.Attributes;
3
4 class Domain extends Element {
5
6 private static final String INTERVAL_SEPARATOR = "..";
7
8 private StringBuilder allValues;
9
10
11 public Domain(ICSPCallback out,String tagName) {
12 super(out,tagName);
13 }
14
15 public void startElement(Attributes att) {
16 int nbValues = -1;
17 String tmpValues = att.getValue("nbValues");
18 if (tmpValues != null)
19 nbValues = Integer.parseInt(tmpValues);
20 getCB().beginDomain(att.getValue("name"), nbValues);
21 allValues = new StringBuilder();
22 }
23
24 public void endElement() {
25 if (allValues != null) {
26 String[] tokens = allValues.toString().trim().split("\\s+");
27 int index;
28 for (String token : tokens) {
29 if (!token.equals("")) {
30 index = token.indexOf(INTERVAL_SEPARATOR);
31 if (index > -1)
32 getCB().addDomainValue(Integer.parseInt(token.substring(0,index)),
33 Integer.parseInt(token.substring(index+2)));
34 else
35 getCB().addDomainValue(Integer.parseInt(token));
36 }
37 }
38 }
39 getCB().endDomain();
40 }
41
42 public void characters(String allValues) {
43 this.allValues.append(allValues);
44 }
45
46 }