package captor.projectsystem.projectvalidator;
import javax.swing.tree.DefaultMutableTreeNode;
import captor.modelsystem.Model;
import captor.windowsystem.main.locationPane.util.FormPath;
/**
* @author Kicho
*
*/
public class FirstLayerValidator extends LayerValidator {
public FirstLayerValidator(Model model) {
super(model);
}
protected boolean validate2(DefaultMutableTreeNode root) {
//recursive call
int count = root.getChildCount();
if ( count > 0 ) {
for ( int i = 0; i < count; i++ ) {
DefaultMutableTreeNode aux = (DefaultMutableTreeNode) root.getChildAt(i);
if ( !validate2(aux) )
return false;
}
}
int level = root.getLevel();
//root level. this node is the root of the graph
if ( level == 0 ) {
return true;
}
//this node is a interaction node (i.e. Interaction1 or Interaction2 and so on)
//and has no childs. This is ilegal under de law.
if ( level == 1 && count == 0 ) {
showErrorTitle();
model.getGui().getGuiView().setErrorView("The interaction: " + root + " has no child.<br>Please insert a form in this node or remove this interaction.<br>");
return false;
}
//interaction node
if ( level == 1 ) {
return true;
}
FormPath pp = null;
Object o = root.getUserObject();
if ( o == null ) {
showErrorTitle();
model.getGui().getGuiView().setErrorView("The form: " + root + " has not been initialized.<br>To build your project, please load some variant in this pattern or try to delete it.<br>");
return false;
}
if ( o instanceof FormPath ) {
pp = (FormPath) o;
}
else {
//me parece que isso nunca vai acontecer. por�m, vamos tomar cuidado e manter uma valida��o de backup.
//se houver um eclipse solar poderemos remover esse "else" inteiro.
showErrorTitle();
model.getGui().getGuiView().setErrorView("The form: " + root + " has not been correctly initialized.<br>");
return false;
}
//if this node is a group and has no child
if ( pp.getFormType() == null && count == 0 ) {
showErrorTitle();
model.getGui().getGuiView().setErrorView("The interaction: " + root + " has no childs.<br>Please, insert a pattern or remove it.<br>");
return false;
}
//esse n� nao tem card e � um padr�o
if ( pp.getCard() == null && pp.getFormType() != null) {
showErrorTitle();
model.getGui().getGuiView().setErrorView("The form: " + pp.getFullPath() + " has not been initialized.\nTo build your project, please load some variant in this pattern or try to delete it.<br>");
return false;
}
return true;
}
}