package org.korsakow.domain;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Hashtable;
import java.util.List;
import org.korsakow.domain.interf.IKeyword;
import org.korsakow.domain.interf.IRule;
import org.korsakow.ide.DataRegistry;
import org.korsakow.ide.resources.ResourceType;
public class Rule extends Resource implements IRule
{
private final Hashtable<String, Object> abstractProperties = new Hashtable<String, Object>();
private String ruleType;
private Long triggerTime = 0L;
private List<IRule> rules = new ArrayList<IRule>();
Rule()
{
this(DataRegistry.getMaxId(), 0);
}
Rule(String ruleType)
{
this(DataRegistry.getMaxId(), 0);
this.ruleType = ruleType;
}
Rule(long id, long version, String ruleType, Collection<IKeyword> keywords, String name, long triggerTime, List<IRule> rules)
{
super(id, version, name, keywords);
this.ruleType = ruleType;
this.triggerTime = triggerTime;
setRules(rules);
}
Rule(long id, long version)
{
super(id, version);
}
public String getType()
{
return ResourceType.RULE.getTypeId();
}
public Collection<String> getDynamicPropertyIds()
{
return abstractProperties.keySet();
}
public Object getDynamicProperty(String id)
{
return abstractProperties.get(id);
}
public void setDynamicProperty(String id, Object value)
{
if (id == null)
throw new NullPointerException();
if (value == null)
abstractProperties.remove(id);
else
abstractProperties.put(id, value);
}
public Class getPropertyType(String id)
{
return Object.class;
}
public String getRuleType()
{
return ruleType;
}
public void setRuleType(String type) {
ruleType = type;
}
public long getTriggerTime()
{
return triggerTime;
}
public void setTriggerTime(long triggerTime)
{
this.triggerTime = triggerTime;
}
public void setRules(List<IRule> rules)
{
this.rules = rules;
}
public List<IRule> getRules()
{
return rules;
}
}