1 22 23 package org.xquark.schema.validation; 24 25 import org.xquark.schema.*; 26 27 public class ContentIteratorFactory { 28 private static final String RCSRevision = "$Revision: 1.1 $"; 29 private static final String RCSName = "$Name: $"; 30 31 public static ContentIterator createIterator(Particle particle, ContentReporter reporter) 32 { 33 ContentIteratorFactory.Visitor visitor = new ContentIteratorFactory.Visitor(particle); 34 try { 35 ((SchemaVisitable)particle.getTerm()).accept(visitor); 36 } 37 catch (SchemaException ex) { 38 throw new RuntimeException (ex.getMessage()); 39 } 40 ContentIterator result = visitor.getResult(); 41 result.setContentReporter(reporter); 42 return result; 43 } 44 45 public static ContentIterator createIterator(Particle particle) { 46 return createIterator(particle, null); 47 } 48 49 static class Visitor extends DefaultSchemaVisitor { 50 private static final String RCSRevision = "$Revision: 1.1 $"; 51 private static final String RCSName = "$Name: $"; 52 private ContentIterator result = null; 53 private Particle particle; 54 55 Visitor(Particle particle) { 56 this.particle = particle; 57 } 58 59 ContentIterator getResult() { return result; } 60 61 public void visit(ElementDeclaration decl) { 62 result = new ElementContentIterator(particle); 63 } 64 public void visit(SequenceModelGroup group) { 65 result = new SequenceContentIterator(particle); 66 } 67 public void visit(ChoiceModelGroup group) { 68 result = new ChoiceContentIterator(particle); 69 } 70 public void visit(AllModelGroup group) { 71 result = new AllContentIterator(particle); 72 } 73 public void visit(Wildcard wildcard) { 74 result = new WildcardContentIterator(particle); 75 } 76 } 77 78 } 79 | Popular Tags |