From e2b5878e8ca9b7ea707ce1c252236a2238dff3bd Mon Sep 17 00:00:00 2001 From: Kaur Palang Date: Sat, 5 Apr 2025 21:32:05 +0300 Subject: [PATCH] OpenIntegrationEngine/engine#4 Whitelabel engine Co-authored-by: Tony Germano Signed-off-by: Kaur Palang Signed-off-by: Tony Germano --- .../mirth/connect/client/ui/AboutMirth.java | 16 +-- .../connect/client/ui/BrandingConstants.java | 43 +++++++ .../mirth/connect/client/ui/ChannelPanel.java | 6 +- .../mirth/connect/client/ui/ChannelSetup.java | 2 +- .../client/ui/CustomBannerPanelDialog.java | 3 +- .../mirth/connect/client/ui/ErrorDialog.java | 2 +- .../connect/client/ui/FirstLoginDialog.java | 14 +-- .../com/mirth/connect/client/ui/Frame.java | 116 +++++++----------- .../mirth/connect/client/ui/LoginPanel.java | 29 ++--- .../client/ui/MessageImportDialog.java | 2 +- .../client/ui/SettingsPanelAdministrator.java | 12 +- .../client/ui/SettingsPanelServer.java | 22 ++-- .../mirth/connect/client/ui/UIConstants.java | 17 --- .../message/MessageBrowserAdvancedFilter.java | 2 +- .../components/ChannelTableTransferable.java | 3 +- .../client/ui/editors/BaseEditorPane.java | 5 +- .../ExtensionManagerPanel.java | 3 +- .../ui/images/MirthConnect_Logo_WM_White.png | Bin 160841 -> 0 bytes .../ui/images/MirthConnect_NLogo_RGB.png | Bin 63377 -> 0 bytes .../client/ui/images/NG_MC_Icon_32x32.png | Bin 1046 -> 0 bytes .../branding/oie_logo_banner_text_215x30.png | Bin 0 -> 5286 bytes .../oie_logo_only_white_background_32x32.png | Bin 0 -> 2031 bytes .../oie_white_logo_banner_text_215x30.png | Bin 0 -> 3546 bytes .../connectors/ListenerSettingsPanel.java | 3 +- .../ui/panels/export/MessageExportPanel.java | 5 +- .../connect/connectors/dimse/DICOMSender.java | 7 +- .../connect/connectors/http/HttpListener.java | 3 +- .../connect/connectors/http/HttpSender.java | 3 +- .../connectors/jdbc/DatabaseReader.java | 3 +- .../connect/connectors/smtp/SmtpSender.java | 5 +- .../connect/connectors/tcp/TcpListener.java | 3 +- .../connect/connectors/tcp/TcpSender.java | 5 +- .../connectors/ws/WebServiceListener.java | 3 +- .../plugins/datapruner/DataPrunerPanel.java | 4 +- .../plugins/pdfviewer/MirthPDFViewer.java | 4 +- .../scriptfilerule/ExternalScriptPanel.java | 3 +- .../scriptfilestep/ExternalScriptPanel.java | 3 +- .../connect/cli/CommandLineInterface.java | 11 +- .../donkey/util/migration/Migratable.java | 4 +- .../connect/manager/BrandingConstants.java | 9 ++ .../connect/manager/ManagerController.java | 18 +-- .../mirth/connect/manager/ManagerDialog.java | 20 +-- .../mirth/connect/manager/ManagerTray.java | 10 +- .../connect/manager/MirthHeadingPanel.java | 2 +- .../manager/WindowsServiceController.java | 8 +- .../client/core/BrandingConstants.java | 12 ++ .../com/mirth/connect/client/core/Client.java | 22 ++-- .../connect/client/core/ServerConnection.java | 2 +- .../mirth/connect/client/core/Version.java | 2 +- .../ConfigurationServletInterface.java | 14 +-- .../api/servlets/UserServletInterface.java | 2 +- .../connectors/http/HttpDispatcher.java | 3 +- .../connect/model/ServerConfiguration.java | 5 +- .../HL7v2ResponseGenerationProperties.java | 3 +- .../mirth/connect/server/ExtensionLoader.java | 5 +- .../src/com/mirth/connect/server/Mirth.java | 22 +++- .../connect/server/alert/AlertWorker.java | 3 +- .../server/api/servlets/SystemServlet.java | 5 +- .../DefaultConfigurationController.java | 28 +++-- .../DefaultExtensionController.java | 3 +- .../server/servlets/SwaggerServlet.java | 5 +- .../server/servlets/WebStartServlet.java | 5 +- 62 files changed, 324 insertions(+), 250 deletions(-) create mode 100644 client/src/com/mirth/connect/client/ui/BrandingConstants.java delete mode 100644 client/src/com/mirth/connect/client/ui/images/MirthConnect_Logo_WM_White.png delete mode 100644 client/src/com/mirth/connect/client/ui/images/MirthConnect_NLogo_RGB.png delete mode 100644 client/src/com/mirth/connect/client/ui/images/NG_MC_Icon_32x32.png create mode 100644 client/src/com/mirth/connect/client/ui/images/branding/oie_logo_banner_text_215x30.png create mode 100644 client/src/com/mirth/connect/client/ui/images/branding/oie_logo_only_white_background_32x32.png create mode 100644 client/src/com/mirth/connect/client/ui/images/branding/oie_white_logo_banner_text_215x30.png create mode 100644 manager/src/com/mirth/connect/manager/BrandingConstants.java create mode 100644 server/src/com/mirth/connect/client/core/BrandingConstants.java diff --git a/client/src/com/mirth/connect/client/ui/AboutMirth.java b/client/src/com/mirth/connect/client/ui/AboutMirth.java index 77f8eba696..d2bb42a792 100644 --- a/client/src/com/mirth/connect/client/ui/AboutMirth.java +++ b/client/src/com/mirth/connect/client/ui/AboutMirth.java @@ -11,7 +11,6 @@ import java.awt.Dimension; import java.awt.Point; -import java.util.Calendar; import com.mirth.connect.client.ui.util.DisplayUtil; @@ -55,21 +54,22 @@ public void loadContent() { StringBuilder content = new StringBuilder(); if (PlatformUI.SERVER_VERSION != null) { - content.append("Mirth Connect Server " + PlatformUI.SERVER_VERSION + "\n\n"); + content.append(String.format("%s Server %s\n\n", BrandingConstants.PRODUCT_NAME, PlatformUI.SERVER_VERSION)); } if (PlatformUI.BUILD_DATE != null) { - content.append("Built on " + PlatformUI.BUILD_DATE + "\n\n"); + content.append("Built on ").append(PlatformUI.BUILD_DATE).append("\n\n"); } if (PlatformUI.SERVER_ID != null) { - content.append("Server ID: " + PlatformUI.SERVER_ID + "\n\n"); + content.append("Server ID: ").append(PlatformUI.SERVER_ID).append("\n\n"); } - content.append("Java version: " + System.getProperty("java.version") + "\n\n"); + content.append("Java version: ").append(System.getProperty("java.version")).append("\n\n"); - content.append("(c) 2005-2024 NextGen Healthcare. All rights reserved. Visit http://www.nextgen.com\n\n"); - content.append("The following is a list of acknowledgements for third-party software that is included with Mirth Connect:\n\n"); + content.append("(c) 2025 Open Integration Engine contributors. Visit https://openintegrationengine.org\n\n"); + content.append("(c) 2005-2024 NextGen Healthcare.\n\n"); + content.append("The following is a list of acknowledgements for third-party software that is included with ").append(BrandingConstants.PRODUCT_NAME).append(":\n\n"); content.append("This product includes software developed by the Apache Software Foundation (http://www.apache.org/).\n\n"); content.append("This product includes all or a portion of the HL7 Vocabulary database, or is derived from the HL7 Vocabulary database, subject to a license from Health Level Seven, Inc.\n\n"); content.append("This product includes a portion of images from http://www.famfamfam.com/lab/icons/silk/.\n\n"); @@ -116,7 +116,7 @@ private void initComponents() { jLabel2.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N jLabel2.setForeground(new java.awt.Color(255, 255, 255)); - jLabel2.setText("About Mirth Connect"); + jLabel2.setText(String.format("About %s", BrandingConstants.PRODUCT_NAME)); javax.swing.GroupLayout mirthHeadingPanel1Layout = new javax.swing.GroupLayout(mirthHeadingPanel1); mirthHeadingPanel1.setLayout(mirthHeadingPanel1Layout); diff --git a/client/src/com/mirth/connect/client/ui/BrandingConstants.java b/client/src/com/mirth/connect/client/ui/BrandingConstants.java new file mode 100644 index 0000000000..eb3ee74387 --- /dev/null +++ b/client/src/com/mirth/connect/client/ui/BrandingConstants.java @@ -0,0 +1,43 @@ +package com.mirth.connect.client.ui; + +import javax.swing.ImageIcon; + +public class BrandingConstants { + + public static final String PRODUCT_NAME = "Open Integration Engine"; + public static final String COMPANY_NAME = "Open Integration Engine"; + + /* + Sets the title of the Administrator window + */ + public static final String WINDOW_TITLE = "Open Integration Engine Administrator"; + + public static final String ISSUE_TRACKER_LOCATION = "https://github.com/openintegrationengine/engine/issues"; + + + // The URL that is opened when clicking the bottom image in Login window + // The one where you're asked for server URL, username, and password + public static final String COMPANY_URL = "https://openintegrationengine.org"; + public static final String COMPANY_TOOLTIP = "Open Integration Engine"; + + + // The URL that is opened when clicking the image in the Top right corner of the main administrator window + // The URL that is opened when clicking "Visit + PRODUCT_NAME" button in Administrator + public static final String PRODUCT_URL = "https://github.com/openintegrationengine/engine"; + public static final String PRODUCT_TOOLTIP = "Open Integration Engine"; + + + // The URL that is opened when clicking "Help" button in Administrator + public static String HELP_URL_LOCATION = "https://github.com/OpenIntegrationEngine/engine/discussions"; + + // The "More info" in Server settings "Provide usage statistics" + public static final String PRIVACY_URL = "https://github.com/openintegrationengine"; + public static final String PRIVACY_TOOLTIP = "Privacy Information"; + + // Icons + // Favicon must be at 32px x 32px scale + public static final ImageIcon FAVICON = new ImageIcon(com.mirth.connect.client.ui.Frame.class.getResource("images/branding/oie_logo_only_white_background_32x32.png")); + // These images must be at 215px x 30px scale + public static final ImageIcon LOGO = new ImageIcon(com.mirth.connect.client.ui.Frame.class.getResource("images/branding/oie_logo_banner_text_215x30.png")); + public static final ImageIcon LOGO_GRAY = new ImageIcon(com.mirth.connect.client.ui.Frame.class.getResource("images/branding/oie_white_logo_banner_text_215x30.png")); +} diff --git a/client/src/com/mirth/connect/client/ui/ChannelPanel.java b/client/src/com/mirth/connect/client/ui/ChannelPanel.java index 67e20b7f2a..e0de345f68 100644 --- a/client/src/com/mirth/connect/client/ui/ChannelPanel.java +++ b/client/src/com/mirth/connect/client/ui/ChannelPanel.java @@ -217,7 +217,7 @@ public ChannelPanel() { parent.addTask(TaskConstants.CHANNEL_DEPLOY_DEBUG, "Debug Channel", "Deploys the currently selected channel in debug mode.", "", new ImageIcon(com.mirth.connect.client.ui.Frame.class.getResource("images/bug_go.png")), channelTasks, channelPopupMenu, this); parent.addTask(TaskConstants.CHANNEL_DEPLOY, "Deploy Channel", "Deploys the currently selected channel.", "", new ImageIcon(com.mirth.connect.client.ui.Frame.class.getResource("images/arrow_redo.png")), channelTasks, channelPopupMenu, this); parent.addTask(TaskConstants.CHANNEL_EDIT_GLOBAL_SCRIPTS, "Edit Global Scripts", "Edit scripts that are not channel specific.", "G", new ImageIcon(com.mirth.connect.client.ui.Frame.class.getResource("images/script_edit.png")), channelTasks, channelPopupMenu, this); - parent.addTask(TaskConstants.CHANNEL_EDIT_CODE_TEMPLATES, "Edit Code Templates", "Create and manage templates to be used in JavaScript throughout Mirth Connect.", "", new ImageIcon(com.mirth.connect.client.ui.Frame.class.getResource("images/page_edit.png")), channelTasks, channelPopupMenu, this); + parent.addTask(TaskConstants.CHANNEL_EDIT_CODE_TEMPLATES, "Edit Code Templates", String.format("Create and manage templates to be used in JavaScript throughout %s.", BrandingConstants.PRODUCT_NAME), "", new ImageIcon(com.mirth.connect.client.ui.Frame.class.getResource("images/page_edit.png")), channelTasks, channelPopupMenu, this); parent.addTask(TaskConstants.CHANNEL_NEW_CHANNEL, "New Channel", "Create a new channel.", "N", new ImageIcon(com.mirth.connect.client.ui.Frame.class.getResource("images/application_form_add.png")), channelTasks, channelPopupMenu, this); parent.addTask(TaskConstants.CHANNEL_IMPORT_CHANNEL, "Import Channel", "Import a channel from an XML file.", "", new ImageIcon(com.mirth.connect.client.ui.Frame.class.getResource("images/report_go.png")), channelTasks, channelPopupMenu, this); parent.addTask(TaskConstants.CHANNEL_EXPORT_ALL_CHANNELS, "Export All Channels", "Export all of the channels to XML files.", "", new ImageIcon(com.mirth.connect.client.ui.Frame.class.getResource("images/report_disk.png")), channelTasks, channelPopupMenu, this); @@ -2659,7 +2659,7 @@ private String getMissingExtensions(InvalidChannel channel) { StringBuilder builder = new StringBuilder(); if (!missingConnectors.isEmpty()) { - builder.append("\n\nYour Mirth Connect installation is missing required connectors for this channel:\n "); + builder.append(String.format("\n\nYour %s installation is missing required connectors for this channel:\n ", BrandingConstants.PRODUCT_NAME)); builder.append(StringUtils.join(missingConnectors.toArray(), "\n ")); builder.append("\n\n"); } @@ -2668,7 +2668,7 @@ private String getMissingExtensions(InvalidChannel channel) { if (missingConnectors.isEmpty()) { builder.append("\n\n"); } - builder.append("Your Mirth Connect installation is missing required data types for this channel:\n "); + builder.append(String.format("Your %s installation is missing required data types for this channel:\n ", BrandingConstants.PRODUCT_NAME)); builder.append(StringUtils.join(missingDataTypes.toArray(), "\n ")); builder.append("\n\n"); } diff --git a/client/src/com/mirth/connect/client/ui/ChannelSetup.java b/client/src/com/mirth/connect/client/ui/ChannelSetup.java index 70070832a8..f9a7684276 100644 --- a/client/src/com/mirth/connect/client/ui/ChannelSetup.java +++ b/client/src/com/mirth/connect/client/ui/ChannelSetup.java @@ -780,7 +780,7 @@ private void loadChannelInfo() { encryptAttachmentsCheckBox.setSelected(properties.isEncryptAttachments()); encryptCustomMetaDataCheckBox.setSelected(properties.isEncryptCustomMetaData()); - // Fix dataTypes and properties not set by previous versions of Mirth Connect + // Fix dataTypes and properties not set by previous versions fixNullDataTypesAndProperties(); // load message storage settings diff --git a/client/src/com/mirth/connect/client/ui/CustomBannerPanelDialog.java b/client/src/com/mirth/connect/client/ui/CustomBannerPanelDialog.java index 2eedb3d6d1..dc0394b751 100644 --- a/client/src/com/mirth/connect/client/ui/CustomBannerPanelDialog.java +++ b/client/src/com/mirth/connect/client/ui/CustomBannerPanelDialog.java @@ -18,7 +18,6 @@ import javax.swing.AbstractButton; import javax.swing.BorderFactory; -import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JFrame; @@ -58,7 +57,7 @@ public CustomBannerPanelDialog(JFrame parent, String title, String text) { private void initComponents() { setLayout(new MigLayout("insets 12")); // layout sets 12 pixel border setTitle(title); - setIconImage(UIConstants.MIRTH_FAVICON.getImage()); + setIconImage(BrandingConstants.FAVICON.getImage()); getContentPane().setBackground(UIConstants.BACKGROUND_COLOR); // set dialog box to background color setBackground(UIConstants.BACKGROUND_COLOR); // get all other backgrounds for each piece diff --git a/client/src/com/mirth/connect/client/ui/ErrorDialog.java b/client/src/com/mirth/connect/client/ui/ErrorDialog.java index 52b213c1e6..46fe55eb11 100644 --- a/client/src/com/mirth/connect/client/ui/ErrorDialog.java +++ b/client/src/com/mirth/connect/client/ui/ErrorDialog.java @@ -100,7 +100,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { question.setBackground(new java.awt.Color(224, 223, 227)); question.setBorder(null); question.setEditable(false); - question.setText("An unexpected error has occurred. If this is a severe error and you are on NextGen Healthcare Support, please contact the NextGen Healthcare Help Desk."); + question.setText("An unexpected error has occurred. Check the server log and client console output for further details."); question.setFocusable(false); questionPane.setViewportView(question); diff --git a/client/src/com/mirth/connect/client/ui/FirstLoginDialog.java b/client/src/com/mirth/connect/client/ui/FirstLoginDialog.java index c321e0cdd5..fbfa5e90d1 100644 --- a/client/src/com/mirth/connect/client/ui/FirstLoginDialog.java +++ b/client/src/com/mirth/connect/client/ui/FirstLoginDialog.java @@ -109,7 +109,7 @@ private void initComponents() { contentTextPane = new javax.swing.JTextPane(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); - setTitle("Welcome to Mirth Connect"); + setTitle(String.format("Welcome to %s", BrandingConstants.PRODUCT_NAME)); channelOverview.setBackground(new java.awt.Color(255, 255, 255)); channelOverview.setName(""); // NOI18N @@ -123,7 +123,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { jLabel2.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N jLabel2.setForeground(new java.awt.Color(255, 255, 255)); - jLabel2.setText("Welcome to Mirth® Connect by NextGen® Healthcare"); + jLabel2.setText(String.format("Welcome to %s", BrandingConstants.PRODUCT_NAME)); javax.swing.GroupLayout mirthHeadingPanel1Layout = new javax.swing.GroupLayout(mirthHeadingPanel1); mirthHeadingPanel1.setLayout(mirthHeadingPanel1Layout); @@ -144,7 +144,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { jTextPane1.setEditable(false); jTextPane1.setBackground(new java.awt.Color(250, 250, 210)); - jTextPane1.setText("You may now customize your Mirth Connect user account information. You also have the option of changing your account password."); + jTextPane1.setText(String.format("You may now customize your %s user account information. You also have the option of changing your account password.", BrandingConstants.PRODUCT_NAME)); jTextPane1.setAutoscrolls(false); jTextPane1.setDisabledTextColor(new java.awt.Color(0, 0, 0)); jTextPane1.setEnabled(false); @@ -152,8 +152,8 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { registerCheckBox.setBackground(new java.awt.Color(255, 255, 255)); registerCheckBox.setSelected(true); - registerCheckBox.setText("Register user with NextGen Healthcare"); - registerCheckBox.setToolTipText("Register your user information with NextGen Healthcare to help us
improve the product and provide better service."); + registerCheckBox.setText(String.format("Register user with %s", BrandingConstants.COMPANY_NAME)); + registerCheckBox.setToolTipText(String.format("Register your user information with %s to help us
improve the product and provide better service.", BrandingConstants.COMPANY_NAME)); registerCheckBox.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { registerCheckBoxActionPerformed(evt); @@ -162,11 +162,11 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { userConsentCheckBox.setBackground(new java.awt.Color(255, 255, 255)); userConsentCheckBox.setSelected(true); - userConsentCheckBox.setText("I consent to receive email updates and marketing messages from NextGen Healthcare."); + userConsentCheckBox.setText(String.format("I consent to receive email updates and marketing messages from %s.", BrandingConstants.COMPANY_NAME)); userConsentCheckBox.setToolTipText(""); contentTextPane.setContentType("text/html"); - contentTextPane.setText("    For more information on the processing of your personal data, click here to find our Privacy Policy."); + contentTextPane.setText(String.format("    For more information on the processing of your personal data, click here to find our Privacy Policy.", BrandingConstants.PRIVACY_URL)); MutableAttributeSet set = new SimpleAttributeSet(); StyleConstants.setLineSpacing(set, 1); diff --git a/client/src/com/mirth/connect/client/ui/Frame.java b/client/src/com/mirth/connect/client/ui/Frame.java index af4c41bea5..7178035618 100644 --- a/client/src/com/mirth/connect/client/ui/Frame.java +++ b/client/src/com/mirth/connect/client/ui/Frame.java @@ -18,7 +18,6 @@ import java.awt.Font; import java.awt.GradientPaint; import java.awt.GridBagConstraints; -import java.awt.Image; import java.awt.KeyEventDispatcher; import java.awt.KeyboardFocusManager; import java.awt.Toolkit; @@ -98,9 +97,6 @@ import org.jdesktop.swingx.painter.MattePainter; import org.syntax.jedit.JEditTextArea; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ObjectNode; import com.mirth.connect.client.core.Client; import com.mirth.connect.client.core.ClientException; import com.mirth.connect.client.core.ConnectServiceUtil; @@ -161,7 +157,6 @@ import com.mirth.connect.util.ChannelDependencyGraph; import com.mirth.connect.util.CharsetUtils; import com.mirth.connect.util.DirectedAcyclicGraphNode; -import com.mirth.connect.util.HttpUtil; import com.mirth.connect.util.JavaScriptSharedUtil; import com.mirth.connect.util.MigrationUtil; @@ -278,11 +273,11 @@ public Frame() { titleText.append(PlatformUI.SERVER_URL); } - titleText.append(" - " + UIConstants.TITLE_TEXT); + titleText.append(" - " + BrandingConstants.WINDOW_TITLE); setTitle(titleText.toString()); setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); - setIconImage(UIConstants.MIRTH_FAVICON.getImage()); + setIconImage(BrandingConstants.FAVICON.getImage()); makePaneContainer(); connectionError = false; @@ -767,18 +762,15 @@ private void buildContentPanel(JXTitledPanel container, JScrollPane component, b padlockWarning.setForeground(Color.WHITE); JLabel mirthConnectImage = new JLabel(); - ImageIcon imageIcon = UIConstants.MIRTHCONNECT_LOGO_GRAY; // load the image to a imageIcon - Image image = imageIcon.getImage(); // transform it - Image newimg = image.getScaledInstance(218, 29, java.awt.Image.SCALE_SMOOTH); // scale it the smooth way - imageIcon = new ImageIcon(newimg); + ImageIcon imageIcon = BrandingConstants.LOGO_GRAY; // load the image to a imageIcon mirthConnectImage.setIcon(imageIcon); - mirthConnectImage.setToolTipText(UIConstants.MIRTHCONNECT_TOOLTIP); + mirthConnectImage.setToolTipText(BrandingConstants.PRODUCT_TOOLTIP); mirthConnectImage.setCursor(new Cursor(Cursor.HAND_CURSOR)); mirthConnectImage.setVerticalAlignment(SwingConstants.BOTTOM); mirthConnectImage.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { - BareBonesBrowserLaunch.openURL(UIConstants.MIRTHCONNECT_URL); + BareBonesBrowserLaunch.openURL(BrandingConstants.PRODUCT_URL); } }); @@ -1020,7 +1012,7 @@ private void setInitialVisibleTasks() { private void createViewPane() { // Create View pane viewPane = new JXTaskPane(); - viewPane.setTitle("Mirth Connect"); + viewPane.setTitle(BrandingConstants.PRODUCT_NAME); viewPane.setName(TaskConstants.VIEW_KEY); viewPane.setFocusable(false); @@ -1030,7 +1022,7 @@ private void createViewPane() { addTask(TaskConstants.VIEW_SETTINGS, "Settings", "Contains local and system settings.", "S", new ImageIcon(com.mirth.connect.client.ui.Frame.class.getResource("images/wrench.png")), viewPane, null); addTask(TaskConstants.VIEW_ALERTS, "Alerts", "Contains alert settings.", "A", new ImageIcon(com.mirth.connect.client.ui.Frame.class.getResource("images/error.png")), viewPane, null); addTask(TaskConstants.VIEW_EVENTS, "Events", "Show the event logs for the system.", "E", new ImageIcon(com.mirth.connect.client.ui.Frame.class.getResource("images/table.png")), viewPane, null); - addTask(TaskConstants.VIEW_EXTENSIONS, "Extensions", "View and manage Mirth Connect extensions", "X", new ImageIcon(com.mirth.connect.client.ui.Frame.class.getResource("images/plugin.png")), viewPane, null); + addTask(TaskConstants.VIEW_EXTENSIONS, "Extensions", String.format("View and manage %s extensions", BrandingConstants.PRODUCT_NAME), "X", new ImageIcon(com.mirth.connect.client.ui.Frame.class.getResource("images/plugin.png")), viewPane, null); setNonFocusable(viewPane); taskPaneContainer.add(viewPane); @@ -1258,13 +1250,13 @@ private void createOtherPane() { otherPane.setTitle("Other"); otherPane.setName(TaskConstants.OTHER_KEY); otherPane.setFocusable(false); - addTask(TaskConstants.OTHER_NOTIFICATIONS, UIConstants.VIEW_NOTIFICATIONS, "View notifications from NextGen Healthcare.", "", new ImageIcon(com.mirth.connect.client.ui.Frame.class.getResource("images/flag_orange.png")), otherPane, null); - addTask(TaskConstants.OTHER_VIEW_USER_API, "View User API", "View documentation for the Mirth Connect User API.", "", new ImageIcon(com.mirth.connect.client.ui.Frame.class.getResource("images/page_white_text.png")), otherPane, null); - addTask(TaskConstants.OTHER_VIEW_CLIENT_API, "View Client API", "View documentation for the Mirth Connect Client API.", "", new ImageIcon(com.mirth.connect.client.ui.Frame.class.getResource("images/page_white_text.png")), otherPane, null); - addTask(TaskConstants.OTHER_HELP, "Help", "View the Mirth Connect wiki.", "", new ImageIcon(com.mirth.connect.client.ui.Frame.class.getResource("images/help.png")), otherPane, null); - addTask(TaskConstants.OTHER_ABOUT, "About Mirth Connect", "View the about page for Mirth Connect.", "", new ImageIcon(com.mirth.connect.client.ui.Frame.class.getResource("images/information.png")), otherPane, null); - addTask(TaskConstants.OTHER_VISIT_MIRTH, "Visit nextgen.com", "View Mirth Connect's homepage.", "", new ImageIcon(com.mirth.connect.client.ui.Frame.class.getResource("images/house.png")), otherPane, null); - addTask(TaskConstants.OTHER_REPORT_ISSUE, "Report Issue", "Visit Mirth Connect's issue tracker.", "", new ImageIcon(com.mirth.connect.client.ui.Frame.class.getResource("images/bug.png")), otherPane, null); + addTask(TaskConstants.OTHER_NOTIFICATIONS, UIConstants.VIEW_NOTIFICATIONS, String.format("View notifications from %s.", BrandingConstants.PRODUCT_NAME), "", new ImageIcon(com.mirth.connect.client.ui.Frame.class.getResource("images/flag_orange.png")), otherPane, null); + addTask(TaskConstants.OTHER_VIEW_USER_API, "View User API", String.format("View documentation for the %s User API.", BrandingConstants.PRODUCT_NAME), "", new ImageIcon(com.mirth.connect.client.ui.Frame.class.getResource("images/page_white_text.png")), otherPane, null); + addTask(TaskConstants.OTHER_VIEW_CLIENT_API, "View Client API", String.format("View documentation for the %s Client API.", BrandingConstants.PRODUCT_NAME), "", new ImageIcon(com.mirth.connect.client.ui.Frame.class.getResource("images/page_white_text.png")), otherPane, null); + addTask(TaskConstants.OTHER_HELP, "Help", String.format("View help for %s.", BrandingConstants.PRODUCT_NAME), "", new ImageIcon(com.mirth.connect.client.ui.Frame.class.getResource("images/help.png")), otherPane, null); + addTask(TaskConstants.OTHER_ABOUT, String.format("About %s", BrandingConstants.PRODUCT_NAME), String.format("View the about page for %s.", BrandingConstants.PRODUCT_NAME), "", new ImageIcon(com.mirth.connect.client.ui.Frame.class.getResource("images/information.png")), otherPane, null); + addTask(TaskConstants.OTHER_VISIT_MIRTH, "Visit homepage", String.format("View %s's homepage.", BrandingConstants.PRODUCT_NAME), "", new ImageIcon(com.mirth.connect.client.ui.Frame.class.getResource("images/house.png")), otherPane, null); + addTask(TaskConstants.OTHER_REPORT_ISSUE, "Report Issue", String.format("Visit %s's issue tracker.", BrandingConstants.PRODUCT_NAME), "", new ImageIcon(com.mirth.connect.client.ui.Frame.class.getResource("images/bug.png")), otherPane, null); addTask(TaskConstants.OTHER_LOGOUT, "Logout", "Logout and return to the login screen.", "", new ImageIcon(com.mirth.connect.client.ui.Frame.class.getResource("images/disconnect.png")), otherPane, null); setNonFocusable(otherPane); taskPaneContainer.add(otherPane); @@ -1516,7 +1508,7 @@ public void alertThrowable(Component parentComponent, Throwable t, String custom connectionError = true; statusUpdaterExecutor.shutdownNow(); - alertWarning(parentComponent, "Sorry your connection to Mirth Connect has either timed out or there was an error in the connection. Please login again."); + alertWarning(parentComponent, String.format("Sorry your connection to %s has either timed out or there was an error in the connection. Please login again.", BrandingConstants.PRODUCT_NAME)); if (!exportChannelOnError()) { return; } @@ -1534,7 +1526,7 @@ public void alertThrowable(Component parentComponent, Throwable t, String custom } else { server = PlatformUI.SERVER_URL; } - alertWarning(parentComponent, "The Mirth Connect server " + server + " is no longer running. Please start it and log in again."); + alertWarning(parentComponent, String.format("The %s server %s is no longer running. Please start it and log in again.", BrandingConstants.PRODUCT_NAME, server)); if (!exportChannelOnError()) { return; } @@ -2076,7 +2068,7 @@ public boolean isSaveEnabled() { // --- All bound actions are beneath this point --- // // //////////////////////////////////////////////////////////// public void goToMirth() { - BareBonesBrowserLaunch.openURL("https://www.nextgen.com/products-and-services/integration-engine"); + BareBonesBrowserLaunch.openURL(BrandingConstants.PRODUCT_URL); } public void goToUserAPI() { @@ -2092,7 +2084,7 @@ public void goToAbout() { } public void doReportIssue() { - BareBonesBrowserLaunch.openURL(UIConstants.ISSUE_TRACKER_LOCATION); + BareBonesBrowserLaunch.openURL(BrandingConstants.ISSUE_TRACKER_LOCATION); } public void doShowDashboard() { @@ -4813,47 +4805,7 @@ public void doFind(JEditTextArea text) { } public void doHelp() { - final String workingId = startWorking("Retrieving help URL..."); - - SwingWorker worker = new SwingWorker() { - @Override - protected String doInBackground() throws Exception { - return HttpUtil.executeGetRequest(UIConstants.HELP_URL_LOCATION, 30000, true, PlatformUI.HTTPS_PROTOCOLS, PlatformUI.HTTPS_CIPHER_SUITES); - } - - @Override - protected void done() { - String url = userPreferences.get("helpDefaultLocation", UIConstants.HELP_DEFAULT_LOCATION); - - try { - String webhelpJson = get(); - ObjectNode webhelpObj = (ObjectNode) new ObjectMapper().readTree(webhelpJson); - - // Get version-specific node, or "default" - JsonNode urlNode; - if (webhelpObj.has(Version.getLatest().toString())) { - urlNode = webhelpObj.get(Version.getLatest().toString()); - } else { - urlNode = webhelpObj.get("default"); - } - - String newUrl = urlNode.asText(); - - if (StringUtils.isNotBlank(newUrl)) { - url = newUrl; - userPreferences.put("helpDefaultLocation", url); - } - } catch (Throwable t) { - logger.error("Unable to retrieve help URL, using default.", t); - } finally { - stopWorking(workingId); - } - - BareBonesBrowserLaunch.openURL(url); - } - }; - - worker.execute(); + BareBonesBrowserLaunch.openURL(BrandingConstants.HELP_URL_LOCATION); } public void goToNotifications() { @@ -4966,7 +4918,7 @@ public boolean promptObjectMigration(String content, String objectName) { StringBuilder message = new StringBuilder(); if (version == null) { - message.append("The " + objectName + " being imported is from an older or unknown version of Mirth Connect.\n"); + message.append(String.format("The %s being imported is from an older or unknown version of %s.\n", objectName, BrandingConstants.PRODUCT_NAME)); } else { int comparison = MigrationUtil.compareVersions(version, PlatformUI.SERVER_VERSION); @@ -4975,16 +4927,36 @@ public boolean promptObjectMigration(String content, String objectName) { } if (comparison > 0) { - alertInformation(this, "The " + objectName + " being imported originated from Mirth Connect version " + version + ".\nYou are using Mirth Connect version " + PlatformUI.SERVER_VERSION + ".\nThe " + objectName + " cannot be imported, because it originated from a newer version of Mirth Connect."); + alertInformation( + this, + String.format( + "The %s being imported originated from %s version %s.\nYou are using %s version %s.\nThe %s cannot be imported, because it originated from a newer version of %s.", + objectName, + BrandingConstants.PRODUCT_NAME, + version, + BrandingConstants.PRODUCT_NAME, + PlatformUI.SERVER_VERSION, + objectName, + BrandingConstants.PRODUCT_NAME + ) + ); return false; } if (comparison < 0) { - message.append("The " + objectName + " being imported originated from Mirth Connect version " + version + ".\n"); + message.append(String.format("The %s being imported originated from %s version %s.\n", objectName, BrandingConstants.PRODUCT_NAME, version)); } } - message.append("You are using Mirth Connect version " + PlatformUI.SERVER_VERSION + ".\nWould you like to automatically convert the " + objectName + " to the " + PlatformUI.SERVER_VERSION + " format?"); + message.append( + String.format( + "You are using %s version %s.\nWould you like to automatically convert the %s to the %s format?", + BrandingConstants.PRODUCT_NAME, + PlatformUI.SERVER_VERSION, + objectName, + PlatformUI.SERVER_VERSION + ) + ); return JOptionPane.YES_OPTION == JOptionPane.showConfirmDialog(this, message.toString(), "Select an Option", JOptionPane.YES_NO_OPTION); } @@ -5130,4 +5102,4 @@ public void updateBackgroundColor(User currentUser) { } setupBackgroundPainters(backgroundColor); } -} \ No newline at end of file +} diff --git a/client/src/com/mirth/connect/client/ui/LoginPanel.java b/client/src/com/mirth/connect/client/ui/LoginPanel.java index 8b19ce1b2e..d1c6bfef79 100644 --- a/client/src/com/mirth/connect/client/ui/LoginPanel.java +++ b/client/src/com/mirth/connect/client/ui/LoginPanel.java @@ -11,7 +11,6 @@ import java.awt.Color; import java.awt.Cursor; -import java.awt.Image; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; @@ -53,33 +52,29 @@ private LoginPanel() { jLabel2.setForeground(UIConstants.HEADER_TITLE_TEXT_COLOR); jLabel5.setForeground(UIConstants.HEADER_TITLE_TEXT_COLOR); setDefaultCloseOperation(EXIT_ON_CLOSE); - setIconImage(UIConstants.MIRTH_FAVICON.getImage()); - ImageIcon imageIcon = UIConstants.MIRTHCORP_LOGO; // load the image to a imageIcon - Image image = imageIcon.getImage(); // transform it - Image newimg = image.getScaledInstance(175, 30, java.awt.Image.SCALE_SMOOTH); // scale it the smooth way - imageIcon = new ImageIcon(newimg); - + setIconImage(BrandingConstants.FAVICON.getImage()); + ImageIcon imageIcon = BrandingConstants.LOGO; // load the image to a imageIcon mirthCorpImage.setIcon(imageIcon); mirthCorpImage.setText(""); - mirthCorpImage.setToolTipText(UIConstants.MIRTHCORP_TOOLTIP); + mirthCorpImage.setToolTipText(BrandingConstants.COMPANY_TOOLTIP); mirthCorpImage.setCursor(new Cursor(Cursor.HAND_CURSOR)); mirthCorpImage.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { - BareBonesBrowserLaunch.openURL(UIConstants.MIRTHCORP_URL); + BareBonesBrowserLaunch.openURL(BrandingConstants.COMPANY_URL); } }); mirthCorpImage1.setIcon(imageIcon); mirthCorpImage1.setText(""); - mirthCorpImage1.setToolTipText(UIConstants.MIRTHCORP_TOOLTIP); + mirthCorpImage1.setToolTipText(BrandingConstants.COMPANY_TOOLTIP); mirthCorpImage1.setCursor(new Cursor(Cursor.HAND_CURSOR)); mirthCorpImage1.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { - BareBonesBrowserLaunch.openURL(UIConstants.MIRTHCORP_URL); + BareBonesBrowserLaunch.openURL(BrandingConstants.COMPANY_URL); } }); @@ -107,8 +102,8 @@ public void initialize(String mirthServer, String version, String user, String p PlatformUI.CLIENT_VERSION = version; - setTitle("Mirth Connect " + version + " - Login"); - setIconImage(UIConstants.MIRTH_FAVICON.getImage()); + setTitle(String.format("%s %s - Login", BrandingConstants.PRODUCT_NAME, version)); + setIconImage(BrandingConstants.FAVICON.getImage()); serverName.setText(mirthServer); @@ -171,8 +166,8 @@ private void initComponents() { placeholderButton = new javax.swing.JButton(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); - setTitle("Mirth Connect - Login"); - setIconImage(UIConstants.MIRTH_FAVICON.getImage()); + setTitle(String.format("%s - Login", BrandingConstants.PRODUCT_NAME)); + setIconImage(BrandingConstants.FAVICON.getImage()); loginMain.setBackground(new java.awt.Color(255, 255, 255)); loginMain.setName(""); // NOI18N @@ -203,7 +198,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { jLabel2.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N jLabel2.setForeground(new java.awt.Color(255, 255, 255)); - jLabel2.setText("Mirth Connect Login"); + jLabel2.setText(String.format("%s Login", BrandingConstants.PRODUCT_NAME)); javax.swing.GroupLayout mirthHeadingPanel2Layout = new javax.swing.GroupLayout(mirthHeadingPanel2); mirthHeadingPanel2.setLayout(mirthHeadingPanel2Layout); @@ -320,7 +315,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { jLabel5.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N jLabel5.setForeground(new java.awt.Color(255, 255, 255)); - jLabel5.setText("Mirth Connect Login"); + jLabel5.setText(String.format("%s Login", BrandingConstants.PRODUCT_NAME)); javax.swing.GroupLayout mirthHeadingPanel1Layout = new javax.swing.GroupLayout(mirthHeadingPanel1); mirthHeadingPanel1.setLayout(mirthHeadingPanel1Layout); diff --git a/client/src/com/mirth/connect/client/ui/MessageImportDialog.java b/client/src/com/mirth/connect/client/ui/MessageImportDialog.java index f3f3310b29..417fe18742 100644 --- a/client/src/com/mirth/connect/client/ui/MessageImportDialog.java +++ b/client/src/com/mirth/connect/client/ui/MessageImportDialog.java @@ -87,7 +87,7 @@ public void actionPerformed(ActionEvent e) { importServerRadio.setSelected(true); importServerRadio.setBackground(UIConstants.BACKGROUND_COLOR); importServerRadio.addActionListener(importDestinationChanged); - importServerRadio.setToolTipText("Import messages from a file, folder or archive
on the Mirth Connect Server."); + importServerRadio.setToolTipText(String.format("Import messages from a file, folder or archive
on the %s Server.", BrandingConstants.PRODUCT_NAME)); importLocalRadio = new MirthRadioButton("My Computer"); importLocalRadio.setBackground(UIConstants.BACKGROUND_COLOR); diff --git a/client/src/com/mirth/connect/client/ui/SettingsPanelAdministrator.java b/client/src/com/mirth/connect/client/ui/SettingsPanelAdministrator.java index 1777bca945..8ecf7c35de 100644 --- a/client/src/com/mirth/connect/client/ui/SettingsPanelAdministrator.java +++ b/client/src/com/mirth/connect/client/ui/SettingsPanelAdministrator.java @@ -597,12 +597,18 @@ private void initComponents() { checkForNotificationsYesRadio = new MirthRadioButton("Yes"); checkForNotificationsYesRadio.setBackground(userSettingsPanel.getBackground()); - checkForNotificationsYesRadio.setToolTipText("Checks for notifications from NextGen Healthcare (announcements, available updates, etc.)
relevant to this version of Mirth Connect whenever user logs in."); + checkForNotificationsYesRadio.setToolTipText(String.format( + "Checks for notifications from %s (announcements, available updates, etc.)", + BrandingConstants.COMPANY_NAME + )); notificationButtonGroup.add(checkForNotificationsYesRadio); checkForNotificationsNoRadio = new MirthRadioButton("No"); checkForNotificationsNoRadio.setBackground(userSettingsPanel.getBackground()); - checkForNotificationsNoRadio.setToolTipText("Checks for notifications from NextGen Healthcare (announcements, available updates, etc.)
relevant to this version of Mirth Connect whenever user logs in."); + checkForNotificationsNoRadio.setToolTipText(String.format( + "Checks for notifications from %s (announcements, available updates, etc.)", + BrandingConstants.COMPANY_NAME + )); notificationButtonGroup.add(checkForNotificationsNoRadio); backgroundColorLabel = new JLabel("Administrator Background Color:"); @@ -923,4 +929,4 @@ public Component getTableCellEditorComponent(JTable table, Object value, boolean private JScrollPane shortcutKeyScrollPane; private MirthTable shortcutKeyTable; private JButton restoreDefaultsButton; -} \ No newline at end of file +} diff --git a/client/src/com/mirth/connect/client/ui/SettingsPanelServer.java b/client/src/com/mirth/connect/client/ui/SettingsPanelServer.java index f56a821d2b..c277a3d609 100644 --- a/client/src/com/mirth/connect/client/ui/SettingsPanelServer.java +++ b/client/src/com/mirth/connect/client/ui/SettingsPanelServer.java @@ -81,7 +81,7 @@ public SettingsPanelServer(String tabName) { addTask(TaskConstants.SETTINGS_SERVER_RESTORE, "Restore Config", "Restore your server configuration from a server configuration XML file. This will remove and restore your channels, alerts, code templates, server properties, global scripts, and plugin properties.", "", new ImageIcon(com.mirth.connect.client.ui.Frame.class.getResource("images/report_go.png"))); addTask(TaskConstants.SETTINGS_CLEAR_ALL_STATS, "Clear All Statistics", "Reset the current and lifetime statistics for all channels.", "", new ImageIcon(com.mirth.connect.client.ui.Frame.class.getResource("images/chart_bar_delete.png"))); - provideUsageStatsMoreInfoLabel.setToolTipText(UIConstants.PRIVACY_TOOLTIP); + provideUsageStatsMoreInfoLabel.setToolTipText(BrandingConstants.PRIVACY_TOOLTIP); provideUsageStatsMoreInfoLabel.setCursor(new Cursor(Cursor.HAND_CURSOR)); queueBufferSizeField.setDocument(new MirthFieldConstraints(8, false, false, true)); smtpTimeoutField.setDocument(new MirthFieldConstraints(0, false, false, false)); @@ -201,7 +201,7 @@ public Void doInBackground() { } else { titleText.append(PlatformUI.SERVER_URL); } - titleText.append(" - " + UIConstants.TITLE_TEXT); + titleText.append(" - " + BrandingConstants.WINDOW_TITLE); statusBarText.append(PlatformUI.SERVER_URL); titleText.append(" - (" + PlatformUI.SERVER_VERSION + ")"); getFrame().setTitle(titleText.toString()); @@ -685,7 +685,7 @@ private void initComponents() { environmentNameLabel = new JLabel("Environment name:"); environmentNameField = new MirthTextField(); - environmentNameField.setToolTipText("The name of this Mirth Connect environment. There is one environment name per Mirth Connect database."); + environmentNameField.setToolTipText(String.format("The name of this environment. There is one environment name per %s database.", BrandingConstants.PRODUCT_NAME)); serverNameLabel = new JLabel("Server name:"); serverNameField = new MirthTextField(); @@ -713,15 +713,23 @@ public void actionPerformed(ActionEvent evt) { provideUsageStatsYesRadio = new MirthRadioButton("Yes"); provideUsageStatsYesRadio.setBackground(getBackground()); - provideUsageStatsYesRadio.setToolTipText("Toggles sending usage statistics to NextGen Healthcare. These statistics
do not contain any PHI or channel/script implementations,
and help NextGen Healthcare determine which connectors or areas of
Mirth Connect are most widely used."); + provideUsageStatsYesRadio.setToolTipText(String.format( + "Toggles sending usage statistics to %s. These statistics
do not contain any PHI or channel/script implementations.", + BrandingConstants.COMPANY_NAME + )); provideUsageStatsButtonGroup.add(provideUsageStatsYesRadio); provideUsageStatsNoRadio = new MirthRadioButton("No"); provideUsageStatsNoRadio.setBackground(getBackground()); - provideUsageStatsNoRadio.setToolTipText("Toggles sending usage statistics to NextGen Healthcare. These statistics
do not contain any PHI or channel/script implementations,
and help NextGen Healthcare determine which connectors or areas of
Mirth Connect are most widely used."); + provideUsageStatsNoRadio.setToolTipText(String.format( + "Toggles sending usage statistics to %s. These statistics
do not contain any PHI or channel/script implementations.", + BrandingConstants.COMPANY_NAME + )); provideUsageStatsButtonGroup.add(provideUsageStatsNoRadio); provideUsageStatsMoreInfoLabel = new JLabel("More Info"); + provideUsageStatsMoreInfoLabel.setEnabled(false); + provideUsageStatsMoreInfoLabel.setVisible(false); provideUsageStatsMoreInfoLabel.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent evt) { provideUsageStatsMoreInfoLabelMouseClicked(evt); @@ -969,7 +977,7 @@ private void initLayout() { } private void provideUsageStatsMoreInfoLabelMouseClicked(MouseEvent evt) { - BareBonesBrowserLaunch.openURL(UIConstants.PRIVACY_URL); + BareBonesBrowserLaunch.openURL(BrandingConstants.PRIVACY_URL); } private void requireAuthenticationNoRadioActionPerformed(ActionEvent evt) { @@ -1168,4 +1176,4 @@ public void done() { private JLabel notificationLabel; private MirthTextPane notificationTextPane; private JScrollPane notificationScrollPane; -} \ No newline at end of file +} diff --git a/client/src/com/mirth/connect/client/ui/UIConstants.java b/client/src/com/mirth/connect/client/ui/UIConstants.java index 0be6486a2e..0d39c0963c 100644 --- a/client/src/com/mirth/connect/client/ui/UIConstants.java +++ b/client/src/com/mirth/connect/client/ui/UIConstants.java @@ -27,16 +27,8 @@ public class UIConstants { public static final String EOL_MAC = "\r"; // for Frame public static final int TASK_PANE_WIDTH = 170; - public static final String TITLE_TEXT = "Mirth Connect Administrator"; public static final int MIRTH_WIDTH = 950; public static final int MIRTH_HEIGHT = 650; - public static final ImageIcon MIRTH_FAVICON = new ImageIcon(com.mirth.connect.client.ui.Frame.class.getResource("images/NG_MC_Icon_32x32.png")); - public static final ImageIcon MIRTHCORP_LOGO = new ImageIcon(com.mirth.connect.client.ui.Frame.class.getResource("images/MirthConnect_NLogo_RGB.png")); - public static final ImageIcon MIRTHCONNECT_LOGO_GRAY = new ImageIcon(com.mirth.connect.client.ui.Frame.class.getResource("images/MirthConnect_Logo_WM_White.png")); - public static final String MIRTHCORP_TOOLTIP = "NextGen Healthcare"; - public static final String MIRTHCONNECT_TOOLTIP = "Mirth Connect"; - public static final String MIRTHCORP_URL = "https://www.nextgen.com/products-and-services/integration-engine"; - public static final String MIRTHCONNECT_URL = "https://www.nextgen.com/products-and-services/integration-engine"; public static final String EDIT_FILTER = "Edit Filter"; public static final String EDIT_TRANSFORMER = "Edit Transformer"; public static final String EDIT_RESPONSE_TRANSFORMER = "Edit Response"; @@ -74,12 +66,6 @@ public class UIConstants { public static final Font DIALOG_FONT = new Font("Dialog", Font.PLAIN, 12); public static final Font MONOSPACED_FONT = new Font(MONOSPACED_FONT_NAME, Font.PLAIN, 12); - // issue link - public static final String ISSUE_TRACKER_LOCATION = "https://github.com/nextgenhealthcare/connect/issues"; - // help link - public static String HELP_URL_LOCATION = "https://s3.amazonaws.com/downloads.mirthcorp.com/connect-user-guide/webhelp.json"; - // help link - public static String HELP_DEFAULT_LOCATION = "https://github.com/nextgenhealthcare/connect/wiki"; // user api public static String USER_API_LOCATION = "/javadocs/user-api/"; // user api @@ -132,9 +118,6 @@ public class UIConstants { public static final ImageIcon ICON_INFORMATION = new ImageIcon(com.mirth.connect.client.ui.Frame.class.getResource("images/information.png")); public static final ImageIcon ICON_WARNING = new ImageIcon(com.mirth.connect.client.ui.Frame.class.getResource("images/error.png")); public static final ImageIcon ICON_ERROR = new ImageIcon(com.mirth.connect.client.ui.Frame.class.getResource("images/exclamation.png")); - // for privacy - public static final String PRIVACY_URL = "https://www.nextgen.com/legal-notice"; - public static final String PRIVACY_TOOLTIP = "Privacy Information"; // FileUtils reading/writing public static final String CHARSET = "UTF-8"; diff --git a/client/src/com/mirth/connect/client/ui/browsers/message/MessageBrowserAdvancedFilter.java b/client/src/com/mirth/connect/client/ui/browsers/message/MessageBrowserAdvancedFilter.java index 64284f0db5..f99d71e7fa 100644 --- a/client/src/com/mirth/connect/client/ui/browsers/message/MessageBrowserAdvancedFilter.java +++ b/client/src/com/mirth/connect/client/ui/browsers/message/MessageBrowserAdvancedFilter.java @@ -634,7 +634,7 @@ public void windowClosing(java.awt.event.WindowEvent evt) { messageIdLabel.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); messageIdLabel.setText("Message Id:"); - serverIdField.setToolTipText("The GUID of the message in the Mirth Connect database.
This can be retrieved from the Meta Data tab in the Message Browser."); + serverIdField.setToolTipText("The GUID of the message in the database.
This can be retrieved from the Meta Data tab in the Message Browser."); serverIdLabel.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); serverIdLabel.setText("Server Id:"); diff --git a/client/src/com/mirth/connect/client/ui/components/ChannelTableTransferable.java b/client/src/com/mirth/connect/client/ui/components/ChannelTableTransferable.java index 555ab47a70..a587d5dc72 100644 --- a/client/src/com/mirth/connect/client/ui/components/ChannelTableTransferable.java +++ b/client/src/com/mirth/connect/client/ui/components/ChannelTableTransferable.java @@ -18,12 +18,13 @@ import java.util.Iterator; import java.util.List; +import com.mirth.connect.client.ui.BrandingConstants; import com.mirth.connect.model.Channel; import com.mirth.connect.model.ChannelGroup; public class ChannelTableTransferable implements Transferable { - public static final DataFlavor CHANNEL_DATA_FLAVOR = new DataFlavor(List.class, "Mirth Connect Channel"); + public static final DataFlavor CHANNEL_DATA_FLAVOR = new DataFlavor(List.class, String.format("%s Channel", BrandingConstants.PRODUCT_NAME)); private static final DataFlavor[] flavors = { DataFlavor.stringFlavor, DataFlavor.plainTextFlavor, CHANNEL_DATA_FLAVOR }; diff --git a/client/src/com/mirth/connect/client/ui/editors/BaseEditorPane.java b/client/src/com/mirth/connect/client/ui/editors/BaseEditorPane.java index 2dcd9bc7a8..f1b06bd766 100644 --- a/client/src/com/mirth/connect/client/ui/editors/BaseEditorPane.java +++ b/client/src/com/mirth/connect/client/ui/editors/BaseEditorPane.java @@ -103,6 +103,7 @@ import org.jdesktop.swingx.treetable.MutableTreeTableNode; import org.jdesktop.swingx.treetable.TreeTableNode; +import com.mirth.connect.client.ui.BrandingConstants; import com.mirth.connect.client.ui.Frame; import com.mirth.connect.client.ui.Mirth; import com.mirth.connect.client.ui.PlatformUI; @@ -1222,7 +1223,7 @@ public void actionPerformed(ActionEvent evt) { }; viewTasks = new JXTaskPane(); - viewTasks.setTitle("Mirth Connect Views"); + viewTasks.setTitle(String.format("%s Views", BrandingConstants.PRODUCT_NAME)); viewTasks.setFocusable(false); viewTasks.add(initActionCallback("accept", "Return back to channel.", ActionFactory.createBoundAction("accept", "Back to Channel", "B"), new ImageIcon(Frame.class.getResource("images/resultset_previous.png")))); PlatformUI.MIRTH_FRAME.setNonFocusable(viewTasks); @@ -2165,4 +2166,4 @@ public boolean isCellEditable(EventObject evt) { private MirthRTextScrollPane generatedScriptTextArea; public TabbedTemplatePanel templatePanel; -} \ No newline at end of file +} diff --git a/client/src/com/mirth/connect/client/ui/extensionmanager/ExtensionManagerPanel.java b/client/src/com/mirth/connect/client/ui/extensionmanager/ExtensionManagerPanel.java index 52bddec4bf..dbf2fba893 100644 --- a/client/src/com/mirth/connect/client/ui/extensionmanager/ExtensionManagerPanel.java +++ b/client/src/com/mirth/connect/client/ui/extensionmanager/ExtensionManagerPanel.java @@ -25,6 +25,7 @@ import org.jdesktop.swingx.decorator.HighlighterFactory; import com.mirth.connect.client.core.ClientException; +import com.mirth.connect.client.ui.BrandingConstants; import com.mirth.connect.client.ui.CellData; import com.mirth.connect.client.ui.Frame; import com.mirth.connect.client.ui.ImageCellRenderer; @@ -587,7 +588,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { restartRequiredLabel.setForeground(new java.awt.Color(204, 0, 0)); restartRequiredLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); - restartRequiredLabel.setText("The Mirth Connect Server and Administrator must be restarted before your changes will take effect."); + restartRequiredLabel.setText(String.format("The %s Server and Administrator must be restarted before your changes will take effect.", BrandingConstants.PRODUCT_NAME)); javax.swing.GroupLayout restartRequiredPanelLayout = new javax.swing.GroupLayout(restartRequiredPanel); restartRequiredPanel.setLayout(restartRequiredPanelLayout); diff --git a/client/src/com/mirth/connect/client/ui/images/MirthConnect_Logo_WM_White.png b/client/src/com/mirth/connect/client/ui/images/MirthConnect_Logo_WM_White.png deleted file mode 100644 index 89d2414e094d9b0f50171a7d97ef2b7a87033bc8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 160841 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 Ta%t|TzkH&i`A?ye#q0kAz?4DK diff --git a/client/src/com/mirth/connect/client/ui/images/NG_MC_Icon_32x32.png b/client/src/com/mirth/connect/client/ui/images/NG_MC_Icon_32x32.png deleted file mode 100644 index 4f1f3d134971f06c5d7a10b111f3820246c18b9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1046 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 N002ovPDHLkV1lb(E} literal 0 HcmV?d00001 diff --git a/client/src/com/mirth/connect/client/ui/images/branding/oie_white_logo_banner_text_215x30.png b/client/src/com/mirth/connect/client/ui/images/branding/oie_white_logo_banner_text_215x30.png new file mode 100644 index 0000000000000000000000000000000000000000..dc84f88416822f85eb8f0e3fc0f75483a1bc4714 GIT binary patch literal 3546 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 all listener ports currently used by Mirth Connect.
" + portsInUse.setToolTipText(String.format("View all listener ports currently used by %s.
", BrandingConstants.PRODUCT_NAME) + "Any port number can be entered even if it's already in use;
" + "however, only one channel can be deployed per port."); portsInUse.addActionListener(new ActionListener() { diff --git a/client/src/com/mirth/connect/client/ui/panels/export/MessageExportPanel.java b/client/src/com/mirth/connect/client/ui/panels/export/MessageExportPanel.java index 241aae68fa..e2e2ed9d5c 100644 --- a/client/src/com/mirth/connect/client/ui/panels/export/MessageExportPanel.java +++ b/client/src/com/mirth/connect/client/ui/panels/export/MessageExportPanel.java @@ -32,6 +32,7 @@ import javax.swing.JTextField; import javax.swing.JTextPane; +import com.mirth.connect.client.ui.BrandingConstants; import net.miginfocom.swing.MigLayout; import org.apache.commons.lang3.StringUtils; @@ -316,9 +317,9 @@ private void initComponents() { passwordNoButton.setToolTipText("Select Yes to allow password protected zip files."); passwordField.setToolTipText("The password used to protect zip files."); encryptionComboBox.setToolTipText("The algorithm used to encrypt password-protected zip files."); - exportServerRadio.setToolTipText("Store exported files on the Mirth Connect Server, in the Root Path specified below."); + exportServerRadio.setToolTipText(String.format("Store exported files on the %s Server, in the Root Path specified below.", BrandingConstants.PRODUCT_NAME)); exportLocalRadio.setToolTipText("Store exported files on this computer, in the Root Path specified below."); - rootPathTextField.setToolTipText("The root path to store the exported files/folders or compressed file.
Relative paths will be resolved against the Mirth Connect Server home directory."); + rootPathTextField.setToolTipText(String.format("The root path to store the exported files/folders or compressed file.
Relative paths will be resolved against the %s Server home directory.", BrandingConstants.PRODUCT_NAME)); filePatternTextPane.setToolTipText("The file/folder pattern in which to write the exported message files.
Variables from the Variables list to the right may be used in the pattern."); archiverBlockSizeField.setToolTipText("The number of messages that will be cached by the archiver. Increase this value
to improve performance. Decrease this value to reduce memory usage. This value
must be between 1 and 1000. The recommended value for most servers is 50."); diff --git a/client/src/com/mirth/connect/connectors/dimse/DICOMSender.java b/client/src/com/mirth/connect/connectors/dimse/DICOMSender.java index ef2e675a6b..ddffdb511a 100644 --- a/client/src/com/mirth/connect/connectors/dimse/DICOMSender.java +++ b/client/src/com/mirth/connect/connectors/dimse/DICOMSender.java @@ -17,10 +17,7 @@ import javax.swing.JLabel; import javax.swing.JPanel; -import com.mirth.connect.client.ui.ConnectorTypeDecoration; -import com.mirth.connect.client.ui.Frame; -import com.mirth.connect.client.ui.PlatformUI; -import com.mirth.connect.client.ui.UIConstants; +import com.mirth.connect.client.ui.*; import com.mirth.connect.client.ui.components.MirthButton; import com.mirth.connect.client.ui.components.MirthIconTextField; import com.mirth.connect.client.ui.components.MirthRadioButton; @@ -420,7 +417,7 @@ private void initComponents() { localPortField.setToolTipText("Local port that the client socket will be bound to."); portsInUse.setText("Ports in Use"); - portsInUse.setToolTipText("View all ports currently used by Mirth Connect."); + portsInUse.setToolTipText(String.format("View all ports currently used by %s.", BrandingConstants.PRODUCT_NAME)); portsInUse.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { portsInUseActionPerformed(evt); diff --git a/client/src/com/mirth/connect/connectors/http/HttpListener.java b/client/src/com/mirth/connect/connectors/http/HttpListener.java index 5cb7773009..38d5d69bf3 100644 --- a/client/src/com/mirth/connect/connectors/http/HttpListener.java +++ b/client/src/com/mirth/connect/connectors/http/HttpListener.java @@ -57,6 +57,7 @@ import org.jdesktop.swingx.decorator.Highlighter; import org.jdesktop.swingx.decorator.HighlighterFactory; +import com.mirth.connect.client.ui.BrandingConstants; import com.mirth.connect.client.ui.ConnectorTypeDecoration; import com.mirth.connect.client.ui.Frame; import com.mirth.connect.client.ui.Mirth; @@ -1038,7 +1039,7 @@ public void actionPerformed(ActionEvent evt) { protected void initToolTips() { messageContentPlainBodyRadio.setToolTipText("If selected, the request body will be sent to the channel as a raw string."); responseContentTypeField.setToolTipText("The MIME type to be used for the response."); - charsetEncodingCombobox.setToolTipText("Select the character set encoding to be used for the response to the sending system.
Set to Default to assume the default character set encoding for the JVM running Mirth Connect."); + charsetEncodingCombobox.setToolTipText(String.format("Select the character set encoding to be used for the response to the sending system.
Set to Default to assume the default character set encoding for the JVM running %s.", BrandingConstants.PRODUCT_NAME)); contextPathField.setToolTipText("The context path for the HTTP Listener URL."); receiveTimeoutField.setToolTipText("Enter the maximum idle time in milliseconds for a connection."); httpUrlField.setToolTipText("Displays the generated HTTP URL for the HTTP Listener."); diff --git a/client/src/com/mirth/connect/connectors/http/HttpSender.java b/client/src/com/mirth/connect/connectors/http/HttpSender.java index 75c6d519ba..40e04c2169 100644 --- a/client/src/com/mirth/connect/connectors/http/HttpSender.java +++ b/client/src/com/mirth/connect/connectors/http/HttpSender.java @@ -51,6 +51,7 @@ import org.jdesktop.swingx.decorator.HighlighterFactory; import com.mirth.connect.client.core.ClientException; +import com.mirth.connect.client.ui.BrandingConstants; import com.mirth.connect.client.ui.ConnectorTypeDecoration; import com.mirth.connect.client.ui.Frame; import com.mirth.connect.client.ui.Mirth; @@ -1226,7 +1227,7 @@ private void initToolTips() { passwordField.setToolTipText("The password used to connect to the HTTP server."); authenticationTypeDigestRadio.setToolTipText("Use the digest authentication scheme."); authenticationTypeBasicRadio.setToolTipText("Use the basic authentication scheme."); - charsetEncodingCombobox.setToolTipText("Select the character set encoding used by the sender of the message,
or Default to assume the default character set encoding for the JVM running Mirth Connect."); + charsetEncodingCombobox.setToolTipText(String.format("Select the character set encoding used by the sender of the message,
or Default to assume the default character set encoding for the JVM running %s.", BrandingConstants.PRODUCT_NAME)); sendTimeoutField.setToolTipText("Sets the socket timeout (SO_TIMEOUT) in milliseconds to be used when executing the method.
A timeout value of zero is interpreted as an infinite timeout."); parseMultipartYesRadio.setToolTipText("Select Yes to automatically parse multipart responses into separate XML nodes.
Select No to always keep the response body as a single XML node."); parseMultipartNoRadio.setToolTipText("Select Yes to automatically parse multipart responses into separate XML nodes.
Select No to always keep the response body as a single XML node."); diff --git a/client/src/com/mirth/connect/connectors/jdbc/DatabaseReader.java b/client/src/com/mirth/connect/connectors/jdbc/DatabaseReader.java index 6c4053f322..ec966d0d22 100644 --- a/client/src/com/mirth/connect/connectors/jdbc/DatabaseReader.java +++ b/client/src/com/mirth/connect/connectors/jdbc/DatabaseReader.java @@ -33,6 +33,7 @@ import javax.swing.event.DocumentListener; import javax.xml.parsers.DocumentBuilderFactory; +import com.mirth.connect.client.ui.BrandingConstants; import net.miginfocom.swing.MigLayout; import org.apache.commons.collections4.CollectionUtils; @@ -629,7 +630,7 @@ private void initToolTips() { fetchSizeField.setToolTipText("The JDBC ResultSet fetch size to be used when fetching results from the current cursor position."); retryCountField.setToolTipText("The number of times to retry executing the statement or script if an error occurs."); retryIntervalField.setToolTipText("The amount of time that should elapse between retry attempts."); - encodingComboBox.setToolTipText("Select the character set encoding used by the source database,
or select Default to use the default character set encoding for the JVM running Mirth Connect."); + encodingComboBox.setToolTipText(String.format("Select the character set encoding used by the source database,
or select Default to use the default character set encoding for the JVM running %s.", BrandingConstants.PRODUCT_NAME)); generateConnectionButton.setToolTipText("If \"Yes\" is selected for Use JavaScript, this button is enabled.
When clicked, it inserts boilerplate Connection construction code into the JavaScript control at the current caret location."); generateSelectButton.setToolTipText("Opens a window to assist in building a select query to select records from the database specified in the URL above."); runPostProcessSQLLabel.setToolTipText("When using a database reader, it is usually necessary to execute a separate SQL statement
to mark the message that was just fetched as processed, so it will not be fetched again the next time a poll occurs."); diff --git a/client/src/com/mirth/connect/connectors/smtp/SmtpSender.java b/client/src/com/mirth/connect/connectors/smtp/SmtpSender.java index 0b922409fc..d8be4c8235 100644 --- a/client/src/com/mirth/connect/connectors/smtp/SmtpSender.java +++ b/client/src/com/mirth/connect/connectors/smtp/SmtpSender.java @@ -35,6 +35,7 @@ import org.jdesktop.swingx.decorator.HighlighterFactory; import com.mirth.connect.client.core.ClientException; +import com.mirth.connect.client.ui.BrandingConstants; import com.mirth.connect.client.ui.CharsetEncodingInformation; import com.mirth.connect.client.ui.ConnectorTypeDecoration; import com.mirth.connect.client.ui.Frame; @@ -806,7 +807,7 @@ public void actionPerformed(ActionEvent evt) { } private void initToolTips() { - smtpHostField.setToolTipText("Enter the DNS domain name or IP address of the SMTP server to use to send the email messages.
Note that sending email to an SMTP server that is not expecting it may result in the IP of the box running Mirth Connect being added to the server's \"blacklist.\""); + smtpHostField.setToolTipText(String.format("Enter the DNS domain name or IP address of the SMTP server to use to send the email messages.
Note that sending email to an SMTP server that is not expecting it may result in the IP of the box running %s being added to the server's \"blacklist.\"", BrandingConstants.PRODUCT_NAME)); smtpPortField.setToolTipText("The port number of the SMTP server to send the email message to.
Generally, the default port of 25 is used."); String toolTipText = "Select Yes to override the local address and port that the client socket will be bound to.
Select No to use the default value picked by the Socket class.
A local port of zero (0) indicates that the OS should assign an ephemeral port automatically.

Note that if a specific (non-zero) local port is chosen, then after a socket is closed it's up to the
underlying OS to release the port before the next socket creation, otherwise the bind attempt will fail.
"; @@ -829,7 +830,7 @@ private void initToolTips() { toField.setToolTipText("The name of the mailbox (person, usually) to which the email should be sent."); fromField.setToolTipText("The name that should appear as the \"From address\" in the email."); subjectField.setToolTipText("The text that should appear as the subject of the email, as seen by the receiver's email client."); - charsetEncodingComboBox.setToolTipText("Select the character set encoding used by the sender of the message,
or Default to assume the default character set encoding for the JVM running Mirth Connect."); + charsetEncodingComboBox.setToolTipText(String.format("Select the character set encoding used by the sender of the message,
or Default to assume the default character set encoding for the JVM running %s.", BrandingConstants.PRODUCT_NAME)); toolTipText = "Selects whether HTML tags can be used in the email message body."; htmlYes.setToolTipText(toolTipText); diff --git a/client/src/com/mirth/connect/connectors/tcp/TcpListener.java b/client/src/com/mirth/connect/connectors/tcp/TcpListener.java index 6599787e4a..ec02f90fb7 100644 --- a/client/src/com/mirth/connect/connectors/tcp/TcpListener.java +++ b/client/src/com/mirth/connect/connectors/tcp/TcpListener.java @@ -28,6 +28,7 @@ import org.apache.commons.lang3.math.NumberUtils; import com.mirth.connect.client.ui.AbstractConnectorPropertiesPanel; +import com.mirth.connect.client.ui.BrandingConstants; import com.mirth.connect.client.ui.CharsetEncodingInformation; import com.mirth.connect.client.ui.Frame; import com.mirth.connect.client.ui.LoadedExtensions; @@ -512,7 +513,7 @@ private void initToolTips() { dataTypeBinaryRadio.setToolTipText(toolTipText); dataTypeTextRadio.setToolTipText(toolTipText); - charsetEncodingComboBox.setToolTipText("Select the character set encoding used by the message sender,
or Select Default to use the default character set encoding for the JVM running Mirth Connect."); + charsetEncodingComboBox.setToolTipText(String.format("Select the character set encoding used by the message sender,
or Select Default to use the default character set encoding for the JVM running %s.", BrandingConstants.PRODUCT_NAME)); toolTipText = "Select No to send responses only via the same connection the inbound message was received on.
Select Yes to always send responses on a new connection (during normal processing as well as recovery).
Select Message Recovery to only send responses on a new connection during message recovery.
Connections will be bound locally on the same interface chosen in the Listener Settings with an ephemeral port."; respondOnNewConnectionYesRadio.setToolTipText(toolTipText); diff --git a/client/src/com/mirth/connect/connectors/tcp/TcpSender.java b/client/src/com/mirth/connect/connectors/tcp/TcpSender.java index 265dd0d25d..7712d19cf7 100644 --- a/client/src/com/mirth/connect/connectors/tcp/TcpSender.java +++ b/client/src/com/mirth/connect/connectors/tcp/TcpSender.java @@ -30,6 +30,7 @@ import org.apache.logging.log4j.Logger; import com.mirth.connect.client.core.ClientException; +import com.mirth.connect.client.ui.BrandingConstants; import com.mirth.connect.client.ui.ConnectorTypeDecoration; import com.mirth.connect.client.ui.Frame; import com.mirth.connect.client.ui.LoadedExtensions; @@ -422,7 +423,7 @@ private void initComponents() { remotePortField.setToolTipText("The port on which to connect."); portsInUse.setText("Ports in Use"); - portsInUse.setToolTipText("View all ports currently used by Mirth Connect."); + portsInUse.setToolTipText(String.format("View all ports currently used by %s.", BrandingConstants.PRODUCT_NAME)); portsInUse.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { portsInUseActionPerformed(evt); @@ -466,7 +467,7 @@ public void actionPerformed(ActionEvent evt) { responseTimeoutLabel.setText("Response Timeout (ms):"); charsetEncodingCombobox.setModel(new DefaultComboBoxModel(new String[] { "Default", "UTF-8", "ISO-8859-1", "UTF-16 (le)", "UTF-16 (be)", "UTF-16 (bom)", "US-ASCII" })); - charsetEncodingCombobox.setToolTipText("The character set encoding to use when converting the outbound message to a byte stream if Data Type Text is selected.
Select Default to use the default character set encoding for the JVM running the Mirth Connect server."); + charsetEncodingCombobox.setToolTipText(String.format("The character set encoding to use when converting the outbound message to a byte stream if Data Type Text is selected.
Select Default to use the default character set encoding for the JVM running the %s server.", BrandingConstants.PRODUCT_NAME)); charsetEncodingCombobox.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { charsetEncodingComboboxActionPerformed(evt); diff --git a/client/src/com/mirth/connect/connectors/ws/WebServiceListener.java b/client/src/com/mirth/connect/connectors/ws/WebServiceListener.java index 4abca19608..ed1cb6b745 100644 --- a/client/src/com/mirth/connect/connectors/ws/WebServiceListener.java +++ b/client/src/com/mirth/connect/connectors/ws/WebServiceListener.java @@ -22,6 +22,7 @@ import javax.swing.JLabel; import javax.swing.JTextField; +import com.mirth.connect.client.ui.BrandingConstants; import net.miginfocom.swing.MigLayout; import com.mirth.connect.client.ui.ConnectorTypeDecoration; @@ -204,7 +205,7 @@ public void actionPerformed(ActionEvent evt) { classNameButtonGroup.add(classNameCustomRadio); classNameField = new MirthTextField(); - classNameField.setToolTipText("The fully qualified class name of the web service that should be hosted.
If this is a custom class, it should be added in a custom jar so it is loaded with Mirth Connect."); + classNameField.setToolTipText(String.format("The fully qualified class name of the web service that should be hosted.
If this is a custom class, it should be added in a custom jar so it is loaded with %s.", BrandingConstants.PRODUCT_NAME)); } private void initLayout() { diff --git a/client/src/com/mirth/connect/plugins/datapruner/DataPrunerPanel.java b/client/src/com/mirth/connect/plugins/datapruner/DataPrunerPanel.java index 88fcfcc1a0..76fecd1d50 100644 --- a/client/src/com/mirth/connect/plugins/datapruner/DataPrunerPanel.java +++ b/client/src/com/mirth/connect/plugins/datapruner/DataPrunerPanel.java @@ -303,7 +303,7 @@ public void setProperties(Properties properties) { /* * archiverOptions might be empty if the pruner settings were migrated from a previous - * version of Mirth Connect. + * version of OIE. */ if (archiverOptions == null) { archiverPanel.setMessageWriterOptions(new MessageWriterOptions()); @@ -315,7 +315,7 @@ public void setProperties(Properties properties) { archiverPanel.setArchiveEnabled(Boolean.parseBoolean(properties.getProperty("archiveEnabled", Boolean.FALSE.toString()))); } - if (properties.getProperty("pruningBlockSize") != null && !properties.getProperty("pruningBlockSize").equals("")) { + if (properties.getProperty("pruningBlockSize") != null && !properties.getProperty("pruningBlockSize").isEmpty()) { blockSizeTextField.setText(properties.getProperty("pruningBlockSize")); } else { blockSizeTextField.setText("1000"); diff --git a/client/src/com/mirth/connect/plugins/pdfviewer/MirthPDFViewer.java b/client/src/com/mirth/connect/plugins/pdfviewer/MirthPDFViewer.java index 015508af80..10c783dd1f 100644 --- a/client/src/com/mirth/connect/plugins/pdfviewer/MirthPDFViewer.java +++ b/client/src/com/mirth/connect/plugins/pdfviewer/MirthPDFViewer.java @@ -9,6 +9,8 @@ package com.mirth.connect.plugins.pdfviewer; +import com.mirth.connect.client.ui.BrandingConstants; + import java.io.File; import java.io.IOException; import java.net.URL; @@ -18,7 +20,7 @@ public class MirthPDFViewer extends com.sun.pdfview.PDFViewer { - public final static String TITLE = "Mirth Connect PDF Viewer"; + public final static String TITLE = String.format("%s PDF Viewer", BrandingConstants.PRODUCT_NAME); private File tempFile; /** diff --git a/client/src/com/mirth/connect/plugins/scriptfilerule/ExternalScriptPanel.java b/client/src/com/mirth/connect/plugins/scriptfilerule/ExternalScriptPanel.java index 22f6e642a4..4a13be704d 100644 --- a/client/src/com/mirth/connect/plugins/scriptfilerule/ExternalScriptPanel.java +++ b/client/src/com/mirth/connect/plugins/scriptfilerule/ExternalScriptPanel.java @@ -14,6 +14,7 @@ import javax.swing.JLabel; import javax.swing.JTextField; +import com.mirth.connect.client.ui.BrandingConstants; import net.miginfocom.swing.MigLayout; import org.apache.commons.lang3.StringUtils; @@ -73,7 +74,7 @@ public void setNameActionListener(ActionListener actionListener) {} private void initComponents() { setBackground(UIConstants.BACKGROUND_COLOR); - infoLabel = new JLabel("Enter the path of an external JavaScript file accessible from the Mirth Connect server."); + infoLabel = new JLabel(String.format("Enter the path of an external JavaScript file accessible from the %s server.", BrandingConstants.PRODUCT_NAME)); pathLabel = new JLabel("Script Path:"); pathField = new JTextField(); diff --git a/client/src/com/mirth/connect/plugins/scriptfilestep/ExternalScriptPanel.java b/client/src/com/mirth/connect/plugins/scriptfilestep/ExternalScriptPanel.java index 7a891a9990..c924094137 100644 --- a/client/src/com/mirth/connect/plugins/scriptfilestep/ExternalScriptPanel.java +++ b/client/src/com/mirth/connect/plugins/scriptfilestep/ExternalScriptPanel.java @@ -14,6 +14,7 @@ import javax.swing.JLabel; import javax.swing.JTextField; +import com.mirth.connect.client.ui.BrandingConstants; import net.miginfocom.swing.MigLayout; import org.apache.commons.lang3.StringUtils; @@ -73,7 +74,7 @@ public void setNameActionListener(ActionListener actionListener) {} private void initComponents() { setBackground(UIConstants.BACKGROUND_COLOR); - infoLabel = new JLabel("Enter the path of an external JavaScript file accessible from the Mirth Connect server."); + infoLabel = new JLabel(String.format("Enter the path of an external JavaScript file accessible from the %s server.", BrandingConstants.PRODUCT_NAME)); pathLabel = new JLabel("Script Path:"); pathField = new JTextField(); diff --git a/command/src/com/mirth/connect/cli/CommandLineInterface.java b/command/src/com/mirth/connect/cli/CommandLineInterface.java index fbcf8cf5bd..1e785ab14b 100644 --- a/command/src/com/mirth/connect/cli/CommandLineInterface.java +++ b/command/src/com/mirth/connect/cli/CommandLineInterface.java @@ -51,6 +51,7 @@ import org.apache.commons.lang3.exception.ExceptionUtils; import org.apache.commons.lang3.math.NumberUtils; +import com.mirth.connect.client.core.BrandingConstants; import com.mirth.connect.client.core.Client; import com.mirth.connect.client.core.ClientException; import com.mirth.connect.client.core.ListHandlerException; @@ -191,7 +192,7 @@ private void runShell(String server, String user, String password, String script } catch (Exception e) { } - out.println("Connected to Mirth Connect server @ " + server + " (" + serverVersion + ")"); + out.println(String.format("Connected to %s Server @ %s (%s)", BrandingConstants.PRODUCT_NAME, server, serverVersion)); currentUser = StringUtils.defaultString(loginStatus.getUpdatedUsername(), user); if (script != null) { @@ -569,7 +570,7 @@ private void commandHelp(Token[] arguments) { out.println("user add username \"password\" \"firstName\" \"lastName\" \"organization\" \"email\"\n\tAdds the specified user\n"); out.println("user remove id|username\n\tRemoves the specified user\n"); out.println("user changepw id|username \"newpassword\"\n\tChanges the specified user's password\n"); - out.println("quit\n\tQuits Mirth Connect Shell"); + out.println(String.format("quit\n\tQuits %s Shell", BrandingConstants.PRODUCT_NAME)); } private void commandUserList(Token[] arguments) throws ClientException { @@ -1851,7 +1852,7 @@ private void commandDumpEvents(Token[] arguments) throws ClientException { dumpFilename = replaceValues(dumpFilename); StringBuilder builder = new StringBuilder(); - builder.append("Mirth Connect Event Log Dump: " + (new Date()).toString() + "\n"); + builder.append(String.format("%s Event Log Dump: %s\n", BrandingConstants.PRODUCT_NAME, (new Date()).toString())); builder.append(ServerEvent.getExportHeader() + "\n"); File dumpFile = new File(dumpFilename); @@ -1898,7 +1899,7 @@ private void commandDumpStats(Token[] arguments) throws ClientException { dumpFilename = replaceValues(dumpFilename); StringBuilder builder = new StringBuilder(); - builder.append("Mirth Connect Channel Statistics Dump: " + (new Date()).toString() + "\n"); + builder.append(String.format("%s Channel Statistics Dump: %s\n", BrandingConstants.PRODUCT_NAME, (new Date()).toString())); builder.append("Name, Received, Filtered, Queued, Sent, Errored\n"); List channelStatuses = client.getAllChannelStatuses(); @@ -2100,4 +2101,4 @@ private void removeInvalidItems(List list, Class expectedClass) { } } } -} \ No newline at end of file +} diff --git a/donkey/src/main/java/com/mirth/connect/donkey/util/migration/Migratable.java b/donkey/src/main/java/com/mirth/connect/donkey/util/migration/Migratable.java index 67b6c1d32e..de7d26cd3e 100644 --- a/donkey/src/main/java/com/mirth/connect/donkey/util/migration/Migratable.java +++ b/donkey/src/main/java/com/mirth/connect/donkey/util/migration/Migratable.java @@ -14,13 +14,13 @@ /** *

* Classes that implement this interface have the ability to migrate serialized object instances - * from an earlier version of Mirth Connect to a later version. A custom converter is registered + * from an earlier version of OIE to a later version. A custom converter is registered * with XStream that automatically detects objects that implement this interface and runs the * appropriate interface methods. *

* *

- * When adding this interface to a class in a given version of Mirth Connect, the migrate methods + * When adding this interface to a class in a given version of OIE, the migrate methods * prior to that version must be left blank. This is because serialized instances of the class will * not contain version information. Without version information, the migration code in * MigratableConverter will assume that the object could have originated from a pre-3.0.0 version diff --git a/manager/src/com/mirth/connect/manager/BrandingConstants.java b/manager/src/com/mirth/connect/manager/BrandingConstants.java new file mode 100644 index 0000000000..4ea97f0983 --- /dev/null +++ b/manager/src/com/mirth/connect/manager/BrandingConstants.java @@ -0,0 +1,9 @@ +package com.mirth.connect.manager; + +public class BrandingConstants { + + public static final String PRODUCT_NAME = "Open Integration Engine"; + public static final String COMPANY_NAME = "Open Integration Engine"; + + public static final String CONTACT_URL = "https://openintegrationengine.org/contact/"; +} diff --git a/manager/src/com/mirth/connect/manager/ManagerController.java b/manager/src/com/mirth/connect/manager/ManagerController.java index d424d7ac4a..de6c57db19 100644 --- a/manager/src/com/mirth/connect/manager/ManagerController.java +++ b/manager/src/com/mirth/connect/manager/ManagerController.java @@ -173,7 +173,7 @@ public Void doInBackground() { public void done() { if (errorMessage == null) { - PlatformUI.MANAGER_TRAY.alertInfo("The Mirth Connect Service was started successfully."); + PlatformUI.MANAGER_TRAY.alertInfo(String.format("The %s Service was started successfully.", BrandingConstants.PRODUCT_NAME)); } else { PlatformUI.MANAGER_TRAY.alertError(errorMessage); } @@ -215,7 +215,7 @@ private String startMirth() { updating = true; if (!serviceController.startService()) { - errorMessage = "The Mirth Connect Service could not be started. Please verify that it is installed and not already started."; + errorMessage = String.format("The %s Service could not be started. Please verify that it is installed and not already started.", BrandingConstants.PRODUCT_NAME); } else { String contextPath = getContextPath(); @@ -240,13 +240,13 @@ private String startMirth() { } if (!started) { - errorMessage = "The Mirth Connect Service could not be started."; + errorMessage = String.format("The %s Service could not be started.", BrandingConstants.PRODUCT_NAME); } } } catch (Throwable t) { // Need to catch Throwable in case Client fails // internally t.printStackTrace(); - errorMessage = "The Mirth Connect Service could not be started."; + errorMessage = String.format("The %s Service could not be started.", BrandingConstants.PRODUCT_NAME); } finally { if (client != null) { client.close(); @@ -271,7 +271,7 @@ public Void doInBackground() { public void done() { if (errorMessage == null) { - PlatformUI.MANAGER_TRAY.alertInfo("The Mirth Connect Service was stopped successfully."); + PlatformUI.MANAGER_TRAY.alertInfo(String.format("The %s Service was stopped successfully.", BrandingConstants.PRODUCT_NAME)); } else { PlatformUI.MANAGER_TRAY.alertError(errorMessage); } @@ -289,11 +289,11 @@ private String stopMirth() { try { updating = true; if (!serviceController.stopService()) { - errorMessage = "The Mirth Connect Service could not be stopped. Please verify that it is installed and started."; + errorMessage = String.format("The %s Service could not be stopped. Please verify that it is installed and started.", BrandingConstants.PRODUCT_NAME); } } catch (Exception e) { e.printStackTrace(); - errorMessage = "The Mirth Connect Service could not be stopped. Please verify that it is installed and started."; + errorMessage = String.format("The %s Service could not be stopped. Please verify that it is installed and started.", BrandingConstants.PRODUCT_NAME); } updating = false; @@ -314,7 +314,7 @@ public Void doInBackground() { public void done() { if (errorMessage == null) { - PlatformUI.MANAGER_TRAY.alertInfo("The Mirth Connect Service was restarted successfully."); + PlatformUI.MANAGER_TRAY.alertInfo(String.format("The %s Service was restarted successfully.", BrandingConstants.PRODUCT_NAME)); } else { PlatformUI.MANAGER_TRAY.alertError(errorMessage); } @@ -377,7 +377,7 @@ public void launchAdministrator(String maxHeapSize) { } if (!success) { - PlatformUI.MANAGER_TRAY.alertError("The Mirth Connect Administator could not be launched."); + PlatformUI.MANAGER_TRAY.alertError(String.format("The %s Administator could not be launched.", BrandingConstants.PRODUCT_NAME)); } } diff --git a/manager/src/com/mirth/connect/manager/ManagerDialog.java b/manager/src/com/mirth/connect/manager/ManagerDialog.java index 56b6e232b7..122afd95e0 100644 --- a/manager/src/com/mirth/connect/manager/ManagerDialog.java +++ b/manager/src/com/mirth/connect/manager/ManagerDialog.java @@ -70,7 +70,7 @@ public ManagerDialog() { LookAndFeelAddons.setAddon(WindowsLookAndFeelAddons.class); getContentPane().setBackground(Color.WHITE); - setTitle("Mirth Connect Server Manager"); + setTitle(String.format("%s Server Manager", BrandingConstants.PRODUCT_NAME)); setIconImage(new ImageIcon(this.getClass().getResource("images/NG_MC-ServerManager_Icon_F_32x32.png")).getImage()); DisplayUtil.setResizable(this, false); @@ -162,7 +162,7 @@ public void actionPerformed(ActionEvent evt) { startButtonActionPerformed(evt); } }); - startLabel = new JLabel("Starts the Mirth Connect service"); + startLabel = new JLabel(String.format("Starts the %s service", BrandingConstants.PRODUCT_NAME)); restartButton = new JButton("Restart"); restartButton.addActionListener(new ActionListener() { @@ -170,7 +170,7 @@ public void actionPerformed(ActionEvent evt) { restartButtonActionPerformed(evt); } }); - restartLabel = new JLabel("Restarts the Mirth Connect service"); + restartLabel = new JLabel(String.format("Restarts the %s service", BrandingConstants.PRODUCT_NAME)); stopButton = new JButton("Stop"); stopButton.addActionListener(new ActionListener() { @@ -178,7 +178,7 @@ public void actionPerformed(ActionEvent evt) { stopButtonActionPerformed(evt); } }); - stopLabel = new JLabel("Stops the Mirth Connect service"); + stopLabel = new JLabel(String.format("Stops the %s service", BrandingConstants.PRODUCT_NAME)); refreshButton = new JButton("Refresh"); refreshButton.addActionListener(new ActionListener() { @@ -186,9 +186,9 @@ public void actionPerformed(ActionEvent evt) { refreshButtonActionPerformed(evt); } }); - refreshLabel = new JLabel("Refreshes the Mirth Connect service status"); + refreshLabel = new JLabel(String.format("Refreshes the %s service status", BrandingConstants.PRODUCT_NAME)); - startup = new JCheckBox("Start Mirth Connect Server Manager on system startup"); + startup = new JCheckBox(String.format("Start %s Server Manager on system startup", BrandingConstants.PRODUCT_NAME)); startup.setFocusable(false); startup.setToolTipText("Starts this application when logging into the operating system. Currently only enabled for Windows."); startup.setBackground(new Color(255, 255, 255)); @@ -305,9 +305,9 @@ private void initInfoPanel() { javaVersionLabel = new JLabel("Java Version:"); javaVersionField = new JLabel("javaVersion"); - contactPrefixLabel = new JLabel("Need Help? Contact"); - mirthSupportLink = new JLabel("NextGen Healthcare"); - mirthSupportLink.setToolTipText("Visit NextGen Healthcare's website."); + contactPrefixLabel = new JLabel("Need Help? Contact"); + mirthSupportLink = new JLabel(String.format("%s", BrandingConstants.COMPANY_NAME)); + mirthSupportLink.setToolTipText(String.format("Visit %s's website.", BrandingConstants.COMPANY_NAME)); mirthSupportLink.setCursor(new Cursor(Cursor.HAND_CURSOR)); mirthSupportLink.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent evt) { @@ -437,7 +437,7 @@ private void initLayout() { } private void mirthSupportLinkMouseClicked(MouseEvent evt) { - BareBonesBrowserLaunch.openURL("https://www.nextgen.com/contact-us"); + BareBonesBrowserLaunch.openURL(BrandingConstants.CONTACT_URL); } private void startupActionPerformed(ActionEvent evt) { diff --git a/manager/src/com/mirth/connect/manager/ManagerTray.java b/manager/src/com/mirth/connect/manager/ManagerTray.java index 5497d7bb9e..93557cceca 100644 --- a/manager/src/com/mirth/connect/manager/ManagerTray.java +++ b/manager/src/com/mirth/connect/manager/ManagerTray.java @@ -36,7 +36,7 @@ public class ManagerTray { public ManagerTray() {} public void setupTray() { - menu = new PopupMenu("Mirth Connect Server Manager"); + menu = new PopupMenu(String.format("%s Server Manager", BrandingConstants.PRODUCT_NAME)); viewItem = new MenuItem("Show Manager"); // viewItem.setIcon(new ImageIcon(this.getClass().getResource("images/start.png"))); @@ -59,7 +59,7 @@ public void actionPerformed(ActionEvent e) { }); menu.add(administratorItem); - startItem = new MenuItem("Start Mirth Connect"); + startItem = new MenuItem(String.format("Start %s", BrandingConstants.PRODUCT_NAME)); // startItem.setIcon(new ImageIcon(this.getClass().getResource("images/start.png"))); startItem.addActionListener(new ActionListener() { @@ -69,7 +69,7 @@ public void actionPerformed(ActionEvent e) { }); menu.add(startItem); - stopItem = new MenuItem("Stop Mirth Connect"); + stopItem = new MenuItem(String.format("Stop %s", BrandingConstants.PRODUCT_NAME)); // stopItem.setIcon(new ImageIcon(this.getClass().getResource("images/stop.png"))); stopItem.addActionListener(new ActionListener() { @@ -79,7 +79,7 @@ public void actionPerformed(ActionEvent e) { }); menu.add(stopItem); - restartItem = new MenuItem("Restart Mirth Connect"); + restartItem = new MenuItem(String.format("Restart %s", BrandingConstants.PRODUCT_NAME)); // restartItem.setIcon(new ImageIcon(this.getClass().getResource("images/restart.png"))); restartItem.addActionListener(new ActionListener() { @@ -102,7 +102,7 @@ public void actionPerformed(ActionEvent evt) { menu.add(quitItem); ImageIcon icon = new ImageIcon(this.getClass().getResource("images/NG_MC_Icon_Grey_32x32.png")); - mirthTrayIcon = new TrayIcon(icon.getImage(), "Mirth Connect Server Manager", menu); + mirthTrayIcon = new TrayIcon(icon.getImage(), String.format("%s Server Manager", BrandingConstants.PRODUCT_NAME), menu); mirthTrayIcon.setImageAutoSize(true); // Action listener for left click. diff --git a/manager/src/com/mirth/connect/manager/MirthHeadingPanel.java b/manager/src/com/mirth/connect/manager/MirthHeadingPanel.java index c00fc10920..116c91ab60 100644 --- a/manager/src/com/mirth/connect/manager/MirthHeadingPanel.java +++ b/manager/src/com/mirth/connect/manager/MirthHeadingPanel.java @@ -42,7 +42,7 @@ private void setupPanel() { JLabel headingLabel = new JLabel(); headingLabel.setFont(new Font("Tahoma", 1, 18)); // NOI18N headingLabel.setForeground(new Color(255, 255, 255)); - headingLabel.setText("Mirth Connect Server Manager"); + headingLabel.setText(String.format("%s Server Manager", BrandingConstants.PRODUCT_NAME)); add(headingLabel); } diff --git a/manager/src/com/mirth/connect/manager/WindowsServiceController.java b/manager/src/com/mirth/connect/manager/WindowsServiceController.java index 258acabf59..556a2a59d9 100644 --- a/manager/src/com/mirth/connect/manager/WindowsServiceController.java +++ b/manager/src/com/mirth/connect/manager/WindowsServiceController.java @@ -16,7 +16,7 @@ public class WindowsServiceController implements ServiceController { private final String WINDOWS_PATH_SERVER_MANAGER_EXE = "mcmanager.exe"; - private final String WINDOWS_SERVICE_NAME = "Mirth Connect Service"; + private final String WINDOWS_SERVICE_NAME = String.format("%s Service", BrandingConstants.PRODUCT_NAME); private final String WINDOWS_CMD_START = "net start \""; private final String WINDOWS_CMD_STOP = "net stop \""; private final String WINDOWS_CMD_STATUS = "net continue \""; @@ -24,9 +24,9 @@ public class WindowsServiceController implements ServiceController { private final int WINDOWS_STATUS_STOPPED = 2184; private final String WINDOWS_STATUS_CHANGING = "2189"; private final String WINDOWS_CMD_QUERY_REGEX = "NET HELPMSG ([0-9]{4})"; - private final String WINDOWS_CMD_REG_QUERY = "REG QUERY HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run /v \"Mirth Connect Server Manager\""; - private final String WINDOWS_CMD_REG_DELETE = "REG DELETE HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run /f /v \"Mirth Connect Server Manager\""; - private final String WINDOWS_CMD_REG_ADD = "REG ADD HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run /f /v \"Mirth Connect Server Manager\" /d "; + private final String WINDOWS_CMD_REG_QUERY = String.format("REG QUERY HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run /v \"%s Server Manager\"", BrandingConstants.PRODUCT_NAME); + private final String WINDOWS_CMD_REG_DELETE = String.format("REG DELETE HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run /f /v \"%s Server Manager\"", BrandingConstants.PRODUCT_NAME); + private final String WINDOWS_CMD_REG_ADD = String.format("REG ADD HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run /f /v \"%s Server Manager\" /d ", BrandingConstants.PRODUCT_NAME); @Override public int checkService() { diff --git a/server/src/com/mirth/connect/client/core/BrandingConstants.java b/server/src/com/mirth/connect/client/core/BrandingConstants.java new file mode 100644 index 0000000000..b9d5cfe50f --- /dev/null +++ b/server/src/com/mirth/connect/client/core/BrandingConstants.java @@ -0,0 +1,12 @@ +package com.mirth.connect.client.core; + +public class BrandingConstants { + + public static final String PRODUCT_NAME = "Open Integration Engine"; + public static final String COMPANY_NAME = "Open Integration Engine"; + public static final String COMPANY_URL = "https://openintegrationengine.org"; + + public static final String CLIENT_CONNECTION_HEADER = "openintegrationengine-client"; + + public static final String SERVER_CERTIFICATE_CN = "oie-engine"; +} diff --git a/server/src/com/mirth/connect/client/core/Client.java b/server/src/com/mirth/connect/client/core/Client.java index fb2bde0012..a0ba3f57bb 100644 --- a/server/src/com/mirth/connect/client/core/Client.java +++ b/server/src/com/mirth/connect/client/core/Client.java @@ -329,7 +329,7 @@ public boolean isClosed() { ****************/ /** - * Logs in to the Mirth Connect server using the specified name and password. + * Logs in to the server using the specified name and password. * * @see UserServletInterface#login */ @@ -535,7 +535,7 @@ public String getServerId() throws ClientException { } /** - * Returns the version of the Mirth Connect server. + * Returns the version of the server. * * @see ConfigurationServletInterface#getVersion */ @@ -545,7 +545,7 @@ public String getVersion() throws ClientException { } /** - * Returns the build date of the Mirth Connect server. + * Returns the build date of the server. * * @see ConfigurationServletInterface#getBuildDate */ @@ -555,7 +555,7 @@ public String getBuildDate() throws ClientException { } /** - * Returns the status of the Mirth Connect server. + * Returns the status of the server. * * @see ConfigurationServletInterface#getStatus */ @@ -585,7 +585,7 @@ public Calendar getServerTime() throws ClientException { } /** - * Returns the name of the JVM running Mirth Connect. + * Returns the name of the JVM running the server. * * @see ConfigurationServletInterface#getJVMName */ @@ -595,7 +595,7 @@ public String getJVMName() throws ClientException { } /** - * Returns a map of common information about the Mirth Connect server. + * Returns a map of common information about the server. * * @see ConfigurationServletInterface#getAbout */ @@ -605,8 +605,8 @@ public Map getAbout() throws ClientException { } /** - * Returns a ServerConfiguration object which contains all of the channels, users, alerts and - * properties stored on the Mirth Connect server. + * Returns a ServerConfiguration object which contains all the channels, users, alerts and + * properties stored on the server. * * @see ConfigurationServletInterface#getServerConfiguration */ @@ -615,8 +615,8 @@ public ServerConfiguration getServerConfiguration() throws ClientException { } /** - * Returns a ServerConfiguration object which contains all of the channels, users, alerts and - * properties stored on the Mirth Connect server. + * Returns a ServerConfiguration object which contains all the channels, users, alerts and + * properties stored on the server. * * @see ConfigurationServletInterface#getServerConfiguration */ @@ -626,7 +626,7 @@ public ServerConfiguration getServerConfiguration(DeployedState initialState, bo } /** - * Updates all of the channels, alerts and properties stored on the Mirth Connect server. + * Updates all the channels, alerts and properties stored on the server. * * @see ConfigurationServletInterface#setServerConfiguration */ diff --git a/server/src/com/mirth/connect/client/core/ServerConnection.java b/server/src/com/mirth/connect/client/core/ServerConnection.java index 17aeaaadb8..2b50501805 100644 --- a/server/src/com/mirth/connect/client/core/ServerConnection.java +++ b/server/src/com/mirth/connect/client/core/ServerConnection.java @@ -424,7 +424,7 @@ private HttpRequestBase setupRequestBase(ClientRequest request, Map> entry : request.getStringHeaders().entrySet()) { for (String value : entry.getValue()) { diff --git a/server/src/com/mirth/connect/client/core/Version.java b/server/src/com/mirth/connect/client/core/Version.java index 0405ee2c72..c3f97dc816 100644 --- a/server/src/com/mirth/connect/client/core/Version.java +++ b/server/src/com/mirth/connect/client/core/Version.java @@ -16,7 +16,7 @@ public enum Version { // @formatter:off /* - * When a new version of Mirth Connect is released, do the following: + * When a new version of OIE is released, do the following: * 1) Add the new version to the end of the list below (the list must be kept in historical order) * 2) Specify a Migrator class for the new version in the ServerMigrator class * 3) Add migration code/classes for any plugins that need to be migrated (don't forget the MigratableConverter class) diff --git a/server/src/com/mirth/connect/client/core/api/servlets/ConfigurationServletInterface.java b/server/src/com/mirth/connect/client/core/api/servlets/ConfigurationServletInterface.java index fceec1ca15..9f8d391bfe 100644 --- a/server/src/com/mirth/connect/client/core/api/servlets/ConfigurationServletInterface.java +++ b/server/src/com/mirth/connect/client/core/api/servlets/ConfigurationServletInterface.java @@ -73,20 +73,20 @@ public interface ConfigurationServletInterface extends BaseServletInterface { @GET @Path("/version") @Produces(MediaType.TEXT_PLAIN) - @Operation(summary = "Returns the version of the Mirth Connect server.") + @Operation(summary = "Returns the version of the server.") @MirthOperation(name = "getVersion", display = "Get version", auditable = false) public String getVersion() throws ClientException; @GET @Path("/buildDate") @Produces(MediaType.TEXT_PLAIN) - @Operation(summary = "Returns the build date of the Mirth Connect server.") + @Operation(summary = "Returns the build date of the server.") @MirthOperation(name = "getBuildDate", display = "Get build date", auditable = false) public String getBuildDate() throws ClientException; @GET @Path("/status") - @Operation(summary = "Returns the status of the Mirth Connect server.") + @Operation(summary = "Returns the status of the server.") @ApiResponse(content = { @Content(mediaType = MediaType.APPLICATION_XML, examples = { @ExampleObject(name = "status", ref = "../apiexamples/integer_xml") }), @@ -116,13 +116,13 @@ public interface ConfigurationServletInterface extends BaseServletInterface { @GET @Path("/jvm") @Produces(MediaType.TEXT_PLAIN) - @Operation(summary = "Returns the name of the JVM running Mirth Connect.") + @Operation(summary = "Returns the name of the JVM running the server.") @MirthOperation(name = "getJVMName", display = "Get JVM name", auditable = false) public String getJVMName() throws ClientException; @GET @Path("/about") - @Operation(summary = "Returns a map of common information about the Mirth Connect server.") + @Operation(summary = "Returns a map of common information about the server.") @ApiResponse(content = { @Content(mediaType = MediaType.APPLICATION_XML, examples = { @ExampleObject(name = "aboutMap", ref = "../apiexamples/generic_map_xml") }), @@ -133,7 +133,7 @@ public interface ConfigurationServletInterface extends BaseServletInterface { @GET @Path("/configuration") - @Operation(summary = "Returns a ServerConfiguration object which contains all of the channels, alerts, configuration map, and properties stored on the Mirth Connect server.") + @Operation(summary = "Returns a ServerConfiguration object which contains all of the channels, alerts, configuration map, and properties stored on the server.") @ApiResponse(content = { @Content(mediaType = MediaType.APPLICATION_XML, examples = { @ExampleObject(name = "serverConfiguration", ref = "../apiexamples/server_configuration_xml") }), @Content(mediaType = MediaType.APPLICATION_JSON, examples = { @@ -147,7 +147,7 @@ public ServerConfiguration getServerConfiguration(// @formatter:off @PUT @Path("/configuration") - @Operation(summary = "Updates all of the channels, alerts and properties stored on the Mirth Connect server.") + @Operation(summary = "Updates all of the channels, alerts and properties stored on the server.") @MirthOperation(name = "setServerConfiguration", display = "Set server configuration", permission = Permissions.SERVER_CONFIGURATION_RESTORE, type = ExecuteType.ASYNC) public void setServerConfiguration(// @formatter:off @Param("serverConfiguration") @RequestBody(description = "The ServerConfiguration object containing all channels, users, alerts, and properties to update.", required = true, content = { diff --git a/server/src/com/mirth/connect/client/core/api/servlets/UserServletInterface.java b/server/src/com/mirth/connect/client/core/api/servlets/UserServletInterface.java index 119bf13ce5..906c9f4647 100644 --- a/server/src/com/mirth/connect/client/core/api/servlets/UserServletInterface.java +++ b/server/src/com/mirth/connect/client/core/api/servlets/UserServletInterface.java @@ -55,7 +55,7 @@ public interface UserServletInterface extends BaseServletInterface { @POST @Path("/_login") @Consumes(MediaType.APPLICATION_FORM_URLENCODED) - @Operation(summary = "Logs in to the Mirth Connect server using the specified name and password.") + @Operation(summary = "Logs in to the server using the specified name and password.") @ApiResponse(content = { @Content(mediaType = MediaType.APPLICATION_XML, examples = { @ExampleObject(name = "loginStatus", ref = "../apiexamples/login_status_xml") }), @Content(mediaType = MediaType.APPLICATION_JSON, examples = { diff --git a/server/src/com/mirth/connect/connectors/http/HttpDispatcher.java b/server/src/com/mirth/connect/connectors/http/HttpDispatcher.java index 6360c35511..8bd8657000 100644 --- a/server/src/com/mirth/connect/connectors/http/HttpDispatcher.java +++ b/server/src/com/mirth/connect/connectors/http/HttpDispatcher.java @@ -26,6 +26,7 @@ import javax.mail.internet.MimeMultipart; import javax.mail.util.ByteArrayDataSource; +import com.mirth.connect.client.core.BrandingConstants; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.map.CaseInsensitiveMap; import org.apache.commons.fileupload.FileUploadBase; @@ -583,7 +584,7 @@ private HttpRequestBase buildHttpRequest(URI hostURI, HttpDispatcherProperties h } } if (!userAgentFound) { - httpMethod.addHeader("user-agent", "Mirth Connect"); + httpMethod.addHeader("user-agent", BrandingConstants.PRODUCT_NAME); } // Only set the Content-Type for entity-enclosing methods, but not if multipart is used diff --git a/server/src/com/mirth/connect/model/ServerConfiguration.java b/server/src/com/mirth/connect/model/ServerConfiguration.java index 86e18f262f..a9b634dd65 100644 --- a/server/src/com/mirth/connect/model/ServerConfiguration.java +++ b/server/src/com/mirth/connect/model/ServerConfiguration.java @@ -24,6 +24,7 @@ import javax.swing.text.DateFormatter; +import com.mirth.connect.client.core.BrandingConstants; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.tuple.ImmutablePair; @@ -216,7 +217,7 @@ public void migrate3_2_0(DonkeyElement element) { DirectoryResourceProperties defaultResource = new DirectoryResourceProperties(); defaultResource.setId(ResourceProperties.DEFAULT_RESOURCE_ID); defaultResource.setName(ResourceProperties.DEFAULT_RESOURCE_NAME); - defaultResource.setDescription("Loads libraries from the custom-lib folder in the Mirth Connect home directory."); + defaultResource.setDescription(String.format("Loads libraries from the custom-lib folder in the %s home directory.", BrandingConstants.PRODUCT_NAME)); defaultResource.setIncludeWithGlobalScripts(true); defaultResource.setDirectory("custom-lib"); list.getList().add(defaultResource); @@ -423,4 +424,4 @@ public void migrate3_11_1(DonkeyElement element) {} @Override public void migrate3_12_0(DonkeyElement element) {} -} \ No newline at end of file +} diff --git a/server/src/com/mirth/connect/plugins/datatypes/hl7v2/HL7v2ResponseGenerationProperties.java b/server/src/com/mirth/connect/plugins/datatypes/hl7v2/HL7v2ResponseGenerationProperties.java index 2a2b4c6a68..c5c1cb77c5 100644 --- a/server/src/com/mirth/connect/plugins/datatypes/hl7v2/HL7v2ResponseGenerationProperties.java +++ b/server/src/com/mirth/connect/plugins/datatypes/hl7v2/HL7v2ResponseGenerationProperties.java @@ -15,6 +15,7 @@ import java.util.LinkedHashMap; import java.util.Map; +import com.mirth.connect.client.core.BrandingConstants; import org.apache.commons.lang3.StringUtils; import com.mirth.connect.donkey.util.DonkeyElement; @@ -60,7 +61,7 @@ public Map getPropertyDescriptors() { properties.put("errorACKMessage", new DataTypePropertyDescriptor(errorACKMessage, "Error ACK Message", "The ACK message to respond with when an error occurs during message processing. This option has no effect unless an \"Auto-generate\" item has been selected in the response settings.", PropertyEditorType.STRING)); properties.put("rejectedACKCode", new DataTypePropertyDescriptor(rejectedACKCode, "Rejected ACK Code", "The ACK code to respond with when the message is filtered. This option has no effect unless an \"Auto-generate\" item has been selected in the response settings.", PropertyEditorType.STRING)); properties.put("rejectedACKMessage", new DataTypePropertyDescriptor(rejectedACKMessage, "Rejected ACK Message", "The ACK message to respond with when the message is filtered. This option has no effect unless an \"Auto-generate\" item has been selected in the response settings.", PropertyEditorType.STRING)); - properties.put("msh15ACKAccept", new DataTypePropertyDescriptor(msh15ACKAccept, "MSH-15 ACK Accept", "This setting determines if Mirth Connect should check the MSH-15 field of an incoming message to control the acknowledgment conditions. The MSH-15 field specifies if a message should be always acknowledged, never acknowledged, or only acknowledged on error. This option has no effect unless an \"Auto-generate\" item has been selected in the response settings.", PropertyEditorType.BOOLEAN)); + properties.put("msh15ACKAccept", new DataTypePropertyDescriptor(msh15ACKAccept, "MSH-15 ACK Accept", String.format("This setting determines if %s should check the MSH-15 field of an incoming message to control the acknowledgment conditions. The MSH-15 field specifies if a message should be always acknowledged, never acknowledged, or only acknowledged on error. This option has no effect unless an \"Auto-generate\" item has been selected in the response settings.", BrandingConstants.PRODUCT_NAME), PropertyEditorType.BOOLEAN)); properties.put("dateFormat", new DataTypePropertyDescriptor(dateFormat, "Date Format", "This setting determines the date format used for the timestamp in the generated ACK. The default value is \"yyyyMMddHHmmss.SSS\".", PropertyEditorType.STRING)); return properties; diff --git a/server/src/com/mirth/connect/server/ExtensionLoader.java b/server/src/com/mirth/connect/server/ExtensionLoader.java index 8868eb74c9..9af71f74d7 100644 --- a/server/src/com/mirth/connect/server/ExtensionLoader.java +++ b/server/src/com/mirth/connect/server/ExtensionLoader.java @@ -17,6 +17,7 @@ import java.util.List; import java.util.Map; +import com.mirth.connect.client.core.BrandingConstants; import org.apache.commons.configuration2.PropertiesConfiguration; import org.apache.commons.configuration2.ex.ConfigurationException; import org.apache.commons.io.FileUtils; @@ -205,11 +206,11 @@ private synchronized void loadExtensions() { pluginMetaDataMap.put(metaData.getName(), (PluginMetaData) metaData); } } else { - logger.error("Extension \"" + metaData.getName() + "\" is not compatible with this version of Mirth Connect and was not loaded. Please install a compatible version."); + logger.error("Extension \"{}\" is not compatible with this version of {} and was not loaded. Please install a compatible version.", metaData.getName(), BrandingConstants.PRODUCT_NAME); invalidMetaDataMap.put(metaData.getName(), metaData); } } catch (Exception e) { - logger.error("Error reading or parsing extension metadata file: " + extensionFile.getName(), e); + logger.error("Error reading or parsing extension metadata file: {}", extensionFile.getName(), e); } } } catch (Exception e) { diff --git a/server/src/com/mirth/connect/server/Mirth.java b/server/src/com/mirth/connect/server/Mirth.java index 62671690a0..24c64874a7 100644 --- a/server/src/com/mirth/connect/server/Mirth.java +++ b/server/src/com/mirth/connect/server/Mirth.java @@ -24,6 +24,7 @@ import java.util.Timer; import java.util.TimerTask; +import com.mirth.connect.client.core.BrandingConstants; import org.apache.commons.configuration2.PropertiesConfiguration; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; @@ -130,7 +131,7 @@ public void run() { initializeLogging(); if (initResources()) { - logger.debug("starting Mirth Connect server..."); + logger.debug("starting {} server...", BrandingConstants.PRODUCT_NAME); // Initialize TLS system properties as early as possible, because otherwise they will be cached if (System.getProperty("jdk.tls.ephemeralDHKeySize") == null) { @@ -539,9 +540,24 @@ public void run() { * system console. */ private void printSplashScreen() { - logger.info("Mirth Connect " + versionProperties.getString("mirth.version") + " (Built on " + versionProperties.getString("mirth.date") + ") server successfully started."); + logger.info( + "{} {} (Built on {}) server successfully started.", + BrandingConstants.PRODUCT_NAME, + versionProperties.getString("mirth.version"), + versionProperties.getString("mirth.date") + ); logger.info("This product was developed by NextGen Healthcare (https://www.nextgen.com) and its contributors (c)2005-2024."); - logger.info("Running " + System.getProperty("java.vm.name") + " " + System.getProperty("java.version") + " on " + System.getProperty("os.name") + " (" + System.getProperty("os.version") + ", " + System.getProperty("os.arch") + "), " + configurationController.getDatabaseType() + ", with charset " + Charset.defaultCharset() + "."); + logger.info("Open Integration Engine contributors (c)2025."); + logger.info( + "Running {} {} on {} ({}, {}), {}, with charset {}.", + System.getProperty("java.vm.name"), + System.getProperty("java.version"), + System.getProperty("os.name"), + System.getProperty("os.version"), + System.getProperty("os.arch"), + configurationController.getDatabaseType(), + Charset.defaultCharset() + ); if (webServer != null) { String httpUrl = null; diff --git a/server/src/com/mirth/connect/server/alert/AlertWorker.java b/server/src/com/mirth/connect/server/alert/AlertWorker.java index f5e376387a..4de7603b73 100644 --- a/server/src/com/mirth/connect/server/alert/AlertWorker.java +++ b/server/src/com/mirth/connect/server/alert/AlertWorker.java @@ -23,6 +23,7 @@ import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; +import com.mirth.connect.client.core.BrandingConstants; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.logging.log4j.LogManager; @@ -44,7 +45,7 @@ import com.mirth.connect.server.util.TemplateValueReplacer; public abstract class AlertWorker extends EventListener implements AlertActionAcceptor { - private static final String DEFAULT_SUBJECT = "Mirth Connect Alert"; + private static final String DEFAULT_SUBJECT = String.format("%s Alert", BrandingConstants.PRODUCT_NAME); protected Logger logger = LogManager.getLogger(this.getClass()); protected ExecutorService actionExecutor = new ThreadPoolExecutor(0, 1, 60L, TimeUnit.SECONDS, new LinkedBlockingQueue()); diff --git a/server/src/com/mirth/connect/server/api/servlets/SystemServlet.java b/server/src/com/mirth/connect/server/api/servlets/SystemServlet.java index 40f363c23f..29d5930012 100644 --- a/server/src/com/mirth/connect/server/api/servlets/SystemServlet.java +++ b/server/src/com/mirth/connect/server/api/servlets/SystemServlet.java @@ -18,6 +18,7 @@ import javax.ws.rs.core.Context; import javax.ws.rs.core.SecurityContext; +import com.mirth.connect.client.core.BrandingConstants; import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.StringUtils; import org.apache.logging.log4j.LogManager; @@ -85,7 +86,7 @@ public SystemStats getStats() throws ClientException { // Windows systems have multiple roots, like "A:" and "C:". if (StringUtils.containsIgnoreCase(System.getProperty("os.name"), "Windows")) { try { - // Attempt to get the correct root from the Mirth Connect base directory + // Attempt to get the correct root from the OIE base directory File baseDir = new File(configurationController.getBaseDir()); // Split on the file separator String[] path = StringUtils.split(baseDir.getCanonicalPath(), File.separatorChar); @@ -111,7 +112,7 @@ public SystemStats getStats() throws ClientException { root = pathRoot; } catch (Exception e) { - logger.warn("Unable to infer filesystem root from Mirth Connect base directory, defaulting to: " + root, e); + logger.warn("Unable to infer filesystem root from {} base directory, defaulting to: {}", BrandingConstants.PRODUCT_NAME, root, e); } } diff --git a/server/src/com/mirth/connect/server/controllers/DefaultConfigurationController.java b/server/src/com/mirth/connect/server/controllers/DefaultConfigurationController.java index 2b9751f483..49e113d23e 100644 --- a/server/src/com/mirth/connect/server/controllers/DefaultConfigurationController.java +++ b/server/src/com/mirth/connect/server/controllers/DefaultConfigurationController.java @@ -53,6 +53,7 @@ import javax.net.ssl.SSLSocketFactory; import javax.xml.parsers.DocumentBuilderFactory; +import com.mirth.connect.client.core.BrandingConstants; import org.apache.commons.codec.binary.Base64; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.MapUtils; @@ -1110,7 +1111,7 @@ public String getResources() { DirectoryResourceProperties defaultResource = new DirectoryResourceProperties(); defaultResource.setId(ResourceProperties.DEFAULT_RESOURCE_ID); defaultResource.setName(ResourceProperties.DEFAULT_RESOURCE_NAME); - defaultResource.setDescription("Loads libraries from the custom-lib folder in the Mirth Connect home directory."); + defaultResource.setDescription(String.format("Loads libraries from the custom-lib folder in the %s home directory.", BrandingConstants.PRODUCT_NAME)); defaultResource.setIncludeWithGlobalScripts(true); defaultResource.setDirectory("custom-lib"); @@ -1500,10 +1501,12 @@ private void configureEncryption(Provider provider, KeyStore keyStore, char[] ke if (StringUtils.equalsAnyIgnoreCase(encryptionConfig.getEncryptionAlgorithm(), "AES", "DES", "DESede")) { // @formatter:off - logger.error("Encryption algorithm is currently set to: \"" + encryptionConfig.getEncryptionAlgorithm() + "\"\n" - + "You should update the \"encryption.algorithm\" in mirth.properties to a more secure option, such as \"" + encryptionConfig.getEncryptionAlgorithm() + "/CBC/PKCS5Padding\".\n" - + "Support for the currently set algorithm will be REMOVED in a future version, so if you do not update it, Mirth Connect will fail to start.\n" - + "Please see the Security Best Practices -> Encryption Settings section of the User Guide for more information."); + logger.error( + "Encryption algorithm is currently set to: \"{}\"\nYou should update the \"encryption.algorithm\" in mirth.properties to a more secure option, such as \"{}/CBC/PKCS5Padding\".\nSupport for the currently set algorithm will be REMOVED in a future version, so if you do not update it, {} will fail to start.\nPlease see the Security Best Practices -> Encryption Settings section of the User Guide for more information.", + encryptionConfig.getEncryptionAlgorithm(), + encryptionConfig.getEncryptionAlgorithm(), + BrandingConstants.PRODUCT_NAME + ); // @formatter:on } } @@ -1527,7 +1530,7 @@ private void generateDefaultCertificate(Provider provider, KeyStore keyStore, ch logger.debug("generated new key pair for CA cert using provider: " + provider.getName()); // Generate CA cert - X500Name caSubjectName = new X500Name("CN=Mirth Connect Certificate Authority"); + X500Name caSubjectName = new X500Name(String.format("CN=%s Certificate Authority", BrandingConstants.PRODUCT_NAME)); SubjectPublicKeyInfo caSubjectKey = SubjectPublicKeyInfo.getInstance(caKeyPair.getPublic().getEncoded()); X509v3CertificateBuilder certBuilder = new X509v3CertificateBuilder(caSubjectName, BigInteger.ONE, startDate, expiryDate, caSubjectName, caSubjectKey); certBuilder.addExtension(org.bouncycastle.asn1.x509.Extension.basicConstraints, true, new BasicConstraints(0)); @@ -1538,7 +1541,7 @@ private void generateDefaultCertificate(Provider provider, KeyStore keyStore, ch KeyPair sslKeyPair = keyPairGenerator.generateKeyPair(); logger.debug("generated new key pair for SSL cert using provider: " + provider.getName()); - X500Name sslSubjectName = new X500Name("CN=mirth-connect"); + X500Name sslSubjectName = new X500Name(String.format("CN=%s", BrandingConstants.SERVER_CERTIFICATE_CN)); SubjectPublicKeyInfo sslSubjectKey = SubjectPublicKeyInfo.getInstance(sslKeyPair.getPublic().getEncoded()); X509v3CertificateBuilder sslCertBuilder = new X509v3CertificateBuilder(caSubjectName, new BigInteger(50, new SecureRandom()), startDate, expiryDate, sslSubjectName, sslSubjectKey); sslCertBuilder.addExtension(org.bouncycastle.asn1.x509.Extension.authorityKeyIdentifier, false, new AuthorityKeyIdentifier(caCert.getEncoded())); @@ -1680,7 +1683,7 @@ public ConnectionTestResponse sendTestEmail(Properties properties) throws Except } } - email.setSubject("Mirth Connect Test Email"); + email.setSubject(String.format("%s Test Email", BrandingConstants.PRODUCT_NAME)); try { for (String toAddress : StringUtils.split(to, ",")) { @@ -1688,10 +1691,15 @@ public ConnectionTestResponse sendTestEmail(Properties properties) throws Except } email.setFrom(from); - email.setMsg("Receipt of this email confirms that mail originating from this Mirth Connect Server is capable of reaching its intended destination.\n\nSMTP Configuration:\n- Host: " + host + "\n- Port: " + port); + email.setMsg(String.format( + "Receipt of this email confirms that mail originating from this %s Server is capable of reaching its intended destination.\n\nSMTP Configuration:\n- Host: %s\n- Port: %d", + BrandingConstants.PRODUCT_NAME, + host, + port + )); email.send(); - return new ConnectionTestResponse(ConnectionTestResponse.Type.SUCCESS, "Sucessfully sent test email to: " + to); + return new ConnectionTestResponse(ConnectionTestResponse.Type.SUCCESS, "Successfully sent test email to: " + to); } catch (EmailException e) { return new ConnectionTestResponse(ConnectionTestResponse.Type.FAILURE, e.getMessage()); } diff --git a/server/src/com/mirth/connect/server/controllers/DefaultExtensionController.java b/server/src/com/mirth/connect/server/controllers/DefaultExtensionController.java index 30b7bfa6ad..b4bd85e893 100644 --- a/server/src/com/mirth/connect/server/controllers/DefaultExtensionController.java +++ b/server/src/com/mirth/connect/server/controllers/DefaultExtensionController.java @@ -36,6 +36,7 @@ import javax.xml.parsers.DocumentBuilderFactory; +import com.mirth.connect.client.core.BrandingConstants; import org.apache.commons.io.FileUtils; import org.apache.commons.io.FilenameUtils; import org.apache.commons.io.IOUtils; @@ -444,7 +445,7 @@ public InstallationResult extractExtension(InputStream inputStream) { if (!extensionLoader.isExtensionCompatible(extensionMetaData)) { if (cause == null) { - cause = new VersionMismatchException("Extension \"" + entry.getName() + "\" is not compatible with this version of Mirth Connect."); + cause = new VersionMismatchException(String.format("Extension \"%s\" is not compatible with this version of %s.", entry.getName(), BrandingConstants.PRODUCT_NAME)); } } } diff --git a/server/src/com/mirth/connect/server/servlets/SwaggerServlet.java b/server/src/com/mirth/connect/server/servlets/SwaggerServlet.java index faf264334c..5ac2d11866 100644 --- a/server/src/com/mirth/connect/server/servlets/SwaggerServlet.java +++ b/server/src/com/mirth/connect/server/servlets/SwaggerServlet.java @@ -9,6 +9,7 @@ package com.mirth.connect.server.servlets; +import com.mirth.connect.client.core.BrandingConstants; import io.swagger.v3.jaxrs2.integration.ServletOpenApiContextBuilder; import io.swagger.v3.oas.integration.OpenApiConfigurationException; import io.swagger.v3.oas.integration.SwaggerConfiguration; @@ -60,8 +61,8 @@ public void init(ServletConfig config) throws ServletException { servers.add(new Server().url(basePath)); oas.servers(servers); - Info info = new Info().title("NextGen Connect Client API") - .description("Swagger documentation for the NextGen Connect Client API.") + Info info = new Info().title(String.format("%s Client API", BrandingConstants.PRODUCT_NAME)) + .description(String.format("Swagger documentation for the %s Client API.", BrandingConstants.PRODUCT_NAME)) .version(apiVersion.toString()); oas.info(info); diff --git a/server/src/com/mirth/connect/server/servlets/WebStartServlet.java b/server/src/com/mirth/connect/server/servlets/WebStartServlet.java index 16d5c2f9ed..ecc077b7ab 100644 --- a/server/src/com/mirth/connect/server/servlets/WebStartServlet.java +++ b/server/src/com/mirth/connect/server/servlets/WebStartServlet.java @@ -30,6 +30,7 @@ import javax.servlet.http.HttpServletResponse; import javax.xml.parsers.DocumentBuilderFactory; +import com.mirth.connect.client.core.BrandingConstants; import org.apache.commons.configuration2.PropertiesConfiguration; import org.apache.commons.configuration2.ex.ConfigurationException; import org.apache.commons.lang3.StringUtils; @@ -145,7 +146,7 @@ protected Document getAdministratorJnlp(HttpServletRequest request) throws Excep Element jnlpElement = document.getDocumentElement(); - // Change the title to include the version of Mirth Connect + // Change the title to include the version PropertiesConfiguration versionProperties = PropertiesConfigurationUtil.create(); InputStream versionPropsIs = null; @@ -349,7 +350,7 @@ protected Document getExtensionJnlp(String extensionPath) throws Exception { informationElement.appendChild(titleElement); Element vendorElement = document.createElement("vendor"); - vendorElement.setTextContent("NextGen Healthcare"); + vendorElement.setTextContent(BrandingConstants.COMPANY_NAME); informationElement.appendChild(vendorElement); jnlpElement.appendChild(informationElement);