package de.deepamehta.config;
import de.deepamehta.core.Topic;
import de.deepamehta.core.model.TopicModel;
public class ConfigDefinition {
// ---------------------------------------------------------------------------------------------- Instance Variables
private ConfigTarget target;
private String configurableUri;
private TopicModel defaultConfigTopic;
private ConfigModificationRole role;
private ConfigCustomizer customizer;
// ---------------------------------------------------------------------------------------------------- Constructors
public ConfigDefinition(ConfigTarget target, String configurableUri, TopicModel defaultConfigTopic,
ConfigModificationRole role) {
this(target, configurableUri, defaultConfigTopic, role, null);
}
public ConfigDefinition(ConfigTarget target, String configurableUri, TopicModel defaultConfigTopic,
ConfigModificationRole role, ConfigCustomizer customizer) {
this.target = target;
this.configurableUri = configurableUri;
this.defaultConfigTopic = defaultConfigTopic;
this.role = role;
this.customizer = customizer;
}
// -------------------------------------------------------------------------------------------------- Public Methods
@Override
public boolean equals(Object o) {
return getConfigTypeUri().equals(((ConfigDefinition) o).getConfigTypeUri());
}
@Override
public int hashCode() {
return getConfigTypeUri().hashCode();
}
// ----------------------------------------------------------------------------------------- Package Private Methods
String getHashKey() {
return target.hashKey(configurableUri);
}
String getConfigTypeUri() {
return defaultConfigTopic.getTypeUri();
}
TopicModel getConfigValue(Topic topic) {
if (customizer != null) {
TopicModel configValue = customizer.getConfigValue(topic);
if (configValue != null) {
return configValue;
}
}
return defaultConfigTopic;
}
ConfigModificationRole getConfigModificationRole() {
return role;
}
}