/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package automenta.netention;
import java.util.HashMap;
import java.util.Map;
import javax.persistence.Entity;
import javax.persistence.Table;
import org.vaadin.appfoundation.persistence.data.AbstractPojo;
/**
*
* @author seh
*/
@Entity
@Table(name = "appschema")
public class Schema extends AbstractPojo {
/** propertyID -> properties */
private Map<String, Property> properties = new HashMap();
/** patternID -> patterns */
private Map<String, Pattern> patterns = new HashMap();
public void setProperties(Map<String, Property> properties) {
this.properties = properties;
}
public void setPatterns(Map<String, Pattern> patterns) {
this.patterns = patterns;
}
public Map<String, Property> getProperties() {
return properties;
}
public Property getProperty(String propertyID) {
return properties.get(propertyID);
}
public Map<String, Pattern> getPatterns() {
return patterns;
}
public Pattern addPattern(Pattern p) {
//TODO do not allow adding existing pattern
patterns.put(p.getID(), p);
return p;
}
public boolean removePattern(Pattern pattern) {
patterns.remove(pattern.getID());
return true;
}
public boolean addProperty(Property p, String... patterns) {
//TODO do not allow adding existing pattern
properties.put(p.getID(), p);
for (String patid : patterns) {
Pattern pat = getPatterns().get(patid);
if (pat!=null) {
pat.put(p.getID(), 1.0);
}
}
return true;
}
public void addProperties(Pattern p, Property... properties) {
addProperties(p.getID(), properties);
}
public void addProperties(String pattern, Property... properties) {
for (Property p : properties) {
addProperty(p, pattern);
}
}
}