/*
* VEntityImpl.java
*
* Created on July 11, 2003, 6:56 PM
*/
package org.jboss.tools.common.verification.vrules.layer;
import org.jboss.tools.common.verification.vrules.*;
import org.jboss.tools.common.verification.vrules.plugin.VerificationPlugin;
import org.jboss.tools.common.meta.*;
import org.jboss.tools.common.model.plugin.ModelPlugin;
import java.util.*;
/**
*
* @author valera
*/
public class VEntityImpl implements VEntity {
private XModelMetaData meta;
private String entityName;
private XModelEntity modelEntity;
private VModelImpl model;
private List<VRule> rules;
/** Creates a new instance of VEntityImpl */
public VEntityImpl(XModelMetaData meta, String entityName, VModelImpl model) {
this.meta = meta;
this.entityName = entityName;
this.model = model;
this.rules = new ArrayList<VRule>();
}
public String getName() {
return entityName;
}
public VEntity[] getChildren() {
XChild[] c = getModelEntity().getChildren();
VEntity[] children = new VEntity[c.length];
for (int i = 0; i < c.length; i++) {
children[i] = model.getEntity(c[i].getName());
}
return children;
}
public VRule[] getRules() {
return (VRule[])rules.toArray(new VRule[rules.size()]);
}
public void addRule(VRule rule) {
if(rules.contains(rule)) return;
rules.add(rule);
XModelEntity e = getModelEntity();
if(e != null) model.createRuleActionInh(getModelEntity(), rule);
}
public void removeRule(VRule rule) {
model.removeRuleActionInh(getModelEntity(), rule);
rules.remove(rule);
}
public void clearRules() {
for (int i = 0; i < rules.size(); i++) {
VRule rule = (VRule)rules.get(i);
model.removeRuleActionInh(getModelEntity(), rule);
}
rules.clear();
}
public boolean isDescendant(String entity) {
return meta.getParentInfo().isDescendant(entity, entityName);
}
public XModelEntity getModelEntity() {
if(modelEntity == null) {
modelEntity = meta.getEntity(entityName);
if(modelEntity == null) {
VerificationPlugin.getPluginLog().logInfo("VModelImpl:Cannot find entity " + entityName); //$NON-NLS-1$
}
}
return modelEntity;
}
public boolean equals(Object o) {
if (o instanceof VEntityImpl) {
return ((VEntityImpl)o).entityName.equals(this.entityName);
}
return false;
}
public int hashCode() {
return entityName.hashCode();
}
}