/* * VManagerImpl.java * * Created on July 14, 2003, 11:37 AM */ package org.jboss.tools.common.verification.vrules.impl; import org.jboss.tools.common.verification.vrules.*; import java.beans.*; /** * * @author valera */ public class VManagerImpl implements VManager { protected VRuleSet[] ruleSets; protected VModel model; protected int significance; protected VMessageFormat format; protected PropertyChangeSupport propertyChangeSupport; /** Creates a new instance of VManagerImpl */ public VManagerImpl() { propertyChangeSupport = new PropertyChangeSupport(this); } public VModel getModel() { return model; } public void setModel(VModel model) { this.model = model; } public VRuleSet[] getRuleSets() { return ruleSets; } public void setRuleSets(VRuleSet[] ruleSets) { if(this.ruleSets == ruleSets) return; deactivateRuleSets(this.ruleSets); this.ruleSets = ruleSets; activateRuleSets(ruleSets); } public void loadRuleSet(VRuleSet ruleSet) { int length = this.ruleSets.length; VRuleSet[] newSets = new VRuleSet[length+1]; System.arraycopy(this.ruleSets, 0, newSets, 0, length); newSets[length] = ruleSet; this.ruleSets = newSets; activateRuleSet(ruleSet); if(ruleSet != null) activateRuleSets(ruleSet.getRuleSets()); } public void unloadRuleSet(VRuleSet ruleSet) { int length = ruleSets.length; for (int i = 0; i < length; i++) { if (ruleSets[i] == ruleSet) { deactivateRuleSet(ruleSet); VRuleSet[] newSets = new VRuleSet[length-1]; System.arraycopy(this.ruleSets, 0, newSets, 0, i); System.arraycopy(this.ruleSets, i + 1, newSets, i, length - i - 1); this.ruleSets = newSets; return; } } } public void updateRuleSet(VRuleSet ruleSet) { unloadRuleSet(ruleSet); // do something loadRuleSet(ruleSet); } private void activateRuleSets(VRuleSet[] ruleSets) { if(ruleSets == null) return; for (int i = 0; i < ruleSets.length; i++) { activateRuleSet(ruleSets[i]); activateRuleSets(ruleSets[i].getRuleSets()); } } private void activateRuleSet(VRuleSet ruleSet) { VRule[] rules = ruleSet.getRules(); for (int i = 0; i < rules.length; i++) { VEntity[] entities = rules[i].getEntities(); for (int j = 0; j < entities.length; j++) { if(entities[j] != null) entities[j].addRule(rules[i]); } } } private void deactivateRuleSets(VRuleSet[] ruleSets) { if(ruleSets == null) return; for (int i = 0; i < ruleSets.length; i++) { deactivateRuleSet(ruleSets[i]); deactivateRuleSets(ruleSets[i].getRuleSets()); } } private void deactivateRuleSet(VRuleSet ruleSet) { VRule[] rules = ruleSet.getRules(); for (int i = 0; i < rules.length; i++) { VEntity[] entities = rules[i].getEntities(); for (int j = 0; j < entities.length; j++) { if(entities[j] != null) entities[j].removeRule(rules[i]); } } } public int getMinSignificance() { return significance; } public void setMinSignificance(int significance) { int oldSignificance = this.significance; this.significance = significance; propertyChangeSupport.firePropertyChange("minSignificance", oldSignificance, significance); //$NON-NLS-1$ } public VMessageFormat getMessageFormat() { return format; } public void setMessageFormat(VMessageFormat format) { this.format = format; } public VTask createTask(VObject object) { return new VTaskImpl(this, object); } public VTask createTask(VObject object, VRule[] rules) { return new VTaskImpl(object, rules); } public void addPropertyChangeListener(PropertyChangeListener listener) { propertyChangeSupport.addPropertyChangeListener(listener); } public void removePropertyChangeListener(PropertyChangeListener listener) { propertyChangeSupport.removePropertyChangeListener(listener); } }