Sep 15, 2013 ... Download the “Eclipse for RCP and RAP. Developers” package to your laptop. 2.
If your machine is Linux or Mac OS X, untar the file. •. On Mac ...
mHARP Developer Tutorial MHARP ANNUAL WORSHIP VIENNA, AUSTIRA SEP. 15, 2013
Eclipse RCP installation
Eclipse RCP Installation
Objective To
learn how to install Eclipse Rich Client Platform (RCP)
Contents System
Prerequisites
Eclipse
Download and Installation
Updating
Eclipse to latest release
System Prerequisites
Operating System Linux (just about any version) MacOSX (10.5 Leopard or higher) Windows (XP and higher)
Java: Eclipse requires Sun or IBM Java Need Java SDK Java 1.6 or higher
Java 1.6 is the same as JDK 6.0
The GNU Java Compiler (GCJ), which comes standard on Linux, will not work. OpenJDK, distributed with some Linux distributions, comes closer to working, but should not be used
Eclipse Packages
The current version of Eclipse (4.3) is also known as “Kepler”
Eclipse is available in a number of different packages for different kinds of development http://eclipse.org/downloads/
For mHARP-EQ, we recommend the Eclipse for RCP and RAP Developers
Exercise Download the “Eclipse for RCP and RAP Developers” package to your laptop 2. If your machine is Linux or Mac OS X, untar the file 1.
•
On Mac OS X you can just double-click in the Finder
If your machine is Windows, unzip the file 4. This creates an eclipse folder containing the executable as well as other support files and folders 3.
Starting Eclipse
Linux
Mac OS X
From a terminal window, enter “/eclipse/eclipse &” Or, open the eclipse folder Double-click on the eclipse executable
From Finder, open the eclipse folder where you installed Double-click on the Eclipse application Or from a terminal window
Windows
Open the eclipse folder Double-click on the eclipse executable
Specifying a Workspace
Eclipse prompts for a workspace location at startup time
The workspace contains all userdefined data
Projects and resources such as folders and files
The default workspace location is fine for this tutorial
Eclipse Welcome Page
Displayed when Eclipse is run for the first time
Select “Go to the Workbench”
Updating Eclipse RCP
Eclipse releases two service packs per major release
To check for updates, select Help > Check for Updates…
If there are updates installed, Restart eclipse after installing
mHARP-EQ can be updated in a similar way
Additional Features for mHARP
mHARP-EQ requires the Graphical Editing Framework (GEF) and Zest Visualization Toolkit SDKs that are not included in the RCP installation
Go to Help > Install New Software…
In the Work With: dropdown box, select the update site:
Kepler - http://download.eclipse.org/releases/kepler
Install GEF and Zest SDKs
In the dialog box, expand Modeling and select
Graphical Editing Framework GEF SDK
Graphical Editing Framework Zest Visualization Toolkit SDK
Select Next, Eclipse calculates required plug-ins
Select Next again.
Accept the License agreement and Select Finish
Exercise 1.
Launch Eclipse RCP and select the default workspace
2.
Go to Help > Install New Software… and select GEF and Zest Framework SDKs
3.
Install GEF and Zest SDKs
4.
Restart Eclipse once the installation is completed
Eclipse RCP/mHARP Overview
Eclipse RCP/mHARP Overview
Objective To
introduce the Eclipse RCP platform and mHARP architecture
Contents What
is Eclipse RCP?
What
is mHARP-EQ?
The Eclipse Platform
Integrated development environments(IDEs) for Java, C/C++, Fortran, etc Factor
out the language independent parts (platform) Then, add in the language-specific pieces later (plug-ins)
“The Eclipse platform itself is a sort of universal tool platform – it is an IDE for anything and nothing in particular.” – Eclipse Platform Overview
What is Eclipse?
Universal platform for integrating development tools Open, extensible architecture based on plug-ins
Plug-ins are installed into Eclipse to add new behavior
JDT is just a collection of plug-ins
Plug-in Dev. Env (PDE) Java Dev Tools (JDT) Eclipse Platform Java VM
RCP Core
Eclipse Plug-in Architecture
OSGi is a specification describing a modular approach for Java applications
Plug-in – smallest unit of Eclipse function
Extension Point – named entity for collecting “contributions” Example:
extension point for mHARP analysis
Extension – a contribution Example:
an mHARP analysis
Eclipse Plug-in Arch. (2)
Each plug-in
Contributes to 1 or more extension points Optionally declares new extension points Depends on a set of other plug-ins Contains Java code libraries and other files May export Java-based APIs for downstream plug-ins Lives in its own plug-in subdirectory
Details are defined in the plug-in manifest Manifest declares contributions Code implements contributions and provides API plugin.xml file in root of plug-in subdirectory
Eclipse Plug-in Arch. (3)
Plugin example
plug-in A
plug-in B
extension point P
extension
interface I
class C
Plug-in A
Declares extension point P
Declares interface I to go with P
Plug-in B
Implements interface I with its own class C
Contributes class C to extension point P
Plug-in A instantiates C and calls its I methods
Core Technologies
OSGI Provides Permits
plug-in based environment for Eclipse
lazy-loading of plug-ins
Permits
multiple version of the same plugin/packages to co-exist
Every
Eclipse plug-in is an OSGi plug-in (or bundle)
Every
OSGi plug-in can be treated as a standard JAR outside of OSGi
Core Technologies (2)
SWT – a platform independent widget toolkit that wraps native widgets offering a native look and feel across platforms JFace – provides Model-View-Controller wrapping for SWT widgets (e.g. TreeViewer, TableViewer, etc)
Model – consists of application data, business rules, logic and functions
View – visual representation of the data (e.g. chart, diagram)
Controller – mediates input converting commands for the model or view
Eclipse Basics
The workbench contains the menus, toolbars, editors, and views that make up the main Eclipse Window
The workbench represents the desktop development environment
Contains a set of tools for resource management
Provides a common way to navigate through the resources
Multiple workbenches can be opened simultaneously
Only one workbench per workspace
View View
Editor
View
Perspectives
A Perspective is a visual container for a set of views/editors
They are task oriented, i.e. they contain specific views for doing certain tasks Java C++
Perspective – Java development
Perspective – C++ development
View
A View is typically used to work on a set of data, might be hierarchical Example:
Eclipse package explorer, mHARP Scenarios view
Views can be freely positioned in the User Interface
Components of RCP App.
Main program – a RCP main application class implements IApplication, synonymous to the main method for a standard Java application
A Perspective – defines the layout of your application
This class should be defined via extension point org.eclipse.core.runtime.application
Declared via extension point org.eclipse.ui.perspective
Workbench Advisor – controls the appearance of the application (menus, toolbars, perspectives, etc)
mHARP-EQ Architecture Dynamic
New Third-Party Analyses Compare, Contrast, Validate Auto-update mHARP
GIS
Workflow
Data
Eclipse RCP
Plug-ins, Provenance, Environment
Plug-in Framework
mHARP-EQ Architecture (2)
mHARP Core Technologies
Eclipse RCP
Geotools
Visualization Toolkit
JFreeChart
Ktable
Jasper Reports
More RCP Resources
Eclipse RCP Tutorial •
http://www.vogella.com/articles/Eclipse3RCP/ article.html
Eclipse RCP Wiki •
http://wiki.eclipse.org/index.php/Rich_Client_Pl atform
Setup mHARP Development Environment
Setup mHARP Development Environment
Objective Checkout
all required mHARP projects for development
Content Step
by step instructions to checkout each repository
Adding
projects to working sets
Full instructions on mHARP wiki: https://opensource.ncsa.illinois.edu/conflue nce/display/HARP/Environment+Setup
mHARP Repositories
5 Git repositories make up mHARP-EQ mharp mharp-earthquake mharp-gis
mharp-orbit mharp-tools
Checkout mHARP Repository
In Eclipse, go to File > Import > Git > Projects from Git
Click Next
Select URI and Click Next
Copy and Paste into the URI field: https://anonymous@opens ource.ncsa.illinois.edu/stash /scm/harp/mharp.git
For password, enter anonymous and click Next
Checkout mHARP Repository (2)
Select master
Click Next
Checkout mHARP Repository (3)
Assuming the default “workspace”, we recommend creating a git directory in the workspace and then checking out each repository to that directory (e.g. eclipse_workspace/git /mharp)
Click Next
Checkout mHARP Repository (4)
Select Import existing projects
Click Next
Checkout mHARP Repository (5)
Select all projects
Uncheck the box Search for nested projects
Check Add project to working sets
See next slide...
Checkout mHARP Repository (6)
To add the checked out files to a working set:
Click Select
Click New
Select Java
Click Next
Where it says “Working set name” enter mHARP
Click Finish
Check the box that says mHARP
Click OK
See Next Slide
Checkout mHARP Repository (7)
Your Import Projects dialog should look similar to this
Click Finish
Projects will be checked out into workspace/git/mharp and added to the working set mHARP
Show Working Sets
Use dropdown menu to organize projects by Working Sets
Exercise 1.
Checkout mharp git repository into working set mHARP
2.
In Package Explorer, select to show Working Sets
Checkout mHARP-Earthquake Repository
Similar to the mharp git repository
In Eclipse, go to File > Import > Git > Projects from Git
Click Next
Select URI and Click Next
Copy and Paste into the URI field: https://anonymous@opensource .ncsa.illinois.edu/stash/scm/harp /mharp-earthquake.git
For password, enter anonymous and click Next
Checkout mHARPEarthquake Repo. (2)
Similar to the mharp repository, put mharpearthquake in the location: eclipse_workspace/g
it/mharp-earthquake
Click Next
Checkout mHARPEarthquake Repository (3)
Select all projects
Uncheck the box Search for nested projects
Check Add project to working sets
Similar to mharp repository, create a new working set called mHARP-EQ and select it
Click Finish
Exercise 1.
Checkout mharp-earthquake into working set mHARP-EQ
Checkout mHARP-GIS
Checkout mharp-gis similar to mharp
Repository URI: https://
[email protected] s.edu/stash/scm/harp/mharp-gis.git
Checkout repository to eclipse_workspace/git/mharp-gis
For working set, create mHARP-GIS
Checkout mHARP-Orbit
Checkout mharp-orbit similar to mharp
Repository URI: https://
[email protected] s.edu/stash/scm/harp/mharp-orbit.git
Checkout repository to eclipse_workspace/git/mharp-orbit
For working set, create mHARP-Orbit
Checkout mHARP-Tools
Checkout mharp-tools similar to mharp
Repository URI: https://
[email protected] s.edu/stash/scm/harp/mharp-tools.git
Checkout repository to eclipse_workspace/git/mharp-tools
For working set, create mHARP-Tools
Exercise 1.
Checkout mharp-gis into working set mHARP-GIS
2.
Checkout mharp-orbit into working set mHARP-Orbit
3.
Checkout mharp-tools into working set mHARP-Tools
Launch mHARP-EQ
Find project org.mharp.eq.rcp
Double click on the file org.mharp.eq.rcp.product
Under Testing click on Launch an Eclipse application
If you see a dialog with the message “errors exist in org.geotools”, click Proceed
Analysis framework
Analysis Framework
Objective Create
a new mHARP Analysis
Content Create
the analysis description file (User Interface) Create the Analysis Task Register Analysis with newAnalyses extension point Register
Task with ogreTasks extension point Launch mHARP-EQ with new analysis
Step 1.
Analysis Description File
XML file specifying the inputs, outputs, and parameters for the new analysis
Defines User Interface for New Analysis
Put file in defining plug-ins descriptions folder
Create New Plug-in
Create new eclipse plugin, File > New > Plug-in Project
Project Name: org.mharp.eq.tutorial
Leave rest as default
Click Next
Create New Plug-in (2)
Uncheck the box “This plugin will make contributions to the UI”
Leave rest as default
Click Finish
You can find your project under “Other Projects” working set
Create Descriptions Folder
Right click on the new project and select New > Folder
Where it says “Folder Name:” enter descriptions
Click Finish
Create Analysis Desc. File
Similar to the folder creation, right click on the descriptions folder and select New > File
Where it says “File name” enter NewBuildingDamage.xml
Click Finish
Exercise 1.
Create new Plug-in Project
2.
Create descriptions folder
3.
Create empty file NewBuildingDamage.xml
Analysis Description Tag
id
(required) – must match the id given to the analysis in the org.mharp.core.analysis.newAnalyses extension point (we will add the id later)
help-context
(optional) – assigns a help context id to this analysis
Code:
Analysis Type Tag
type
(required) - specifies analysis iteration type
property
(required)
name
– special keyword to identify which dataset is the dataset being iterated over
value
– dataset to iterate over
Code:
Groups Tag
Specify
the grouping of User Interface Inputs and parameters
Code: Required Advanced
Parameter Tag
Attributes
group (unused) – string that must match a member of
format – the format of whatever phylum parameter this is. For datasets, indicates type of dataset (mapping, shapefile, etc)
phylum – type of parameter, currently supports string, dataset, or boolean
cardinality – how many of this type, currently supports single or multiple
key – name of property which will correspond to Analysis Task Setter (e.g. key = “building”, Analysis Task must have setBuilding)
friendly-name – name that should be displayed in the User Interface
optional – value of true denotes this parameter is not needed to perform the analysis
advanced – a value of true denotes this is an advanced parameter and should be in that grouping. It is required, but this will hide it in the UI under Advanced grouping
Parameter Tag (2)
Elements
A list of types that are accepted by this , this should match the tag field of the dataset type defined at org.mharp.eq.gisSchemas
A textual description of the parameter. Primarily used to generate tooltips in the UI.
Result Name
Code:
Building Dataset
Code:
buildingv4 buildingv5
Hazard Dataset
Code:
hazardRaster deterministicHazardRaster hazard
Fragility Dataset
Code:
buildingFragilities
Output Tag
- two required properties base-dataset-key – the key of the which is the base for this new Dataset Schema – The id of the schema that this Dataset implements (see org.mharp.eq.gisSchemasextension point)
Attributes format – the format of the parameter, currently supports string or dataset key – the name of the property for which value should be added. No spaces allowed friendly-name – name of property for which value should be added
Elements
property – additional properties required by output
Output
Code:
Produced Types Tag
- types produced by this analysis
Elements
– should match the output type (e.g. the tag in the org.mharp.eq.gisSchemas extension
Code:
buildingDamagev4
Closing Tag
Code:
Ctrl-s to save the file
Exercise 1.
Add the analysis description pieces for the new analysis
Step 2.
Create Analysis Task
Java class performs the work
Must implement the Analysis Task that corresponds to the (e.g. SimpleFeatureTask)
Keys given to each parameter must match set methods in this class
Column names given to the outputs must match values given in the output schema type
Add Required Dependencies
Open project MANIFEST.MF under META-INF folder Select Dependencies tab Under Required Plug-ins, click Add
org.mharp.core.analysis
org.mharp.gis
org.mharp.eq
org.mharp.eq.hazard
ncsa.tools.elf.core
ncsa.tools.common
ncsa.tools.ogrescript
org.dom4j
org.geotools
Finish dependencies Ctrl-s to save MANIFEST.MF
Create New Java Class
Right click on the project, New > Class
Package:
Name:
NewBuildingDamageTask
Superclass:
org.mharp.eq.tutorial.tasks
SimpleFeatureTask
Click Finish
Add Unimplemented Methods
If your eclipse already add the method, you don’t need to do this part.
Click on the red x in the class and select add unimplemented methods
Adds handleFeature method – each building is passed in 1 at a time, we will add our business logic here
Add Set Methods
For key=buildings Nothing
to set, this is our iterating dataset
For key=hazard setHazard(List
For key=fragilities setFragilities(FragilityDataset
hazardList)
fragilities)
Note: if your eclipse complaints “can’t resolve a type”, ctrl+shift+o (it will import all classes you need)
Hazard Input
Add class variable
Code: private FragilityHazardSet hazardSet = new FragilityHazardSet();
Add Set Method
Code: public void setHazard(List hazardList) { hazardSet.setDatasets(hazardList); }
Fragility Input
Add Class Variable
Code: private FragilityDataset fragilities;
Add Set Method
Code public void setFragilities(FragilityDataset fragilities) { this.fragilities = fragilities; }
Exercise 1.
Add class variable for fragility and Set Method
2.
Add class variable for hazard and Set method
Implement handleFeature
Code: Point location = (Point) feature.getAttribute(0); // Period of Demand Type double period = 0.0;
// Demand Type for Fragility String demandHazardType = "PGA"; // Units of Demand for Fragility String demandHazardUnits = "g"; // Default int spectrumOverride = 0;
Implement handleFeature (2)
Get hazard that best matches the period, demand type and demand units. It will find the dataset that can best provide the hazard
Code: //Find Hazard Value at Location double hazardVal = hazardSet.getHazardVal(location, period, demandHazardType, demandHazardUnits, spectrumOverride);
Implement handleFeature (3)
Get the first fragility set in the map and get the damage value for the first fragility curve in the set for the hazard value Store the result in the resultMap associated with the Task Code: FragilitySet randomFragility = fragilities.getFragilitySets().values().iterator().next();
double damage = randomFragility.getFragilities().get(0).getValueAtPoint(hazar dVal); resultMap.put("meandamage", damage );
Exercise
Implement handleFeature 1.
Get hazard value at building location
2.
Get Fragility curve and corresponding damage for the hazard value
3.
Store damage as meandamage
Step 3. Register Analysis
Objective Register
analysis with org.mharp.core.analysis.newAnalyses extension point
Content How
to register a new analysis
Analysis Extension Point
Inside the project org.mharp.eq.tutorial, open MANIFEST.MF
Click on the Extensions tab
Click Add
Where it says Extension Point filter, search for org.mharp.core.analysis.new Analyses
Select the Extension Point and Click Finish
Create Analysis Extension
To create a new extension, right click on org.mharp.core.analysis.newAnalyses and select New > analysis
Your eclipse may already add the new analysis for you, in this case, you don’t need to add another analysis
This will create a blank analysis extension with the following attributes:
id – This id must match the id given in the analysis description file, NewBuildingDamage.xml
name – Friendly name of the analysis and should be i18n
tag – This tag must match the tag in the ncsa.tools.ogrescript.ogreTasks extension. No spaces allowed
descriptor – Location of the analysis description file
category – The category to put the new analysis in, for display purposes
description – brief description of the new analysis
Analysis Extension Details
Fill in the following for our new analysis
id
name
descriptions/NewBuildingDamage.xml
category
tutorialBuildingDamage
descriptor
New Building Damage
tag
org.mharp.eq.tutorial.NewBuildingDa mage
Building
description
new building damage analysis
Update Analysis Description
Open NewBuildingDamage.xml
Replace
With
Exercise 1.
Add Extension Point in MANIFEST.MF
2.
Add Extension to Extension Point for new Analysis in MANIFEST.MF
3.
Update NewBuildingDamage.xml with analysis id
Step 4.
Register Analysis Task
Objective Register
new analysis task with ncsa.tools.ogrescript.ogreTasks extension point
Content How
to register a new analysis task
Analysis Task Extension Point
Inside the project org.mharp.eq.tutorial, open MANIFEST.MF
Click on the Extensions tab
Click Add
Where it says Extension Point filter, search for ncsa.tools.ogrescript.ogre Tasks
Select the Extension Point and Click Finish
Create Analysis Task Extension
Similar to the newAnalyses extension, right click on ncsa.tools.ogrescript.ogreTasks and select New > ogreTasks This will create a blank analysis task extension with the following attributes:
id – This id should match the fully qualified class name of the task (see class attribute)
name – This is the friendly name of the Task and should be i18n
tag – This tag must match the tag in the org.mharp.core.analysis.newAnalyses extension point
class – This points to the implementing class we created previously
Analysis Task Extension Details
Fill in the following for our new analysis task
id
name
New Building Damage Task
tag
org.mharp.eq.tutorial.tasks.New BuildingDamageTask
tutorialBuildingDamage
Class
org.mharp.eq.tutorial.tasks.NewBuild ingDamageTask
Add Plug-in to mHARP
Go to Run > Run Configurations…
Under Eclipse Applications select org.mharp.eq.rcp.product
Select the Plug-ins tab
Locate our plugin org.mharp.eq.tutorial and check the box to include it
Click Run
Update Preferences
Click on File > Preferences
Select File Locations
Change Repository update service URL to Windows
- file:///C:/repositories.xml
Linux
/Mac – file:/home/username/repositories.xml
Or
wherever you put the file
Click OK
Sync Repositories
Click on Synchronize button to fetch defined repositories
Create New Scenario
Select File > New Scenario
Where it says Name enter Tutorial Scenario
Click Next
Create New Scenario (2)
Where it says Country select United States of America
Expand Tennessee and select Shelby county
Click Next
Click Finish
Execute Analysis
Right Click on the new scenario and select Execute Analysis
Expand Building and select New Building Damage
Click Finish
New Building Damage
Click on the New Building Damage box to build the User Interface
Note: the analysis is currently red because not all input parameters are satisified
See next slide for inputs
New Building Damage (2)
For Result Name, enter Building Damage
For Buildings, click Search and locate Shelby County RES3
For Hazard, click Search and locate Memphis 7.7M PGA
For Fragilities, click Search and locate Default Building Fragilities 1.0
Click the Execute button that should now be enabled
Exercise 1.
Run the New Building Damage analysis
Advanced Topics
Add Dataset Type
Objective Add
new dataset type to mHARP-EQ
Content Creating
a new dataset schema
Adding
schema extension to extension point
Adding
field-specific metadata
New Dataset Schema
Create a folder in the root directory of your plugin called gisSchemas
Create a new empty file called mharptutorialBuildingDamage_1.0.xsd in gisSchemas folder
See mharp-buildingDamageVer4_1.0.xsd in plugin org.mharp.eq as an example
Sample Code for Schema
Add Schema Extension Point
Go to org.mharp.eq.tutorial project and open MANIFEST.MF
Click on Extensions
Click Add
Add org.mharp.gis.gisSchemas
Add Schema Extension
Right click on org.mharp.gis.gisSchemas and select New > gisSchema
This will create a new extension with the following attributes
id – The id of the schema
name – A friendly name for the schema
version A version identifier for the schema
type – a short type name for the schema (used in analysis description to identify input types)
description – a user-friendly description of the schema
file – The schema file defined in the previous step
format – The format of the schema. Predefined formats include shapefile, fragility, mapping, raster, and table
requiredFields – The list of fields that are required as a minimum for this schema. These will be prompted to map during ingestion of data
mapLayer – For shapefiles, the suggested smart layering position in the map. Should be between 1 and 100. A mapLayer of -1 indicates dataset should be invisible by default
category – a category name for the schema. Categories determine what subfodlers the schemas appear in the repository
Schema Extension Details
Id org.mharp.eq.tutorial.schemas.tutorialBuil dingDamage.v1.0
name - Tutorial Building Damage
version - 1.0
type - tutorialBuildingDamage
description - Tutorial building damage output type
file - gisSchemas/mharptutorialBuildingDamage_1.0.xsd
format - Shapefile
requiredFields - meandamage
mapLayer - 10
category - Buildings
Field Specific Metadata
Create a folder in the root directory of your plugin called gisMetadata
Create a file name corresponding to the schema xsd file name, but ending in .xml (e.g. mharptutorialBuildingDamage_1.0.xml)
mHARP will automatically look for a file with the same prefix in gisMetadata when displaying fields in the User Interface
Metadata Attributes
Column-id – The id to match the column id from the xsd file. Should not include the maeviz. prefix Friendly-name Is-numeric Unit Field-length Importance Is-result Agg-type
Sample Metadata for Data Type
Create Custom Iterator
Objective Add
new custom iterator
Content What
is a custom iterator
Adding
a custom iterator extension
Custom Iterators
Simple Feature Iterator Iterates
over a feature dataset providing 1 feature per iteration to the analysis task
Table Iterator Iterates
over a table dataset providing 1 row per iteration to the analysis task
Custom Iterator Handles
special cases where simple iteration is not applicable (e.g. see NBSR Iteration Handler)
Create Custom Iterator Class
Right click on the project org.mharp.eq.tutorial and select New > Class
Package – org.mharp.eq.tutorial.handlers
Name – ExampleIterationHandler
Superclass – IterationHandler
Click Finish
Implement Iterator Class This code should go inside wrappedCreateIterationElements(…) Code:
// This must match the tag for the analysis and task Element e = new DefaultElement("example"); // Name of the result e.addAttribute("myresult", AnalysisUtils.variableizeAsConstant("result.type", "myresult")); // Input - must match "key" inside analysis description e.addAttribute("my-buildings",AnalysisUtils.variableizeAsConstant(null, "mybuildings")); // Output - bldgresult must match to an output key in analysis description e.addAttribute("result-bldg", AnalysisUtils.variableizeAsConstant("collection", "bldgresult")); e.addAttribute("analysis-id", node.getUniqueId());
Create Analysis Task
Right click on the project org.mharp.eq.tutorial and select New > Class
Package – org.mharp.eq.tutorial.tasks
Name – CustomIteratorAnalysisTask
Superclass – AnalysisBaseTask
Click Finish
Implement Custom Analysis Task
Code
private String resultName; private FeatureDataset myBuildings; private FeatureCollection resultBldg; public String getResultName() { return resultName; } public void setResultName(String resultName) { this.resultName = resultName; } public FeatureDataset getMyBuildings() { return myBuildings; }
@Override protected void wrappedExecute(IProgressMonitor monitor) throws ScriptExecutionException { System.out.println("do something, save the results"); } public void setMyBuildings(FeatureDataset myBuildings) { this.myBuildings = myBuildings; } public FeatureCollection getResultBldg() { return resultBldg; } public void setResultBldg(FeatureCollection resultBldg) { this.resultBldg = resultBldg; }
Exercise 1.
Create custom iterator class
2.
Implement iterator class
3.
Create Analysis Task
4.
Implement Analysis Task
Custom Analysis Description
Right click on the descriptions folder and select New > File
Where it says “File name” enter CustomIteratorBuildingDamage.xml
Click Finish
Custom Analysis Description (2)
Code
Required Advanced buildingv4 buildingv5 buildingDamagev4
Register Custom Iterator
Extension Point org.mharp.core.analysis.iterationHandlers
Attributes id
– This id should match the fully qualified class name of the iteration handler
tag
– This tag is what will be used in the xml tag to identify what iteration handler to call for the analysis
class
– class that implements the new iteration handle
Custom Iterator Extension
Inside org.mharp.eq.tutorial, open the MANIFEST.MF.
Click on the Extensions tab
•
Click the Add button and add org.mharp.core.analysis.iterationHandlers
Right click on the extension point and select New > iterationHandler
Iteration Handler Attributes
id – org.mharp.eq.tutorial.han dlers.ExampleIterationHan dler
name – Custom Building Iterator
tag – customBldgIterator
class org.mharp.eq.tutorial.han dlers.ExampleIterationHan dler
Register Custom Analysis
Register at newAnalyses extension point
id org.mharp.eq.tutorial.CustomBu ildingDamage
name – Custom Building Damage
tag - example
descriptor – descriptions/CustomIteratorBuil dingDamage.xml
category - Building
Register Custom Analysis Task
Register at ogreTasks extension point
id – org.mharp.eq.tutorial.tasks. CustomIteratorAnalysisTask
name – Custom Building Damage
tag - example
class org.mharp.eq.tutorial.tasks. CustomIteratorAnalysisTask
Run Custom Iterator
To see your new analysis with custom iterator, re-launch mHARP-EQ
Open a scenario and follow the previous steps for executing a new analysis, you should see Custom Building Damage in the Building category
Questions?
Resources
User/Developer Documentation
Analysis Framework Developer’s Guide
https://opensource.ncsa.illinois.edu/confluence/displ ay/HARP/Analysis+Framework+Developer%27s+Guid e
Adding Dataset Types
https://opensource.ncsa.illinois.edu/confluence/displ ay/HARP/mHARP+Home
https://opensource.ncsa.illinois.edu/confluence/displ ay/HARP/Creating+New+Data+Schemas
Git e-book
http://git-scm.com/book