/**
* VelocityModelHelper.java
*
* @author Charles Groves
*/
package edu.sc.seis.sod.validator.documenter;
import java.io.File;
import edu.sc.seis.sod.validator.model.Choice;
import edu.sc.seis.sod.validator.model.Definition;
import edu.sc.seis.sod.validator.model.Form;
import edu.sc.seis.sod.validator.model.GenitorForm;
import edu.sc.seis.sod.validator.model.Group;
import edu.sc.seis.sod.validator.model.Interleave;
import edu.sc.seis.sod.validator.model.MultigenitorForm;
import edu.sc.seis.sod.validator.model.NamedElement;
public class VelocityModelHelper {
public String getClass(Form f){
String classAttr = "class=\"";
if(f.getMin() == 0){
if(f.getMax() == 1){ classAttr += "zeroToOne"; }
else{ classAttr += "zeroToMany"; }
}else{
if(f.getMax() == 1){
if(f instanceof MultigenitorForm){ classAttr += "one"; }
}else{ classAttr += "oneToMany"; }
}
if(f instanceof MultigenitorForm){
classAttr = appendMultigenitorClass((MultigenitorForm)f, classAttr);
}
return classAttr+"\"";
}
private String appendMultigenitorClass(MultigenitorForm mf, String classAttr) {
if(mf instanceof Choice){ classAttr += "Choice"; }
else if(mf instanceof Interleave){ classAttr += "Interleave"; }
return classAttr;
}
public boolean isMultigen(Form f){ return f instanceof MultigenitorForm; }
public boolean isGen(Form f){ return f instanceof GenitorForm; }
public boolean isChoice(Form f){ return f instanceof Choice; }
public boolean isInterleave(Form f){ return f instanceof Interleave; }
public boolean isGroup(Form f){ return f instanceof Group; }
public int getLen(Object[] array){ return array.length; }
public Object getItem(Object[] array, Integer index){ return array[index.intValue()]; }
public String getName(Object o){
if(o instanceof Definition){ return getDefName((Definition)o); }
else return o.toString();
}
public String getDefName(Object o){
if(o instanceof Definition){
return getDefName((Definition)o);
}
if(o == null ){ return "NULL"; }
else if(o instanceof Form){
return getDefName(SchemaDocumenter.getNearestDef((Form)o));
}
else return o.toString();
}
public String getDefName(Definition d){
if(d.getForm() instanceof NamedElement){
return ((NamedElement)d.getForm()).getName();
}
if(d.getName().equals("")){
String filename = new File(d.getGrammar().getLoc()).getName();
return filename.substring(0, filename.length() - 4) + " Start";
}
return d.getName();
}
public int length(Object[] objs){ return objs.length; }
}