Skip to content
This repository has been archived by the owner on Jan 21, 2024. It is now read-only.

Commit

Permalink
Refactored project, moved most of the Error Reporting classes into Ap…
Browse files Browse the repository at this point in the history
…tiAPI, changed donate link to donate.liveforcode.net, added new link to Copyright label, added progress dialog to Error Reporter, added confirmation message when Error Report is successfully sent.
  • Loading branch information
Mitch Talmadge committed Oct 25, 2015
1 parent 43c5c36 commit 4263742
Show file tree
Hide file tree
Showing 58 changed files with 388 additions and 211 deletions.
2 changes: 1 addition & 1 deletion .gitignore
@@ -1,2 +1,2 @@
target
src/main/java/me/MitchT/EmojiTools/Extraction/Extractors/AppleExtractionThread1_7.java
src/main/java/net/liveforcode/EmojiTools/Extraction/Extractors/AppleExtractionThread1_7.java
1 change: 1 addition & 0 deletions Emoji-Tools.iml
Expand Up @@ -7,6 +7,7 @@
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/testResources" type="java-test-resource" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="inheritedJdk" />
Expand Down
33 changes: 24 additions & 9 deletions src/main/java/com/AptiTekk/AptiAPI/AptiAPI.java
@@ -1,5 +1,6 @@
package com.AptiTekk.AptiAPI;

import java.awt.*;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
Expand All @@ -18,15 +19,21 @@ public class AptiAPI {
private static final String ERROR_REPORTER = "ErrorReporter.php";
protected final ArrayList<AptiAPIListener> APIListeners = new ArrayList<>();
private final int projectID;
private final ErrorHandler errorHandler;
private Image imageIcon;

public AptiAPI(int projectID) {
public AptiAPI(int projectID, Image imageIcon) {
this.projectID = projectID;
this.imageIcon = imageIcon;
this.errorHandler = new ErrorHandler(this);
}

public boolean sendErrorReport(String report) {
protected boolean sendErrorReport(ErrorReport report) {

try {
ErrorReportProgressDialog progressDialog = new ErrorReportProgressDialog(this, imageIcon);
progressDialog.setVisible(true);

try {
//Step 1 -- Generate Token
String tokenResponse = POSTData(API_URL + API_VERSION + "/" + TOKEN_GENERATOR, "projectID=" + projectID);

Expand All @@ -35,8 +42,6 @@ public boolean sendErrorReport(String report) {
return false;
}

System.out.println("Response: " + tokenResponse);

String[] responseSplit = tokenResponse.split(":");
if (responseSplit.length < 3) {
displayError("Token response length is < 3!");
Expand All @@ -50,13 +55,14 @@ public boolean sendErrorReport(String report) {

String token = responseSplit[2];

String encryptedReport = new AptiCrypto(token.substring(0, 16)).encrypt(report);
String encryptedReport = new AptiCrypto(token.substring(0, 16)).encrypt(report.generateReport());

//Step 2 -- Submit Report
String errorReportResponse = POSTData(API_URL + API_VERSION + "/" + ERROR_REPORTER, "projectID=" + projectID + "&token=" + token + "&report=" + encryptedReport);

if (errorReportResponse == null) {
displayError("Could not submit report: Null response");
return false;
}

responseSplit = tokenResponse.split(":");
Expand All @@ -75,6 +81,10 @@ public boolean sendErrorReport(String report) {
return true;
}

public ErrorHandler getErrorHandler() {
return errorHandler;
}

public void addAPIListener(AptiAPIListener listener) {
if (!APIListeners.contains(listener))
APIListeners.add(listener);
Expand All @@ -85,19 +95,20 @@ public void removeAPIListener(AptiAPIListener listener) {
APIListeners.remove(listener);
}

private void displayInfo(String message) {

protected void displayInfo(String message) {
for (AptiAPIListener listener : APIListeners) {
listener.displayInfo(message);
}
}

private void displayError(String message) {
protected void displayError(String message) {
for (AptiAPIListener listener : APIListeners) {
listener.displayError(message);
}
}

private void shutdown() {
protected void shutdownListeners() {
for (AptiAPIListener listener : APIListeners) {
listener.shutdown();
}
Expand Down Expand Up @@ -138,4 +149,8 @@ private String POSTData(String url, String data) {
}
return null;
}

public Image getIconImage() {
return imageIcon;
}
}
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<form xmlns="http://www.intellij.com/uidesigner/form/" version="1" bind-to-class="me.MitchT.EmojiTools.GUI.ErrorDetailsDialog">
<form xmlns="http://www.intellij.com/uidesigner/form/" version="1" bind-to-class="com.AptiTekk.AptiAPI.ErrorDetailsDialog">
<grid id="cbd77" binding="contentPane" layout-manager="BorderLayout" hgap="0" vgap="0">
<constraints>
<xy x="48" y="54" width="600" height="391"/>
Expand Down
Expand Up @@ -18,10 +18,9 @@
* Contact Mitch Talmadge at mitcht@liveforcode.net
*/

package me.MitchT.EmojiTools.GUI;
package com.AptiTekk.AptiAPI;

import me.MitchT.EmojiTools.EmojiTools;
import me.MitchT.EmojiTools.ErrorReport;
import net.liveforcode.EmojiTools.EmojiTools;

import javax.swing.*;
import java.awt.event.*;
Expand Down
Expand Up @@ -18,21 +18,14 @@
* Contact Mitch Talmadge at mitcht@liveforcode.net
*/

package me.MitchT.EmojiTools;
package com.AptiTekk.AptiAPI;

import com.AptiTekk.AptiAPI.AptiAPI;
import com.AptiTekk.AptiAPI.AptiAPIListener;
import me.MitchT.EmojiTools.GUI.ErrorReportDialog;

import javax.swing.*;

public class ErrorHandler implements Thread.UncaughtExceptionHandler, AptiAPIListener {
public class ErrorHandler implements Thread.UncaughtExceptionHandler {

private final AptiAPI aptiAPI;

public ErrorHandler() {
this.aptiAPI = new AptiAPI(Versioning.APTIAPI_PROJECT_ID);
this.aptiAPI.addAPIListener(this);
public ErrorHandler(AptiAPI aptiAPI) {
this.aptiAPI = aptiAPI;
}

@Override
Expand All @@ -43,24 +36,6 @@ public void uncaughtException(Thread t, Throwable e) {
System.out.println("Thread Name: " + t.getName());
System.out.println("Exception:\n" + errorReport.getStackTrace());

new ErrorReportDialog(this, null, errorReport).setVisible(true);
}

public void sendErrorReport(ErrorReport errorReport) {
this.aptiAPI.sendErrorReport(errorReport.generateReport());
}

@Override
public void displayInfo(final String message) {
JOptionPane.showMessageDialog(null, message, "Info", JOptionPane.INFORMATION_MESSAGE);
}

@Override
public void displayError(final String message) {
JOptionPane.showMessageDialog(null, message, "Error", JOptionPane.ERROR_MESSAGE);
}

@Override
public void shutdown() {
new ErrorReportDialog(aptiAPI, errorReport).setVisible(true);
}
}
Expand Up @@ -18,7 +18,9 @@
* Contact Mitch Talmadge at mitcht@liveforcode.net
*/

package me.MitchT.EmojiTools;
package com.AptiTekk.AptiAPI;

import net.liveforcode.EmojiTools.Versioning;

import java.io.PrintWriter;
import java.io.StringWriter;
Expand Down Expand Up @@ -63,23 +65,23 @@ public String generateReport() {
}

public String getDescription() {
return (description.isEmpty()) ? "No Comment." : description;
return (description == null || description.isEmpty()) ? "No Comment." : description;
}

public void setDescription(String description) {
this.description = description;
}

public String getName() {
return (name.isEmpty()) ? "No Name." : name;
return (name == null || name.isEmpty()) ? "No Name." : name;
}

public void setName(String name) {
this.name = name;
}

public String getEmail() {
return (email.isEmpty()) ? "No Email." : email;
return (email == null || email.isEmpty()) ? "No Email." : email;
}

public void setEmail(String email) {
Expand Down
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<form xmlns="http://www.intellij.com/uidesigner/form/" version="1" bind-to-class="me.MitchT.EmojiTools.GUI.ErrorReportDialog">
<form xmlns="http://www.intellij.com/uidesigner/form/" version="1" bind-to-class="com.AptiTekk.AptiAPI.ErrorReportDialog">
<grid id="cbd77" binding="contentPane" layout-manager="BorderLayout" hgap="0" vgap="0">
<constraints>
<xy x="48" y="54" width="412" height="425"/>
Expand Down
Expand Up @@ -18,20 +18,18 @@
* Contact Mitch Talmadge at mitcht@liveforcode.net
*/

package me.MitchT.EmojiTools.GUI;
package com.AptiTekk.AptiAPI;

import me.MitchT.EmojiTools.EmojiTools;
import me.MitchT.EmojiTools.ErrorHandler;
import me.MitchT.EmojiTools.ErrorReport;
import me.MitchT.EmojiTools.GUI.Tabs.OperationTab;
import net.liveforcode.EmojiTools.GUI.TextFilter;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class ErrorReportDialog extends JDialog implements ActionListener {
private final OperationTab gui;
private final ErrorReport report;
private final ErrorHandler errorHandler;
private Image imageIcon;
private AptiAPI aptiAPI;
private JPanel contentPane;
private JButton sendReportButton;
private JButton dontSendButton;
Expand All @@ -40,13 +38,11 @@ public class ErrorReportDialog extends JDialog implements ActionListener {
private JButton viewDetailsButton;
private JTextArea descriptionArea;

public ErrorReportDialog(ErrorHandler errorHandler, OperationTab gui, ErrorReport report) {

this.errorHandler = errorHandler;
this.gui = gui;
public ErrorReportDialog(AptiAPI aptiAPI, ErrorReport report) {
this.aptiAPI = aptiAPI;
this.report = report;

setIconImage(EmojiTools.getLogoImage());
setIconImage(aptiAPI.getIconImage());
setContentPane(contentPane);
setModal(true);
setResizable(false);
Expand Down Expand Up @@ -76,25 +72,24 @@ public void actionPerformed(ActionEvent e) {
}, KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);

pack();
setLocationRelativeTo(gui);
setLocationRelativeTo(null);
}

private void onSendReport() {
if (gui != null)
gui.stopOperations();

aptiAPI.shutdownListeners();
this.report.setDescription(this.descriptionArea.getText());
this.report.setName(this.nameField.getText());
this.report.setEmail(this.emailAddressField.getText());
this.errorHandler.sendErrorReport(report);
this.aptiAPI.sendErrorReport(report);

JOptionPane.showMessageDialog(this, "Error Report has been sent successfully! Thank you for your support!", "Error Report Sent!", JOptionPane.INFORMATION_MESSAGE, new ImageIcon(aptiAPI.getIconImage()));

this.dispose();
System.exit(0);
}

private void onDontSendReport() {
if (gui != null)
gui.stopOperations();
aptiAPI.shutdownListeners();
this.dispose();
System.exit(0);
}
Expand Down
64 changes: 64 additions & 0 deletions src/main/java/com/AptiTekk/AptiAPI/ErrorReportProgressDialog.form
@@ -0,0 +1,64 @@
<?xml version="1.0" encoding="UTF-8"?>
<form xmlns="http://www.intellij.com/uidesigner/form/" version="1" bind-to-class="com.AptiTekk.AptiAPI.ErrorReportProgressDialog">
<grid id="cbd77" binding="contentPane" layout-manager="BorderLayout" hgap="0" vgap="0">
<constraints>
<xy x="48" y="54" width="297" height="125"/>
</constraints>
<properties/>
<border type="none"/>
<children>
<grid id="16ae2" layout-manager="BorderLayout" hgap="0" vgap="0">
<constraints border-constraint="South"/>
<properties/>
<border type="none"/>
<children>
<component id="be450" class="javax.swing.JButton" binding="cancelButton">
<constraints border-constraint="Center"/>
<properties>
<text value="&amp;Cancel"/>
</properties>
</component>
</children>
</grid>
<grid id="594a1" layout-manager="GridBagLayout">
<constraints border-constraint="North"/>
<properties/>
<border type="empty">
<size top="10" left="10" bottom="10" right="10"/>
</border>
<children>
<component id="a3bf0" class="javax.swing.JLabel" binding="titleLabel">
<constraints>
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
<gridbag weightx="0.0" weighty="0.0"/>
</constraints>
<properties>
<font size="16"/>
<text value="Sending Error Report... Please Wait"/>
</properties>
</component>
</children>
</grid>
<grid id="614b1" layout-manager="GridLayoutManager" row-count="1" column-count="1" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
<margin top="0" left="0" bottom="0" right="0"/>
<constraints border-constraint="Center"/>
<properties/>
<border type="empty">
<size top="0" left="10" bottom="10" right="10"/>
</border>
<children>
<component id="8dcd7" class="javax.swing.JProgressBar" binding="progressBar">
<constraints>
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="6" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
</constraints>
<properties>
<indeterminate value="true"/>
<string value="Sending..."/>
<stringPainted value="true"/>
</properties>
</component>
</children>
</grid>
</children>
</grid>
</form>

0 comments on commit 4263742

Please sign in to comment.