/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package eu.aniketos.spec;
import java.util.Iterator;
import org.jdom.Element;
/**
*
* @author Administrator
*/
public abstract class Path {
public final static String sequence_tag = "sequence";
public final static String choice_tag = "choice";
public final static String parallel_tag = "parallel";
public final static String tryaction_tag = "tryaction";
public Path() {}
public abstract Element toElement();
public static Path generatePath(Element e) throws PolicyFormatException {
Iterator<Element> iter = e.getContent().iterator();
String name = e.getName();
if(name.equals(Path.sequence_tag)) {
return new Sequence(generatePath(iter.next()), generatePath(iter.next()));
}
else if(name.equals(Path.choice_tag)) {
return new Choice(generatePath(iter.next()), generatePath(iter.next()));
}
else if(name.equals(Path.parallel_tag)) {
return new Parallel(generatePath(iter.next()), generatePath(iter.next()));
}
else if(name.equals(Path.tryaction_tag)) {
return new Perform(iter.next());
}
else {
throw new PolicyFormatException("Wrong Path Name: "+name);
}
}
}