package com.horstmann.violet.framework.plugin;
import com.horstmann.violet.framework.util.ResourceManager;
import com.horstmann.violet.product.diagram.abstracts.IGraph;
import java.util.ResourceBundle;
/**
* TODO javadoc
* This ...
*
* @author Adrian Bobrowski <adrian071993@gmail.com>
* @date 06.03.2016
*/
public abstract class AbstractDiagramPlugin implements IDiagramPlugin
{
protected AbstractDiagramPlugin(Class<? extends IGraph> graphClass, ResourceBundle resourceBundle)
{
this(graphClass);
addResourceBundle(resourceBundle);
}
protected AbstractDiagramPlugin(Class<? extends IGraph> graphClass, String resourceBundle)
{
this(graphClass);
addResourceBundle(resourceBundle);
}
protected AbstractDiagramPlugin(Class<? extends IGraph> graphClass)
{
this.graphClass = graphClass;
resourceManager = new ResourceManager();
}
protected final void addResourceBundle(ResourceBundle resourceBundle)
{
this.resourceManager.addResource(resourceBundle);
}
protected final void addResourceBundle(String baseName)
{
this.resourceManager.addResource(baseName);
}
/**
* @return plugin's provider or authors
*/
@Override
public String getProvider()
{
return "Alexandre de Pellegrin / Cays S. Horstmann / Adrian Bobrowski";
}
/**
* @return very short plugin description (ex : Class diagram XMI extension)
*/
@Override
public final String getShortDescription()
{
return resourceManager.getString(DESCRIPTION_SHORT);
}
/**
* @return full description
*/
@Override
public String getFullDescription()
{
return resourceManager.getString(DESCRIPTION_FULL);
}
/**
* @return diagram type name (ex : Class Diagram)
*/
@Override
public final String getName()
{
return resourceManager.getString(DIAGRAM_NAME);
}
/**
* @return the category of this diagram (ex : Static diagram)
*/
@Override
public final String getCategory()
{
return resourceManager.getString(DIAGRAM_CATEGORY);
}
/**
* @return file extension associated to this graph (ex : .class.violet)
*/
@Override
public final String getFileExtension()
{
return "." + resourceManager.getString(FILES_EXTENSION);
}
/**
* @return file extension textual name (ex : Class Diagram Files)
*/
@Override
public final String getFileExtensionName()
{
return String.format("%s (%s)", getName().replaceFirst("[0-9]*\\.", ""), getFileExtension());
}
/**
* @return path of a diagram file used to introduce this kind of diagram
*/
@Override
public final String getSampleFilePath()
{
return resourceManager.getString(SAMPLE);
}
/**
* @return corresponding graph class
*/
@Override
public final Class<? extends IGraph> getGraphClass()
{
return graphClass;
}
private ResourceManager resourceManager;
private final Class<? extends IGraph> graphClass;
private static final String DESCRIPTION_SHORT = "description.short";
private static final String DESCRIPTION_FULL = "description.full";
private static final String DIAGRAM_NAME = "diagram.name";
private static final String DIAGRAM_CATEGORY = "diagram.category";
private static final String FILES_EXTENSION = "files.extension";
private static final String SAMPLE = "sample";
}