package org.openedit;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import com.openedit.page.Page;
public class PlugIn implements Comparable
{
protected List fieldApplications;
protected String fieldPlugInPath;
protected URL fieldPluginXml;
protected boolean fieldInstalled;
public boolean isInstalled()
{
return fieldInstalled;
}
public void setInstalled(boolean inInstalled)
{
fieldInstalled = inInstalled;
}
public URL getPluginXml()
{
return fieldPluginXml;
}
public void setPluginXml(URL inPluginXml)
{
fieldPluginXml = inPluginXml;
}
protected String fieldId;
protected Page fieldBasePath;
protected List fieldDependsOn;
protected String fieldVersion;
protected String fieldAvailableVersion;
protected String fieldAvailableVersionNotes;
protected String fieldInstallScript;
protected String fieldBeanName;
protected String fieldTitle;
protected String fieldLongDescription;
protected List fieldDependantPlugins;
public List getDependantPlugins() {
if (fieldDependantPlugins == null) {
fieldDependantPlugins = new ArrayList();
}
return fieldDependantPlugins;
}
public void setDependantPlugins(List dependantPlugins) {
fieldDependantPlugins = dependantPlugins;
}
public void setDependsOn(List dependsOn) {
fieldDependsOn = dependsOn;
}
protected String fieldVendorLink;
public List getApplications()
{
if (fieldApplications == null)
{
fieldApplications = new ArrayList();
}
return fieldApplications;
}
public void setApplications(List inApplications)
{
fieldApplications = inApplications;
}
public String getPlugInPath()
{
return fieldPlugInPath;
}
public void setPlugInPath(String inPlugInPath)
{
fieldPlugInPath = inPlugInPath;
}
public List getDependsOn()
{
if (fieldDependsOn == null)
{
fieldDependsOn = new ArrayList();
}
return fieldDependsOn;
}
public void addDependsOn(PlugIn inProject)
{
if( inProject != null && !getDependsOn().contains(inProject))
{
getDependsOn().add(inProject);
inProject.addDependant(this);
}
}
public String getId()
{
return fieldId;
}
public void setId(String inId)
{
fieldId = inId;
}
public Set getAllDepends()
{
Set deps = new HashSet();
deps.addAll(getDependsOn());
for (Iterator iterator = getDependsOn().iterator(); iterator.hasNext();)
{
PlugIn depend = (PlugIn) iterator.next();
deps.addAll(depend.getAllDepends());
}
return deps;
}
public boolean equals(PlugIn inPlugIn)
{
return getId().equals(inPlugIn.getId());
}
public boolean dependsOn(String inId)
{
for (Iterator iterator = getDependsOn().iterator(); iterator.hasNext();)
{
PlugIn depend = (PlugIn) iterator.next();
if( depend.getId().equals(inId) || depend.dependsOn(inId))
{
return true;
}
}
return false;
}
public void addApplication(Page inApp)
{
getApplications().add(inApp);
}
public Page getBasePath()
{
return fieldBasePath;
}
public void setBasePath(Page inBasePath)
{
fieldBasePath = inBasePath;
}
public String showThumb()
{
if( null == getBasePath())
{
return "/openedit/images/toolbar/plugin.gif";
}
else
{
String folder = getBasePath().getName();
return "/" + folder + "/.oepluginthumb.gif";
}
}
public String getTitle()
{
return getTitle(null);
}
public String getTitle(String inLocale)
{
if( fieldTitle != null)
{
return fieldTitle;
}
String prop = null;
if( getBasePath() != null )
{
prop = getBasePath().getProperty("oeplugintitle", inLocale);
}
if( prop == null)
{
prop = getId();
}
return prop;
}
public void setTitle(String inTitle)
{
fieldTitle = inTitle;
}
public String getVersion()
{
return fieldVersion;
}
public void setVersion(String inVersion)
{
fieldVersion = inVersion;
}
public String getBeanName()
{
String prop = null;
if( getBasePath() != null)
{
prop = getBasePath().getProperty("oepluginbean");
}
return prop;
}
public String getAvailableVersion()
{
return fieldAvailableVersion;
}
public void setAvailableVersion(String inAvailableVersion)
{
fieldAvailableVersion = inAvailableVersion;
}
public String getInstallScript()
{
return fieldInstallScript;
}
public void setInstallScript(String inUpgradePath)
{
fieldInstallScript = inUpgradePath;
}
public String getAvailableVersionNotes()
{
return fieldAvailableVersionNotes;
}
public void setAvailableVersionNotes(String inAvailableVersionNotes)
{
if( inAvailableVersionNotes != null && inAvailableVersionNotes.length() == 0)
{
fieldAvailableVersionNotes = null;
}
else
{
fieldAvailableVersionNotes = inAvailableVersionNotes;
}
}
public String getVendorLink()
{
return fieldVendorLink;
}
public void setVendorLink(String inVendorLink)
{
fieldVendorLink = inVendorLink;
}
public String getLongDescription()
{
return fieldLongDescription;
}
public void setLongDescription(String inLongDescription)
{
fieldLongDescription = inLongDescription;
}
public int compareTo(Object inO)
{
PlugIn in = (PlugIn)inO;
String title = getTitle();
String otitle = in.getTitle();
if( title != null && otitle != null)
{
return title.toLowerCase().compareTo(otitle.toLowerCase());
}
return 0;
}
public String toString(){
return getId();
}
public void addDependant(PlugIn edit)
{
getDependantPlugins().add(edit);
}
// public boolean dependsOn(PlugIn plugin2) {
// return this.dependson
// }
//
}