From a25cc1b0c7466c03448cce16433b27eeac05375b Mon Sep 17 00:00:00 2001 From: Braids Date: Fri, 12 Aug 2011 17:11:47 +0000 Subject: [PATCH] - Issue 120: Improve version and build ID in Crash Reports. * forge.error.ErrorViewer now uses BuildInfo.toPrettyString() to display the version. * Fixed some CheckStyle violations in ErrorViewer. * Added forge.model.BuildInfo.toPrettyString method. * Removed obsolete VERSION field from forge.properties.NewConstants. (Java) * Removed obsolete property "program/version" from res/main.properties. Bug: 120 --- res/main.properties | 1 - src/main/java/forge/error/ErrorViewer.java | 19 +++++++----- src/main/java/forge/model/BuildInfo.java | 30 +++++++++++++++++++ .../java/forge/properties/NewConstants.java | 2 -- 4 files changed, 42 insertions(+), 10 deletions(-) diff --git a/res/main.properties b/res/main.properties index db5f645c8b5..f09f7c8b59b 100644 --- a/res/main.properties +++ b/res/main.properties @@ -1,5 +1,4 @@ program/howToReportBugsURL=http://tinyurl.com/3zzrnyb -program/version=Forge -- official beta: $Date$, SVN revision: $Revision$ showdeck/2color=false showdeck/3color=false diff --git a/src/main/java/forge/error/ErrorViewer.java b/src/main/java/forge/error/ErrorViewer.java index b0e11b743b5..28e3f1871ea 100644 --- a/src/main/java/forge/error/ErrorViewer.java +++ b/src/main/java/forge/error/ErrorViewer.java @@ -30,6 +30,7 @@ import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.KeyStroke; +import forge.Singletons; import forge.properties.NewConstants; @@ -153,7 +154,9 @@ public class ErrorViewer implements NewConstants, NewConstants.LANG.ErrorViewer //Button is not modified, String gets the automatic listener to hide the dialog Object[] options = { - new JButton(new BugzAction(area)), new JButton(new SaveAction(area)), getLocalized(BUTTON_CLOSE), new JButton(new ExitAction())}; + new JButton(new BugzAction(area)), new JButton(new SaveAction(area)), getLocalized(BUTTON_CLOSE), + new JButton(new ExitAction())}; + JOptionPane pane = new JOptionPane(new JScrollPane(area), ERROR_MESSAGE, DEFAULT_OPTION, null, options, options[1]); dlg = pane.createDialog(null, getLocalized(TITLE)); @@ -176,7 +179,8 @@ public class ErrorViewer implements NewConstants, NewConstants.LANG.ErrorViewer ex.printStackTrace(); pw.printf(getLocalized(MESSAGE), getProperty(HOW_TO_REPORT_BUGS_URL), - message != null ? message : ex.getMessage(), getProperty(VERSION), + message != null ? message : ex.getMessage(), + Singletons.getModel().getBuildInfo().toPrettyString(), System.getProperty(NAME_OS), System.getProperty(VERSION_OS), System.getProperty(ARCHITECTURE_OS), System.getProperty(VERSION_JAVA), System.getProperty(VENDOR_JAVA)); ex.printStackTrace(pw); @@ -191,7 +195,8 @@ public class ErrorViewer implements NewConstants, NewConstants.LANG.ErrorViewer private static void printError(final PrintWriter pw, final String message) { System.err.println(message); - pw.printf(getLocalized(MESSAGE), getProperty(HOW_TO_REPORT_BUGS_URL), message, getProperty(VERSION), + pw.printf(getLocalized(MESSAGE), getProperty(HOW_TO_REPORT_BUGS_URL), message, + Singletons.getModel().getBuildInfo().toPrettyString(), System.getProperty(NAME_OS), System.getProperty(VERSION_OS), System.getProperty(ARCHITECTURE_OS), System.getProperty(VERSION_JAVA), System.getProperty(VENDOR_JAVA)); Map traces = Thread.getAllStackTraces(); @@ -244,20 +249,20 @@ public class ErrorViewer implements NewConstants, NewConstants.LANG.ErrorViewer } } } - + private static class BugzAction extends AbstractAction { private static final long serialVersionUID = 914634661273525959L; private JTextArea area; - public BugzAction(JTextArea area) { + public BugzAction(final JTextArea neoArea) { putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke(VK_B, CTRL_DOWN_MASK)); putValue(NAME, "Report Bug"); - this.area = area; + this.area = neoArea; } - public void actionPerformed(ActionEvent e) { + public void actionPerformed(final ActionEvent e) { BugzReporter br = new BugzReporter(); br.setDumpText(area.getText()); br.setVisible(true); diff --git a/src/main/java/forge/model/BuildInfo.java b/src/main/java/forge/model/BuildInfo.java index 9607afeecff..571ab631258 100644 --- a/src/main/java/forge/model/BuildInfo.java +++ b/src/main/java/forge/model/BuildInfo.java @@ -231,4 +231,34 @@ public class BuildInfo { return atts.getValue(manifestAttrName); } + /** + * Generate a user-friendly string describing the version and build ID. + * + * This replaces the old system property program/version. + * + * @return a user-friendly string describing the version and build ID + */ + public final String toPrettyString() { + final String rawVersion = getVersion(); + final String rawBuildID = getBuildID(); + + String version; + if (rawVersion == null) { + version = "Unknown"; + } + else { + version = rawVersion; + } + + String buildID; + if (rawBuildID == null) { + buildID = "Unknown"; + } + else { + buildID = rawBuildID; + } + + return "Forge version " + version + ", build ID " + buildID; + } + } diff --git a/src/main/java/forge/properties/NewConstants.java b/src/main/java/forge/properties/NewConstants.java index cf26f11ec59..f75ef9e575f 100644 --- a/src/main/java/forge/properties/NewConstants.java +++ b/src/main/java/forge/properties/NewConstants.java @@ -17,8 +17,6 @@ public interface NewConstants { //General properties /** Constant HOW_TO_REPORT_BUGS_URL = "program/howToReportBugsURL". */ String HOW_TO_REPORT_BUGS_URL = "program/howToReportBugsURL"; - /** Constant VERSION="program/version". */ - String VERSION = "program/version"; /** Constant SHOW2CDECK="showdeck/2color". */ String SHOW2CDECK = "showdeck/2color";