You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@taverna.apache.org by st...@apache.org on 2016/08/12 13:13:08 UTC
[20/46] incubator-taverna-plugin-gis git commit: Improve
GisServiceDialog
Improve GisServiceDialog
Project: http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/commit/03f59647
Tree: http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/tree/03f59647
Diff: http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/diff/03f59647
Branch: refs/heads/taverna2
Commit: 03f596472f3c3119b6a96a8128d9f38e9a7ceedd
Parents: bf305ea
Author: edikaradumi <ed...@gmail.com>
Authored: Tue Aug 2 22:43:21 2016 +0100
Committer: edikaradumi <ed...@gmail.com>
Committed: Tue Aug 2 22:43:21 2016 +0100
----------------------------------------------------------------------
.../ui/serviceprovider/AddGisServiceDialog.java | 233 ++++++++++++++++---
1 file changed, 197 insertions(+), 36 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/blob/03f59647/apache-taverna-plugin-gis-activity-ui/src/main/java/org/apache/taverna/gis/ui/serviceprovider/AddGisServiceDialog.java
----------------------------------------------------------------------
diff --git a/apache-taverna-plugin-gis-activity-ui/src/main/java/org/apache/taverna/gis/ui/serviceprovider/AddGisServiceDialog.java b/apache-taverna-plugin-gis-activity-ui/src/main/java/org/apache/taverna/gis/ui/serviceprovider/AddGisServiceDialog.java
index e8e9c5c..63eccf7 100644
--- a/apache-taverna-plugin-gis-activity-ui/src/main/java/org/apache/taverna/gis/ui/serviceprovider/AddGisServiceDialog.java
+++ b/apache-taverna-plugin-gis-activity-ui/src/main/java/org/apache/taverna/gis/ui/serviceprovider/AddGisServiceDialog.java
@@ -10,10 +10,17 @@ import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
+import java.io.IOException;
+import java.net.URL;
+import java.net.URLConnection;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Vector;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JLabel;
+import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
@@ -27,6 +34,10 @@ import javax.swing.event.DocumentListener;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableRowSorter;
+import org.apache.log4j.Logger;
+import org.apache.taverna.gis.client.GisClientFactory;
+import org.apache.taverna.gis.client.IGisClient;
+
import net.sf.taverna.t2.workbench.helper.HelpEnabledDialog;
@SuppressWarnings("serial")
@@ -36,10 +47,11 @@ public class AddGisServiceDialog extends HelpEnabledDialog {
private TableRowSorter<DefaultTableModel> sorter;
private JFilterTable processesTable;
+ private Logger logger = Logger.getLogger(AddGisServiceDialog.class);
+
public AddGisServiceDialog(Frame frame) {
// null will call MainWindow.getMainWindow()
- super(frame, "Add WPS service", true, null); // create a non-modal
- // dialog
+ super(frame, "Add WPS service", true, null); // create a non-modal dialog
initComponents();
}
@@ -134,6 +146,22 @@ public class AddGisServiceDialog extends HelpEnabledDialog {
gbc.anchor = GridBagConstraints.EAST;
gbc.insets = new Insets(0, 10, 5, 5);
+ serviceLocationButton.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent evt) {
+
+ String url = serviceLocationField.getText();
+
+ url = url.trim();
+
+ serviceLocationField.setText(url);
+
+ if (isValidURL(url))
+ {
+ setProcessTableData(url);
+ }
+ }
+ });
+
servicePanel.add(serviceLocationButton, gbc);
}
@@ -214,36 +242,8 @@ public class AddGisServiceDialog extends HelpEnabledDialog {
// Add Processes List
- // TODO: Get processes from GWS
-
- Object[] columnNames = { "", "Process" };
- Object[][] data = { { false, "Checkbox1" }, { true, "Checkbox2" }, { true, "Checkbox3" },
- { false, "Checkbox4" }, { true, "Checkbox5" }, { true, "Checkbox6" }, { false, "Checkbox7" },
- { true, "Checkbox8" }, { true, "Checkbox9" }, { false, "Checkbox10" }, { true, "Checkbox11" },
- { true, "Checkbox12" } };
-
- DefaultTableModel model = new DefaultTableModel(data, columnNames) {
-
- @Override
- public boolean isCellEditable(int row, int column) {
- // Only the first column
- return column == 0;
- }
-
- };
-
- sorter = new TableRowSorter<DefaultTableModel>(model);
-
- processesTable = new JFilterTable(model);
- processesTable.setRowSorter(sorter);
-
- processesTable.getColumnModel().getColumn(0).setPreferredWidth(20);
- processesTable.getColumnModel().getColumn(1).setPreferredWidth(250);
-
- processesTable.setPreferredScrollableViewportSize(new Dimension(300, 100));
- processesTable.setFillsViewportHeight(true);
- processesTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
-
+ initProcessesTable();
+
JScrollPane scrollPane = new JScrollPane(processesTable);
gbc.weighty = 1;
@@ -278,7 +278,7 @@ public class AddGisServiceDialog extends HelpEnabledDialog {
final JButton cancelServiceButton = new JButton("Cancel");
cancelServiceButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
- // TODO: Implement dispose
+ closeDialog();
}
});
@@ -291,18 +291,135 @@ public class AddGisServiceDialog extends HelpEnabledDialog {
addServiceButton.setMaximumSize(cancelServiceButton.getSize());
}
+
+ private void initProcessesTable()
+ {
+ // setup columns
+ Vector<String> columnNames = new Vector<String>();
+ columnNames.addElement("");
+ columnNames.addElement("Processes");
+
+ Vector<ProcessTableRow> data = null;
+
+ DefaultTableModel model = new DefaultTableModel(data, columnNames) {
+
+ @Override
+ public boolean isCellEditable(int row, int column) {
+ // Only the first column
+ return column == 0;
+ }
+
+ };
+
+ sorter = new TableRowSorter<DefaultTableModel>(model);
+
+ processesTable = new JFilterTable(model);
+ processesTable.setRowSorter(sorter);
+
+ processesTable.getColumnModel().getColumn(0).setPreferredWidth(20);
+ processesTable.getColumnModel().getColumn(1).setPreferredWidth(250);
+
+ processesTable.setPreferredScrollableViewportSize(new Dimension(300, 100));
+ processesTable.setFillsViewportHeight(true);
+ processesTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
+
+ }
+ private void setProcessTableData(String serviceURL)
+ {
+ DefaultTableModel model = (DefaultTableModel) processesTable.getModel();
+
+ // discard existing rows
+ model.setRowCount(0);
+
+ List<ProcessTableRow> data = getServiceProcesses(serviceURL);
+
+ for(ProcessTableRow iterator : data)
+ {
+ Object[] newRow = { iterator.isChecked(), iterator.getProcessID() };
+ model.addRow(newRow);
+ }
+
+ model.fireTableDataChanged();
+
+ }
+
+ private List<ProcessTableRow> getServiceProcesses(String serviceURL)
+ {
+ List<ProcessTableRow> result = new ArrayList<ProcessTableRow>();
+
+ IGisClient gisClient = GisClientFactory.getInstance().getGisClient(serviceURL);
+
+ List<String> servicesList = null;
+
+ try {
+ servicesList = gisClient.getProcessList();
+ } catch (Exception ex) {
+ JOptionPane.showMessageDialog(null,
+ "Could not read the service definition from "
+ + serviceLocationField.getText() + ":\n" + ex,
+ "Could not add service service",
+ JOptionPane.ERROR_MESSAGE);
+
+ logger.error(
+ "Failed to list GWS processes for service: "
+ + serviceLocationField.getText(), ex);
+ }
+
+ for(String process : servicesList)
+ {
+ result.add(new ProcessTableRow(true, process));
+ }
+
+ return result;
+
+ }
+
private void checkAllProcesses(boolean value) {
for (int i = 0; i < processesTable.getRowCount(); i++)
processesTable.getModel().setValueAt(value, i, 0);
-
}
private void addPressed() {
- // TODO Auto-generated method stub
+ final String serviceURL = serviceLocationField.getText().trim();
+ new Thread("Adding Service " + serviceURL) {
+ public void run() {
+ try {
+
+ URL url = new URL(serviceURL);
+ URLConnection connection = url.openConnection();
+
+ try {
+ connection.connect(); // if this does not fail - add the service
+ } finally {
+ try {
+ connection.getInputStream().close();
+ } catch (IOException ex) {
+ }
+ }
+
+ } catch (Exception ex) { // anything failed
+ JOptionPane.showMessageDialog(null,
+ "Could not read the service definition from "
+ + serviceLocationField.getText() + ":\n" + ex,
+ "Could not add service service",
+ JOptionPane.ERROR_MESSAGE);
+
+ logger.error(
+ "Failed to list GWS processes for service: "
+ + serviceLocationField.getText(), ex);
+ }
+ };
+ }.start();
+ closeDialog();
}
+ private void closeDialog() {
+ setVisible(false);
+ dispose();
+ }
+
private JTextField createFilterTextField() {
final JTextField field = new JTextField();
@@ -343,6 +460,22 @@ public class AddGisServiceDialog extends HelpEnabledDialog {
}
+ private boolean isValidURL(String url)
+ {
+
+ boolean result = true;
+
+ url = url.trim();
+
+ if (url.length()<=0)
+ return false;
+
+ // other url checks
+
+ return result;
+
+ }
+
private JButton createUrlButton(String buttonText) {
JButton button = new JButton();
button.setText("<HTML><FONT color=\"#000099\"><U>" + buttonText + "</U></FONT></HTML>");
@@ -354,7 +487,6 @@ public class AddGisServiceDialog extends HelpEnabledDialog {
return button;
}
- @SuppressWarnings("serial")
public class JFilterTable extends JTable {
public JFilterTable(DefaultTableModel model) {
@@ -374,5 +506,34 @@ public class AddGisServiceDialog extends HelpEnabledDialog {
}
}
};
+
+ public class ProcessTableRow {
+ private boolean isChecked;
+ private String processID;
+
+ public ProcessTableRow()
+ {
+
+ }
+
+ public ProcessTableRow(boolean isChecked, String processID)
+ {
+ this.isChecked = isChecked;
+ this.processID = processID;
+ }
+
+ public boolean isChecked() {
+ return isChecked;
+ }
+ public void setChecked(boolean isChecked) {
+ this.isChecked = isChecked;
+ }
+ public String getProcessID() {
+ return processID;
+ }
+ public void setProcessID(String processID) {
+ this.processID = processID;
+ }
+ }
}