/**
* ModelUtil.java
*
* @author Created by Omnicore CodeGuide
*/
package edu.sc.seis.sod.validator.model;
import edu.sc.seis.sod.validator.ModelWalker;
public class ModelUtil {
public static String toString(Form f) {
return toString(f, true);
}
public static String toString(Form[] f) {
StringBuffer buf = new StringBuffer();
for(int i = 0; i < f.length; i++) {
buf.append(toString(f[i], false) + ' ');
}
return buf.toString();
}
public static String toString(Form f, boolean continueFollowing) {
if(f instanceof Attribute) {
Attribute a = (Attribute)f;
return "Attribute: " + a.getName();
} else if(f instanceof MultigenitorForm) {
StringBuffer buf = new StringBuffer();
if(f instanceof Choice) {
buf.append("Choice");
} else if(f instanceof Interleave) {
buf.append("Interleave");
} else if(f instanceof Group) {
buf.append("Group");
} else {
buf.append("Unknown MultigenitorForm");
}
MultigenitorForm c = (MultigenitorForm)f;
Form[] kids = c.getChildren();
if(continueFollowing) {
buf.append(": [");
buf.append(toString(kids));
buf.append("]");
}
return buf.toString();
} else if(f instanceof NamedElement) {
NamedElement n = (NamedElement)f;
return "NamedElement: " + n.getName();
} else if(f instanceof Value) {
return "Value";
} else if(f instanceof Data) {
return "Data";
} else if(f instanceof NotAllowed) {
return "NotAllowed";
} else if(f instanceof Text) {
return "Text";
} else if(f instanceof Empty) {
return "Empty";
} else return f.toString();
}
public static String getLineageString(Form f){
StringBuffer buf = new StringBuffer();
Form[] lineage = ModelWalker.getLineage(f);
for(int i = 0; i < lineage.length; i++) {
if (i > 0){
buf.append("is child of ");
}
buf.append(toString(lineage[i]) + '\n');
}
return buf.toString();
}
}