code cleanup (deprecated calls and optimization):
PMD report is only created once and reused by all renderers git-svn-id: https://pmd.svn.sourceforge.net/svnroot/pmd/trunk@6514 51baf565-9d33-0410-a72c-fc3788e3496d
This commit is contained in:
1 parent
eabf55cf2e
commit
67c81944b8
2 files changed
+64
-70
No files matched your search
+47
-30
@@ -38,6 +38,10 @@ package net.sourceforge.pmd.runtime.cmd;
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.StringWriter;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
|
||||
import name.herlin.command.CommandException;
|
||||
import net.sourceforge.pmd.Report;
|
||||
@@ -101,8 +105,11 @@ public class RenderReportCmd extends AbstractDefaultCommand {
|
||||
|
||||
private static final Logger log = Logger.getLogger(RenderReportCmd.class);
|
||||
private IProject project;
|
||||
private Renderer renderer;
|
||||
private String reportName;
|
||||
|
||||
/**
|
||||
* Table containing the renderers indexed by the file name.
|
||||
*/
|
||||
private HashMap renderers = new HashMap();
|
||||
|
||||
/**
|
||||
* Default Constructor
|
||||
@@ -116,6 +123,16 @@ public class RenderReportCmd extends AbstractDefaultCommand {
|
||||
this.setTerminated(false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Register a renderer and its associated file for processing.
|
||||
*
|
||||
* @param renderer the renderer
|
||||
* @param reportFile the file name where the report will be saved
|
||||
*/
|
||||
public void registerRenderer(Renderer renderer, String reportFile) {
|
||||
renderers.put(reportFile, renderer);
|
||||
}
|
||||
|
||||
/**
|
||||
* @see name.herlin.command.AbstractProcessableCommand#execute()
|
||||
*/
|
||||
@@ -125,25 +142,39 @@ public class RenderReportCmd extends AbstractDefaultCommand {
|
||||
log.debug(" Create a report object");
|
||||
final Report report = this.createReport(this.project);
|
||||
|
||||
log.debug(" Render the report");
|
||||
final String reportString = this.renderer.render(report);
|
||||
|
||||
log.debug(" Getting the report folder");
|
||||
final IFolder folder = this.project.getFolder(PMDRuntimeConstants.REPORT_FOLDER);
|
||||
if (!folder.exists()) {
|
||||
folder.create(true, true, this.getMonitor());
|
||||
}
|
||||
|
||||
log.debug(" Creating the report file");
|
||||
final IFile reportFile = folder.getFile(this.reportName);
|
||||
final InputStream contentsStream = new ByteArrayInputStream(reportString.getBytes());
|
||||
if (reportFile.exists()) {
|
||||
reportFile.setContents(contentsStream, true, false, this.getMonitor());
|
||||
} else {
|
||||
reportFile.create(contentsStream, true, this.getMonitor());
|
||||
Iterator i = renderers.entrySet().iterator();
|
||||
while (i.hasNext()) {
|
||||
Map.Entry entry = (Map.Entry) i.next();
|
||||
|
||||
final String reportName = (String) entry.getKey();
|
||||
final Renderer renderer = (Renderer) entry.getValue();
|
||||
|
||||
log.debug(" Render the report");
|
||||
final StringWriter w = new StringWriter();
|
||||
renderer.setWriter(w);
|
||||
renderer.start();
|
||||
renderer.renderFileReport(report);
|
||||
renderer.end();
|
||||
|
||||
final String reportString = w.toString();
|
||||
|
||||
log.debug(" Creating the report file");
|
||||
final IFile reportFile = folder.getFile(reportName);
|
||||
final InputStream contentsStream = new ByteArrayInputStream(reportString.getBytes());
|
||||
if (reportFile.exists()) {
|
||||
reportFile.setContents(contentsStream, true, false, this.getMonitor());
|
||||
} else {
|
||||
reportFile.create(contentsStream, true, this.getMonitor());
|
||||
}
|
||||
reportFile.refreshLocal(IResource.DEPTH_INFINITE, this.getMonitor());
|
||||
contentsStream.close();
|
||||
}
|
||||
reportFile.refreshLocal(IResource.DEPTH_INFINITE, this.getMonitor());
|
||||
contentsStream.close();
|
||||
} catch (CoreException e) {
|
||||
log.debug("Core Exception: " + e.getMessage(), e);
|
||||
throw new CommandException(e);
|
||||
@@ -161,7 +192,7 @@ public class RenderReportCmd extends AbstractDefaultCommand {
|
||||
*/
|
||||
public void reset() {
|
||||
this.setProject(null);
|
||||
this.setRenderer(null);
|
||||
this.renderers = new HashMap();
|
||||
this.setTerminated(false);
|
||||
}
|
||||
|
||||
@@ -172,25 +203,11 @@ public class RenderReportCmd extends AbstractDefaultCommand {
|
||||
this.project = project;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param renderer The renderer to set.
|
||||
*/
|
||||
public void setRenderer(final Renderer renderer) {
|
||||
this.renderer = renderer;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param reportName The reportName to set.
|
||||
*/
|
||||
public void setReportName(final String reportName) {
|
||||
this.reportName = reportName;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see name.herlin.command.Command#isReadyToExecute()
|
||||
*/
|
||||
public boolean isReadyToExecute() {
|
||||
return this.project != null && this.renderer != null && this.reportName != null;
|
||||
return this.project != null && !this.renderers.isEmpty();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+17
-40
@@ -24,10 +24,10 @@ import org.eclipse.ui.IWorkbenchPart;
|
||||
/**
|
||||
* Process GenerateReport action menu.
|
||||
* Generate a HTML report on the current project.
|
||||
*
|
||||
*
|
||||
* @author Philippe Herlin
|
||||
* @version $Revision$
|
||||
*
|
||||
*
|
||||
* $Log$
|
||||
* Revision 1.2 2006/10/10 22:31:01 phherlin
|
||||
* Fix other PMD warnings
|
||||
@@ -67,40 +67,17 @@ public class GenerateReportAction implements IObjectActionDelegate {
|
||||
try {
|
||||
final IProject project = getProject((IStructuredSelection) sel);
|
||||
if (project != null) {
|
||||
final RenderReportCmd cmd1 = new RenderReportCmd();
|
||||
cmd1.setProject(project);
|
||||
cmd1.setRenderer(new HTMLRenderer());
|
||||
cmd1.setReportName(PMDUiConstants.HTML_REPORT_NAME);
|
||||
cmd1.setUserInitiated(true);
|
||||
cmd1.performExecute();
|
||||
|
||||
final RenderReportCmd cmd2 = new RenderReportCmd();
|
||||
cmd2.setProject(project);
|
||||
cmd2.setRenderer(new CSVRenderer());
|
||||
cmd2.setReportName(PMDUiConstants.CSV_REPORT_NAME);
|
||||
cmd1.setUserInitiated(true);
|
||||
cmd2.performExecute();
|
||||
|
||||
final RenderReportCmd cmd3 = new RenderReportCmd();
|
||||
cmd3.setProject(project);
|
||||
cmd3.setRenderer(new XMLRenderer());
|
||||
cmd3.setReportName(PMDUiConstants.XML_REPORT_NAME);
|
||||
cmd1.setUserInitiated(true);
|
||||
cmd3.performExecute();
|
||||
|
||||
final RenderReportCmd cmd4 = new RenderReportCmd();
|
||||
cmd4.setProject(project);
|
||||
cmd4.setRenderer(new TextRenderer());
|
||||
cmd4.setReportName(PMDUiConstants.TXT_REPORT_NAME);
|
||||
cmd1.setUserInitiated(true);
|
||||
cmd4.performExecute();
|
||||
|
||||
final RenderReportCmd cmd5 = new RenderReportCmd();
|
||||
cmd5.setProject(project);
|
||||
cmd5.setRenderer(new VBHTMLRenderer());
|
||||
cmd5.setReportName(PMDUiConstants.VBHTML_REPORT_NAME);
|
||||
cmd5.setUserInitiated(true);
|
||||
cmd5.performExecute();
|
||||
final RenderReportCmd cmd = new RenderReportCmd();
|
||||
cmd.setProject(project);
|
||||
cmd.setUserInitiated(true);
|
||||
|
||||
cmd.registerRenderer(new HTMLRenderer(), PMDUiConstants.HTML_REPORT_NAME);
|
||||
cmd.registerRenderer(new CSVRenderer(), PMDUiConstants.CSV_REPORT_NAME);
|
||||
cmd.registerRenderer(new XMLRenderer(), PMDUiConstants.XML_REPORT_NAME);
|
||||
cmd.registerRenderer(new TextRenderer(), PMDUiConstants.TXT_REPORT_NAME);
|
||||
cmd.registerRenderer(new VBHTMLRenderer(), PMDUiConstants.VBHTML_REPORT_NAME);
|
||||
|
||||
cmd.performExecute();
|
||||
}
|
||||
} catch (CommandException e) {
|
||||
PMDUiPlugin.getDefault().showError(
|
||||
@@ -116,7 +93,7 @@ public class GenerateReportAction implements IObjectActionDelegate {
|
||||
public final void selectionChanged(IAction action, ISelection selection) {
|
||||
// nothing to do
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get a project from a selection
|
||||
* @param selection
|
||||
@@ -125,13 +102,13 @@ public class GenerateReportAction implements IObjectActionDelegate {
|
||||
private IProject getProject(final IStructuredSelection selection) {
|
||||
IProject project = null;
|
||||
final Object object = selection.getFirstElement();
|
||||
if ((object != null) && (object instanceof IAdaptable)) {
|
||||
final IResource resource = (IResource) ((IAdaptable) object).getAdapter(IResource.class);
|
||||
if (object != null && object instanceof IAdaptable) {
|
||||
final IResource resource = (IResource) ((IAdaptable) object).getAdapter(IResource.class);
|
||||
if (resource != null) {
|
||||
project = resource.getProject();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return project;
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user