/*
* JBoss, Home of Professional Open Source
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
package org.jboss.seam.wiki.core.plugin.metamodel;
import org.jboss.seam.wiki.core.plugin.metamodel.Plugin;
import org.jboss.seam.wiki.core.exception.InvalidWikiConfigurationException;
import java.util.*;
import java.io.Serializable;
/**
* @author Christian Bauer
*/
public abstract class PluginModule implements Serializable {
private Plugin plugin;
private String key;
private String label;
private String description;
private String className;
private String[] skins = {"d"};
private SortedSet<String> fragmentCacheRegions = new TreeSet<String>();
protected PluginModule(Plugin plugin, String key) {
if (!key.matches(Plugin.KEY_PATTERN))
throw new InvalidWikiConfigurationException("Key doesn't match pattern '"+Plugin.KEY_PATTERN+"': " + key);
this.plugin = plugin;
this.key = key;
}
public Plugin getPlugin() {
return plugin;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getClassName() {
return className;
}
public void setClassName(String className) {
this.className = className;
}
public String[] getSkins() {
return skins;
}
public void setSkins(String[] skins) {
this.skins = skins;
}
public boolean isAvailableForSkin(String skin) {
for (String s : skins) {
if (skin.equals(s)) return true;
}
return false;
}
public SortedSet<String> getFragmentCacheRegions() {
return fragmentCacheRegions;
}
public List<String> getFragmentCacheRegionsAsList() {
return Collections.unmodifiableList(new ArrayList<String>(getFragmentCacheRegions()));
}
public void setFragmentCacheRegions(SortedSet<String> fragmentCacheRegions) {
this.fragmentCacheRegions = fragmentCacheRegions;
}
public void addFragmentCacheRegion(String name) {
getFragmentCacheRegions().add(getQualifiedCacheRegionName(name));
}
public String getFullyQualifiedKey() {
return getPlugin().getKey() + "." + getKey();
}
public String getQualifiedCacheRegionName(String name) {
return getFullyQualifiedKey() + "." + name;
}
public String getImagePath() {
return Plugin.GENERATE_RESOURCE_PATH_THEME
+ "/" + getPlugin().getKey()
+ "/" + getKey()
+ "/" + Plugin.PACKAGE_THEMES_IMG;
}
public String getStylesheetPath() {
return Plugin.GENERATE_RESOURCE_PATH_THEME
+ "/" + getPlugin().getKey()
+ "/" + getKey()
+ "/" + Plugin.PACKAGE_THEMES_CSS;
}
public abstract String getModuleTypeLabel();
}