/* * VerifyHandler.java * * Created on July 17, 2003, 6:26 PM */ package org.jboss.tools.common.verification.vrules.handler; import org.jboss.tools.common.verification.vrules.*; import org.jboss.tools.common.verification.vrules.impl.*; import org.jboss.tools.common.model.*; import org.jboss.tools.common.meta.action.impl.*; import java.util.*; /** * * @author valera */ public abstract class VerifyHandler extends AbstractHandler implements org.jboss.tools.common.model.event.XActionAgent { /** Creates a new instance of VerifyHandler */ public VerifyHandler() { } protected void check(Map entities, VObject vobject, XModel model) { VEntity entity = vobject.getEntity(); List rules = (List)entities.get(entity.getName()); if (rules != null) { for (int i = 0; i < rules.size(); i++) { VRule rule = (VRule)rules.get(i); VAction vaction = rule.getAction(); VResult[] results = vaction.check(vobject); mergeResults(model, rule, vobject, results); } } Iterator itr = entities.keySet().iterator(); boolean found = false; while (itr.hasNext()) { if (entity.isDescendant((String)itr.next())) { found = true; break; } } if (found) { VObject[] c = vobject.getChildren(); for (int i = 0; i < c.length; i++) { check(entities, c[i], model); } } } protected void mergeResults(XModel model, VRule rule, VObject source, VResult[] results) { int sign = VHelper.getManager().getMinSignificance(); //XModelObject manager = model.getRoot().getChildren("VManager")[0]; //XModelObject ruleSetModel = manager.getChildByPath(rule.getRuleSet().getName()); //XModelObject ruleModel = ruleSetModel.getChildByPath(rule.getName()); VResult[] c = rule.getResults(); List<VResult> list = new ArrayList<VResult>(); for (int i = 0; i < c.length; i++) { if (!c[i].getSourceObject().equals(source)) { list.add(c[i]); } } if (results == null || results.length == 0) { model.getOut().println(rule.getName()+": OK: "+source); //$NON-NLS-1$ } else { for (int i = 0; i < results.length; i++) { if (results[i].getSignificance() < sign) continue; list.add(results[i]); //VResultModel resultModel = (VResultModel)model.createModelObject("VResult", new Properties()); //resultModel.setResult(results[i]); //ruleModel.addChild(resultModel); model.getOut().println(rule.getName()+": "+results[i].getMessage()); //$NON-NLS-1$ } } ((VRuleImpl)rule).setResults((VResult[])list.toArray(new VResult[list.size()])); } public void setListener(org.jboss.tools.common.model.event.XActionAgentListener listener) { } public void stopAction() { } }