1 16 17 18 package org.apache.commons.betwixt.schema; 19 20 import java.io.PrintStream ; 21 import java.util.Iterator ; 22 23 29 public class SchemaDiff { 30 31 private PrintStream out; 32 33 public SchemaDiff() { 34 this(System.err); 35 } 36 37 public SchemaDiff(PrintStream out) { 38 this.out = out; 39 } 40 41 public void printDifferences(Schema one, Schema two) { 42 for( Iterator it=one.getComplexTypes().iterator();it.hasNext(); ) { 43 GlobalComplexType complexType = (GlobalComplexType)it.next(); 44 if (!two.getComplexTypes().contains(complexType)) { 45 boolean matched = false; 46 for (Iterator otherIter=two.getComplexTypes().iterator(); it.hasNext();) { 47 GlobalComplexType otherType = (GlobalComplexType) otherIter.next(); 48 if (otherType.getName().equals(complexType.getName())) { 49 printDifferences(complexType, otherType); 50 matched = true; 51 break; 52 } 53 } 54 if (!matched) { 55 out.println("Missing Complex type: " + complexType); 56 } 57 } 58 } 59 60 } 61 62 public void printDifferences(GlobalComplexType one, GlobalComplexType two) { 63 out.println("Type " + one + " is not equal to " + two); 64 for (Iterator it = one.getElements().iterator(); it.hasNext();) { 65 Element elementOne = (Element) it.next(); 66 if (!two.getElements().contains(elementOne)) { 67 boolean matched = false; 68 for (Iterator otherIter=two.getElements().iterator(); it.hasNext();) { 69 Element elementTwo = (Element) otherIter.next(); 70 if (elementOne.getName().equals(elementTwo.getName())) { 71 printDifferences(elementOne, elementTwo); 72 matched = true; 73 break; 74 } 75 } 76 if (!matched) { 77 out.println("Missing Element: " + elementOne); 78 } 79 } 80 } 81 for (Iterator it = one.getAttributes().iterator(); it.hasNext();) { 82 Attribute attributeOne = (Attribute) it.next(); 83 if (!two.getAttributes().contains(attributeOne)) { 84 boolean matched = false; 85 for (Iterator otherIter=two.getAttributes().iterator(); it.hasNext();) { 86 Attribute attributeTwo = (Attribute) otherIter.next(); 87 if (attributeTwo.getName().equals(attributeTwo.getName())) { 88 printDifferences(attributeOne, attributeTwo); 89 matched = true; 90 break; 91 } 92 } 93 if (!matched) { 94 out.println("Missing Attribute: " + attributeOne); 95 } 96 } 97 } 98 } 99 100 private void printDifferences(Attribute one , Attribute two) { 101 out.println("Attribute " + one + " is not equals to " + two); 102 } 103 104 private void printDifferences(Element one , Element two) { 105 out.println("Element " + one + " is not equals to " + two); 106 } 107 } 108 | Popular Tags |