package captor.projectsystem.validate;
import javax.swing.JOptionPane;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreePath;
import captor.lib.intl.MyIntl;
import captor.lib.util.StringUtil;
import captor.modelsystem.Model;
import captor.modelsystem.Project;
import captor.projectsystem.projectvalidator.FirstLayerValidator;
import captor.projectsystem.projectvalidator.SecondLayerValidator;
import captor.projectsystem.xmlgen.CompilerException;
import captor.windowsystem.main.bodyPane.FITBodyCard;
import captor.windowsystem.main.locationPane.util.CustomRenderer;
import captor.windowsystem.main.locationPane.util.FormPath;
/**
* @author Kicho
*
*/
public class ValidateProject {
private Model model;
public ValidateProject(Model model) {
this.model = model;
}
public boolean validate() {
if ( model.getProject() == null ) {
JOptionPane.showMessageDialog(model.getGui().getCaptorWindow(), MyIntl.MSG54);
return false;
}
if ( model.getProject().getStatus() == Project.CLOSED ) {
JOptionPane.showMessageDialog(model.getGui().getCaptorWindow(), MyIntl.MSG54);
return false;
}
//iniciar o processo com a valida��o
model.getGui().getGuiView().setClearAllViews(true);
if ( model.getGui().getGuiControl().getNodeError() != null ) {
//select the error node
TreePath tp = new TreePath(model.getGui().getGuiControl().getNodeError().getPath());
model.getGui().getGuiControl().setNodeError(null);
model.getGui().getTree().setSelectionPath(tp);
//updating all icons
CustomRenderer customRenderer = new CustomRenderer(model);
model.getGui().getTree().setCellRenderer(customRenderer);
}
//valida��o da primeira camada
FirstLayerValidator fld = new FirstLayerValidator(model);
if ( !fld.validate() ) {
model.getGui().getGuiView().setErrorView("");
JOptionPane.showMessageDialog(model.getGui().getCaptorWindow(), MyIntl.MSG55);
return false;
}
//valida��o da segunda camada
SecondLayerValidator fld2 = new SecondLayerValidator(model);
if ( !fld2.validate() ) {
model.getGui().getGuiView().setErrorView("");
JOptionPane.showMessageDialog(model.getGui().getCaptorWindow(), MyIntl.MSG56);
return false;
}
if ( !thirdLayerValidate() ) {
JOptionPane.showMessageDialog(model.getGui().getCaptorWindow(), MyIntl.MSG56);
return false;
}
return true;
}
//-------------------------------------------------------------------------
private boolean thirdLayerValidate() {
JTree tree = model.getGui().getTree();
DefaultMutableTreeNode root = (DefaultMutableTreeNode)tree.getModel().getRoot();
try {
for ( int i = 0; i < root.getChildCount(); i++ ) {
DefaultMutableTreeNode node = (DefaultMutableTreeNode) root.getChildAt(i);
for ( int j = 0; j < node.getChildCount(); j++ ) {
boolean flag = thirdLayerValidate2((DefaultMutableTreeNode) node.getChildAt(j));
if ( !flag )
return false;
}
}
}
catch(CompilerException e) {
return false;
}
return true;
}
//-------------------------------------------------------------------------
private boolean thirdLayerValidate2(DefaultMutableTreeNode root) throws CompilerException {
FormPath pp = (FormPath) root.getUserObject();
if ( pp != null ) {
FITBodyCard ife = pp.getCard();
if ( ife != null ) {
if ( !ife.validateAllFields() ) {
model.getGui().getGuiView().setErrorView(MyIntl.VE_VALIDATE_PROJECT_1);
model.getGui().getGuiView().setErrorView(StringUtil.formatMessage(MyIntl.VE_VALIDATE_PROJECT_2, pp.getFullPath()));
model.getGui().getGuiView().setErrorView(MyIntl.VE_VALIDATE_PROJECT_3);
model.getGui().getGuiView().setErrorView("");
model.getGui().getGuiView().setErrorView(StringUtil.formatMessage(MyIntl.VE_VALIDATE_PROJECT_4, ife.getErrorMsg()));
return false;
}
int count = root.getChildCount();
if ( count > 0 ) {
for ( int i = 0; i < count; i++ ) {
DefaultMutableTreeNode aux = (DefaultMutableTreeNode) root.getChildAt(i);
if ( !thirdLayerValidate2(aux) )
return false;
}
}
}
}
return true;
}
}