You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by sa...@apache.org on 2013/10/21 21:24:05 UTC
svn commit: r1534332 - in /airavata/trunk/modules:
commons/utils/src/main/java/org/apache/airavata/common/utils/
gfac-core/src/main/java/org/apache/airavata/gfac/provider/impl/
xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/dialogs/
xbaya-gui/src...
Author: samindaw
Date: Mon Oct 21 19:24:05 2013
New Revision: 1534332
URL: http://svn.apache.org/r1534332
Log:
https://issues.apache.org/jira/browse/AIRAVATA-873
Modified:
airavata/trunk/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/StringUtil.java
airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/gfac/provider/impl/GSISSHProvider.java
airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/dialogs/TextWindow.java
airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/dialogs/monitor/MonitorWindow.java
Modified: airavata/trunk/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/StringUtil.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/StringUtil.java?rev=1534332&r1=1534331&r2=1534332&view=diff
==============================================================================
--- airavata/trunk/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/StringUtil.java (original)
+++ airavata/trunk/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/StringUtil.java Mon Oct 21 19:24:05 2013
@@ -25,11 +25,65 @@ import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
public class StringUtil {
public static final String DELIMETER=",";
public static final String QUOTE="\"";
+ // Merits for the following function should go to
+ // http://blog.houen.net/java-get-url-from-string/
+ public static List<String> getURLS(String text) {
+ List<String> links = new ArrayList<String>();
+ String regex = "\\(?\\b((http|https|ftp)://|www[.])[-A-Za-z0-9+&@#/%?=~_()|!:,.;]*[-A-Za-z0-9+&@#/%=~_()|]";
+ Pattern p = Pattern.compile(regex);
+ Matcher m = p.matcher(text);
+ while (m.find()) {
+ String urlStr = m.group();
+ if (urlStr.startsWith("(") && urlStr.endsWith(")")) {
+ urlStr = urlStr.substring(1, urlStr.length() - 1);
+ }
+ if (!links.contains(urlStr)) {
+ links.add(urlStr);
+ }
+ }
+ return links;
+ }
+
+ public static String createHTMLUrlTaggedString2(String value, List<String> pullLinks) {
+ for (String url : pullLinks) {
+ String hyperlinkString="<a href='"+url+"'>"+url+"</a>";
+ value=value.replaceAll(Pattern.quote(url), hyperlinkString);
+ }
+ return value;
+ }
+ public static String createHTMLUrlTaggedString(String value) {
+ String urledString = "";
+ int lastIndex=0,index=0;
+ while(index!=-1){
+ index=value.toLowerCase().indexOf("://",lastIndex);
+ if (index!=-1){
+ int beginIndex=value.lastIndexOf(" ",index);
+ urledString+=value.substring(lastIndex,beginIndex+1);
+ int endIndex=value.indexOf(" ",index);
+ if (beginIndex==-1){
+ beginIndex=0;
+ }else{
+ beginIndex++;
+ }
+ if (endIndex==-1){
+ endIndex=value.length();
+ }
+ String url=value.substring(beginIndex, endIndex);
+ urledString+="<a href='"+url+"'>"+url+"</a>";
+ lastIndex=endIndex;
+ }
+ }
+ urledString+=value.substring(lastIndex, value.length());
+ return urledString;
+ }
+
private static boolean isQuoted(String s, String delimiter){
//Check if we need quotes
if (s.contains(delimiter)){
Modified: airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/gfac/provider/impl/GSISSHProvider.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/gfac/provider/impl/GSISSHProvider.java?rev=1534332&r1=1534331&r2=1534332&view=diff
==============================================================================
--- airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/gfac/provider/impl/GSISSHProvider.java (original)
+++ airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/gfac/provider/impl/GSISSHProvider.java Mon Oct 21 19:24:05 2013
@@ -20,6 +20,12 @@
*/
package org.apache.airavata.gfac.provider.impl;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Random;
+import java.util.Set;
+
import org.apache.airavata.common.utils.StringUtil;
import org.apache.airavata.commons.gfac.type.ActualParameter;
import org.apache.airavata.commons.gfac.type.MappingFactory;
@@ -36,16 +42,17 @@ import org.apache.airavata.gfac.provider
import org.apache.airavata.gsi.ssh.api.Cluster;
import org.apache.airavata.gsi.ssh.api.SSHApiException;
import org.apache.airavata.gsi.ssh.api.job.JobDescriptor;
-import org.apache.airavata.gsi.ssh.impl.DefaultJobSubmissionListener;
import org.apache.airavata.gsi.ssh.impl.JobStatus;
import org.apache.airavata.gsi.ssh.impl.PBSCluster;
import org.apache.airavata.gsi.ssh.listener.JobSubmissionListener;
-import org.apache.airavata.schemas.gfac.*;
+import org.apache.airavata.schemas.gfac.FileArrayType;
+import org.apache.airavata.schemas.gfac.HostDescriptionType;
+import org.apache.airavata.schemas.gfac.HpcApplicationDeploymentType;
+import org.apache.airavata.schemas.gfac.StringArrayType;
+import org.apache.airavata.schemas.gfac.URIArrayType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.util.*;
-
public class GSISSHProvider implements GFacProvider {
private static final Logger log = LoggerFactory.getLogger(GSISSHProvider.class);
Modified: airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/dialogs/TextWindow.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/dialogs/TextWindow.java?rev=1534332&r1=1534331&r2=1534332&view=diff
==============================================================================
--- airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/dialogs/TextWindow.java (original)
+++ airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/dialogs/TextWindow.java Mon Oct 21 19:24:05 2013
@@ -39,6 +39,7 @@ import javax.swing.event.HyperlinkEvent.
import javax.swing.event.HyperlinkListener;
import org.apache.airavata.common.utils.BrowserLauncher;
+import org.apache.airavata.common.utils.StringUtil;
import org.apache.airavata.xbaya.XBayaEngine;
import org.apache.airavata.xbaya.ui.widgets.GridPanel;
import org.apache.airavata.xbaya.ui.widgets.XBayaTextField;
@@ -83,35 +84,9 @@ public class TextWindow {
this.dialog.hide();
}
- public String createHTMLUrlTaggedString(String value) {
- String urledString = "";
- int lastIndex=0,index=0;
- while(index!=-1){
- index=value.toLowerCase().indexOf("://",lastIndex);
- if (index!=-1){
- int beginIndex=value.lastIndexOf(" ",index);
- urledString+=value.substring(lastIndex,beginIndex+1);
- int endIndex=value.indexOf(" ",index);
- if (beginIndex==-1){
- beginIndex=0;
- }else{
- beginIndex++;
- }
- if (endIndex==-1){
- endIndex=value.length();
- }
- String url=value.substring(beginIndex, endIndex);
- urledString+="<a href='"+url+"'>"+url+"</a>";
- lastIndex=endIndex;
- }
- }
- urledString+=value.substring(lastIndex, value.length());
- return urledString;
- }
-
@SuppressWarnings("serial")
private void init() {
- final JEditorPane editorPane = new JEditorPane(XmlConstants.CONTENT_TYPE_HTML, createHTMLUrlTaggedString(value));
+ final JEditorPane editorPane = new JEditorPane(XmlConstants.CONTENT_TYPE_HTML, StringUtil.createHTMLUrlTaggedString(value));
editorPane.setEditable(false);
editorPane.setBackground(Color.WHITE);
editorPane.addHyperlinkListener(new HyperlinkListener() {
Modified: airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/dialogs/monitor/MonitorWindow.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/dialogs/monitor/MonitorWindow.java?rev=1534332&r1=1534331&r2=1534332&view=diff
==============================================================================
--- airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/dialogs/monitor/MonitorWindow.java (original)
+++ airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/ui/dialogs/monitor/MonitorWindow.java Mon Oct 21 19:24:05 2013
@@ -21,13 +21,28 @@
package org.apache.airavata.xbaya.ui.dialogs.monitor;
+import java.awt.Color;
+import java.awt.Toolkit;
+import java.awt.datatransfer.Clipboard;
+import java.awt.datatransfer.StringSelection;
import java.awt.event.ActionEvent;
+import java.net.URL;
import java.util.Date;
+import java.util.regex.Pattern;
import javax.swing.AbstractAction;
import javax.swing.JButton;
+import javax.swing.JComponent;
+import javax.swing.JEditorPane;
import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.TransferHandler;
+import javax.swing.event.HyperlinkEvent;
+import javax.swing.event.HyperlinkEvent.EventType;
+import javax.swing.event.HyperlinkListener;
+import org.apache.airavata.common.utils.BrowserLauncher;
+import org.apache.airavata.common.utils.StringUtil;
import org.apache.airavata.common.utils.XMLUtil;
import org.apache.airavata.ws.monitor.EventDataRepository;
import org.apache.airavata.ws.monitor.MonitorUtil;
@@ -35,10 +50,12 @@ import org.apache.airavata.xbaya.ui.XBay
import org.apache.airavata.xbaya.ui.dialogs.XBayaDialog;
import org.apache.airavata.xbaya.ui.widgets.GridPanel;
import org.apache.airavata.xbaya.ui.widgets.XBayaLabel;
-import org.apache.airavata.xbaya.ui.widgets.XBayaTextArea;
import org.apache.airavata.xbaya.ui.widgets.XBayaTextField;
+import org.apache.commons.lang.StringEscapeUtils;
import org.xmlpull.infoset.XmlElement;
+import xsul5.XmlConstants;
+
public class MonitorWindow {
private XBayaGUI xbayaGUI;
@@ -51,7 +68,9 @@ public class MonitorWindow {
private XBayaTextField statusTextField;
- private XBayaTextArea messageTextArea;
+ private JEditorPane messageTextArea;
+ private String messageText;
+
/**
* Constructs a MonitorWindow.
@@ -79,10 +98,13 @@ public class MonitorWindow {
}
this.idTextField.setText(MonitorUtil.getNodeID(event));
this.statusTextField.setText(MonitorUtil.getStatus(event));
+
// Show the raw XML for now.
- this.messageTextArea.setText(XMLUtil.BUILDER.serializeToStringPretty(event));
+ messageText = XMLUtil.BUILDER.serializeToStringPretty(event);
+ this.messageTextArea.setText(StringUtil.createHTMLUrlTaggedString2(StringEscapeUtils.escapeHtml(messageText),StringUtil.getURLS(messageText)).replaceAll(Pattern.quote(" "), " ").replaceAll(Pattern.quote("\n"), "<br />\n"));
this.dialog.show();
+ this.dialog.getDialog().setSize(600, 800);
}
private void hide() {
@@ -102,10 +124,26 @@ public class MonitorWindow {
this.statusTextField.setEditable(false);
XBayaLabel statusLabel = new XBayaLabel(EventDataRepository.Column.STATUS.getName(), this.statusTextField);
- this.messageTextArea = new XBayaTextArea();
+ this.messageTextArea = new JEditorPane(XmlConstants.CONTENT_TYPE_HTML, "");
this.messageTextArea.setSize(500, 500);
this.messageTextArea.setEditable(false);
- XBayaLabel messageLabel = new XBayaLabel(EventDataRepository.Column.MESSAGE.getName(), this.messageTextArea);
+ messageTextArea.setBackground(Color.WHITE);
+ messageTextArea.addHyperlinkListener(new HyperlinkListener() {
+ public void hyperlinkUpdate(HyperlinkEvent event) {
+ if (event.getEventType() == EventType.ACTIVATED) {
+ URL url = event.getURL();
+ try {
+ BrowserLauncher.openURL(url.toString());
+ } catch (Exception e) {
+ MonitorWindow.this.xbayaGUI.getErrorWindow().error(MonitorWindow.this.dialog.getDialog(),
+ e.getMessage(), e);
+ }
+ }
+ }
+ });
+ JScrollPane pane = new JScrollPane(messageTextArea);
+ pane.setSize(500, 500);
+ XBayaLabel messageLabel = new XBayaLabel(EventDataRepository.Column.MESSAGE.getName(), pane);
GridPanel infoPanel = new GridPanel();
infoPanel.add(timeLabel);
@@ -115,7 +153,7 @@ public class MonitorWindow {
infoPanel.add(statusLabel);
infoPanel.add(this.statusTextField);
infoPanel.add(messageLabel);
- infoPanel.add(this.messageTextArea);
+ infoPanel.add(pane);
infoPanel.layout(4, 2, 3, 1);
JButton okButton = new JButton("OK");
@@ -124,8 +162,15 @@ public class MonitorWindow {
hide();
}
});
+ JButton copyButton = new JButton("Copy to Clipboard");
+ copyButton.addActionListener(new AbstractAction() {
+ public void actionPerformed(ActionEvent e) {
+ Toolkit.getDefaultToolkit().getSystemClipboard().setContents(new StringSelection(messageText), null);
+ }
+ });
JPanel buttonPanel = new JPanel();
buttonPanel.add(okButton);
+ buttonPanel.add(copyButton);
this.dialog = new XBayaDialog(this.xbayaGUI, "Notification", infoPanel, buttonPanel);
this.dialog.setDefaultButton(okButton);