UNICORE Plugins – How to Design Application Specific Interfaces Krzysztof Benedyczak Michał Wroński.

Slides:



Advertisements
Similar presentations
MicroKernel Pattern Presented by Sahibzada Sami ud din Kashif Khurshid.
Advertisements

2D Graphics Drawing Things. Graphics In your GUI, you might want to draw graphics E.g. draw lines, circles, shapes, draw strings etc The Graphics class.
Operating System Structures
COM vs. CORBA.
Apache Struts Technology
COSC 1P03 Data Structures and Abstraction 2.1 Software Development The leadership instinct you are born with is the backbone. You develop the funny bone.
 2005 Pearson Education, Inc. All rights reserved Introduction to Classes and Objects.
Member of the ExperTeam Group Ralf Ratering Pallas GmbH Hermülheimer Straße Brühl, Germany
UNICORE Programming Client Plug-ins Grid Summer School, July28, 2004 Ralf Ratering Intel Parallel and Distributed Solutions Division (PDSD)
The Inside Story on the Java Debugger Douglas Pearson
NextGRID & OGSA Data Architectures: Example Scenarios Stephen Davey, NeSC, UK ISSGC06 Summer School, Ischia, Italy 12 th July 2006.
Satzinger, Jackson, and Burd Object-Orieneted Analysis & Design
Member of the ExperTeam Group Ralf Ratering Pallas GmbH Hermülheimer Straße Brühl, Germany
UNICORE Programming Client Plug-ins HLRS, May 5, 2004 Ralf Ratering Intel Parallel and Distributed Solutions Division (PDSD)
ASP.NET Programming with C# and SQL Server First Edition
Member of the ExperTeam Group Ralf Ratering Pallas GmbH Hermülheimer Straße Brühl, Germany
Application Architectures Vijayan Sugumaran Department of DIS Oakland University.
Ole4D Plug-in presentation Author: CLS Data Pro
C++ fundamentals.
More OOP Design Patterns
Slide 1 of 9 Presenting 24x7 Scheduler The art of computer automation Press PageDown key or click to advance.
TIBCO Designer TIBCO BusinessWorks is a scalable, extensible, and easy to use integration platform that allows you to develop, deploy, and run integration.
Section 6.1 Explain the development of operating systems Differentiate between operating systems Section 6.2 Demonstrate knowledge of basic GUI components.
Ranga Rodrigo. Class is central to object oriented programming.
- 1 - Grid Programming Environment (GPE) Ralf Ratering Intel Parallel and Distributed Solutions Division (PDSD)
ACM/JETT Workshop - August 4-5, ExceptionHandling and User Interfaces (Event Delegation, Inner classes) using Swing.
COMP 410 & Sky.NET May 2 nd, What is COMP 410? Forming an independent company The customer The planning Learning teamwork.
Writing Widgets & Custom Script API for BOY Xihui Chen
Automated Plotting with the Emme Desktop API Peter Hidas Bureau of Transport Statistics Transport NSW.
ECE 452 / CS 446 / SE464 Design Patterns: Part 2 - Answers A Tutorial By Peter Kim Partially based on the tutorial by Michał Antkiewicz.
REVIEW On Friday we explored Client-Server Applications with Sockets. Servers must create a ServerSocket object on a specific Port #. They then can wait.
Jaeki Song ISQS6337 JAVA Lecture 03 Introduction to Java -The First Java Application-
Systems Analysis and Design in a Changing World, 3rd Edition
14-1 JXTA for J2ME Learning Objectives ● This module will help you... – Learn about the architecture of JXTA for J2ME – Learn the JXTA for J2ME.
An Introduction to Programming and Object Oriented Design using Java 3 rd Edition. Dec 2007 Jaime Niño Frederick Hosch Chapter 18 Integrating user interface.
ABSTRACT The JDBC (Java Database Connectivity) API is the industry standard for database- independent connectivity between the Java programming language.
Steering and Interactive Visualization on the Grid Using the UNICORE Grid Middleware K. Benedyczak 1,2, A. Nowiński 1, K.S. Nowiński 1, P. Bała 1,2 (1)ICM,
11 CORE Architecture Mauro Bruno, Monica Scannapieco, Carlo Vaccari, Giulia Vaste Antonino Virgillito, Diego Zardetto (Istat)
Java Beans. Definitions A reusable software component that can be manipulated visually in a ‘builder tool’. (from JavaBean Specification) The JavaBeans.
Separating the Interface from the Engine: Creating Custom Add-in Tasks for SAS Enterprise Guide ® Peter Eberhardt Fernwood Consulting Group Inc.
Jini Architecture Introduction System Overview An Example.
AliEn AliEn at OSC The ALICE distributed computing environment by Bjørn S. Nilsen The Ohio State University.
Purpose of Operating System Monil Adhikari. Agenda Introduction Responsibilities of Operating System User Interfaces Command Line Interface Graphical.
LCG Distributed Databases Deployment – Kickoff Workshop Dec Database Lookup Service Kuba Zajączkowski Chi-Wei Wang.
INFSO-RI Enabling Grids for E-sciencE Using of GANGA interface for Athena applications A. Zalite / PNPI.
Chapter 10 - Writing Graphical User Interfaces1 Chapter 10 Writing Graphical User Interfaces.
EGEE-II INFSO-RI Enabling Grids for E-sciencE EGEE and gLite are registered trademarks gLite – UNICORE interoperability Daniel Mallmann.
Plug-In Architecture Pattern. Problem The functionality of a system needs to be extended after the software is shipped The set of possible post-shipment.
Creating Java Applications (Software Development Life Cycle) 1. specify the problem requirements - clarify 2. analyze the problem - Input? Processes? Output.
CS 440 Database Management Systems Stored procedures & OR mapping 1.
ECLIPSE RICH CLIENT PLATFORM Part 1 Introduction.
Chapter 5 Introduction to Defining Classes Fundamentals of Java.
Prof. I. J. Chung Data Structure #1 Professor I. J. Chung.
Topics Graphical User Interfaces Using the tkinter Module
(on behalf of the POOL team)
Database System Concepts and Architecture
How to connect your DG to EDGeS? Zoltán Farkas, MTA SZTAKI
CARA 3.10 Major New Features
An Introduction to Functional Setup Manager
Chapter 3: Using Methods, Classes, and Objects
CS 153: Concepts of Compiler Design November 30 Class Meeting
PHP / MySQL Introduction
The structure of Interactive Software
Lecture 1: Multi-tier Architecture Overview
Tutorial: The Programming Interface
Constructors, GUI’s(Using Swing) and ActionListner
PHP Forms and Databases.
Java Looking at our first console application in Eclipse
Web Application Development Using PHP
Plug-In Architecture Pattern
Presentation transcript:

UNICORE Plugins – How to Design Application Specific Interfaces Krzysztof Benedyczak Michał Wroński

Introduction Plugin types –Task Plugin (e.g. Gaussian, Amber) –Extension Plugin (DBBrowser, LAJ) Classes –public abstract class UnicorePlugable –public abstract class TaskPlugable extends UnicorePlugable –public abstract class ExtensionPlugable extends UnicorePlugable

TaskPlugin Job Preparation menu Job Preparation tree JPA Panel

ExtensionPlugin Extensions menu Plugin window

UnicorePlugable public abstract void startPlugin() public abstract void stopPlugin() public abstract String getPluginInfo() public JMenuItem getSettingsItem() public HelpSet getHelpSet() protected Client getClient()

ExtensionPlugable public JMenuItem getSettingsItem() Settings item Extensions menu public JMenuItem getCustomMenu() JPA toolbar public Component getJPAToolBarComponent() Vsite toolbar public Component getVsiteToolBarComponent() Plugin info public abstract String getPluginInfo()

ExtensionPlugable API public Component getVsiteToolBarComponent() public Component getJPAToolBarComponent() public JMenuItem getCustomMenu() public Object setupSpecialVsiteFeatures(Vsite vsite, AbstractJob job)

TaskPlugable Add task item public abstract String getName() Settings item public JMenuItem getSettingsItem() Plugin info public abstract String getPluginInfo() Icon protected String getIconPath() JPA panel public abstract JPAPanel getPanelInstance(ActionContainer c)

TaskPlugin – JPAPanel End user panel for preparing plugin's input Straightforward integration with client's standard panels - mainly for file imports and exports:

TaskPlugin – Container Used to simplify low-level AJO creation It is streamed to NJS ErrorSet checkContents() method can be used to validate Container data Client offers wide range of Containers; most commonly used in plugins are: –UserContainer: for executing SoftwareResources –GroupContainer: for maintaining complex job structures

TaskPlugin – OutcomePanel is used to post process plugin's task output generally it can perform any additional tasks (even submit another jobs)

TaskPlugable API public abstract String getName() public abstract ActionContainer getContainerInstance(GroupContainer parent) public abstract JPAPanel getPanelInstance(ActionContainer container) protected String getIconPath() public final Class getContainerClass() public final boolean hasContainerClass(Class cls)

TaskPlugin – JPAPanel API Extends JPAPanel (thus also extends JPanel) Implements: –void applyValues() - should setup underlying plugin container with GUI's values –void resetValues() - just another way round – fills panel with container’s data –void updateValues(boolean vsiteChanged) – invoked every time panel becomes visible

TaskPlugin – UserContainer Simple scenario: –extend UserContainer –use setPreinstalledSoftware() –use addFileImport(), addFileExport() Optionally implement buildExecuteGroup which: –creates executeGroup instance –adds to executeGroup custom AbstarctActions with dependences

TaskPlugin – OutcomePanel API Container implements IPanelProvider interface to register additional panel(s) in Client's outcome area –JPanel getPanel(int i) usually OutcomePanel want to get notifications when new data is fetched and when the panel becomes visible: –OutcomePanel implements Applyable interface

TaskPlugin – JPAPanel code public class DBAccessJPAPanel extends JPAPanel { public DBAccessJPAPanel(JFrame parentFrame, ScriptContainer container) { [...] initComponents(); } /** Apply values from GUI to container */ public void applyValues() { container.setModifiedTime(new Date(System.currentTimeMillis())); container.setName(taskTextField.getText()); } /** Fill values from container into gui */ public void resetValues() { taskTextField.setText(container.getName()); scriptTextArea.setText(task.getScript()); } /** Method will be called whenever this panel is activated */ public void updateValues(boolean vsiteChanged) { if (vsiteChanged) loadQueries(); enableControls(); } [...] }

TaskPlugin – Container code (1) public class ExampleContainer extends UserContainer implements IPanelProvider { private transient JPanel simpleOutcomePanel; public ExampleContainer(GroupContainer parent) { super(parent); } public ErrorSet checkContents() { ErrorSet er = super.checkContents(); //Does Vsite support needed SoftwareResource? NamedResourceSet nrs = ResourceManager.getResourceSet(getVsite()); if (nrs.findSoftwareResourceByName("our_executable") == null) er.add(new Uerror(getIdentifier(),"Wrong Vsite")); setErrors(er); return er; }....

TaskPlugin – Container code (2)..... public int getNrOfPanels() { return 1; } public String getPanelTitle(int i) { return “Simple outcome panel”; } public void finalizePanel(){ } public JPanel getPanel(int i) { if (!simpleOutcomePanel) simpleOutcomePanel = new ReexSimpleOutcomePanel(this); return simpleOutcomePanel; }

TaskPlugin – OutcomePanel code public class SimpleOutcomePanel extends JPanel implements Applyable { [...] public SimpleOutcomePanel(Container container) { initComponents(); } public void applyValues() { } /** Becomes visible */ public void updateValues() { if (plot == null) addPlotPanel(); } /** New outcome */ public void resetValues() { if (panelReady) return; if (plot == null) addPlotPanel(); [...] } [...] }

Re-usable components Graphical interfaces –FileImportPanel, FileExportPanel, RemoteTextEditor Container classes –UserContainer, GroupContainer Classes to get the outcome of AJO –OutcomeManager Classes to manage resources –ResourceManager Requests

Requests allow to prepare jobs at low level (AJO) without using containers but they still hides from programmer many issues: sending job to Vsite, waiting/checking for reply and all certificates related work Requests are often used in ExtensionPlugins There are many out-of-the-box requests in the Client. The most interesting: –GetJobStatus –GetFilesFromUspace –GetListing

How to implement a Request extends ObservableRequestThread add some IObservers to Request object implement run() method where: –AJO is constructed –AJO is sent with desired method (polling or nonPolling) –if nonPolling() answer was RetrieveOutcomeReply then in run() we can get (deserialized) outcome – else it must be done in IObserver code

Summary TaskPlugin –used as a component in standard Client’s job –integrates JPAPanel, Container and OutcomePanel ExtensionPlugin –adds any other new functionality to the Client

DeviceSteer Plugin (1) Plugin for steering remote devices through Unicore infrastructure -user friendly – GUI Interactivity in Unicore Designed in the way which allows simple adaptation to different devices

DeviceSteer Plugin (2)

DBAccess Plugin (1) Plugin allows for access to SQL databases Features: –User friendliness –Support for the most popular free DBMSes: PostgreSQL and MySQL –Support for SDSC Storage Resource Broker –Extensibility

DBAccess Plugin (2)

References Plugin Programmer’s Guide Client API documentation Client and plugins source code

QUESTIONS ?