diff --git a/pmd-jdeveloper/etc/build.xml b/pmd-jdeveloper/etc/build.xml
index 7ab70abb5e..a7388ef95a 100644
--- a/pmd-jdeveloper/etc/build.xml
+++ b/pmd-jdeveloper/etc/build.xml
@@ -46,12 +46,10 @@
-
-
-
-
-
-
+
+
+
+
diff --git a/pmd-jdeveloper/etc/changelog.txt b/pmd-jdeveloper/etc/changelog.txt
index 3f72f00665..2b6912b5e2 100644
--- a/pmd-jdeveloper/etc/changelog.txt
+++ b/pmd-jdeveloper/etc/changelog.txt
@@ -1,2 +1,2 @@
-??? - 0.1:
+February 25, 2003 - 0.1:
Initial release
diff --git a/pmd-jdeveloper/etc/doing_the_next_pmd_jdeveloper_release.txt b/pmd-jdeveloper/etc/doing_the_next_pmd_jdeveloper_release.txt
index 7bdce12f24..e6701fb9c7 100644
--- a/pmd-jdeveloper/etc/doing_the_next_pmd_jdeveloper_release.txt
+++ b/pmd-jdeveloper/etc/doing_the_next_pmd_jdeveloper_release.txt
@@ -1,39 +1,35 @@
update the release date in the changelog
-change config/pmd.props to reflect actual pmd.jar file version
-change config/pmd.props to reflect pmd-jedit release 1.4
-change config/jedit.html to reflect pmd-jedit release 1.4
-change the build.xml to reflect pmd-jedit release 1.4
+change the build.xml to reflect pmd-jdeveloper release 0.1
Create the binary release:
ant release
-move the zip file into c:\tmp
TESTS:
-1) Can you run jedit ok?
+1) Does it unzip neatly on top of the jdev/ext/lib directory?
2) Can you run it it on a file and find some unused code?
3) Are options persistant?
Create the src release:
-cvs -q rtag -D tomorrow "pmd_jedit_release_1_4" pmd-jedit
-rmdir /q /s c:\tmp\pmd-jedit
-mkdir c:\tmp\pmd-jedit
-cvs -q export -d c:\tmp\pmd-jedit -r pmd_jedit_release_1_4 pmd-jedit
-copy pmd-jedit\lib\PMDJEditPlugin-1.4.jar c:\tmp\pmd-jedit\lib
+cvs -q rtag -D tomorrow "pmd_jdeveloper_release_1_4" pmd-jdeveloper
+rmdir /q /s c:\tmp\pmd-jdeveloper
+mkdir c:\tmp\pmd-jdeveloper
+cvs -q export -d c:\tmp\pmd-jdeveloper -r pmd_jdeveloper_release_1_4 pmd-jdeveloper
+copy pmd-jdeveloper\lib\pmd-jdeveloper-0.1.jar c:\tmp\pmd-jdeveloper\lib
cd c:\tmp
-"c:\program files\winzip\wzzip.exe" -r -p pmd-jedit-src-1.4.zip pmd-jedit
-rmdir /q /s pmd-jedit
+"c:\program files\winzip\wzzip.exe" -r -p pmd-jdeveloper-src-0.1.zip pmd-jdeveloper
+rmdir /q /s pmd-jdeveloper
FTP the zip file to SF
ftp upload.sourceforge.net
generic userid/password: anonymous/tom@infoether.com
cd incoming
bin
-put pmd-jedit-src-1.4.zip
-put pmd-jedit-bin-1.4.zip
+put pmd-jdeveloper-src-0.1.zip
+put pmd-jdeveloper-bin-0.1.zip
Go to Admin, Edit/Release Files, click on Add new release
Paste stuff into the changelog/readme boxes
-Add the pmd-jedit-src-1.4.zip file
-Add the pmd-jedit-bin-1.4.zip file
+Add the pmd-jdeveloper-src-0.1.zip file
+Add the pmd-jdeveloper-bin-0.1.zip file
Classify the file
-Submit some news saying "hey, new release of the JEdit plugin!"
+Submit some news saying "hey, new release of the jdeveloper plugin!"
diff --git a/pmd-jdeveloper/src/net/sourceforge/pmd/jdeveloper/JumpingSelectionModel.java b/pmd-jdeveloper/src/net/sourceforge/pmd/jdeveloper/JumpingSelectionModel.java
index 692dc057d2..2434b987bb 100644
--- a/pmd-jdeveloper/src/net/sourceforge/pmd/jdeveloper/JumpingSelectionModel.java
+++ b/pmd-jdeveloper/src/net/sourceforge/pmd/jdeveloper/JumpingSelectionModel.java
@@ -2,18 +2,15 @@ package net.sourceforge.pmd.jdeveloper;
import net.sourceforge.pmd.RuleViolation;
import oracle.ide.Ide;
-import oracle.ide.editor.Editor;
-import oracle.ide.model.Document;
+import oracle.ide.net.URLFactory;
import oracle.jdeveloper.ceditor.CodeEditor;
import javax.swing.DefaultListModel;
import javax.swing.DefaultListSelectionModel;
-import java.util.Iterator;
-import java.util.List;
/**
* This class was inspired by a class on Sun's web site in the JList tutorial section. It's
- * been twiddled somewhat since then, though.
+ * been twiddled somewhat since then.
*/
public class JumpingSelectionModel extends DefaultListSelectionModel {
@@ -32,21 +29,9 @@ public class JumpingSelectionModel extends DefaultListSelectionModel {
super.setSelectionInterval(index0, index1);
int newIndex = getMinSelectionIndex();
if (oldIndex != newIndex) {
- RuleViolation rv = ((RuleViolationWrapper)model.getElementAt(newIndex)).getRV();
- List editors = Ide.getEditorManager().getAllEditors();
- for (Iterator i = editors.iterator(); i.hasNext();) {
- Editor editor = (Editor)i.next();
- Document doc = editor.getContext().getDocument();
- if (doc.getLongLabel().equals(rv.getFilename()) && editor instanceof CodeEditor) {
- System.out.println("GOING THERE");
- Ide.getEditorManager().openDefaultEditorInFrame(editor.getContext().getDocument().getURL());
- editor.activate();
- editor.open();
- ((CodeEditor)editor).gotoLine(rv.getLine(), 0, false);
- break;
- }
- }
+ RuleViolation rv = ((RuleViolationWrapper)model.getElementAt(newIndex)).getRuleViolation();
+ Ide.getEditorManager().openDefaultEditorInFrame(URLFactory.newFileURL(rv.getFilename()));
+ ((CodeEditor)Ide.getEditorManager().getCurrentEditor()).gotoLine(rv.getLine(), 0, false);
}
}
-
}
diff --git a/pmd-jdeveloper/src/net/sourceforge/pmd/jdeveloper/Plugin.java b/pmd-jdeveloper/src/net/sourceforge/pmd/jdeveloper/Plugin.java
index 73aed300d0..55e16bf2d7 100644
--- a/pmd-jdeveloper/src/net/sourceforge/pmd/jdeveloper/Plugin.java
+++ b/pmd-jdeveloper/src/net/sourceforge/pmd/jdeveloper/Plugin.java
@@ -1,10 +1,10 @@
package net.sourceforge.pmd.jdeveloper;
import net.sourceforge.pmd.PMD;
+import net.sourceforge.pmd.PMDException;
import net.sourceforge.pmd.Report;
import net.sourceforge.pmd.RuleContext;
import net.sourceforge.pmd.RuleViolation;
-import net.sourceforge.pmd.PMDException;
import oracle.ide.AddinManager;
import oracle.ide.ContextMenu;
import oracle.ide.Ide;
@@ -14,40 +14,28 @@ import oracle.ide.addin.Context;
import oracle.ide.addin.ContextMenuListener;
import oracle.ide.addin.Controller;
import oracle.ide.config.IdeSettings;
-import oracle.ide.model.DirectoryFolder;
-import oracle.ide.model.Element;
-import oracle.ide.model.PackageFolder;
-import oracle.ide.model.Workspace;
-import oracle.ide.model.Workspaces;
-import oracle.ide.model.Project;
import oracle.ide.model.Document;
+import oracle.ide.model.Element;
+import oracle.ide.model.Project;
import oracle.ide.panels.Navigable;
-import oracle.jdeveloper.model.BusinessComponents;
-import oracle.jdeveloper.model.EnterpriseJavaBeans;
import oracle.jdeveloper.model.JProject;
import oracle.jdeveloper.model.JavaSourceNode;
-import oracle.jdeveloper.model.JavaSources;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
+import java.io.File;
+import java.io.FileInputStream;
import java.util.Iterator;
-import java.util.List;
public class Plugin implements Addin, Controller, ContextMenuListener {
public static final String CHECK_CMD = "net.sourceforge.pmd.jdeveloper.Check";
public static final int CHECK_CMD_ID = Ide.newCmd("PMDJDeveloperPlugin.CHECK_CMD_ID");
+ public static final String TITLE = "PMD";
- private static final int INVALID = -1;
+ private static final int UNUSED = -1;
private static final int SOURCE = 0;
- private static final int SOURCES = 1;
- private static final int WORKSPACE = 2;
- private static final int WORKSPACES = 3;
- private static final int PACKAGE = 4;
- private static final int DIRECTORY = 5;
private static final int PROJECT = 6;
- private static final int EJB = 7;
- private static final int BUSINESS = 8;
private JMenuItem checkItem;
private RuleViolationPage rvPage;
@@ -58,19 +46,15 @@ public class Plugin implements Addin, Controller, ContextMenuListener {
// Addin
public void initialize() {
- AddinManager addinManager = Ide.getAddinManager();
- String command = addinManager.getCommand(CHECK_CMD_ID, CHECK_CMD);
- String category = "PMD";
- IdeAction action = IdeAction.get(CHECK_CMD_ID, command, "PMD", category, null, null, null, true);
+ IdeAction action = IdeAction.get(CHECK_CMD_ID, Ide.getAddinManager().getCommand(CHECK_CMD_ID, CHECK_CMD), TITLE, TITLE, null, null, null, true);
action.setController(this);
checkItem = Ide.getMenubar().createMenuItem(action);
- checkItem.setText("PMD");
+ checkItem.setText(TITLE);
checkItem.setMnemonic('P');
Ide.getNavigatorManager().addContextMenuListener(this, null);
Ide.getEditorManager().getContextMenu().addContextMenuListener(this, null);
- System.out.println("PMD JDeveloper Extension " + getVersion());
- IdeSettings.registerUI(new Navigable("PMD", SettingsPanel.class, new Navigable[] {}));
- Ide.getVersionInfo().addComponent("PMD", " JDeveloper Extension " + getVersion());
+ IdeSettings.registerUI(new Navigable(TITLE, SettingsPanel.class, new Navigable[] {}));
+ Ide.getVersionInfo().addComponent(TITLE, " JDeveloper Extension " + getVersion());
}
public void shutdown() {
@@ -99,130 +83,88 @@ public class Plugin implements Addin, Controller, ContextMenuListener {
public boolean handleEvent(IdeAction ideAction, Context context) {
if (ideAction.getCommandId() == CHECK_CMD_ID) {
try {
+ PMD pmd = new PMD();
+ SelectedRules rs = new SelectedRules();
+ RuleContext ctx = new RuleContext();
+ ctx.setReport(new Report());
if (resolveType(context.getDocument()) == PROJECT) {
- Project proj = (Project)context.getDocument();
- List foo = proj.getListOfChildren();
- PMD pmd = new PMD();
- SelectedRules rs = new SelectedRules();
- RuleContext ctx = new RuleContext();
- ctx.setReport(new Report());
- for (Iterator i = foo.iterator(); i.hasNext();) {
- Document d = (Document)i.next();
- if (d.getLongLabel().endsWith(".java")) {
- ctx.setSourceCodeFilename(d.getLongLabel());
- System.out.println("processing " + d.getLongLabel());
- pmd.processFile(context.getDocument().getInputStream(), rs.getSelectedRules(), ctx);
+ for (Iterator i = ((Project)context.getDocument()).getListOfChildren().iterator(); i.hasNext();) {
+ Document candidate = (Document)i.next();
+ if (candidate.getLongLabel().endsWith(".java")) {
+ ctx.setSourceCodeFilename(candidate.getLongLabel());
+ FileInputStream fis = new FileInputStream(new File(candidate.getLongLabel()));
+ pmd.processFile(fis, rs.getSelectedRules(), ctx);
+ fis.close();
}
}
- if (rvPage == null) {
- rvPage = new RuleViolationPage();
- }
- if (!rvPage.isVisible()) {
- rvPage.show();
- }
- rvPage.clearAll();
- if (ctx.getReport().isEmpty()) {
- JOptionPane.showMessageDialog(null, "No problems found", "PMD", JOptionPane.INFORMATION_MESSAGE);
- } else {
- for (Iterator i = ctx.getReport().iterator(); i.hasNext();) {
- rvPage.add((RuleViolation)i.next());
- }
- }
- } else {
- PMD pmd = new PMD();
- RuleContext ctx = new RuleContext();
- ctx.setReport(new Report());
+ render(ctx);
+ } else if (resolveType(context.getDocument()) == SOURCE) {
ctx.setSourceCodeFilename(context.getDocument().getLongLabel());
- SelectedRules rs = new SelectedRules();
pmd.processFile(context.getDocument().getInputStream(), rs.getSelectedRules(), ctx);
- if (rvPage == null) {
- rvPage = new RuleViolationPage();
- }
- if (!rvPage.isVisible()) {
- rvPage.show();
- }
- rvPage.clearAll();
- if (ctx.getReport().isEmpty()) {
- JOptionPane.showMessageDialog(null, "No problems found", "PMD", JOptionPane.INFORMATION_MESSAGE);
- } else {
- for (Iterator i = ctx.getReport().iterator(); i.hasNext();) {
- rvPage.add((RuleViolation)i.next());
- }
- }
+ render(ctx);
}
return true;
} catch (PMDException e) {
e.printStackTrace();
e.getOriginalException().printStackTrace();
+ JOptionPane.showMessageDialog(null, "Error while running PMD: " + e.getMessage(), TITLE, JOptionPane.ERROR_MESSAGE);
} catch (Exception e) {
e.printStackTrace();
+ JOptionPane.showMessageDialog(null, "Error while running PMD: " + e.getMessage(), TITLE, JOptionPane.ERROR_MESSAGE);
}
}
return true;
}
+ private void render(RuleContext ctx) {
+ if (rvPage == null) {
+ rvPage = new RuleViolationPage();
+ }
+ if (!rvPage.isVisible()) {
+ rvPage.show();
+ }
+ rvPage.clearAll();
+ if (ctx.getReport().isEmpty()) {
+ JOptionPane.showMessageDialog(null, "No problems found", TITLE, JOptionPane.INFORMATION_MESSAGE);
+ } else {
+ for (Iterator i = ctx.getReport().iterator(); i.hasNext();) {
+ rvPage.add((RuleViolation)i.next());
+ }
+ }
+ }
+
public boolean update(IdeAction ideAction, Context context) {
return false;
}
- public void checkCommands(Context context, Controller controller) {
- }
+ public void checkCommands(Context context, Controller controller) {}
// Controller
- // Controller
+ // ContextMenuListener
public void poppingUp(ContextMenu contextMenu) {
- if (contextMenu != null) {
- Context context = contextMenu.getContext();
- if (context != null) {
- Element doc = context.getDocument();
- if (resolveType(doc) == PROJECT || resolveType(doc) == SOURCE) {
- contextMenu.add(checkItem);
- }
- }
+ Element doc = contextMenu.getContext().getDocument();
+ if (resolveType(doc) == PROJECT || resolveType(doc) == SOURCE) {
+ contextMenu.add(checkItem);
}
}
- public void poppingDown(ContextMenu contextMenu) {
- }
+ public void poppingDown(ContextMenu contextMenu) {}
public boolean handleDefaultAction(Context context) {
return false;
}
- // Controller
+ // ContextMenuListener
public static String getVersion() {
return Package.getPackage("net.sourceforge.pmd.jdeveloper").getImplementationVersion();
}
- private int resolveType(Element element)
- {
+ private int resolveType(Element element) {
if (element instanceof JavaSourceNode) {
return SOURCE;
- }
- if (element instanceof JavaSources) {
- return SOURCES;
- }
- if (element instanceof JProject) {
+ } else if (element instanceof JProject) {
return PROJECT;
}
- if (element instanceof PackageFolder) {
- return PACKAGE;
- }
- if (element instanceof DirectoryFolder) {
- return DIRECTORY;
- }
- if (element instanceof BusinessComponents) {
- return BUSINESS;
- }
- if (element instanceof EnterpriseJavaBeans) {
- return EJB;
- }
- if (element instanceof Workspace) {
- return WORKSPACE;
- }
- if (element instanceof Workspaces) {
- return WORKSPACES;
- }
- return INVALID;
+ return UNUSED;
}
}
diff --git a/pmd-jdeveloper/src/net/sourceforge/pmd/jdeveloper/RuleViolationPage.java b/pmd-jdeveloper/src/net/sourceforge/pmd/jdeveloper/RuleViolationPage.java
index fdf6c6987f..adcdb3ea09 100644
--- a/pmd-jdeveloper/src/net/sourceforge/pmd/jdeveloper/RuleViolationPage.java
+++ b/pmd-jdeveloper/src/net/sourceforge/pmd/jdeveloper/RuleViolationPage.java
@@ -17,7 +17,7 @@ public class RuleViolationPage extends AbstractLogPage {
private JList list;
public RuleViolationPage() {
- super(new ViewId("PMDPage", "PMD"), null, false);
+ super(new ViewId("PMDPage", Plugin.TITLE), null, false);
list = new JList(model);
list.setSelectionModel(new JumpingSelectionModel(model));
scrollPane = new JScrollPane(list);
@@ -33,7 +33,6 @@ public class RuleViolationPage extends AbstractLogPage {
}
public void clearAll() {
- super.clearAll();
model.clear();
}
}
diff --git a/pmd-jdeveloper/src/net/sourceforge/pmd/jdeveloper/RuleViolationWrapper.java b/pmd-jdeveloper/src/net/sourceforge/pmd/jdeveloper/RuleViolationWrapper.java
index fc409c1c58..751b56eb5f 100644
--- a/pmd-jdeveloper/src/net/sourceforge/pmd/jdeveloper/RuleViolationWrapper.java
+++ b/pmd-jdeveloper/src/net/sourceforge/pmd/jdeveloper/RuleViolationWrapper.java
@@ -3,17 +3,18 @@ package net.sourceforge.pmd.jdeveloper;
import net.sourceforge.pmd.RuleViolation;
public class RuleViolationWrapper {
- private RuleViolation rv;
- public RuleViolationWrapper(RuleViolation rv) {
- this.rv = rv;
+ private RuleViolation ruleViolation;
+
+ public RuleViolationWrapper(RuleViolation ruleViolation) {
+ this.ruleViolation = ruleViolation;
}
- public RuleViolation getRV() {
- return this.rv;
+ public RuleViolation getRuleViolation() {
+ return this.ruleViolation;
}
public String toString() {
- return rv.getFilename() + ":" + rv.getLine() +":"+ rv.getDescription();
+ return ruleViolation.getFilename() + " : " + ruleViolation.getLine() +" : "+ ruleViolation.getDescription();
}
}