/*
*
*/
package captor.domainsystem.metamodelvalidator.semanticValidator.parts;
import java.util.Iterator;
import java.util.List;
import java.util.Vector;
import captor.domainsystem.FormType;
import captor.domainsystem.FormsType;
import captor.domainsystem.metamodelvalidator.ValidationResults;
import captor.domainsystem.metamodelvalidator.semanticValidator.SemanticValidatorUtil;
import captor.modelsystem.Model;
/**
* @author Kicho
*
*/
public class PatternsIdsPart extends Part {
public PatternsIdsPart(Model model, ValidationResults vr) {
super(model, vr);
}
public void check(FormsType pts) {
//verifica��o sint�tica semantica
//procurar por dois id's iguais da pau
//procurar por ids nulos
vr.ident();
vr.appendBuffer("Validating all form id's from meta-model.");
vr.dident();
List patternList = pts.getForm();
if ( patternList == null ) {
vr.ident();
vr.newLine();
vr.appendBuffer("There are no forms in the meta-model.");
vr.dident();
vr.setSuccess(false);
return;
}
Vector v = new Vector();
vr.ident();
for(Iterator it1 = patternList.iterator(); it1.hasNext();) {
FormType pt = (FormType) it1.next();
//contem dois ids iguais na LP
if ( contain(v, pt.getId())) {
vr.ident();
vr.newLine();
vr.appendBuffer("- Error : There are two forms with the same id (" + pt.getId() + ") in the meta-model.");
vr.appendBuffer("- Correction: Put an different id on each form in the form language.");
vr.dident();
vr.setSuccess(false);
return;
}
v.add(pt.getId());
SemanticValidatorUtil.validatePatternId(pt.getId(), vr);
if ( !vr.isSuccess() )
return;
}
vr.dident();
vr.ident();
vr.appendBuffer("Validating all form id's - OK.");
vr.newLine();
vr.dident();
}
//-------------------------------------------------------------------------
private boolean contain(Vector v, String id) {
for ( int i = 0; i < v.size(); i++ ) {
String s = (String) v.get(i);
if ( s.equals(id) )
return true;
}
return false;
}
//-------------------------------------------------------------------------
}