First Commit

Giancarlo Panichi 4 years ago
commit bebc862f73

@ -0,0 +1,55 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="target/data-miner-manager-tester-1.0.0-SNAPSHOT/WEB-INF/classes" path="src/main/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="**" kind="src" output="target/data-miner-manager-tester-1.0.0-SNAPSHOT/WEB-INF/classes" path="src/main/resources">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="lib" path="/home/giancarlo/gwt/gwt-2.8.1/gwt-user.jar">
<attributes>
<attribute name="javadoc_location" value="file:/home/giancarlo/gwt/gwt-2.8.1/doc/javadoc/"/>
</attributes>
</classpathentry>
<classpathentry kind="lib" path="/home/giancarlo/gwt/gwt-2.8.1/gwt-codeserver.jar">
<attributes>
<attribute name="javadoc_location" value="file:/home/giancarlo/gwt/gwt-2.8.1/doc/javadoc/"/>
</attributes>
</classpathentry>
<classpathentry kind="lib" path="/home/giancarlo/gwt/gwt-2.8.1/gwt-dev.jar">
<attributes>
<attribute name="javadoc_location" value="file:/home/giancarlo/gwt/gwt-2.8.1/doc/javadoc/"/>
</attributes>
</classpathentry>
<classpathentry kind="lib" path="/home/giancarlo/gwt/gwt-2.8.1/validation-api-1.0.0.GA.jar" sourcepath="/home/giancarlo/gwt/gwt-2.8.1/validation-api-1.0.0.GA-sources.jar"/>
<classpathentry kind="lib" path="/home/giancarlo/gwt/gwt-2.8.1/validation-api-1.0.0.GA-sources.jar"/>
<classpathentry kind="output" path="target/data-miner-manager-tester-1.0.0-SNAPSHOT/WEB-INF/classes"/>
</classpath>

2
.gitignore vendored

@ -0,0 +1,2 @@
/target/
/test.log

@ -0,0 +1,64 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>data-miner-manager-tester</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.wst.jsdt.core.javascriptValidator</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.wst.common.project.facet.core.builder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.wst.validation.validationbuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>com.google.gdt.eclipse.core.webAppProjectValidator</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>com.google.gwt.eclipse.core.gwtProjectValidator</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.pde.ManifestBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.pde.SchemaBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.m2e.core.maven2Builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.m2e.core.maven2Nature</nature>
<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
<nature>com.google.gwt.eclipse.core.gwtNature</nature>
<nature>org.eclipse.wst.jsdt.core.jsNature</nature>
<nature>org.eclipse.pde.PluginNature</nature>
</natures>
</projectDescription>

@ -0,0 +1,3 @@
eclipse.preferences.version=1
googleCloudSqlEnabled=false
localDevMySqlEnabled=true

@ -0,0 +1,4 @@
eclipse.preferences.version=1
jarsExcludedFromWebInfLib=
warSrcDir=src/main/webapp
warSrcDirIsOutput=false

@ -0,0 +1,2 @@
eclipse.preferences.version=1
entryPointModules=org.gcube.portlets.user.dataminermanagertester.dataminermanagertester

@ -0,0 +1,6 @@
eclipse.preferences.version=1
encoding//src/main/java=UTF-8
encoding//src/main/resources=UTF-8
encoding//src/test/java=UTF-8
encoding//src/test/resources=UTF-8
encoding/<project>=UTF-8

@ -0,0 +1,8 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
org.eclipse.jdt.core.compiler.compliance=1.8
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.source=1.8

@ -0,0 +1,4 @@
activeProfiles=
eclipse.preferences.version=1
resolveWorkspaceProjects=true
version=1

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?><project-modules id="moduleCoreId" project-version="1.5.0">
<wb-module deploy-name="data-miner-manager-tester-1.0.0-SNAPSHOT">
<wb-resource deploy-path="/" source-path="/target/m2e-wtp/web-resources"/>
<wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/>
<property name="java-output-path" value="/data-miner-manager/target/data-miner-manager-1.2.0-SNAPSHOT/WEB-INF/classes"/>
<property name="context-root" value="data-miner-manager-tester"/>
</wb-module>
</project-modules>

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<faceted-project>
<fixed facet="wst.jsdt.web"/>
<installed facet="jst.web" version="3.0"/>
<installed facet="wst.jsdt.web" version="1.0"/>
<installed facet="java" version="1.8"/>
</faceted-project>

@ -0,0 +1,2 @@
disabled=06target
eclipse.preferences.version=1

@ -0,0 +1 @@
${gcube.license}

@ -0,0 +1,68 @@
The gCube System - ${name}
--------------------------------------------------
${description}
${gcube.description}
${gcube.funding}
Version
--------------------------------------------------
${version} (${buildDate})
Please see the file named "changelog.xml" in this directory for the release notes.
Authors
--------------------------------------------------
* Giancarlo Panichi (giancarlo.panichi-AT-isti.cnr.it),
Istituto di Scienza e Tecnologie dell'Informazione "A. Faedo" CNR, Pisa IT
Maintainers
-----------
* Giancarlo Panichi (giancarlo.panichi-AT-isti.cnr.it),
Istituto di Scienza e Tecnologie dell'Informazione "A. Faedo" CNR, Pisa IT
Download information
--------------------------------------------------
Source code is available from SVN:
${scm.url}
Binaries can be downloaded from the gCube website:
${gcube.website}
Installation
--------------------------------------------------
Installation documentation is available on-line in the gCube Wiki:
https://gcube.wiki.gcube-system.org/gcube/Data_Miner_Manager
Documentation
--------------------------------------------------
Documentation is available on-line in the gCube Wiki:
https://gcube.wiki.gcube-system.org/gcube/Data_Miner_Manager
Support
--------------------------------------------------
Bugs and support requests can be reported in the gCube issue tracking tool:
${gcube.issueTracking}
Licensing
--------------------------------------------------
This software is licensed under the terms you may find in the file named "LICENSE" in this directory.

@ -0,0 +1,32 @@
<ReleaseNotes>
<Changeset component="org.gcube.portlets-user.data-miner-manager.1-5-0"
date="2016-06-12">
<Change>Support Java 8 compatibility [ticket #8471]</Change>
</Changeset>
<Changeset component="org.gcube.portlets-user.data-miner-manager.1-4-0"
date="2016-02-15">
<Change>Fixed load balancing [ticket #7576]</Change>
</Changeset>
<Changeset component="org.gcube.portlets-user.data-miner-manager.1-3-0"
date="2016-02-15">
<Change>Updated PortalContext [ticket #6278]</Change>
<Change>Added encoded parameters in equivalent http request [ticket
#7167]
</Change>
</Changeset>
<Changeset component="org.gcube.portlets-user.data-miner-manager.1-2-0"
date="2016-12-01">
<Change>Updated Output support</Change>
<Change>Added PortalContext</Change>
</Changeset>
<Changeset component="org.gcube.portlets-user.data-miner-manager.1-1-0"
date="2016-10-01">
<Change>Updated to Auth 2.0</Change>
<Change>Added Spatial data support [Ticket #4172]</Change>
<Change>Added Temporal data support [Ticket #4172]</Change>
</Changeset>
<Changeset component="org.gcube.portlets-user.data-miner-manager.1-0-0"
date="2016-07-01">
<Change>First release</Change>
</Changeset>
</ReleaseNotes>

@ -0,0 +1,32 @@
<assembly
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
<id>servicearchive</id>
<formats>
<format>tar.gz</format>
</formats>
<baseDirectory>/</baseDirectory>
<fileSets>
<fileSet>
<directory>${distroDirectory}</directory>
<outputDirectory>/</outputDirectory>
<useDefaultExcludes>true</useDefaultExcludes>
<includes>
<include>README</include>
<include>LICENSE</include>
<include>changelog.xml</include>
<include>profile.xml</include>
</includes>
<fileMode>755</fileMode>
<filtered>true</filtered>
</fileSet>
</fileSets>
<files>
<file>
<source>target/${build.finalName}.${project.packaging}</source>
<outputDirectory>/${artifactId}</outputDirectory>
</file>
</files>
</assembly>

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<Resource>
<ID></ID>
<Type>Service</Type>
<Profile>
<Description>${project.description}</Description>
<Class>PortletsUser</Class>
<Name>${project.artifactId}</Name>
<Version>1.0.0</Version>
<Packages>
<Software>
<Description>${project.description}</Description>
<Name>${project.artifactId}</Name>
<Version>${version}</Version>
<MavenCoordinates>
<groupId>${project.groupId}</groupId>
<artifactId>${project.artifactId}</artifactId>
<version>${project.version}</version>
</MavenCoordinates>
<Type>webapplication</Type>
<Files>
<File>${project.build.finalName}.${project.packaging}</File>
</Files>
</Software>
</Packages>
</Profile>
</Resource>

@ -0,0 +1,435 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>maven-parent</artifactId>
<groupId>org.gcube.tools</groupId>
<version>1.0.0</version>
<relativePath />
</parent>
<groupId>org.gcube.portlets.user</groupId>
<artifactId>data-miner-manager-tester</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>data-miner-manager-tester</name>
<description>data-miner-manager-tester offers test support for dataminer service</description>
<scm>
<url>https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/data-miner-manager-tester</url>
</scm>
<developers>
<developer>
<name>Giancarlo Panichi</name>
<email>g.panichi@isti.cnr.it</email>
<organization>CNR Pisa, Istituto di Scienza e Tecnologie dell'Informazione "A. Faedo"</organization>
<roles>
<role>architect</role>
<role>developer</role>
</roles>
</developer>
</developers>
<properties>
<webappDirectory>${project.build.directory}/${project.build.finalName}</webappDirectory>
<distroDirectory>distro</distroDirectory>
<configDirectory>config</configDirectory>
<!-- Java -->
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<!-- GWT configuration -->
<gwt.version>2.8.2</gwt.version>
<gwtp.version>1.6</gwtp.version>
<gin.version>2.1.2</gin.version>
<!-- <gwt-material.version>2.0-rc5</gwt-material.version> -->
<!-- <gwt-material-table.version>2.0-rc5</gwt-material-table.version> -->
<gwt-material.version>2.3.0</gwt-material.version>
<gwt-material-table.version>2.3.0</gwt-material-table.version>
<gwt.style>OBF</gwt.style>
<gwt.runTarget>DataMinerManagerTester.html</gwt.runTarget>
<gwt.module.name>
org.gcube.portlets.user.dataminermanagertester.dataminermanagertester
</gwt.module.name>
<!-- maven -->
<maven-war-plugin.version>2.6</maven-war-plugin.version>
<maven-compiler-plugin.version>3.3</maven-compiler-plugin.version>
<KEYS>${env.KEYS}</KEYS>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
<profiles>
<profile>
<id>localRun</id>
<dependencies>
<!-- Logger -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<scope>runtime</scope>
</dependency>
<!-- Authorization -->
<dependency>
<groupId>org.gcube.common</groupId>
<artifactId>common-authorization</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.gcube.common</groupId>
<artifactId>authorization-client</artifactId>
<scope>compile</scope>
</dependency>
<!-- javax.servlet-api -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
</dependencies>
</profile>
</profiles>
<dependencies>
<!-- GWT -->
<dependency>
<groupId>com.google.gwt</groupId>
<artifactId>gwt-servlet</artifactId>
<version>${gwt.version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.google.gwt</groupId>
<artifactId>gwt-user</artifactId>
<version>${gwt.version}</version>
<scope>provided</scope>
<exclusions>
<exclusion>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.google.gwt</groupId>
<artifactId>gwt-dev</artifactId>
<version>${gwt.version}</version>
<scope>provided</scope>
<exclusions>
<exclusion>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- JDT -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<!-- GWTP -->
<dependency>
<groupId>com.gwtplatform</groupId>
<artifactId>gwtp-mvp-client</artifactId>
<version>${gwtp.version}</version>
<scope>provided</scope>
</dependency>
<!-- GwtMaterial -->
<dependency>
<groupId>com.github.gwtmaterialdesign</groupId>
<artifactId>gwt-material</artifactId>
<version>${gwt-material.version}</version>
</dependency>
<dependency>
<groupId>com.github.gwtmaterialdesign</groupId>
<artifactId>gwt-material-themes</artifactId>
<version>${gwt-material.version}</version>
</dependency>
<dependency>
<groupId>com.github.gwtmaterialdesign</groupId>
<artifactId>gwt-material-addins</artifactId>
<version>${gwt-material.version}</version>
</dependency>
<dependency>
<groupId>com.github.gwtmaterialdesign</groupId>
<artifactId>gwt-material-table</artifactId>
<version>${gwt-material-table.version}</version>
</dependency>
<!-- DI -->
<dependency>
<groupId>com.google.gwt.inject</groupId>
<artifactId>gin</artifactId>
<version>${gin.version}</version>
<scope>provided</scope>
</dependency>
<!-- Portlet -->
<dependency>
<groupId>javax.portlet</groupId>
<artifactId>portlet-api</artifactId>
</dependency>
<!-- Liferay -->
<dependency>
<groupId>com.liferay.portal</groupId>
<artifactId>portal-service</artifactId>
<scope>provided</scope>
</dependency>
<!-- PORTAL -->
<dependency>
<groupId>org.gcube.core</groupId>
<artifactId>common-scope-maps</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.gcube.common.portal</groupId>
<artifactId>portal-manager</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.gcube.dvos</groupId>
<artifactId>usermanagement-core</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.gcube.portal</groupId>
<artifactId>client-context-library</artifactId>
<version>[1.0.0-SNAPSHOT,)</version>
<scope>compile</scope>
</dependency>
<!-- Authorization -->
<dependency>
<groupId>org.gcube.common</groupId>
<artifactId>common-authorization</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.gcube.common</groupId>
<artifactId>authorization-client</artifactId>
<scope>provided</scope>
</dependency>
<!-- Nord52 -->
<dependency>
<groupId>org.n52.wps</groupId>
<artifactId>52n-wps-client-lib</artifactId>
<version>[3.3.1,3.3.3)</version>
<exclusions>
<exclusion>
<artifactId>gt-opengis</artifactId>
<groupId>org.geotools</groupId>
</exclusion>
<exclusion>
<groupId>xerces</groupId>
<artifactId>xercesImpl</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- DataMinerManagerCL -->
<dependency>
<groupId>org.gcube.data.analysis</groupId>
<artifactId>data-miner-manager-cl</artifactId>
<version>[1.0.0-SNAPSHOT,2.0.0-SNAPSHOT)</version>
</dependency>
<!-- XML Apis -->
<dependency>
<groupId>xml-apis</groupId>
<artifactId>xml-apis</artifactId>
<version>1.4.01</version>
</dependency>
<!-- LOGGING -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<scope>provided</scope>
</dependency>
<!-- JUnit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.gcube.distribution</groupId>
<artifactId>maven-portal-bom</artifactId>
<version>LATEST</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<repositories>
<repository>
<id>gCubeExternal</id>
<name>gcube-externals</name>
<url>http://maven.research-infrastructures.eu/nexus/content/repositories/gcube-externals/</url>
</repository>
<repository>
<id>n52-releases</id>
<name>52n Releases</name>
<url>http://52north.org/maven/repo/releases/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
<!-- <repository> -->
<!-- <id>52north-releases</id> -->
<!-- <name>52north-releases</name> -->
<!-- <url>http://maven.research-infrastructures.eu/nexus/content/repositories/52north-releases/</url> -->
<!-- </repository> -->
</repositories>
<build>
<!-- Generate compiled stuff in the folder used for developing mode -->
<outputDirectory>${webappDirectory}/WEB-INF/classes</outputDirectory>
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
<plugins>
<!-- GWT -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>gwt-maven-plugin</artifactId>
<version>${gwt.version}</version>
<configuration>
<strict>true</strict>
<testTimeOut>180</testTimeOut>
<mode>htmlunit</mode>
<includes>**/*GwtTest.java</includes>
<logLevel>INFO</logLevel>
<runTarget>${gwt.runTarget}</runTarget>
<hostedWebapp>${webappDirectory}</hostedWebapp>
<module>${gwt.module.name}</module>
</configuration>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>test</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- Copy static web files before executing gwt:run -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1.1</version>
<executions>
<execution>
<phase>compile</phase>
</execution>
</executions>
<configuration>
<webappDirectory>${webappDirectory}</webappDirectory>
<warName>${project.build.finalName}</warName>
</configuration>
</plugin>
<!-- Maven Compiler Plugin -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven-compiler-plugin.version}</version>
<configuration>
<source>${maven.compiler.source}</source>
<target>${maven.compiler.target}</target>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptors>
<descriptor>${distroDirectory}/descriptor.xml</descriptor>
</descriptors>
</configuration>
<executions>
<execution>
<id>servicearchive</id>
<phase>install</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

@ -0,0 +1,33 @@
package org.gcube.portlets.user.dataminermanagertester.client.application;
import org.gcube.portlets.user.dataminermanagertester.client.application.diff.OperatorsDiffModule;
import org.gcube.portlets.user.dataminermanagertester.client.application.help.HelpModule;
import org.gcube.portlets.user.dataminermanagertester.client.application.home.HomeModule;
import org.gcube.portlets.user.dataminermanagertester.client.application.menu.MenuModule;
import org.gcube.portlets.user.dataminermanagertester.client.application.testbatchconfig.TestBatchConfModule;
import org.gcube.portlets.user.dataminermanagertester.client.application.testconfig.TestConfModule;
import com.gwtplatform.mvp.client.gin.AbstractPresenterModule;
/**
*
* @author Giancarlo Panichi
*
*/
public class ApplicationModule extends AbstractPresenterModule {
@Override
protected void configure() {
install(new MenuModule());
install(new HomeModule());
install(new HelpModule());
install(new TestConfModule());
install(new TestBatchConfModule());
install(new OperatorsDiffModule());
bindPresenter(ApplicationPresenter.class, ApplicationPresenter.PresenterView.class, ApplicationView.class,
ApplicationPresenter.PresenterProxy.class);
}
}

@ -0,0 +1,102 @@
package org.gcube.portlets.user.dataminermanagertester.client.application;
import org.gcube.portlets.user.dataminermanagertester.client.application.menu.MenuPresenter;
import org.gcube.portlets.user.dataminermanagertester.client.rpc.DataMinerTesterServiceAsync;
import org.gcube.portlets.user.dataminermanagertester.shared.Constants;
import org.gcube.portlets.user.dataminermanagertester.shared.session.UserInfo;
import com.google.gwt.core.shared.GWT;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.inject.Inject;
import com.google.web.bindery.event.shared.EventBus;
import com.gwtplatform.mvp.client.Presenter;
import com.gwtplatform.mvp.client.View;
import com.gwtplatform.mvp.client.annotations.ProxyStandard;
import com.gwtplatform.mvp.client.presenter.slots.NestedSlot;
import com.gwtplatform.mvp.client.presenter.slots.PermanentSlot;
import com.gwtplatform.mvp.client.proxy.NavigationEvent;
import com.gwtplatform.mvp.client.proxy.NavigationHandler;
import com.gwtplatform.mvp.client.proxy.Proxy;
import gwt.material.design.client.ui.MaterialLoader;
/**
*
* @author Giancarlo Panichi
*
*/
public class ApplicationPresenter
extends Presenter<ApplicationPresenter.PresenterView, ApplicationPresenter.PresenterProxy>
implements NavigationHandler {
interface PresenterView extends View {
}
@ProxyStandard
interface PresenterProxy extends Proxy<ApplicationPresenter> {
}
public static final PermanentSlot<MenuPresenter> SLOT_MENU = new PermanentSlot<>();
public static final NestedSlot SLOT_MAIN = new NestedSlot();
private MenuPresenter menuPresenter;
private DataMinerTesterServiceAsync service;
@Inject
ApplicationPresenter(EventBus eventBus, PresenterView view, PresenterProxy proxy, MenuPresenter menuPresenter,
DataMinerTesterServiceAsync service) {
super(eventBus, view, proxy, RevealType.Root);
this.menuPresenter = menuPresenter;
this.service = service;
callHello();
}
@Override
protected void onBind() {
super.onBind();
setInSlot(SLOT_MENU, menuPresenter);
addRegisteredHandler(NavigationEvent.getType(), this);
}
@Override
protected void onReveal() {
super.onReveal();
}
@Override
public void onNavigation(NavigationEvent navigationEvent) {
Window.scrollTo(0, 0);
// PlaceRequest placeRequest=navigationEvent.getRequest();
// placeManager.revealPlace(placeRequest);
}
private void callHello() {
/* String groupId= GCubeClientContext.getCurrentContextId(); */
String token = Window.Location.getParameter(Constants.TOKEN);
GWT.log("Token: " + token);
MaterialLoader.loading(true);
service.hello(token,new AsyncCallback<UserInfo>() {
@Override
public void onFailure(Throwable caught) {
MaterialLoader.loading(false);
GWT.log("Error in Hello: ", caught);
}
@Override
public void onSuccess(UserInfo result) {
GWT.log("Hello: " + result.getUsername());
MaterialLoader.loading(false);
}
});
}
}

@ -0,0 +1,34 @@
package org.gcube.portlets.user.dataminermanagertester.client.application;
import javax.inject.Inject;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.HTMLPanel;
import com.google.gwt.user.client.ui.Widget;
import com.gwtplatform.mvp.client.ViewImpl;
/**
*
* @author Giancarlo Panichi
*
*/
public class ApplicationView extends ViewImpl implements ApplicationPresenter.PresenterView {
interface Binder extends UiBinder<Widget, ApplicationView> {
}
@UiField
HTMLPanel menu;
@UiField
HTMLPanel main;
@Inject
ApplicationView(Binder uiBinder) {
initWidget(uiBinder.createAndBindUi(this));
bindSlot(ApplicationPresenter.SLOT_MENU, menu);
bindSlot(ApplicationPresenter.SLOT_MAIN, main);
}
}

@ -0,0 +1,17 @@
<!-- @Author Giancarlo Panichi -->
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
xmlns:g='urn:import:com.google.gwt.user.client.ui' xmlns:m="urn:import:gwt.material.design.client.ui"
xmlns:ma="urn:import:gwt.material.design.addins.client">
<ui:with field="res"
type="org.gcube.portlets.user.dataminermanagertester.client.resources.AppResources" />
<g:HTMLPanel>
<g:HTMLPanel ui:field="menu" />
<m:MaterialContainer>
<g:HTMLPanel ui:field="main" />
</m:MaterialContainer>
</g:HTMLPanel>
</ui:UiBinder>

@ -0,0 +1,21 @@
package org.gcube.portlets.user.dataminermanagertester.client.application.custom;
import com.google.gwt.cell.client.AbstractCell;
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
/**
*
* @author Giancarlo Panichi
*
*
*/
public class SelectableTextCell extends AbstractCell<String> {
@Override
public void render(Context context, String value, SafeHtmlBuilder sb) {
if (value != null) {
sb.appendHtmlConstant("<div unselectable='false' >" + value + "</div>");
}
}
}

@ -0,0 +1,16 @@
package org.gcube.portlets.user.dataminermanagertester.client.application.diff;
import com.gwtplatform.mvp.client.gin.AbstractPresenterModule;
/**
*
* @author Giancarlo Panichi
*
*/
public class OperatorsDiffModule extends AbstractPresenterModule {
@Override
protected void configure() {
bindPresenter(OperatorsDiffPresenter.class, OperatorsDiffPresenter.PresenterView.class,
OperatorsDiffView.class, OperatorsDiffPresenter.PresenterProxy.class);
}
}

@ -0,0 +1,88 @@
package org.gcube.portlets.user.dataminermanagertester.client.application.diff;
import org.gcube.portlets.user.dataminermanagertester.client.application.ApplicationPresenter;
import org.gcube.portlets.user.dataminermanagertester.client.place.NameTokens;
import org.gcube.portlets.user.dataminermanagertester.client.rpc.DataMinerTesterServiceAsync;
import org.gcube.portlets.user.dataminermanagertester.shared.Constants;
import org.gcube.portlets.user.dataminermanagertester.shared.config.DMDiffConfig;
import com.google.gwt.core.shared.GWT;
import com.google.gwt.safehtml.shared.SafeHtmlUtils;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.inject.Inject;
import com.google.web.bindery.event.shared.EventBus;
import com.gwtplatform.mvp.client.HasUiHandlers;
import com.gwtplatform.mvp.client.Presenter;
import com.gwtplatform.mvp.client.View;
import com.gwtplatform.mvp.client.annotations.NameToken;
import com.gwtplatform.mvp.client.annotations.NoGatekeeper;
import com.gwtplatform.mvp.client.annotations.ProxyStandard;
import com.gwtplatform.mvp.client.proxy.ProxyPlace;
import gwt.material.design.client.ui.MaterialLoader;
/**
*
* @author Giancarlo Panichi
*
*/
public class OperatorsDiffPresenter
extends Presenter<OperatorsDiffPresenter.PresenterView, OperatorsDiffPresenter.PresenterProxy>
implements OperatorsDiffUiHandlers {
interface PresenterView extends View, HasUiHandlers<OperatorsDiffUiHandlers> {
void setResult(String result, boolean success);
}
@ProxyStandard
@NameToken(NameTokens.DIFF)
@NoGatekeeper
interface PresenterProxy extends ProxyPlace<OperatorsDiffPresenter> {
}
private DataMinerTesterServiceAsync service;
@Inject
OperatorsDiffPresenter(EventBus eventBus, PresenterView view, PresenterProxy proxy,
DataMinerTesterServiceAsync service) {
super(eventBus, view, proxy, ApplicationPresenter.SLOT_MAIN);
this.service = service;
getView().setUiHandlers(this);
}
@Override
public void executeDiff(DMDiffConfig operatorsDiffConfig) {
callOperatorsDiff(operatorsDiffConfig);
}
private void callOperatorsDiff(DMDiffConfig operatorsDiffConfig) {
MaterialLoader.loading(true);
service.getOperatorsDiff(getToken(), operatorsDiffConfig, new AsyncCallback<String>() {
@Override
public void onFailure(Throwable caught) {
GWT.log("Error in diff: ", caught);
String result = SafeHtmlUtils.htmlEscape(caught.getLocalizedMessage());
MaterialLoader.loading(false);
getView().setResult(result, false);
}
@Override
public void onSuccess(String result) {
MaterialLoader.loading(false);
getView().setResult(result, true);
}
});
}
private String getToken() {
String token = Window.Location.getParameter(Constants.TOKEN);
GWT.log("Token: " + token);
return token;
}
}

@ -0,0 +1,16 @@
package org.gcube.portlets.user.dataminermanagertester.client.application.diff;
import org.gcube.portlets.user.dataminermanagertester.shared.config.DMDiffConfig;
import com.gwtplatform.mvp.client.UiHandlers;
/**
*
* @author Giancarlo Panichi
*
*/
interface OperatorsDiffUiHandlers extends UiHandlers {
void executeDiff(DMDiffConfig operatorsDiffConfig);
}

@ -0,0 +1,118 @@
package org.gcube.portlets.user.dataminermanagertester.client.application.diff;
import javax.inject.Inject;
import org.gcube.portlets.user.dataminermanagertester.shared.config.DMDiffConfig;
import org.gcube.portlets.user.dataminermanagertester.shared.config.ProtocolType;
import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.user.client.ui.Widget;
import com.gwtplatform.mvp.client.ViewWithUiHandlers;
import gwt.material.design.client.constants.Color;
import gwt.material.design.client.constants.IconType;
import gwt.material.design.client.ui.MaterialButton;
import gwt.material.design.client.ui.MaterialListBox;
import gwt.material.design.client.ui.MaterialTextArea;
import gwt.material.design.client.ui.MaterialTextBox;
import gwt.material.design.client.ui.animate.MaterialAnimation;
import gwt.material.design.client.ui.animate.Transition;
/**
*
* @author Giancarlo Panichi
*
*/
class OperatorsDiffView extends ViewWithUiHandlers<OperatorsDiffUiHandlers>
implements OperatorsDiffPresenter.PresenterView {
interface Binder extends UiBinder<Widget, OperatorsDiffView> {
}
@UiField
MaterialTextBox dm1;
@UiField
MaterialTextBox token1;
@UiField
MaterialTextBox dm2;
@UiField
MaterialTextBox token2;
@UiField
MaterialListBox protocolType;
@UiField
MaterialTextArea result;
@UiField
MaterialButton resultIcon;
@UiField
MaterialButton run;
@Inject
OperatorsDiffView(Binder uiBinder) {
initWidget(uiBinder.createAndBindUi(this));
protocolType.clear();
for (ProtocolType tType : ProtocolType.values()) {
protocolType.add(tType.getLabel());
}
dm1.setAllowBlank(false);
token1.setAllowBlank(false);
dm2.setAllowBlank(false);
token2.setAllowBlank(false);
}
@UiHandler("run")
void onClick(ClickEvent e) {
if (!dm1.validate() || !token1.validate() || !dm2.validate() || !token2.validate()) {
return;
}
String dm1Value = dm1.getValue();
String token1Value = token1.getValue();
String dm2Value = dm2.getValue();
String token2Value = token2.getValue();
String protocolValue = protocolType.getValue();
resultIcon.setVisible(false);
result.setVisible(false);
DMDiffConfig operatorsDiffConfig = new DMDiffConfig(dm1Value, token1Value, dm2Value,
token2Value, protocolValue);
getUiHandlers().executeDiff(operatorsDiffConfig);
}
@Override
public void setResult(String resultValue, boolean success) {
resultIcon.setVisible(true);
result.setVisible(true);
if (success) {
resultIcon.setIconType(IconType.CHECK_CIRCLE);
resultIcon.setBackgroundColor(Color.GREEN);
resultIcon.setIconFontSize(4.0, Unit.EM);
} else {
resultIcon.setIconType(IconType.ERROR);
resultIcon.setBackgroundColor(Color.RED);
resultIcon.setIconFontSize(4.0, Unit.EM);
}
MaterialAnimation animation = new MaterialAnimation();
animation.setDelay(0);
animation.setDuration(1000);
animation.transition(Transition.FLIPINX);
animation.animate(resultIcon);
result.setLength(resultValue.length());
result.setValue(resultValue);
}
}

@ -0,0 +1,37 @@
<!-- @Author Giancarlo Panichi -->
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
xmlns:g="urn:import:com.google.gwt.user.client.ui" xmlns:m="urn:import:gwt.material.design.client.ui"
xmlns:ma="urn:import:gwt.material.design.addins.client" xmlns:m.table="urn:import:gwt.material.design.client.ui.table"
xmlns:m.html="urn:import:gwt.material.design.client.ui.html">
<ui:with field="res"
type="org.gcube.portlets.user.dataminermanagertester.client.resources.AppResources" />
<m:MaterialPanel textAlign="CENTER" paddingTop="60"
paddingLeft="20" paddingRight="20">
<m:MaterialTitle title="Diff" description="Set DataMiner Diff info" />
<m:MaterialTextBox ui:field="dm1" title="DataMiner 1"
placeholder="dataminer1-d-d4s.d4science.org" label="DataMiner 1"
active="true" grid="s12" />
<m:MaterialTextBox ui:field="token1" title="Token 1"
placeholder="" label="Token 1" active="true" grid="s12" />
<m:MaterialTextBox ui:field="dm2" title="DataMiner 2"
placeholder="dataminer2-d-d4s.d4science.org" label="DataMiner 2"
active="true" grid="s12" />
<m:MaterialTextBox ui:field="token2" title="Token 2"
placeholder="" label="Token 2" active="true" grid="s12" />
<m:MaterialListBox ui:field="protocolType"
placeholder="Protocol type">
<m.html:Option text="Protocol" />
</m:MaterialListBox>
<m:MaterialButton ui:field="run" text="Run" waves="LIGHT"
textColor="WHITE" iconType="STARS" iconPosition="LEFT" />
<m:MaterialTextArea ui:field="result" visible="false"
label="Test Result" resizeRule="AUTO" />
<m:MaterialButton ui:field="resultIcon" visible="false"
width="100px" height="100px" type="FLOATING" size="LARGE" iconType="CHECK_CIRCLE" />
</m:MaterialPanel>
</ui:UiBinder>

@ -0,0 +1,12 @@
package org.gcube.portlets.user.dataminermanagertester.client.application.help;
import com.gwtplatform.mvp.client.gin.AbstractPresenterModule;
public class HelpModule extends AbstractPresenterModule {
@Override
protected void configure() {
bindPresenter(HelpPresenter.class, HelpPresenter.PresenterView.class,
HelpView.class, HelpPresenter.PresenterProxy.class);
}
}

@ -0,0 +1,36 @@
package org.gcube.portlets.user.dataminermanagertester.client.application.help;
import org.gcube.portlets.user.dataminermanagertester.client.application.ApplicationPresenter;
import org.gcube.portlets.user.dataminermanagertester.client.place.NameTokens;
import com.google.inject.Inject;
import com.google.web.bindery.event.shared.EventBus;
import com.gwtplatform.mvp.client.Presenter;
import com.gwtplatform.mvp.client.View;
import com.gwtplatform.mvp.client.annotations.NameToken;
import com.gwtplatform.mvp.client.annotations.ProxyStandard;
import com.gwtplatform.mvp.client.proxy.ProxyPlace;
/**
*
* @author Giancarlo Panichi
*
*/
public class HelpPresenter extends Presenter<HelpPresenter.PresenterView, HelpPresenter.PresenterProxy> {
interface PresenterView extends View {
}
@ProxyStandard
@NameToken(NameTokens.HELP)
interface PresenterProxy extends ProxyPlace<HelpPresenter> {
}
@Inject
HelpPresenter(EventBus eventBus, PresenterView view, PresenterProxy proxy) {
super(eventBus, view, proxy, ApplicationPresenter.SLOT_MAIN);
}
}

@ -0,0 +1,24 @@
package org.gcube.portlets.user.dataminermanagertester.client.application.help;
import javax.inject.Inject;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.user.client.ui.Widget;
import com.gwtplatform.mvp.client.ViewImpl;
/**
*
* @author Giancarlo Panichi
*
*/
class HelpView extends ViewImpl implements HelpPresenter.PresenterView {
interface Binder extends UiBinder<Widget, HelpView> {
}
@Inject
HelpView(Binder uiBinder) {
initWidget(uiBinder.createAndBindUi(this));
}
}

@ -0,0 +1,16 @@
<!-- @Author Giancarlo Panichi -->
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
xmlns:g='urn:import:com.google.gwt.user.client.ui' xmlns:m="urn:import:gwt.material.design.client.ui"
xmlns:ma="urn:import:gwt.material.design.addins.client">
<ui:with field="res"
type="org.gcube.portlets.user.dataminermanagertester.client.resources.AppResources" />
<m:MaterialPanel textAlign="CENTER" paddingTop="80"
paddingLeft="20" paddingRight="20">
<m:MaterialTitle title="Help DataMiner Manager Tester" />
</m:MaterialPanel>
</ui:UiBinder>

@ -0,0 +1,16 @@
package org.gcube.portlets.user.dataminermanagertester.client.application.home;
import com.gwtplatform.mvp.client.gin.AbstractPresenterModule;
/**
*
* @author Giancarlo Panichi
*
*/
public class HomeModule extends AbstractPresenterModule {
@Override
protected void configure() {
bindPresenter(HomePresenter.class, HomePresenter.PresenterView.class, HomeView.class, HomePresenter.PresenterProxy.class);
}
}

@ -0,0 +1,42 @@
package org.gcube.portlets.user.dataminermanagertester.client.application.home;
import org.gcube.portlets.user.dataminermanagertester.client.application.ApplicationPresenter;
import org.gcube.portlets.user.dataminermanagertester.client.place.NameTokens;
import com.google.inject.Inject;
import com.google.web.bindery.event.shared.EventBus;
import com.gwtplatform.mvp.client.HasUiHandlers;
import com.gwtplatform.mvp.client.Presenter;
import com.gwtplatform.mvp.client.View;
import com.gwtplatform.mvp.client.annotations.NameToken;
import com.gwtplatform.mvp.client.annotations.NoGatekeeper;
import com.gwtplatform.mvp.client.annotations.ProxyStandard;
import com.gwtplatform.mvp.client.proxy.ProxyPlace;
/**
*
* @author Giancarlo Panichi
*
*/
public class HomePresenter extends Presenter<HomePresenter.PresenterView, HomePresenter.PresenterProxy>
implements HomeUiHandlers {
interface PresenterView extends View, HasUiHandlers<HomePresenter> {
}
@ProxyStandard
@NameToken(NameTokens.HOME)
@NoGatekeeper
interface PresenterProxy extends ProxyPlace<HomePresenter> {
}
@Inject
HomePresenter(EventBus eventBus, PresenterView view, PresenterProxy proxy) {
super(eventBus, view, proxy, ApplicationPresenter.SLOT_MAIN);
getView().setUiHandlers(this);
}
}

@ -0,0 +1,13 @@
package org.gcube.portlets.user.dataminermanagertester.client.application.home;
import com.gwtplatform.mvp.client.UiHandlers;
/**
*
* @author Giancarlo Panichi
*
*/
public interface HomeUiHandlers extends UiHandlers{
}

@ -0,0 +1,23 @@
package org.gcube.portlets.user.dataminermanagertester.client.application.home;
import javax.inject.Inject;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.user.client.ui.Widget;
import com.gwtplatform.mvp.client.ViewWithUiHandlers;
/**
*
* @author Giancarlo Panichi
*
*/
public class HomeView extends ViewWithUiHandlers<HomePresenter> implements HomePresenter.PresenterView {
interface Binder extends UiBinder<Widget, HomeView> {
}
@Inject
HomeView(Binder uiBinder) {
initWidget(uiBinder.createAndBindUi(this));
}
}

@ -0,0 +1,14 @@
<!-- @Author Giancarlo Panichi -->
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
xmlns:g='urn:import:com.google.gwt.user.client.ui' xmlns:m="urn:import:gwt.material.design.client.ui"
xmlns:ma="urn:import:gwt.material.design.addins.client">
<ui:with field="res"
type="org.gcube.portlets.user.dataminermanagertester.client.resources.AppResources" />
<m:MaterialPanel textAlign="CENTER" paddingTop="80">
<m:MaterialTitle title="DataMiner Manager Tester"
description="Tester for DataMiner services" />
</m:MaterialPanel>
</ui:UiBinder>

@ -0,0 +1,16 @@
package org.gcube.portlets.user.dataminermanagertester.client.application.menu;
import com.gwtplatform.mvp.client.gin.AbstractPresenterModule;
/**
*
* @author Giancarlo Panichi
*
*/
public class MenuModule extends AbstractPresenterModule {
@Override
protected void configure() {
bindSingletonPresenterWidget(MenuPresenter.class, MenuPresenter.PresenterView.class, MenuView.class);
}
}

@ -0,0 +1,47 @@
package org.gcube.portlets.user.dataminermanagertester.client.application.menu;
import org.gcube.portlets.user.dataminermanagertester.client.event.ContentPushEvent;
import com.google.inject.Inject;
import com.google.web.bindery.event.shared.EventBus;
import com.gwtplatform.mvp.client.HasUiHandlers;
import com.gwtplatform.mvp.client.PresenterWidget;
import com.gwtplatform.mvp.client.View;
import com.gwtplatform.mvp.client.proxy.NavigationEvent;
import com.gwtplatform.mvp.client.proxy.NavigationHandler;
/**
*
* @author Giancarlo Panichi
*
*/
public class MenuPresenter extends PresenterWidget<MenuPresenter.PresenterView> implements MenuUiHandlers, NavigationHandler {
interface PresenterView extends View, HasUiHandlers<MenuUiHandlers> {
}
@Inject
MenuPresenter(EventBus eventBus, PresenterView view) {
super(eventBus, view);
getView().setUiHandlers(this);
}
@Override
protected void onBind() {
super.onBind();
addRegisteredHandler(NavigationEvent.getType(), this);
}
@Override
public void setContentPush() {
ContentPushEvent.fire(this);
}
@Override
public void onNavigation(NavigationEvent navigationEvent) {
}
}

@ -0,0 +1,14 @@
package org.gcube.portlets.user.dataminermanagertester.client.application.menu;
import com.gwtplatform.mvp.client.UiHandlers;
/**
*
* @author Giancarlo Panichi
*
*/
interface MenuUiHandlers extends UiHandlers {
void setContentPush();
}

@ -0,0 +1,41 @@
package org.gcube.portlets.user.dataminermanagertester.client.application.menu;
import javax.inject.Inject;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Widget;
import com.gwtplatform.mvp.client.ViewWithUiHandlers;
import gwt.material.design.client.ui.MaterialHeader;
import gwt.material.design.client.ui.MaterialNavBar;
import gwt.material.design.client.ui.MaterialSideNavPush;
/**
*
* @author Giancarlo Panichi
*
*/
class MenuView extends ViewWithUiHandlers<MenuUiHandlers> implements MenuPresenter.PresenterView {
interface Binder extends UiBinder<Widget, MenuView> {
}
@UiField
MaterialHeader header;
@UiField
MaterialNavBar navBar;
@UiField
MaterialSideNavPush sideNav;
@Inject
MenuView(Binder uiBinder) {
initWidget(uiBinder.createAndBindUi(this));
sideNav.addOpenedHandler(event -> getUiHandlers().setContentPush());
sideNav.addClosedHandler(event -> getUiHandlers().setContentPush());
}
}

@ -0,0 +1,41 @@
<!-- @Author Giancarlo Panichi -->
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
xmlns:m="urn:import:gwt.material.design.client.ui" xmlns:ma="urn:import:gwt.material.design.addins.client"
xmlns:m.html="urn:import:gwt.material.design.client.ui.html">
<ui:with field="tokens"
type="org.gcube.portlets.user.dataminermanagertester.client.place.NameTokens" />
<ui:with field="res"
type="org.gcube.portlets.user.dataminermanagertester.client.resources.AppResources" />
<m:MaterialPanel>
<m:MaterialHeader ui:field="header">
<m:MaterialNavBar ui:field="navBar" activates="sidenav">
<m:MaterialNavBrand paddingLeft="60" text="DataMiner Tester" />
<m:MaterialNavSection float="RIGHT">
</m:MaterialNavSection>
</m:MaterialNavBar>
</m:MaterialHeader>
<m:MaterialSideNavPush ui:field="sideNav" m:id="sidenav"
width="280" withHeader="true" showOnAttach="true">
<!-- <ma:sideprofile.MaterialSideProfile url="{res.sideNavProfileBackground.getSafeUri.asString}">
<m:MaterialImage url="{res.panda.getSafeUri.asString}" /> <m:MaterialLabel
text="PandA" textColor="WHITE" /> <m:MaterialLink text="panda@isti.cnr.it"
activates="dropProfile" textColor="WHITE" /> </ma:sideprofile.MaterialSideProfile> -->
<!--
<m:MaterialLink text="Home" iconType="LABEL_OUTLINE"
targetHistoryToken="{tokens.getHome}" /> -->
<m:MaterialLink text="Test" iconType="LABEL_OUTLINE"
targetHistoryToken="{tokens.getTest}" />
<m:MaterialLink text="Batch" iconType="LABEL_OUTLINE"
targetHistoryToken="{tokens.getBatch}" />
<m:MaterialLink text="Diff" iconType="LABEL_OUTLINE"
targetHistoryToken="{tokens.getDiff}" />
<m:MaterialLink text="Help" iconType="LABEL_OUTLINE"
targetHistoryToken="{tokens.getHelp}" />
</m:MaterialSideNavPush>
</m:MaterialPanel>
</ui:UiBinder>

@ -0,0 +1,66 @@
package org.gcube.portlets.user.dataminermanagertester.client.application.monitor;
import org.gcube.portlets.user.dataminermanagertester.client.application.monitor.MonitorRequestEvent.MonitorRequestEventHandler;
import org.gcube.portlets.user.dataminermanagertester.shared.Constants;
import com.google.gwt.user.client.Timer;
/**
*
* @author Giancarlo Panichi
*
*
*/
public class MonitorRequest {
private Timer monitor = null;
private MonitorRequestEventHandler handler;
public MonitorRequest() {
monitor = new Timer() {
public void run() {
executeCommand();
}
};
}
private void stopMonitor() {
if (monitor.isRunning()) {
monitor.cancel();
}
}
private void executeCommand() {
MonitorRequestEvent event = new MonitorRequestEvent();
handler.onMonitor(event);
}
public void addHandler(MonitorRequestEventHandler handler) {
this.handler = handler;
}
public void start() {
startSchedule();
}
private void startSchedule() {
// Execute the timer to expire 2 seconds in the future
monitor.schedule(Constants.CLIENT_MONITOR_PERIODMILLIS);
}
public void repeat() {
monitor.schedule(Constants.CLIENT_MONITOR_PERIODMILLIS);
}
public void stop() {
stopMonitor();
}
}

@ -0,0 +1,60 @@
package org.gcube.portlets.user.dataminermanagertester.client.application.monitor;
import com.google.gwt.event.shared.EventHandler;
import com.google.gwt.event.shared.GwtEvent;
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.event.shared.HasHandlers;
/**
* Monitor Request Event
*
* @author Giancarlo Panichi
*
*
*/
public class MonitorRequestEvent extends
GwtEvent<MonitorRequestEvent.MonitorRequestEventHandler> {
public static Type<MonitorRequestEventHandler> TYPE = new Type<MonitorRequestEventHandler>();
public interface MonitorRequestEventHandler extends EventHandler {
void onMonitor(MonitorRequestEvent event);
}
public interface HasMonitorRequestEventHandler extends HasHandlers {
public HandlerRegistration addMonitorRequestEventHandler(
MonitorRequestEventHandler handler);
}
public MonitorRequestEvent() {
}
@Override
protected void dispatch(MonitorRequestEventHandler handler) {
handler.onMonitor(this);
}
@Override
public Type<MonitorRequestEventHandler> getAssociatedType() {
return TYPE;
}
public static Type<MonitorRequestEventHandler> getType() {
return TYPE;
}
public static void fire(HasHandlers source, MonitorRequestEvent event) {
source.fireEvent(event);
}
@Override
public String toString() {
return "MonitorRequestEvent []";
}
}

@ -0,0 +1,16 @@
package org.gcube.portlets.user.dataminermanagertester.client.application.testbatchconfig;
import com.gwtplatform.mvp.client.gin.AbstractPresenterModule;
/**
*
* @author Giancarlo Panichi
*
*/
public class TestBatchConfModule extends AbstractPresenterModule {
@Override
protected void configure() {
bindPresenter(TestBatchConfPresenter.class, TestBatchConfPresenter.PresenterView.class,
TestBatchConfView.class, TestBatchConfPresenter.PresenterProxy.class);
}
}

@ -0,0 +1,216 @@
package org.gcube.portlets.user.dataminermanagertester.client.application.testbatchconfig;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import org.gcube.data.analysis.dataminermanagercl.shared.process.ComputationStatus.Status;
import org.gcube.portlets.user.dataminermanagertester.client.application.ApplicationPresenter;
import org.gcube.portlets.user.dataminermanagertester.client.application.monitor.MonitorRequest;
import org.gcube.portlets.user.dataminermanagertester.client.application.monitor.MonitorRequestEvent;
import org.gcube.portlets.user.dataminermanagertester.client.application.monitor.MonitorRequestEvent.MonitorRequestEventHandler;
import org.gcube.portlets.user.dataminermanagertester.client.place.NameTokens;
import org.gcube.portlets.user.dataminermanagertester.client.rpc.DataMinerTesterServiceAsync;
import org.gcube.portlets.user.dataminermanagertester.shared.Constants;
import org.gcube.portlets.user.dataminermanagertester.shared.config.DMBatchConfig;
import org.gcube.portlets.user.dataminermanagertester.shared.result.BatchTestResult;
import org.gcube.portlets.user.dataminermanagertester.shared.result.BatchTestRow;
import org.gcube.portlets.user.dataminermanagertester.shared.result.SingleTestResult;
import org.gcube.portlets.user.dataminermanagertester.shared.task.TaskStatus;
import com.google.gwt.core.shared.GWT;
import com.google.gwt.safehtml.shared.SafeHtmlUtils;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.inject.Inject;
import com.google.web.bindery.event.shared.EventBus;
import com.gwtplatform.mvp.client.HasUiHandlers;
import com.gwtplatform.mvp.client.Presenter;
import com.gwtplatform.mvp.client.View;
import com.gwtplatform.mvp.client.annotations.NameToken;
import com.gwtplatform.mvp.client.annotations.NoGatekeeper;
import com.gwtplatform.mvp.client.annotations.ProxyStandard;
import com.gwtplatform.mvp.client.proxy.ProxyPlace;
import gwt.material.design.client.ui.MaterialLoader;
/**
*
* @author Giancarlo Panichi
*
*/
public class TestBatchConfPresenter
extends Presenter<TestBatchConfPresenter.PresenterView, TestBatchConfPresenter.PresenterProxy>
implements TestBatchConfUiHandlers {
interface PresenterView extends View, HasUiHandlers<TestBatchConfUiHandlers> {
void setResult(String result, boolean success);
void setupTable();
void setResultTable(ArrayList<BatchTestRow> batchTestRows);
void setupOptions();
}
@ProxyStandard
@NameToken(NameTokens.BATCH)
@NoGatekeeper
interface PresenterProxy extends ProxyPlace<TestBatchConfPresenter> {
}
private DataMinerTesterServiceAsync service;
@Inject
TestBatchConfPresenter(EventBus eventBus, PresenterView view, PresenterProxy proxy,
DataMinerTesterServiceAsync service) {
super(eventBus, view, proxy, ApplicationPresenter.SLOT_MAIN);
this.service = service;
getView().setUiHandlers(this);
}
@Override
protected void onBind() {
super.onBind();
getView().setupOptions();
getView().setupTable();
}
@Override
public void executeBatchTest(DMBatchConfig dmBatchConfig) {
if (dmBatchConfig.getTestType() != null && !dmBatchConfig.getTestType().isEmpty()) {
testBatch(dmBatchConfig);
}
}
private void testBatch(DMBatchConfig dmBatchConfig) {
MaterialLoader.loading(true);
service.startBatchTest(getToken(), dmBatchConfig, new AsyncCallback<String>() {
@Override
public void onFailure(Throwable caught) {
GWT.log("Error starting test: " + caught.getLocalizedMessage(), caught);
String result = SafeHtmlUtils.htmlEscape(caught.getLocalizedMessage());
StackTraceElement[] trace = caught.getStackTrace();
for (int i = 0; i < trace.length; i++) {
result += SafeHtmlUtils.htmlEscape(trace[i].toString()) + "\n";
}
MaterialLoader.loading(false);
getView().setResult(result, false);
}
@Override
public void onSuccess(String computationId) {
monitorBatchTest(dmBatchConfig, computationId);
}
});
}
private void monitorBatchTest(DMBatchConfig dmBatchConfig, String computationId) {
final MonitorRequest monitorRequest = new MonitorRequest();
MonitorRequestEventHandler handler = new MonitorRequestEventHandler() {
@Override
public void onMonitor(MonitorRequestEvent event) {
service.monitorBatchTest(getToken(), computationId, new AsyncCallback<TaskStatus>() {
@Override
public void onFailure(Throwable caught) {
monitorRequest.stop();
GWT.log("Error in test: " + caught.getLocalizedMessage(), caught);
String result = SafeHtmlUtils.htmlEscape(caught.getLocalizedMessage());
StackTraceElement[] trace = caught.getStackTrace();
for (int i = 0; i < trace.length; i++) {
result += SafeHtmlUtils.htmlEscape(trace[i].toString()) + "\n";
}
MaterialLoader.loading(false);
getView().setResult(result, false);
}
@Override
public void onSuccess(TaskStatus taskStatus) {
if (taskStatus != null) {
switch (taskStatus) {
case COMPLETED:
retrieveBatchTestOutput(dmBatchConfig, computationId);
break;
case ERROR:
monitorRequest.stop();
GWT.log("Error test failed");
MaterialLoader.loading(false);
getView().setResult("Error test failed", false);
break;
case RUNNING:
case STARTED:
default:
monitorRequest.repeat();
break;
}
} else {
monitorRequest.repeat();
}
}
});
}
};
monitorRequest.addHandler(handler);
monitorRequest.start();
}
private void retrieveBatchTestOutput(DMBatchConfig dmBatchConfig, String computationId) {
service.retrieveOutputForBatchTest(getToken(), computationId, new AsyncCallback<BatchTestResult>() {
@Override
public void onFailure(Throwable caught) {
GWT.log("Error retrieving test output: " + caught.getLocalizedMessage(), caught);
String result = SafeHtmlUtils.htmlEscape(caught.getLocalizedMessage());
StackTraceElement[] trace = caught.getStackTrace();
for (int i = 0; i < trace.length; i++) {
result += SafeHtmlUtils.htmlEscape(trace[i].toString()) + "\n";
}
MaterialLoader.loading(false);
getView().setResult(result, false);
}
@Override
public void onSuccess(BatchTestResult batchTestResult) {
MaterialLoader.loading(false);
ArrayList<BatchTestRow> batchTestRows = new ArrayList<>();
LinkedHashMap<String, SingleTestResult> testResultMap = batchTestResult.getTestResultMap();
for (String url : testResultMap.keySet()) {
SingleTestResult singleTestResult = testResultMap.get(url);
Status status = singleTestResult.getComputationStatus().getStatus();
BatchTestRow batchTestRow;
if (status.compareTo(Status.COMPLETE) == 0) {
batchTestRow = new BatchTestRow(url, status, singleTestResult.getResponse());
} else {
Exception e = singleTestResult.getComputationStatus().getError();
batchTestRow = new BatchTestRow(url, status, e.getLocalizedMessage());
}
batchTestRows.add(batchTestRow);
}
getView().setResultTable(batchTestRows);
}
});
}
private String getToken() {
String token = Window.Location.getParameter(Constants.TOKEN);
GWT.log("Token: " + token);
return token;
}
}

@ -0,0 +1,16 @@
package org.gcube.portlets.user.dataminermanagertester.client.application.testbatchconfig;
import org.gcube.portlets.user.dataminermanagertester.shared.config.DMBatchConfig;
import com.gwtplatform.mvp.client.UiHandlers;
/**
*
* @author Giancarlo Panichi
*
*/
interface TestBatchConfUiHandlers extends UiHandlers {
void executeBatchTest(DMBatchConfig dmBatchConfig);
}

@ -0,0 +1,280 @@
package org.gcube.portlets.user.dataminermanagertester.client.application.testbatchconfig;
import java.util.ArrayList;
import java.util.Arrays;
import javax.inject.Inject;
import org.gcube.data.analysis.dataminermanagercl.shared.process.ComputationStatus.Status;
import org.gcube.portlets.user.dataminermanagertester.client.application.custom.SelectableTextCell;
import org.gcube.portlets.user.dataminermanagertester.shared.config.DMBatchConfig;
import org.gcube.portlets.user.dataminermanagertester.shared.config.ProtocolType;
import org.gcube.portlets.user.dataminermanagertester.shared.config.TestType;
import org.gcube.portlets.user.dataminermanagertester.shared.result.BatchTestRow;
import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.user.client.ui.HTMLPanel;
import com.google.gwt.user.client.ui.Widget;
import com.gwtplatform.mvp.client.ViewWithUiHandlers;
import gwt.material.design.client.base.constants.StyleName;
import gwt.material.design.client.base.density.DisplayDensity;
import gwt.material.design.client.constants.Color;
import gwt.material.design.client.constants.IconType;
import gwt.material.design.client.constants.TextAlign;
import gwt.material.design.client.data.SelectionType;
import gwt.material.design.client.ui.MaterialButton;
import gwt.material.design.client.ui.MaterialIcon;
import gwt.material.design.client.ui.MaterialListBox;
import gwt.material.design.client.ui.MaterialPanel;
import gwt.material.design.client.ui.MaterialTextArea;
import gwt.material.design.client.ui.MaterialTextBox;
import gwt.material.design.client.ui.animate.MaterialAnimation;
import gwt.material.design.client.ui.animate.Transition;
import gwt.material.design.client.ui.table.MaterialDataTable;
import gwt.material.design.client.ui.table.cell.TextColumn;
import gwt.material.design.client.ui.table.cell.WidgetColumn;
/**
*
* @author Giancarlo Panichi
*
*/
class TestBatchConfView extends ViewWithUiHandlers<TestBatchConfUiHandlers>
implements TestBatchConfPresenter.PresenterView {
interface Binder extends UiBinder<Widget, TestBatchConfView> {
}
@UiField
MaterialTextArea dms;
@UiField
MaterialTextBox token;
@UiField
MaterialListBox protocolType;
@UiField
MaterialListBox testType;
@UiField
MaterialTextArea result;
@UiField
MaterialDataTable<BatchTestRow> resultsTable;
@UiField
MaterialButton resultIcon;
@UiField
MaterialButton run;
@Inject
TestBatchConfView(Binder uiBinder) {
initWidget(uiBinder.createAndBindUi(this));
testType.clear();
for (TestType tType : TestType.values()) {
testType.add(tType.getLabel());
}
protocolType.clear();
for (ProtocolType tType : ProtocolType.values()) {
protocolType.add(tType.getLabel());
}
dms.setAllowBlank(false);
token.setAllowBlank(false);
}
@UiHandler("run")
void onClick(ClickEvent e) {
if (!dms.validate() || !token.validate()) {
return;
}
String dmsValue = dms.getValue();
String tokenValue = token.getValue();
String protocolValue= protocolType.getValue();
String testTypeValue = testType.getValue();
resultIcon.setVisible(false);
result.setVisible(false);
resultsTable.setVisible(false);
ArrayList<String> dmList;
if (dmsValue.contains(",")) {
String[] urlsArray = dmsValue.split(",");
dmList = new ArrayList<>(Arrays.asList(urlsArray));
dmList.removeAll(Arrays.asList("", null));
} else {
dmList = new ArrayList<>();
dmList.add(dmsValue);
}
DMBatchConfig dmBatchConfig = new DMBatchConfig(dmList, tokenValue, protocolValue, testTypeValue);
getUiHandlers().executeBatchTest(dmBatchConfig);
}
@Override
public void setResult(String resultValue, boolean success) {
resultIcon.setVisible(true);
result.setVisible(true);
if (success) {
resultIcon.setIconType(IconType.CHECK_CIRCLE);
resultIcon.setBackgroundColor(Color.GREEN);
resultIcon.setIconFontSize(4.0, Unit.EM);
} else {
resultIcon.setIconType(IconType.ERROR);
resultIcon.setBackgroundColor(Color.RED);
resultIcon.setIconFontSize(4.0, Unit.EM);
}
MaterialAnimation animation = new MaterialAnimation();
animation.setDelay(0);
animation.setDuration(1000);
animation.transition(Transition.FLIPINX);
animation.animate(resultIcon);
result.setLength(resultValue.length());
result.setValue(resultValue);
// result.reinitialize();
}
@Override
public void setupTable() {
TextColumn<BatchTestRow> dataminerColumn = new TextColumn<BatchTestRow>(new SelectableTextCell()) {
@Override
public String getValue(BatchTestRow batchTestRow) {
return batchTestRow.getUrl();
}
@Override
public boolean sortable() {
return true;
}
};
dataminerColumn.textAlign(TextAlign.LEFT);
dataminerColumn.styleProperty(StyleName.WHITE_SPACE, "normal");
WidgetColumn<BatchTestRow, MaterialPanel> statusColumn = new WidgetColumn<BatchTestRow, MaterialPanel>() {
@Override
public MaterialPanel getValue(BatchTestRow batchTestRow) {
MaterialPanel panel = new MaterialPanel();
panel.setStyle("unselectable='false'");
MaterialIcon icon = null;
Status status = batchTestRow.getStatus();
if (status == null) {
icon = new MaterialIcon(IconType.ERROR, Color.RED, Color.WHITE);
} else {
switch (status) {
case COMPLETE:
icon = new MaterialIcon(IconType.CHECK_CIRCLE, Color.GREEN, Color.WHITE);
break;
case FAILED:
icon = new MaterialIcon(IconType.ERROR, Color.RED, Color.WHITE);
break;
case ACCEPTED:
case CANCELLED:
case RUNNING:
default:
icon = new MaterialIcon(IconType.REPORT_PROBLEM, Color.YELLOW, Color.WHITE);
break;
}
}
panel.add(icon);
return panel;
}
@Override
public boolean sortable() {
return true;
}
};
statusColumn.textAlign(TextAlign.CENTER);
WidgetColumn<BatchTestRow, MaterialPanel> responseColumn = new WidgetColumn<BatchTestRow, MaterialPanel>() {
@Override
public MaterialPanel getValue(BatchTestRow batchTestRow) {
MaterialPanel panel = new MaterialPanel();
SafeHtmlBuilder sb = new SafeHtmlBuilder();
sb.appendHtmlConstant("<div style='white-space:normal' unselectable='false'>");
sb.appendEscaped(batchTestRow.getResponse());
sb.appendHtmlConstant("</div>");
HTMLPanel hpanel = new HTMLPanel(sb.toSafeHtml());
panel.add(hpanel);
return panel;
}
@Override
public boolean sortable() {
return true;
}
};
responseColumn.textAlign(TextAlign.LEFT);
resultsTable.addColumn("DataMiner", dataminerColumn);
resultsTable.addColumn("Status", statusColumn);
resultsTable.addColumn("Response", responseColumn);
}
@Override
public void setResultTable(ArrayList<BatchTestRow> batchTestRows) {
resultIcon.setVisible(true);
resultsTable.setVisible(true);
boolean success = true;
for (BatchTestRow batchTestRow : batchTestRows) {
if (batchTestRow.getStatus()==null||batchTestRow.getStatus().compareTo(Status.COMPLETE) != 0) {
success = false;
break;
}
}
if (success) {
resultIcon.setIconType(IconType.CHECK_CIRCLE);
resultIcon.setBackgroundColor(Color.GREEN);
resultIcon.setIconFontSize(4.0, Unit.EM);
} else {
resultIcon.setIconType(IconType.ERROR);
resultIcon.setBackgroundColor(Color.RED);
resultIcon.setIconFontSize(4.0, Unit.EM);
}
MaterialAnimation animation = new MaterialAnimation();
animation.setDelay(0);
animation.setDuration(1000);
animation.transition(Transition.FLIPINX);
animation.animate(resultIcon);
resultsTable.clearRows(true);
resultsTable.getTableTitle().setText("Results");
resultsTable.setRowData(0, batchTestRows);
resultsTable.getView().refresh();
reload();
}
@Override
public void setupOptions() {
// Selection Type
resultsTable.setSelectionType(SelectionType.NONE);
// Density
resultsTable.setDensity(DisplayDensity.DEFAULT);
}
public void reload() {
resultsTable.getView().setRedraw(true);
resultsTable.getView().refresh();
}
}

@ -0,0 +1,40 @@
<!-- @Author Giancarlo Panichi -->
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
xmlns:g="urn:import:com.google.gwt.user.client.ui" xmlns:m="urn:import:gwt.material.design.client.ui"
xmlns:ma="urn:import:gwt.material.design.addins.client" xmlns:m.table="urn:import:gwt.material.design.client.ui.table"
xmlns:m.html="urn:import:gwt.material.design.client.ui.html">
<ui:with field="res"
type="org.gcube.portlets.user.dataminermanagertester.client.resources.AppResources" />
<m:MaterialPanel textAlign="CENTER" paddingTop="60"
paddingLeft="20" paddingRight="20">
<m:MaterialTitle title="Batch" description="Set DataMiners info" />
<m:MaterialTextArea ui:field="dms" title="DataMiners"
placeholder="dataminer1-d-d4s.d4science.org,dataminer2-d-d4s.d4science.org..."
label="DataMiners" active="true" grid="s12" />
<m:MaterialTextBox ui:field="token" title="Token"
placeholder="" label="Token" active="true" grid="s12" />
<m:MaterialListBox ui:field="protocolType" placeholder="Protocol type">
<m.html:Option text="Protocol" />
</m:MaterialListBox>
<m:MaterialListBox ui:field="testType" placeholder="Test type">
<m.html:Option text="Test" />
</m:MaterialListBox>
<m:MaterialButton ui:field="run" text="Run" waves="LIGHT"
textColor="WHITE" iconType="STARS" iconPosition="LEFT" />
<m:MaterialTextArea ui:field="result" visible="false"
label="Test Result" resizeRule="AUTO" />
<m.table:MaterialDataTable ui:field="resultsTable"
visible="false" shadow="1" height="400px"
marginBottom="30" marginTop="30" />
<m:MaterialButton ui:field="resultIcon" visible="false"
width="100px" height="100px" type="FLOATING" size="LARGE" iconType="CHECK_CIRCLE" />
</m:MaterialPanel>
</ui:UiBinder>

@ -0,0 +1,16 @@
package org.gcube.portlets.user.dataminermanagertester.client.application.testconfig;
import com.gwtplatform.mvp.client.gin.AbstractPresenterModule;
/**
*
* @author Giancarlo Panichi
*
*/
public class TestConfModule extends AbstractPresenterModule {
@Override
protected void configure() {
bindPresenter(TestConfPresenter.class, TestConfPresenter.PresenterView.class,
TestConfView.class, TestConfPresenter.PresenterProxy.class);
}
}

@ -0,0 +1,230 @@
package org.gcube.portlets.user.dataminermanagertester.client.application.testconfig;
import org.gcube.data.analysis.dataminermanagercl.shared.data.computations.ComputationId;
import org.gcube.data.analysis.dataminermanagercl.shared.process.ComputationStatus.Status;
import org.gcube.portlets.user.dataminermanagertester.client.application.ApplicationPresenter;
import org.gcube.portlets.user.dataminermanagertester.client.application.monitor.MonitorRequest;
import org.gcube.portlets.user.dataminermanagertester.client.application.monitor.MonitorRequestEvent;
import org.gcube.portlets.user.dataminermanagertester.client.application.monitor.MonitorRequestEvent.MonitorRequestEventHandler;
import org.gcube.portlets.user.dataminermanagertester.client.place.NameTokens;
import org.gcube.portlets.user.dataminermanagertester.client.rpc.DataMinerTesterServiceAsync;
import org.gcube.portlets.user.dataminermanagertester.shared.Constants;
import org.gcube.portlets.user.dataminermanagertester.shared.config.DMConfig;
import org.gcube.portlets.user.dataminermanagertester.shared.config.TestType;
import com.google.gwt.core.shared.GWT;
import com.google.gwt.safehtml.shared.SafeHtmlUtils;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.inject.Inject;
import com.google.web.bindery.event.shared.EventBus;
import com.gwtplatform.mvp.client.HasUiHandlers;
import com.gwtplatform.mvp.client.Presenter;
import com.gwtplatform.mvp.client.View;
import com.gwtplatform.mvp.client.annotations.NameToken;
import com.gwtplatform.mvp.client.annotations.NoGatekeeper;
import com.gwtplatform.mvp.client.annotations.ProxyStandard;
import com.gwtplatform.mvp.client.proxy.ProxyPlace;
import gwt.material.design.client.ui.MaterialLoader;
/**
*
* @author Giancarlo Panichi
*
*/
public class TestConfPresenter extends Presenter<TestConfPresenter.PresenterView, TestConfPresenter.PresenterProxy>
implements TestConfUiHandlers {
interface PresenterView extends View, HasUiHandlers<TestConfUiHandlers> {
void setResult(String result, boolean success);
}
@ProxyStandard
@NameToken(NameTokens.TEST)
@NoGatekeeper
interface PresenterProxy extends ProxyPlace<TestConfPresenter> {
}
private DataMinerTesterServiceAsync service;
@Inject
TestConfPresenter(EventBus eventBus, PresenterView view, PresenterProxy proxy,
DataMinerTesterServiceAsync service) {
super(eventBus, view, proxy, ApplicationPresenter.SLOT_MAIN);
this.service = service;
getView().setUiHandlers(this);
}
@Override
public void executeTest(DMConfig dmConfig) {
if (dmConfig.getTestType() != null && !dmConfig.getTestType().isEmpty()) {
TestType testType = TestType.getTypeFromId(dmConfig.getTestType());
switch (testType) {
case Capabilities:
callGetCapabilities(dmConfig);
break;
case FeedForwardAnn:
case BionymLocal:
case CMSY2:
case CSquareColumnCreator:
case DBScan:
case ListDBName:
case RasterDataPublisher:
case WebAppPublisher:
case XYExtractor:
case OpenMeshRecostructorGPU:
case GenericCharts:
case PolygonsToMap:
testSimple(dmConfig);
break;
default:
break;
}
}
}
private void callGetCapabilities(DMConfig dmConfig) {
MaterialLoader.loading(true);
service.getCapabilities(getToken(), dmConfig, new AsyncCallback<String>() {
@Override
public void onFailure(Throwable caught) {
GWT.log("Error get Capabilities: ", caught);
String result = SafeHtmlUtils.htmlEscape(caught.getLocalizedMessage());
MaterialLoader.loading(false);
getView().setResult(result, false);
}
@Override
public void onSuccess(String result) {
MaterialLoader.loading(false);
getView().setResult(result, true);
}
});
}
private void testSimple(DMConfig dmConfig) {
MaterialLoader.loading(true);
service.startSimpleTest(getToken(), dmConfig, new AsyncCallback<ComputationId>() {
@Override
public void onFailure(Throwable caught) {
GWT.log("Error starting test: " + caught.getLocalizedMessage(), caught);
String result = SafeHtmlUtils.htmlEscape(caught.getLocalizedMessage());
StackTraceElement[] trace = caught.getStackTrace();
for (int i = 0; i < trace.length; i++) {
result += SafeHtmlUtils.htmlEscape(trace[i].toString()) + "\n";
}
MaterialLoader.loading(false);
getView().setResult(result, false);
}
@Override
public void onSuccess(ComputationId computationId) {
monitorSimpleTest(dmConfig, computationId);
}
});
}
private void monitorSimpleTest(DMConfig dmConfig, ComputationId computationId) {
final MonitorRequest monitorRequest = new MonitorRequest();
MonitorRequestEventHandler handler = new MonitorRequestEventHandler() {
@Override
public void onMonitor(MonitorRequestEvent event) {
service.monitorSimpleTest(getToken(), dmConfig, computationId, new AsyncCallback<Status>() {
@Override
public void onFailure(Throwable caught) {
monitorRequest.stop();
GWT.log("Error in test: " + caught.getLocalizedMessage(), caught);
String result = SafeHtmlUtils.htmlEscape(caught.getLocalizedMessage());
StackTraceElement[] trace = caught.getStackTrace();
for (int i = 0; i < trace.length; i++) {
result += SafeHtmlUtils.htmlEscape(trace[i].toString()) + "\n";
}
MaterialLoader.loading(false);
getView().setResult(result, false);
}
@Override
public void onSuccess(Status status) {
if (status != null) {
switch (status) {
case COMPLETE:
retrieveSimpleTestOutput(dmConfig, computationId);
break;
case CANCELLED:
case FAILED:
monitorRequest.stop();
GWT.log("Error test failed");
MaterialLoader.loading(false);
getView().setResult("Error test failed", false);
break;
case RUNNING:
case ACCEPTED:
default:
monitorRequest.repeat();
break;
}
} else {
monitorRequest.repeat();
}
}
});
}
};
monitorRequest.addHandler(handler);
monitorRequest.start();
}
private void retrieveSimpleTestOutput(DMConfig dmConfig, ComputationId computationId) {
service.retrieveOutputForSimpleTest(getToken(), dmConfig, computationId, new AsyncCallback<String>() {
@Override
public void onFailure(Throwable caught) {
GWT.log("Error retrieving test output: " + caught.getLocalizedMessage(), caught);
String result = SafeHtmlUtils.htmlEscape(caught.getLocalizedMessage());
StackTraceElement[] trace = caught.getStackTrace();
for (int i = 0; i < trace.length; i++) {
result += SafeHtmlUtils.htmlEscape(trace[i].toString()) + "\n";
}
MaterialLoader.loading(false);
getView().setResult(result, false);
}
@Override
public void onSuccess(String result) {
MaterialLoader.loading(false);
getView().setResult(result, true);
}
});
}
private String getToken() {
String token = Window.Location.getParameter(Constants.TOKEN);
GWT.log("Token: " + token);
return token;
}
}

@ -0,0 +1,16 @@
package org.gcube.portlets.user.dataminermanagertester.client.application.testconfig;
import org.gcube.portlets.user.dataminermanagertester.shared.config.DMConfig;
import com.gwtplatform.mvp.client.UiHandlers;
/**
*
* @author Giancarlo Panichi
*
*/
interface TestConfUiHandlers extends UiHandlers {
void executeTest(DMConfig dmConfig);
}

@ -0,0 +1,114 @@
package org.gcube.portlets.user.dataminermanagertester.client.application.testconfig;
import javax.inject.Inject;
import org.gcube.portlets.user.dataminermanagertester.shared.config.DMConfig;
import org.gcube.portlets.user.dataminermanagertester.shared.config.ProtocolType;
import org.gcube.portlets.user.dataminermanagertester.shared.config.TestType;
import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.user.client.ui.Widget;
import com.gwtplatform.mvp.client.ViewWithUiHandlers;
import gwt.material.design.client.constants.Color;
import gwt.material.design.client.constants.IconType;
import gwt.material.design.client.ui.MaterialButton;
import gwt.material.design.client.ui.MaterialListBox;
import gwt.material.design.client.ui.MaterialTextArea;
import gwt.material.design.client.ui.MaterialTextBox;
import gwt.material.design.client.ui.animate.MaterialAnimation;
import gwt.material.design.client.ui.animate.Transition;
/**
*
* @author Giancarlo Panichi
*
*/
class TestConfView extends ViewWithUiHandlers<TestConfUiHandlers> implements TestConfPresenter.PresenterView {
interface Binder extends UiBinder<Widget, TestConfView> {
}
@UiField
MaterialTextBox dm;
@UiField
MaterialTextBox token;
@UiField
MaterialListBox protocolType;
@UiField
MaterialListBox testType;
@UiField
MaterialTextArea result;
@UiField
MaterialButton resultIcon;
@UiField
MaterialButton run;
@Inject
TestConfView(Binder uiBinder) {
initWidget(uiBinder.createAndBindUi(this));
testType.clear();
for (TestType tType : TestType.values()) {
testType.add(tType.getLabel());
}
protocolType.clear();
for (ProtocolType tType : ProtocolType.values()) {
protocolType.add(tType.getLabel());
}
dm.setAllowBlank(false);
token.setAllowBlank(false);
}
@UiHandler("run")
void onClick(ClickEvent e) {
if (!dm.validate() || !token.validate()) {
return;
}
String dmValue = dm.getValue();
String tokenValue = token.getValue();
String protocolValue = protocolType.getValue();
String testTypeValue = testType.getValue();
resultIcon.setVisible(false);
result.setVisible(false);
DMConfig dmConfig = new DMConfig(dmValue, tokenValue, protocolValue,testTypeValue);
getUiHandlers().executeTest(dmConfig);
}
@Override
public void setResult(String resultValue, boolean success) {
resultIcon.setVisible(true);
result.setVisible(true);
if (success) {
resultIcon.setIconType(IconType.CHECK_CIRCLE);
resultIcon.setBackgroundColor(Color.GREEN);
resultIcon.setIconFontSize(4.0, Unit.EM);
} else {
resultIcon.setIconType(IconType.ERROR);
resultIcon.setBackgroundColor(Color.RED);
resultIcon.setIconFontSize(4.0, Unit.EM);
}
MaterialAnimation animation = new MaterialAnimation();
animation.setDelay(0);
animation.setDuration(1000);
animation.transition(Transition.FLIPINX);
animation.animate(resultIcon);
result.setLength(resultValue.length());
result.setValue(resultValue);
// result.reinitialize();
}
}

@ -0,0 +1,36 @@
<!-- @Author Giancarlo Panichi -->
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
xmlns:g="urn:import:com.google.gwt.user.client.ui" xmlns:m="urn:import:gwt.material.design.client.ui"
xmlns:ma="urn:import:gwt.material.design.addins.client" xmlns:m.table="urn:import:gwt.material.design.client.ui.table"
xmlns:m.html="urn:import:gwt.material.design.client.ui.html">
<ui:with field="res"
type="org.gcube.portlets.user.dataminermanagertester.client.resources.AppResources" />
<m:MaterialPanel textAlign="CENTER" paddingTop="60"
paddingLeft="20" paddingRight="20">
<m:MaterialTitle title="Test" description="Set DataMiner info" />
<m:MaterialTextBox ui:field="dm" title="DataMiner"
placeholder="dataminer1-d-d4s.d4science.org" label="DataMiner"
active="true" grid="s12" />
<m:MaterialTextBox ui:field="token" title="Token"
placeholder="" label="Token" active="true" grid="s12" />
<m:MaterialListBox ui:field="protocolType" placeholder="Protocol type">
<m.html:Option text="Protocol" />
</m:MaterialListBox>
<m:MaterialListBox ui:field="testType" placeholder="Test type">
<m.html:Option text="Test" />
</m:MaterialListBox>
<m:MaterialButton ui:field="run" text="Run" waves="LIGHT"
textColor="WHITE" iconType="STARS" iconPosition="LEFT" />
<m:MaterialTextArea ui:field="result" visible="false"
label="Test Result" resizeRule="AUTO" />
<m:MaterialButton ui:field="resultIcon" visible="false"
width="100px" height="100px" type="FLOATING" size="LARGE" iconType="CHECK_CIRCLE" />
</m:MaterialPanel>
</ui:UiBinder>

@ -0,0 +1,37 @@
package org.gcube.portlets.user.dataminermanagertester.client.event;
import com.google.gwt.event.shared.EventHandler;
import com.google.gwt.event.shared.GwtEvent;
import com.google.gwt.event.shared.HasHandlers;
/**
*
* @author Giancarlo Panichi
*
*/
public class ContentPushEvent extends GwtEvent<ContentPushEvent.ContentPushHandler> {
public interface ContentPushHandler extends EventHandler {
void onContentPush(ContentPushEvent event);
}
public static final Type<ContentPushHandler> TYPE = new Type<>();
public ContentPushEvent() {}
public static void fire(HasHandlers source) {
source.fireEvent(new ContentPushEvent());
}
@Override
public Type<ContentPushHandler> getAssociatedType() {
return TYPE;
}
@Override
protected void dispatch(ContentPushHandler handler) {
handler.onContentPush(this);
}
}

@ -0,0 +1,42 @@
package org.gcube.portlets.user.dataminermanagertester.client.gin;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.ui.IsWidget;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.inject.Inject;
import com.google.web.bindery.event.shared.EventBus;
import com.gwtplatform.mvp.client.RootPresenter;
/**
*
* @author Giancarlo Panichi
*
*
*/
public class CustomRootPresenter extends RootPresenter {
private static final String SM_DIV = "contentDiv";
public static final class CustomRootView extends RootView {
@Override
public void setInSlot(Object slot, IsWidget widget) {
RootPanel root = RootPanel.get(SM_DIV);
if (root != null) {
GWT.log("Add Panel in Div " + SM_DIV);
root.add(widget);
} else {
GWT.log("Add Panel in Root");
RootPanel.get().add(widget);
}
}
}
@Inject
CustomRootPresenter(EventBus eventBus, CustomRootView myRootView) {
super( eventBus, myRootView );
}
}

@ -0,0 +1,41 @@
package org.gcube.portlets.user.dataminermanagertester.client.gin;
import com.gwtplatform.mvp.client.gin.AbstractPresenterModule;
import com.gwtplatform.mvp.client.gin.DefaultModule;
import org.gcube.portlets.user.dataminermanagertester.client.application.ApplicationModule;
import org.gcube.portlets.user.dataminermanagertester.client.place.NameTokens;
import org.gcube.portlets.user.dataminermanagertester.client.resources.ResourceLoader;
import org.gcube.portlets.user.dataminermanagertester.client.rpc.DataMinerTesterServiceAsync;
import com.google.inject.Singleton;
import com.gwtplatform.mvp.client.RootPresenter;
import com.gwtplatform.mvp.client.annotations.DefaultPlace;
import com.gwtplatform.mvp.client.annotations.ErrorPlace;
import com.gwtplatform.mvp.client.annotations.UnauthorizedPlace;
/**
*
* @author Giancarlo Panichi
*
*
*/
public class DataMinerManagerTesterClientModule extends AbstractPresenterModule {
@Override
protected void configure() {
bind(ResourceLoader.class).asEagerSingleton();
bind(DataMinerTesterServiceAsync.class).in(Singleton.class);
bind(RootPresenter.class).to(CustomRootPresenter.class).asEagerSingleton();
install(new DefaultModule());
install(new ApplicationModule());
// DefaultPlaceManager Places
bindConstant().annotatedWith(DefaultPlace.class).to(NameTokens.TEST);
bindConstant().annotatedWith(ErrorPlace.class).to(NameTokens.TEST);
bindConstant().annotatedWith(UnauthorizedPlace.class).to(NameTokens.TEST);
}
}

@ -0,0 +1,36 @@
package org.gcube.portlets.user.dataminermanagertester.client.place;
/**
*
* @author Giancarlo Panichi
*
*/
public class NameTokens {
public static final String HOME = "home";
public static final String HELP = "help";
public static final String TEST = "test";
public static final String BATCH = "batch";
public static final String DIFF = "diff";
public static String getHome() {
return HOME;
}
public static String getHelp() {
return HELP;
}
public static String getTest() {
return TEST;
}
public static String getDiff() {
return DIFF;
}
public static String getBatch() {
return BATCH;
}
}

@ -0,0 +1,15 @@
package org.gcube.portlets.user.dataminermanagertester.client.place;
/**
*
* @author Giancarlo Panichi
*
*/
public class TokenParameters {
public static final String ID = "id";
public static String getId() {
return ID;
}
}

@ -0,0 +1,35 @@
package org.gcube.portlets.user.dataminermanagertester.client.resources;
import com.google.gwt.resources.client.ClientBundle;
import com.google.gwt.resources.client.CssResource;
/**
*
* @author Giancarlo Panichi
*
*
*/
public interface AppResources extends ClientBundle {
interface Normalize extends CssResource {
}
interface Style extends CssResource {
String sideNavPBg();
}
interface PageTable extends CssResource {
}
@Source("css/normalize.gss")
Normalize normalize();
@Source("css/style.gss")
Style style();
@Source("css/pageTable.gss")
PageTable pageTable();
}

@ -0,0 +1,20 @@
package org.gcube.portlets.user.dataminermanagertester.client.resources;
import javax.inject.Inject;
/**
*
* @author Giancarlo Panichi
*
*
*/
public class ResourceLoader {
@Inject
ResourceLoader(AppResources appResources) {
appResources.normalize().ensureInjected();
appResources.style().ensureInjected();
appResources.pageTable().ensureInjected();
}
}

@ -0,0 +1,409 @@
/*! normalize.css v3.0.1 | MIT License | git.io/normalize */
/**
* 1. Set default font family to sans-serif.
* 2. Prevent iOS text size adjust after orientation change, without disabling
* user zoom.
*/
html {
font-family: sans-serif; /* 1 */
-ms-text-size-adjust: 100%; /* 2 */
-webkit-text-size-adjust: 100%; /* 2 */
}
/**
* Remove default margin.
*/
body {
margin: 0;
}
/* HTML5 display definitions
========================================================================== */
/**
* Correct `block` display not defined for any HTML5 element in IE 8/9.
* Correct `block` display not defined for `details` or `summary` in IE 10/11 and Firefox.
* Correct `block` display not defined for `main` in IE 11.
*/
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
nav,
section,
summary {
display: block;
}
/**
* 1. Correct `inline-block` display not defined in IE 8/9.
* 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
*/
audio,
canvas,
progress,
video {
display: inline-block; /* 1 */
vertical-align: baseline; /* 2 */
}
/**
* Address `[hidden]` styling not present in IE 8/9/10.
* Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22.
*/
[hidden],
template {
display: none;
}
/* Links
========================================================================== */
/**
* Remove the gray background color from active links in IE 10.
*/
a {
background: transparent;
}
/**
* Improve readability when focused and also mouse hovered in all browsers.
*/
a:active,
a:hover,
button:active,
button:hover {
outline: 0;
}
/* Text-level semantics
========================================================================== */
/**
* Address styling not present in IE 8/9/10/11, Safari, and Chrome.
*/
abbr[title] {
border-bottom: 1px dotted;
}
/**
* Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
*/
b,
strong {
font-weight: bold;
}
/**
* Address styling not present in Safari and Chrome.
*/
dfn {
font-style: italic;
}
/**
* Address variable `h1` font-size and margin within `section` and `article`
* contexts in Firefox 4+, Safari, and Chrome.
*/
h1 {
font-size: 2em;
margin: 0.67em 0;
}
/**
* Address styling not present in IE 8/9.
*/
mark {
background: #ff0;
color: #000;
}
/**
* Address inconsistent and variable font size in all browsers.
*/
small {
font-size: 80%;
}
/**
* Prevent `sub` and `sup` affecting `line-height` in all browsers.
*/
sub,
sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}
sup {
top: -0.5em;
}
sub {
bottom: -0.25em;
}
/* Embedded content
========================================================================== */
/**
* Remove border when inside `a` element in IE 8/9/10.
*/
img {
border: 0;
}
/* Grouping content
========================================================================== */
/**
* Address margin not present in IE 8/9 and Safari.
*/
figure {
margin: 1em 40px;
}
/**
* Address differences between Firefox and other browsers.
*/
hr {
-moz-box-sizing: content-box;
box-sizing: content-box;
height: 0;
}
/**
* Contain overflow in all browsers.
*/
pre {
overflow: auto;
}
/**
* Address odd `em`-unit font size rendering in all browsers.
*/
code,
kbd,
pre,
samp {
font-family: monospace, monospace;
font-size: 1em;
}
/* Forms
========================================================================== */
/**
* Known limitation: by default, Chrome and Safari on OS X allow very limited
* styling of `select`, unless a `border` property is set.
*/
/**
* 1. Correct color not being inherited.
* Known issue: affects color of disabled elements.
* 2. Correct font properties not being inherited.
* 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
*/
button,
input,
optgroup,
select,
textarea {
color: inherit; /* 1 */
font: inherit; /* 2 */
margin: 0; /* 3 */
}
/**
* Address `overflow` set to `hidden` in IE 8/9/10/11.
*/
button {
overflow: visible;
}
/**
* Address inconsistent `text-transform` inheritance for `button` and `select`.
* All other form control elements do not inherit `text-transform` values.
* Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
* Correct `select` style inheritance in Firefox.
*/
button,
select {
text-transform: none;
}
/**
* 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
* and `video` controls.
* 2. Correct inability to style clickable `input` types in iOS.
* 3. Improve usability and consistency of cursor style between image-type
* `input` and others.
*/
button,
html input[type="button"], /* 1 */
input[type="reset"],
input[type="submit"] {
-webkit-appearance: button; /* 2 */
cursor: pointer; /* 3 */
}
/**
* Re-set default cursor for disabled elements.
*/
button[disabled],
html input[disabled] {
cursor: default;
}
/**
* Remove inner padding and border in Firefox 4+.
*/
button::-moz-focus-inner,
input::-moz-focus-inner {
border: 0;
padding: 0;
}
/**
* Address Firefox 4+ setting `line-height` on `input` using `!important` in
* the UA stylesheet.
*/
input {
line-height: normal;
}
/**
* It's recommended that you don't attempt to style these elements.
* Firefox's implementation doesn't respect box-sizing, padding, or width.
*
* 1. Address box sizing set to `content-box` in IE 8/9/10.
* 2. Remove excess padding in IE 8/9/10.
*/
input[type="checkbox"],
input[type="radio"] {
box-sizing: border-box; /* 1 */
padding: 0; /* 2 */
}
/**
* Fix the cursor style for Chrome's increment/decrement buttons. For certain
* `font-size` values of the `input`, it causes the cursor style of the
* decrement button to change from `default` to `text`.
*/
input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
height: auto;
}
/**
* 1. Address `appearance` set to `searchfield` in Safari and Chrome.
* 2. Address `box-sizing` set to `border-box` in Safari and Chrome
* (include `-moz` to future-proof).
*/
input[type="search"] {
-webkit-appearance: textfield; /* 1 */
-moz-box-sizing: content-box;
-webkit-box-sizing: content-box; /* 2 */
box-sizing: content-box;
}
/**
* Remove inner padding and search cancel button in Safari and Chrome on OS X.
* Safari (but not Chrome) clips the cancel button when the search input has
* padding (and `textfield` appearance).
*/
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
/**
* Define consistent border, margin, and padding.
*/
fieldset {
border: 1px solid #c0c0c0;
margin: 0 2px;
padding: 0.35em 0.625em 0.75em;
}
/**
* 1. Correct `color` not being inherited in IE 8/9/10/11.
* 2. Remove padding so people aren't caught out if they zero out fieldsets.
*/
legend {
border: 0; /* 1 */
padding: 0; /* 2 */
}
/**
* Remove default vertical scrollbar in IE 8/9/10/11.
*/
textarea {
overflow: auto;
}
/**
* Don't inherit the `font-weight` (applied by a rule above).
* NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
*/
optgroup {
font-weight: bold;
}
/* Tables
========================================================================== */
/**
* Remove most spacing between table cells.
*/
table {
border-collapse: collapse;
border-spacing: 0;
}
td,
th {
padding: 0;
}

@ -0,0 +1,28 @@
/************ Page Table ************/
@external data-row, tool-panel, top-panel;
/** Top Panel **/
#pTable .top-panel {
background-color: white;
color: black;
}
/** Tool Panel icons **/
#pTable .top-panel .tool-panel i {
color: #e91e63;
}
/** Hovering rows **/
#pTable table tbody tr.data-row:hover {
background: rgba(33, 150, 243, 0.27);
color: #3f3f3f;
}
/** Columns **/
#pTable table tbody td:nth-child(3) {
background: #2196f3 !important;
color: #fff;
border-bottom: 2px solid #1976d2;
}
/** Table Headers **/
#pTable table thead tr th {
color: #1976d2;
}

@ -0,0 +1,5 @@
.sideNavPBg {
/*
gwt-sprite: 'sideNavProfileBackground';
background-repeat: repeat; */
}

@ -0,0 +1,40 @@
package org.gcube.portlets.user.dataminermanagertester.client.rpc;
import org.gcube.data.analysis.dataminermanagercl.shared.data.computations.ComputationId;
import org.gcube.data.analysis.dataminermanagercl.shared.process.ComputationStatus.Status;
import org.gcube.portlets.user.dataminermanagertester.shared.config.DMBatchConfig;
import org.gcube.portlets.user.dataminermanagertester.shared.config.DMConfig;
import org.gcube.portlets.user.dataminermanagertester.shared.config.DMDiffConfig;
import org.gcube.portlets.user.dataminermanagertester.shared.exception.ServiceException;
import org.gcube.portlets.user.dataminermanagertester.shared.result.BatchTestResult;
import org.gcube.portlets.user.dataminermanagertester.shared.session.UserInfo;
import org.gcube.portlets.user.dataminermanagertester.shared.task.TaskStatus;
import com.google.gwt.user.client.rpc.RemoteService;
import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;
/**
* The client side stub for the RPC service.
*/
@RemoteServiceRelativePath("dmtester")
public interface DataMinerTesterService extends RemoteService {
public UserInfo hello(String token) throws ServiceException;
public String getCapabilities(String token,DMConfig dmConfig) throws ServiceException;
public String getOperatorsDiff(String token, DMDiffConfig operatorsDiffConfig) throws ServiceException;
public ComputationId startSimpleTest(String token, DMConfig dmConfig) throws ServiceException;
public String retrieveOutputForSimpleTest(String token, DMConfig dmConfig, ComputationId computationId) throws ServiceException;
public Status monitorSimpleTest(String token, DMConfig dmConfig, ComputationId computationId) throws ServiceException;
public String startBatchTest(String token, DMBatchConfig dmBatchConfig) throws ServiceException;
public TaskStatus monitorBatchTest(String token, String operationId) throws ServiceException;
public BatchTestResult retrieveOutputForBatchTest(String token, String operationId) throws ServiceException;
}

@ -0,0 +1,46 @@
package org.gcube.portlets.user.dataminermanagertester.client.rpc;
import org.gcube.data.analysis.dataminermanagercl.shared.data.computations.ComputationId;
import org.gcube.data.analysis.dataminermanagercl.shared.process.ComputationStatus.Status;
import org.gcube.portlets.user.dataminermanagertester.shared.config.DMBatchConfig;
import org.gcube.portlets.user.dataminermanagertester.shared.config.DMConfig;
import org.gcube.portlets.user.dataminermanagertester.shared.config.DMDiffConfig;
import org.gcube.portlets.user.dataminermanagertester.shared.result.BatchTestResult;
import org.gcube.portlets.user.dataminermanagertester.shared.session.UserInfo;
import org.gcube.portlets.user.dataminermanagertester.shared.task.TaskStatus;
import com.google.gwt.user.client.rpc.AsyncCallback;
/**
*
* @author Giancarlo Panichi
*
*
*/
public interface DataMinerTesterServiceAsync {
// public static DataMinerTesterServiceAsync INSTANCE =
// (DataMinerTesterServiceAsync) GWT
// .create(DataMinerTesterService.class);
void hello(String token, AsyncCallback<UserInfo> callback);
void getCapabilities(String token, DMConfig dmConfig, AsyncCallback<String> callback);
void getOperatorsDiff(String token, DMDiffConfig operatorsDiffConfig, AsyncCallback<String> callback);
void startSimpleTest(String token, DMConfig dmConfig, AsyncCallback<ComputationId> callback);
void retrieveOutputForSimpleTest(String token, DMConfig dmConfig, ComputationId computationId,
AsyncCallback<String> callback);
void monitorSimpleTest(String token, DMConfig dmConfig, ComputationId computationId,
AsyncCallback<Status> callback);
void startBatchTest(String token, DMBatchConfig dmBatchConfig, AsyncCallback<String> callback);
void monitorBatchTest(String token, String operationId, AsyncCallback<TaskStatus> callback);
void retrieveOutputForBatchTest(String token, String operationId, AsyncCallback<BatchTestResult> callback);
}

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<module rename-to='dataminermanagertester'>
<inherits name="com.google.gwt.user.User" />
<inherits name="com.gwtplatform.mvp.MvpWithEntryPoint" />
<!-- GWT Material -->
<inherits name="gwt.material.design.GwtMaterialWithJQueryDebug" />
<inherits name="gwt.material.design.themes.ThemeOrange" />
<inherits name="gwt.material.design.addins.GwtMaterialAddinsDebug" />
<inherits name="gwt.material.design.GwtMaterialTableDebug" />
<!-- <inherits name="gwt.material.design.GwtMaterialTable"/> -->
<inherits name='org.gcube.portal.clientcontext.GCubeClientContext' />
<inherits name='org.gcube.data.analysis.dataminermanagercl.dataminermanagercl'/>
<extend-configuration-property name="gin.ginjector.modules"
value="org.gcube.portlets.user.dataminermanagertester.client.gin.DataMinerManagerTesterClientModule" />
<!-- Specify the paths for translatable code -->
<source path="client" />
<source path="shared" />
<set-configuration-property name="CssResource.enableGss"
value="true" />
</module>

@ -0,0 +1,56 @@
/**
*
*/
package org.gcube.portlets.user.dataminermanagertester.portlet;
import java.io.IOException;
import javax.portlet.GenericPortlet;
import javax.portlet.PortletException;
import javax.portlet.PortletRequestDispatcher;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;
import org.gcube.common.portal.PortalContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
*
* @author Giancarlo Panichi
*
*
*/
public class DataMinerManagerTester extends GenericPortlet {
private final Logger logger= LoggerFactory.getLogger(GenericPortlet.class);
/**
* JSP folder name
*/
public static final String JSP_FOLDER = "/WEB-INF/jsp/";
/**
*
*/
public static final String VIEW_JSP = JSP_FOLDER + "DataMinerManagerTester_view.jsp";
/**
* @param request .
* @param response .
* @throws IOException .
* @throws PortletException .
*/
public void doView(RenderRequest request, RenderResponse response) throws PortletException, IOException {
logger.trace("DataMinerManagerTester loading from JSP: "+VIEW_JSP);
logger.trace("Setting user in session using PortalContext");
PortalContext.setUserInSession(request);
logger.trace("passing to the render");
PortletRequestDispatcher rd = getPortletContext().getRequestDispatcher(VIEW_JSP);
rd.include(request,response);
}
}

@ -0,0 +1,150 @@
package org.gcube.portlets.user.dataminermanagertester.server;
import java.util.ArrayList;
import java.util.GregorianCalendar;
import java.util.Queue;
import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import javax.servlet.ServletContextEvent;
import org.gcube.portlets.user.dataminermanagertester.server.task.TaskInProgress;
import org.gcube.portlets.user.dataminermanagertester.server.task.TaskRequest;
import org.gcube.portlets.user.dataminermanagertester.shared.Constants;
import org.gcube.portlets.user.dataminermanagertester.shared.task.TaskStatus;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
*
* @author Giancarlo Panichi
*
*
*/
public class DataMinerTesterBatchDaemon implements Runnable {
private static Logger logger = LoggerFactory.getLogger(DataMinerTesterBatchDaemon.class);
private long timeout = Constants.SERVICE_CLIENT_TIMEOUT_DEFAULT_MILLIS;
private long timeoutUpdate = Constants.SERVICE_CLIENT_THREAD_POOL_TIME_OUT_UPDATE_MILLIS;
private ServletContextEvent sce;
private volatile boolean running = true;
private ArrayList<TaskInProgress> tasks;
private Timer threadPoolTimeoutUpdateTimer = null;
public DataMinerTesterBatchDaemon(ServletContextEvent sce) {
this.sce = sce;
tasks = new ArrayList<>();
initTimeout();
}
private void initTimeout() {
sce.getServletContext().setAttribute(SessionConstants.DATAMINERTESTER_MONITOR_TIME_OUT_PERIODMILLIS,
Long.valueOf(timeout));
retrieveTimeOut();
startThreadPoolTimeoutUpdateTimer();
}
public void terminate() {
running = false;
if (threadPoolTimeoutUpdateTimer != null) {
threadPoolTimeoutUpdateTimer.cancel();
}
}
public void run() {
Queue<TaskRequest> jobQueue = new ConcurrentLinkedQueue<>();
sce.getServletContext().setAttribute(SessionConstants.TASK_REQUEST_QUEUE, jobQueue);
// pool size matching Web services capacity
ExecutorService executorService = Executors.newFixedThreadPool(20);
while (running) {
while (!jobQueue.isEmpty()) {
TaskRequest taskRequest = jobQueue.poll();
DataMinerTesterCallable accountingClientCallable = new DataMinerTesterCallable(taskRequest);
Future<TaskStatus> futureResult = executorService.submit(accountingClientCallable);
TaskInProgress taskInProgress = new TaskInProgress(new GregorianCalendar(), futureResult);
tasks.add(taskInProgress);
}
if (!tasks.isEmpty()) {
ArrayList<TaskInProgress> dones = new ArrayList<>();
for (TaskInProgress taskInProgress : tasks) {
Future<TaskStatus> futureResult = taskInProgress.getFuture();
if (futureResult.isDone()) {
TaskStatus result = null;
try {
result = futureResult.get(timeout, TimeUnit.MILLISECONDS);
logger.debug("DataMinerTesterTask: " + result);
} catch (InterruptedException | ExecutionException e) {
logger.error("DataMinerTesterTask: " + e.getLocalizedMessage(), e);
} catch (TimeoutException e) {
logger.error("DataMinerTesterTask No response after " + timeout + " milliseconds!");
futureResult.cancel(true);
}
dones.add(taskInProgress);
} else {
GregorianCalendar now = new GregorianCalendar();
long diff = now.getTimeInMillis() - taskInProgress.getStartTime().getTimeInMillis();
if (diff > timeout) {
futureResult.cancel(true);
dones.add(taskInProgress);
}
}
}
tasks.removeAll(dones);
}
try {
Thread.sleep(Constants.DAEMON_SLEEP_MILLIS);
} catch (InterruptedException e) {
}
}
}
private void retrieveTimeOut() {
long timeo = 0;
logger.info("DataMinerTester use default configuration for threadpool");
timeo = Constants.SERVICE_CLIENT_TIMEOUT_DEFAULT_MILLIS;
if (timeo > 0) {
timeout = timeo;
sce.getServletContext().setAttribute(SessionConstants.DATAMINERTESTER_MONITOR_TIME_OUT_PERIODMILLIS,
Long.valueOf(timeout));
}
}
private void startThreadPoolTimeoutUpdateTimer() {
try {
threadPoolTimeoutUpdateTimer = new Timer();
threadPoolTimeoutUpdateTimer.schedule(new TimerTask() {
@Override
public void run() {
logger.debug("ThreadPool request update of timeout");
retrieveTimeOut();
}
}, timeoutUpdate, timeoutUpdate);
} catch (Throwable e) {
logger.error("Error retrieving thread pool timeout!", e);
return;
}
}
}

@ -0,0 +1,97 @@
package org.gcube.portlets.user.dataminermanagertester.server;
import java.util.HashMap;
import java.util.concurrent.Callable;
import javax.servlet.http.HttpSession;
import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
import org.gcube.common.scope.api.ScopeProvider;
import org.gcube.portlets.user.dataminermanagertester.server.task.TaskRequest;
import org.gcube.portlets.user.dataminermanagertester.server.task.TaskWrapper;
import org.gcube.portlets.user.dataminermanagertester.server.testbatch.TesterCaller;
import org.gcube.portlets.user.dataminermanagertester.shared.exception.ServiceException;
import org.gcube.portlets.user.dataminermanagertester.shared.result.BatchTestResult;
import org.gcube.portlets.user.dataminermanagertester.shared.task.TaskStatus;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
*
* @author Giancarlo Panichi
*
*/
public class DataMinerTesterCallable implements Callable<TaskStatus> {
private static Logger logger = LoggerFactory.getLogger(DataMinerTesterCallable.class);
private TaskRequest taskRequest;
public DataMinerTesterCallable(TaskRequest taskRequest) {
super();
this.taskRequest = taskRequest;
logger.debug("DataMinerTesterCallable: " + taskRequest);
}
@Override
public TaskStatus call() throws Exception {
try {
HttpSession httpSession = taskRequest.getHttpSession();
if (httpSession == null) {
logger.error("Error retrieving HttpSession in DataMinerTesterCallable: is null");
return TaskStatus.ERROR;
}
logger.debug("Set SecurityToken: " + taskRequest.getServiceCredentials().getToken());
SecurityTokenProvider.instance.set(taskRequest.getServiceCredentials().getToken());
logger.debug("Set ScopeProvider: " + taskRequest.getServiceCredentials().getScope());
ScopeProvider.instance.set(taskRequest.getServiceCredentials().getScope());
TesterCaller testerCaller = new TesterCaller();
BatchTestResult result = null;
try {
result = testerCaller.runTest(taskRequest);
} catch (ServiceException e) {
TaskWrapper taskWrapper = new TaskWrapper(taskRequest.getOperationId(), TaskStatus.ERROR,
e.getLocalizedMessage());
HashMap<String, TaskWrapper> taskWrapperMap = SessionUtil.getTaskWrapperMap(httpSession,
taskRequest.getServiceCredentials());
if (taskWrapperMap == null) {
taskWrapperMap = new HashMap<>();
SessionUtil.setTaskWrapperMap(httpSession, taskRequest.getServiceCredentials(), taskWrapperMap);
}
taskWrapperMap.put(taskWrapper.getOperationId(), taskWrapper);
return TaskStatus.ERROR;
}
TaskWrapper taskWrapper = new TaskWrapper(taskRequest.getOperationId(), TaskStatus.COMPLETED,
result);
HashMap<String, TaskWrapper> taskWrapperMap = SessionUtil.getTaskWrapperMap(httpSession,
taskRequest.getServiceCredentials());
if (taskWrapperMap == null) {
taskWrapperMap = new HashMap<>();
SessionUtil.setTaskWrapperMap(httpSession, taskRequest.getServiceCredentials(), taskWrapperMap);
}
taskWrapperMap.put(taskWrapper.getOperationId(), taskWrapper);
return TaskStatus.COMPLETED;
} catch (Throwable e) {
logger.error("DataMinerTesterDaemon Execute(): " + e.getLocalizedMessage(), e);
return TaskStatus.ERROR;
}
}
}

@ -0,0 +1,50 @@
package org.gcube.portlets.user.dataminermanagertester.server;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
*
* @author Giancarlo Panichi
*
*
*/
@WebListener
public class DataMinerTesterListener implements ServletContextListener {
private static Logger logger = LoggerFactory
.getLogger(DataMinerTesterListener.class);
private DataMinerTesterBatchDaemon dataMinerTesterBatchDaemon = null;
private Thread thread = null;
@Override
public void contextInitialized(ServletContextEvent sce) {
dataMinerTesterBatchDaemon = new DataMinerTesterBatchDaemon(sce);
thread = new Thread(dataMinerTesterBatchDaemon);
logger.debug("Starting DataMinerTesterBatchDaemon: " + thread);
thread.start();
logger.info("DataMinerTesterBatchDaemon process successfully started.");
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
logger.debug("Stopping DataMinerTesterBatchDaemon: " + thread);
if (thread != null) {
dataMinerTesterBatchDaemon.terminate();
try {
thread.join();
} catch (InterruptedException e) {
}
logger.debug("DataMinerTesterBatchDaemon successfully stopped.");
}
}
}

@ -0,0 +1,442 @@
package org.gcube.portlets.user.dataminermanagertester.server;
import java.util.HashMap;
import java.util.List;
import java.util.Queue;
import java.util.UUID;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import org.gcube.data.analysis.dataminermanagercl.server.DataMinerService;
import org.gcube.data.analysis.dataminermanagercl.server.dmservice.SClient;
import org.gcube.data.analysis.dataminermanagercl.server.util.ServiceCredentials;
import org.gcube.data.analysis.dataminermanagercl.shared.data.OutputData;
import org.gcube.data.analysis.dataminermanagercl.shared.data.computations.ComputationId;
import org.gcube.data.analysis.dataminermanagercl.shared.parameters.Parameter;
import org.gcube.data.analysis.dataminermanagercl.shared.process.ComputationStatus;
import org.gcube.data.analysis.dataminermanagercl.shared.process.ComputationStatus.Status;
import org.gcube.data.analysis.dataminermanagercl.shared.process.Operator;
import org.gcube.data.analysis.dataminermanagercl.shared.process.OperatorsClassification;
import org.gcube.portlets.user.dataminermanagertester.client.rpc.DataMinerTesterService;
import org.gcube.portlets.user.dataminermanagertester.server.task.TaskRequest;
import org.gcube.portlets.user.dataminermanagertester.server.task.TaskWrapper;
import org.gcube.portlets.user.dataminermanagertester.server.testbuild.TestBuilder;
import org.gcube.portlets.user.dataminermanagertester.server.testconfig.DMTest;
import org.gcube.portlets.user.dataminermanagertester.shared.config.DMBatchConfig;
import org.gcube.portlets.user.dataminermanagertester.shared.config.DMConfig;
import org.gcube.portlets.user.dataminermanagertester.shared.config.DMDiffConfig;
import org.gcube.portlets.user.dataminermanagertester.shared.config.TestType;
import org.gcube.portlets.user.dataminermanagertester.shared.exception.ServiceException;
import org.gcube.portlets.user.dataminermanagertester.shared.result.BatchTestResult;
import org.gcube.portlets.user.dataminermanagertester.shared.session.UserInfo;
import org.gcube.portlets.user.dataminermanagertester.shared.task.TaskStatus;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
/**
*
* @author Giancarlo Panichi
*
*
*/
@SuppressWarnings("serial")
public class DataMinerTesterServiceImpl extends RemoteServiceServlet implements DataMinerTesterService {
private static Logger logger = LoggerFactory.getLogger(DataMinerTesterServiceImpl.class);
/**
* {@inheritDoc}
*/
@Override
public void init() throws ServletException {
super.init();
logger.info("DataMiner Tester Service started!");
}
/**
*
* {@inheritDoc}
*
*/
@Override
public UserInfo hello(String token) throws ServiceException {
try {
ServiceCredentials serviceCredentials = SessionUtil.getServiceCredentials(this.getThreadLocalRequest(),
token);
logger.debug("hello()");
UserInfo userInfo = new UserInfo(serviceCredentials.getUserName(), serviceCredentials.getGroupId(),
serviceCredentials.getGroupName(), serviceCredentials.getScope(), serviceCredentials.getEmail(),
serviceCredentials.getFullName());
logger.debug("UserInfo: " + userInfo);
return userInfo;
} catch (ServiceException e) {
e.printStackTrace();
throw e;
} catch (Throwable e) {
e.printStackTrace();
logger.error("Hello(): " + e.getLocalizedMessage(), e);
throw new ServiceException(e.getLocalizedMessage(), e);
}
}
@Override
public String getCapabilities(String token, DMConfig dmConfig) throws ServiceException {
try {
HttpServletRequest httpRequest = this.getThreadLocalRequest();
@SuppressWarnings("unused")
ServiceCredentials serviceCredentials = SessionUtil.getServiceCredentials(httpRequest, token);
logger.debug("getCapabilities()");
SClient sClient = new DataMinerService().getClient(dmConfig.getToken(), dmConfig.getDmUrl());
List<OperatorsClassification> operatorsClassifications = sClient.getOperatorsClassifications();
logger.debug("OperatorsClassifications: " + operatorsClassifications);
StringBuilder result = new StringBuilder();
result.append("Success\n");
for (OperatorsClassification opClass : operatorsClassifications) {
for (Operator op : opClass.getOperators()) {
result.append("Operator[Name=" + op.getName() + "]");
}
}
return result.toString();
} catch (ServiceException e) {
logger.error(e.getLocalizedMessage());
throw e;
} catch (Throwable e) {
logger.error("An error occurred getting the Capabilities: " + e.getLocalizedMessage(), e);
throw new ServiceException(e.getLocalizedMessage(), e);
}
}
@Override
public String getOperatorsDiff(String token, DMDiffConfig operatorsDiffConfig) throws ServiceException {
try {
logger.debug("getOperatorsDiff: dm1=" + operatorsDiffConfig.getDm1() + ", dm2="
+ operatorsDiffConfig.getDm2());
HttpServletRequest httpRequest = this.getThreadLocalRequest();
@SuppressWarnings("unused")
ServiceCredentials serviceCredentials = SessionUtil.getServiceCredentials(httpRequest, token);
SClient sClient1 = new DataMinerService().getClient(operatorsDiffConfig.getToken1(),
operatorsDiffConfig.getDmUrl1());
List<OperatorsClassification> operatorsClassifications1 = sClient1.getOperatorsClassifications();
logger.debug("OperatorsClassifications1: " + operatorsClassifications1);
SClient sClient2 = new DataMinerService().getClient(operatorsDiffConfig.getToken2(),
operatorsDiffConfig.getDmUrl2());
List<OperatorsClassification> operatorsClassifications2 = sClient2.getOperatorsClassifications();
logger.debug("OperatorsClassifications2: " + operatorsClassifications2);
StringBuilder result = new StringBuilder();
result.append("Success\n");
result.append("----------------------------------\n");
result.append("Operators in: " + operatorsDiffConfig.getDm1() + " \n");
result.append("and not in: " + operatorsDiffConfig.getDm2() + " \n");
for (OperatorsClassification opClass1 : operatorsClassifications1) {
for (Operator op1 : opClass1.getOperators()) {
boolean op1Found = false;
for (OperatorsClassification opClass2 : operatorsClassifications2) {
for (Operator op2 : opClass2.getOperators()) {
if (op1.getId().compareTo(op2.getId()) == 0) {
op1Found = true;
break;
}
}
if (op1Found) {
break;
}
}
if (!op1Found) {
result.append("Op: " + op1.getId() + " \n");
}
}
}
result.append("----------------------------------\n");
result.append("Operators in: " + operatorsDiffConfig.getDm2() + " \n");
result.append("and not in: " + operatorsDiffConfig.getDm1() + " \n");
for (OperatorsClassification opClass2 : operatorsClassifications2) {
for (Operator op2 : opClass2.getOperators()) {
boolean op2Found = false;
for (OperatorsClassification opClass1 : operatorsClassifications1) {
for (Operator op1 : opClass1.getOperators()) {
if (op2.getId().compareTo(op1.getId()) == 0) {
op2Found = true;
break;
}
}
if (op2Found) {
break;
}
}
if (!op2Found) {
result.append("Op: " + op2.getId() + " \n");
}
}
}
return result.toString();
} catch (ServiceException e) {
logger.error(e.getLocalizedMessage());
throw e;
} catch (Throwable e) {
logger.error("An error occurred getting operators diff: " + e.getLocalizedMessage(), e);
throw new ServiceException(e.getLocalizedMessage(), e);
}
}
@Override
public ComputationId startSimpleTest(String token, DMConfig dmConfig) throws ServiceException {
try {
HttpServletRequest httpRequest = this.getThreadLocalRequest();
@SuppressWarnings("unused")
ServiceCredentials serviceCredentials = SessionUtil.getServiceCredentials(httpRequest, token);
logger.debug("startSimpleTest()");
TestType t = null;
if (dmConfig == null || dmConfig.getTestType() == null || dmConfig.getTestType().isEmpty()) {
throw new ServiceException("Invalid test type: " + dmConfig.getTestType());
} else {
t = TestType.getTypeFromId(dmConfig.getTestType());
}
TestBuilder testBuilder = new TestBuilder();
DMTest dmTest = testBuilder.build(t);
SClient sClient = new DataMinerService().getClient(dmConfig.getToken(), dmConfig.getDmUrl());
List<OperatorsClassification> operatorsClassifications = sClient.getOperatorsClassifications();
logger.debug("OperatorsClassifications: " + operatorsClassifications);
Operator operator = sClient.getOperatorById(dmTest.getId());
if (operator == null) {
logger.error("Operator not found");
throw new ServiceException("Operator: " + dmTest.getId() + " not found");
} else {
logger.debug("Operator Name: " + operator.getName() + " (" + operator.getId() + ")");
logger.debug("Operator: " + operator);
List<Parameter> parameters = sClient.getInputParameters(operator);
logger.debug("Parameters: " + parameters);
for (Parameter parameter : parameters) {
logger.debug(
"Parameter:[Name=" + parameter.getName() + ", Typology=" + parameter.getTypology() + "]");
}
dmTest.createRequest(operator);
logger.debug("Start Computation");
ComputationId computationId = sClient.startComputation(operator);
logger.debug("Started ComputationId: " + computationId);
return computationId;
}
} catch (ServiceException e) {
logger.error(e.getLocalizedMessage());
throw e;
} catch (Throwable e) {
logger.error("An error occurred starting simple test: " + e.getLocalizedMessage(), e);
e.printStackTrace();
throw new ServiceException(e.getLocalizedMessage(), e);
}
}
@Override
public Status monitorSimpleTest(String token, DMConfig dmConfig, ComputationId computationId)
throws ServiceException {
try {
HttpServletRequest httpRequest = this.getThreadLocalRequest();
@SuppressWarnings("unused")
ServiceCredentials serviceCredentials = SessionUtil.getServiceCredentials(httpRequest, token);
SClient sClient = new DataMinerService().getClient(dmConfig.getToken(), dmConfig.getDmUrl());
logger.debug("Requesting operation progress");
ComputationStatus computationStatus = null;
try {
computationStatus = sClient.getComputationStatus(computationId);
} catch (Exception e) {
logger.error("Error retrieving computation Status:" + e.getLocalizedMessage(), e);
throw new ServiceException("Error retrieving computation Status:" + e.getLocalizedMessage(), e);
}
logger.debug("ComputationStatus: " + computationStatus);
if (computationStatus == null) {
logger.error("ComputationStatus is null");
throw new ServiceException("Error retrieving computation Status: ComputationStatus is null");
}
Status status = computationStatus.getStatus();
if (status == null) {
logger.error("Status is null");
throw new ServiceException("Error retrieving computation Status: Status is null");
}
return status;
// monitoringComputation(computationId, sClient);
} catch (ServiceException e) {
logger.error(e.getLocalizedMessage());
throw e;
} catch (Throwable e) {
logger.error("An error occurred monitoring simple test: " + e.getLocalizedMessage(), e);
e.printStackTrace();
throw new ServiceException(e.getLocalizedMessage(), e);
}
}
@Override
public String retrieveOutputForSimpleTest(String token, DMConfig dmConfig, ComputationId computationId)
throws ServiceException {
try {
HttpServletRequest httpRequest = this.getThreadLocalRequest();
@SuppressWarnings("unused")
ServiceCredentials serviceCredentials = SessionUtil.getServiceCredentials(httpRequest, token);
logger.debug("retrieveOutputForSimpleTest()");
TestType t = null;
if (dmConfig == null || dmConfig.getTestType() == null || dmConfig.getTestType().isEmpty()) {
throw new ServiceException("Invalid test type: " + dmConfig.getTestType());
} else {
t = TestType.getTypeFromId(dmConfig.getTestType());
}
TestBuilder testBuilder = new TestBuilder();
DMTest dmTest = testBuilder.build(t);
SClient sClient = new DataMinerService().getClient(dmConfig.getToken(), dmConfig.getDmUrl());
OutputData outputData = sClient.getOutputDataByComputationId(computationId);
if (dmTest.isValidResult(outputData)) {
return dmTest.getResult(outputData);
} else {
throw new ServiceException("Invalid output data for test: " + dmTest.getId());
}
} catch (ServiceException e) {
logger.error(e.getLocalizedMessage());
throw e;
} catch (Throwable e) {
logger.error("An error occurred monitoring simple test: " + e.getLocalizedMessage(), e);
e.printStackTrace();
throw new ServiceException(e.getLocalizedMessage(), e);
}
}
@Override
public String startBatchTest(String token, DMBatchConfig dmBatchConfig) throws ServiceException {
try {
HttpServletRequest httpRequest = this.getThreadLocalRequest();
ServiceCredentials serviceCredentials = SessionUtil.getServiceCredentials(httpRequest, token);
logger.debug("startBatchTest()");
String operationId = UUID.randomUUID().toString();
logger.info("DataMinerBatchTest Task Operation Id: " + operationId);
logger.info("Session Id: " + httpRequest.getSession());
TaskRequest taskRequest = new TaskRequest(operationId, httpRequest.getSession(), serviceCredentials,
dmBatchConfig);
ServletContext appScope = httpRequest.getServletContext();
@SuppressWarnings("unchecked")
Queue<TaskRequest> queue = ((Queue<TaskRequest>) appScope
.getAttribute(SessionConstants.TASK_REQUEST_QUEUE));
queue.add(taskRequest);
logger.debug("operationId: " + operationId);
return operationId;
} catch (ServiceException e) {
logger.error(e.getLocalizedMessage());
throw e;
} catch (Throwable e) {
logger.error("An error occurred starting batch test: " + e.getLocalizedMessage(), e);
e.printStackTrace();
throw new ServiceException(e.getLocalizedMessage(), e);
}
}
@Override
public TaskStatus monitorBatchTest(String token, String operationId) throws ServiceException {
try {
HttpServletRequest httpRequest = this.getThreadLocalRequest();
ServiceCredentials serviceCredentials = SessionUtil.getServiceCredentials(httpRequest, token);
HashMap<String, TaskWrapper> taskWrapperMap = SessionUtil.getTaskWrapperMap(httpRequest.getSession(),
serviceCredentials);
if (taskWrapperMap == null) {
return null;
} else {
if (taskWrapperMap.containsKey(operationId)) {
TaskWrapper taskWrapper = taskWrapperMap.get(operationId);
return taskWrapper.getTaskStatus();
} else {
return null;
}
}
} catch (ServiceException e) {
e.printStackTrace();
throw e;
} catch (Throwable e) {
logger.error("MonitorBatchTest(): " + e.getLocalizedMessage(), e);
throw new ServiceException(e.getLocalizedMessage());
}
}
@Override
public BatchTestResult retrieveOutputForBatchTest(String token, String operationId) throws ServiceException {
try {
HttpServletRequest httpRequest = this.getThreadLocalRequest();
ServiceCredentials serviceCredentials = SessionUtil.getServiceCredentials(httpRequest, token);
logger.debug("retrieveOutputForBatchTest()");
HashMap<String, TaskWrapper> taskWrapperMap = SessionUtil.getTaskWrapperMap(httpRequest.getSession(),
serviceCredentials);
if (taskWrapperMap == null) {
return null;
} else {
if (taskWrapperMap.containsKey(operationId)) {
TaskWrapper taskWrapper = taskWrapperMap.get(operationId);
return taskWrapper.getResult();
} else {
return null;
}
}
} catch (ServiceException e) {
e.printStackTrace();
throw e;
} catch (Throwable e) {
logger.error("RetrieveOutputForBatchTest(): " + e.getLocalizedMessage(), e);
throw new ServiceException(e.getLocalizedMessage());
}
}
}

@ -0,0 +1,13 @@
package org.gcube.portlets.user.dataminermanagertester.server;
public class SessionConstants {
//Context
public static final String DATAMINERTESTER_MONITOR_TIME_OUT_PERIODMILLIS = "DATAMINERTESTER_MONITOR_TIME_OUT_PERIODMILLIS";
//Session
public static final String TASK_WRAPPER_MAP = "TASK_WRAPPER_MAP";
public static final String TASK_REQUEST_QUEUE = "TASK_REQUEST_QUEUE";
}

@ -0,0 +1,164 @@
/**
*
*/
package org.gcube.portlets.user.dataminermanagertester.server;
import static org.gcube.common.authorization.client.Constants.authorizationService;
import java.util.HashMap;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.log4j.Logger;
import org.gcube.common.authorization.library.AuthorizationEntry;
import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
import org.gcube.common.portal.PortalContext;
import org.gcube.common.scope.api.ScopeProvider;
import org.gcube.data.analysis.dataminermanagercl.server.util.ServiceCredentials;
import org.gcube.portlets.user.dataminermanagertester.server.task.TaskWrapper;
import org.gcube.portlets.user.dataminermanagertester.shared.Constants;
import org.gcube.portlets.user.dataminermanagertester.shared.exception.ServiceException;
import org.gcube.vomanagement.usermanagement.model.GCubeUser;
/**
*
* @author Giancarlo Panichi
*
*
*/
public class SessionUtil {
private static final Logger logger = Logger.getLogger(SessionUtil.class);
public static ServiceCredentials getServiceCredentials(HttpServletRequest httpServletRequest, String token)
throws ServiceException {
ServiceCredentials sCredentials = null;
String userName = null;
String scope = null;
String groupId = null;
String groupName = null;
if (Constants.DEBUG_MODE) {
logger.debug("No credential found in session, use test user!");
/*
* InfoLocale infoLocale = getInfoLocale(httpServletRequest, null);
* Locale locale = new Locale(infoLocale.getLanguage());
*
* ResourceBundle messages = ResourceBundle.getBundle(
* StatAlgoImporterServiceMessagesConstants.TDGWTServiceMessages,
* locale);
*/
userName = Constants.DEFAULT_USER;
scope = Constants.DEFAULT_SCOPE;
token = Constants.DEFAULT_TOKEN;
logger.debug("Set SecurityToken: " + token);
SecurityTokenProvider.instance.set(token);
logger.debug("Set ScopeProvider: " + scope);
ScopeProvider.instance.set(scope);
sCredentials = new ServiceCredentials(userName, scope, token);
} else {
logger.debug("Retrieving credential in session!");
PortalContext pContext = PortalContext.getConfiguration();
logger.debug("Set SecurityToken: " + token);
SecurityTokenProvider.instance.set(token);
AuthorizationEntry entry;
try {
entry = authorizationService().get(token);
} catch (Exception e) {
throw new ServiceException("AuthorizationEntry not found: " + e.getLocalizedMessage(), e);
}
scope = entry.getContext();
logger.debug("Set ScopeProvider: " + scope);
ScopeProvider.instance.set(scope);
if (scope == null || scope.isEmpty()) {
String error = "Error retrieving scope: " + scope;
logger.error(error);
throw new ServiceException(error);
}
GCubeUser gCubeUser = pContext.getCurrentUser(httpServletRequest);
if (gCubeUser == null) {
String error = "Error retrieving gCubeUser in scope " + scope + ": " + gCubeUser;
logger.error(error);
throw new ServiceException(error);
}
userName = gCubeUser.getUsername();
if (userName == null || userName.isEmpty()) {
String error = "Error retrieving username in scope " + scope + ": " + userName;
logger.error(error);
throw new ServiceException(error);
}
token = pContext.getCurrentUserToken(scope, userName);
if (token == null || token.isEmpty()) {
String error = "Error retrieving token for " + userName + " in " + scope + ": " + token;
logger.error(error);
throw new ServiceException(error);
}
String name = gCubeUser.getFirstName();
String lastName = gCubeUser.getLastName();
String fullName = gCubeUser.getFullname();
String userAvatarURL = gCubeUser.getUserAvatarURL();
String email = gCubeUser.getEmail();
//groupId = String.valueOf(pContext.getCurrentGroupId(httpServletRequest));
//groupName = pContext.getCurrentGroupName(httpServletRequest);
sCredentials = new ServiceCredentials(userName, fullName, name, lastName, email, scope, groupId, groupName,
userAvatarURL, token);
}
logger.debug("ServiceCredentials: " + sCredentials);
return sCredentials;
}
/**
*
* @param httpSession http session
* @param serviceCredentials service credentials
* @return hash map of tasks
*/
public static HashMap<String, TaskWrapper> getTaskWrapperMap(
HttpSession httpSession,
ServiceCredentials serviceCredentials) {
@SuppressWarnings("unchecked")
HashMap<String, TaskWrapper> taskWrapperMap = (HashMap<String, TaskWrapper>) httpSession
.getAttribute(SessionConstants.TASK_WRAPPER_MAP);
return taskWrapperMap;
}
/**
*
* @param httpSession session
* @param serviceCredentials service credentials
* @param taskWrapperMap task wrapper map
*/
public static void setTaskWrapperMap(HttpSession httpSession,
ServiceCredentials serviceCredentials,
HashMap<String, TaskWrapper> taskWrapperMap) {
httpSession.setAttribute(SessionConstants.TASK_WRAPPER_MAP, taskWrapperMap);
return;
}
}

@ -0,0 +1,55 @@
package org.gcube.portlets.user.dataminermanagertester.server.is;
import java.util.ArrayList;
import java.util.List;
import org.gcube.common.resources.gcore.ServiceEndpoint;
import org.gcube.common.scope.api.ScopeProvider;
import org.gcube.resources.discovery.client.api.DiscoveryClient;
import org.gcube.resources.discovery.client.queries.api.SimpleQuery;
import org.gcube.resources.discovery.icclient.ICFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
*
* @author Giancarlo Panichi
*
*
*/
public class InformationSystemUtils {
private static Logger logger = LoggerFactory
.getLogger(InformationSystemUtils.class);
public static List<String> retrieveServiceAddress(String category,
String name, String scope) throws Exception {
try {
if (scope == null || scope.length() == 0)
return new ArrayList<String>();
ScopeProvider.instance.set(scope);
SimpleQuery query = ICFactory.queryFor(ServiceEndpoint.class);
query.addCondition(
"$resource/Profile/Category/text() eq '" + category + "'")
.addCondition(
"$resource/Profile/Name/text() eq '" + name + "'")
.setResult(
"$resource/Profile/AccessPoint/Interface/Endpoint/text()");
DiscoveryClient<String> client = ICFactory.client();
List<String> addresses = client.submit(query);
return addresses;
} catch (Throwable e) {
logger.error("Error in discovery DataMiner Service Endpoint in scope: "
+ scope);
logger.error("Error: " + e.getLocalizedMessage());
e.printStackTrace();
throw e;
}
}
}

@ -0,0 +1,48 @@
package org.gcube.portlets.user.dataminermanagertester.server.task;
import java.io.Serializable;
import java.util.Calendar;
import java.util.concurrent.Future;
import org.gcube.portlets.user.dataminermanagertester.shared.task.TaskStatus;
/**
*
* @author Giancarlo Panichi
*
*
*/
public class TaskInProgress implements Serializable {
private static final long serialVersionUID = -1957012551318695316L;
private Calendar startTime;
private Future<TaskStatus> future;
public TaskInProgress(Calendar startTime, Future<TaskStatus> future) {
super();
this.startTime = startTime;
this.future = future;
}
public Calendar getStartTime() {
return startTime;
}
public void setStartTime(Calendar startTime) {
this.startTime = startTime;
}
public Future<TaskStatus> getFuture() {
return future;
}
public void setFuture(Future<TaskStatus> future) {
this.future = future;
}
@Override
public String toString() {
return "TaskInProgress [startTime=" + startTime + ", future=" + future + "]";
}
}

@ -0,0 +1,72 @@
package org.gcube.portlets.user.dataminermanagertester.server.task;
import java.io.Serializable;
import javax.servlet.http.HttpSession;
import org.gcube.data.analysis.dataminermanagercl.server.util.ServiceCredentials;
import org.gcube.portlets.user.dataminermanagertester.shared.config.DMBatchConfig;
/**
*
* @author Giancarlo Panichi
*
*
*/
public class TaskRequest implements Serializable {
private static final long serialVersionUID = -4010108343968344171L;
private String operationId;
private HttpSession httpSession;
private ServiceCredentials serviceCredentials;
private DMBatchConfig dmBatchConfig;
public TaskRequest(String operationId, HttpSession httpSession, ServiceCredentials serviceCredentials,
DMBatchConfig dmBatchConfig) {
super();
this.operationId = operationId;
this.httpSession = httpSession;
this.serviceCredentials = serviceCredentials;
this.dmBatchConfig = dmBatchConfig;
}
public String getOperationId() {
return operationId;
}
public void setOperationId(String operationId) {
this.operationId = operationId;
}
public HttpSession getHttpSession() {
return httpSession;
}
public void setHttpSession(HttpSession httpSession) {
this.httpSession = httpSession;
}
public ServiceCredentials getServiceCredentials() {
return serviceCredentials;
}
public void setServiceCredentials(ServiceCredentials serviceCredentials) {
this.serviceCredentials = serviceCredentials;
}
public DMBatchConfig getDmBatchConfig() {
return dmBatchConfig;
}
public void setDmBatchConfig(DMBatchConfig dmBatchConfig) {
this.dmBatchConfig = dmBatchConfig;
}
@Override
public String toString() {
return "TaskRequest [operationId=" + operationId + ", httpSession=" + httpSession + ", serviceCredentials="
+ serviceCredentials + ", dmBatchConfig=" + dmBatchConfig + "]";
}
}

@ -0,0 +1,76 @@
package org.gcube.portlets.user.dataminermanagertester.server.task;
import java.io.Serializable;
import org.gcube.portlets.user.dataminermanagertester.shared.result.BatchTestResult;
import org.gcube.portlets.user.dataminermanagertester.shared.task.TaskStatus;
/**
*
* @author Giancarlo Panichi
*
*
*/
public class TaskWrapper implements Serializable {
private static final long serialVersionUID = -4010108343968344171L;
private String operationId;
private TaskStatus taskStatus;
private String errorMessage;
private BatchTestResult result;
public TaskWrapper(String operationId, TaskStatus taskStatus, BatchTestResult result) {
super();
this.operationId = operationId;
this.taskStatus = taskStatus;
this.errorMessage = null;
this.result = result;
}
public TaskWrapper(String operationId, TaskStatus taskStatus, String errorMessage) {
super();
this.operationId = operationId;
this.taskStatus = taskStatus;
this.errorMessage = errorMessage;
this.result = null;
}
public String getOperationId() {
return operationId;
}
public void setOperationId(String operationId) {
this.operationId = operationId;
}
public TaskStatus getTaskStatus() {
return taskStatus;
}
public void setTaskStatus(TaskStatus taskStatus) {
this.taskStatus = taskStatus;
}
public BatchTestResult getResult() {
return result;
}
public void setResult(BatchTestResult result) {
this.result = result;
}
public String getErrorMessage() {
return errorMessage;
}
public void setErrorMessage(String errorMessage) {
this.errorMessage = errorMessage;
}
@Override
public String toString() {
return "TaskWrapper [operationId=" + operationId + ", taskStatus=" + taskStatus + ", errorMessage="
+ errorMessage + ", result=" + result + "]";
}
}

@ -0,0 +1,258 @@
package org.gcube.portlets.user.dataminermanagertester.server.testbatch;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import org.gcube.data.analysis.dataminermanagercl.server.DataMinerService;
import org.gcube.data.analysis.dataminermanagercl.server.dmservice.SClient;
import org.gcube.data.analysis.dataminermanagercl.shared.data.OutputData;
import org.gcube.data.analysis.dataminermanagercl.shared.data.computations.ComputationId;
import org.gcube.data.analysis.dataminermanagercl.shared.parameters.Parameter;
import org.gcube.data.analysis.dataminermanagercl.shared.process.ComputationStatus;
import org.gcube.data.analysis.dataminermanagercl.shared.process.ComputationStatus.Status;
import org.gcube.data.analysis.dataminermanagercl.shared.process.Operator;
import org.gcube.data.analysis.dataminermanagercl.shared.process.OperatorsClassification;
import org.gcube.portlets.user.dataminermanagertester.server.task.TaskRequest;
import org.gcube.portlets.user.dataminermanagertester.server.testbuild.TestBuilder;
import org.gcube.portlets.user.dataminermanagertester.server.testconfig.DMTest;
import org.gcube.portlets.user.dataminermanagertester.shared.Constants;
import org.gcube.portlets.user.dataminermanagertester.shared.config.DMBatchConfig;
import org.gcube.portlets.user.dataminermanagertester.shared.config.TestType;
import org.gcube.portlets.user.dataminermanagertester.shared.exception.ServiceException;
import org.gcube.portlets.user.dataminermanagertester.shared.result.BatchTestResult;
import org.gcube.portlets.user.dataminermanagertester.shared.result.SingleTestResult;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
*
* @author Giancarlo Panichi
*
*
*/
public class TesterCaller {
private static Logger logger = LoggerFactory.getLogger(TesterCaller.class);
private DMTest dmTest;
private DMBatchConfig dmBatchconfig;
private ArrayList<String> dms;
public BatchTestResult runTest(TaskRequest taskRequest) throws ServiceException {
TestType t = null;
if (taskRequest == null || taskRequest.getDmBatchConfig() == null
|| taskRequest.getDmBatchConfig().getTestType() == null
|| taskRequest.getDmBatchConfig().getTestType().isEmpty()) {
throw new ServiceException("Invalid test type: " + taskRequest.getDmBatchConfig().getTestType());
} else {
t = TestType.getTypeFromId(taskRequest.getDmBatchConfig().getTestType());
}
dmBatchconfig = taskRequest.getDmBatchConfig();
dms = taskRequest.getDmBatchConfig().getDms();
if (dms == null || dms.isEmpty()) {
logger.error("Invalid urls list");
throw new ServiceException("Invalid urls list");
}
BatchTestResult result;
if (t.compareTo(TestType.Capabilities) == 0) {
result = runGetCapabilities();
} else {
result = runAlgorithms(t);
}
return result;
}
private BatchTestResult runGetCapabilities() {
BatchTestResult result;
LinkedHashMap<String, SingleTestResult> testResultMap = new LinkedHashMap<>();
for (String dm : dms) {
try {
String url = null;
if (dmBatchconfig.getProtocol() != null && dm != null) {
dm = dm.trim();
url = new String(dmBatchconfig.getProtocol() + "://" + dm + "/wps/");
}
SClient sClient = new DataMinerService().getClient(dmBatchconfig.getToken(), url);
List<OperatorsClassification> operatorsClassifications = sClient.getOperatorsClassifications();
logger.debug("OperatorsClassifications: " + operatorsClassifications);
String response = new String("Success");
ComputationStatus computationStatus = new ComputationStatus(Status.COMPLETE, 100f);
SingleTestResult singleTestResult = new SingleTestResult(computationStatus, response);
testResultMap.put(dm, singleTestResult);
} catch (Exception e) {
logger.error("Error testing: " + dm);
ComputationStatus computationStatus = new ComputationStatus(e);
SingleTestResult singleTestResult = new SingleTestResult(computationStatus, null);
testResultMap.put(dm, singleTestResult);
}
}
result = new BatchTestResult(testResultMap);
return result;
}
private BatchTestResult runAlgorithms(TestType t) throws ServiceException {
BatchTestResult result;
TestBuilder testBuilder = new TestBuilder();
dmTest = testBuilder.build(t);
LinkedHashMap<String, SingleTestResult> testResultMap = new LinkedHashMap<>();
for (String dm : dms) {
try {
String url = null;
if (dmBatchconfig.getProtocol() != null && dm != null) {
dm = dm.trim();
url = new String(dmBatchconfig.getProtocol() + "://" + dm + "/wps/");
}
SClient sClient = new DataMinerService().getClient(dmBatchconfig.getToken(), url);
ComputationId computationId = runSingleTest(sClient);
String response = null;
ComputationStatus computationStatus = monitorSingleTest(sClient, computationId);
switch (computationStatus.getStatus()) {
case ACCEPTED:
break;
case CANCELLED:
break;
case COMPLETE:
response = retrieveOutputForSingleTest(sClient, computationId);
break;
case FAILED:
break;
case RUNNING:
break;
default:
break;
}
SingleTestResult singleTestResult = new SingleTestResult(computationStatus, response);
testResultMap.put(dm, singleTestResult);
} catch (Exception e) {
logger.error("Error testing: " + dm);
ComputationStatus computationStatus = new ComputationStatus(e);
SingleTestResult singleTestResult = new SingleTestResult(computationStatus, null);
testResultMap.put(dm, singleTestResult);
}
}
result = new BatchTestResult(testResultMap);
return result;
}
private ComputationId runSingleTest(SClient sClient) throws ServiceException {
try {
List<OperatorsClassification> operatorsClassifications = sClient.getOperatorsClassifications();
logger.debug("OperatorsClassifications: " + operatorsClassifications);
Operator operator = sClient.getOperatorById(dmTest.getId());
if (operator == null) {
logger.error("Operator not found");
throw new ServiceException("Operator: " + dmTest.getId() + " not found");
} else {
logger.debug("Operator Name: " + operator.getName() + " (" + operator.getId() + ")");
logger.debug("Operator: " + operator);
List<Parameter> parameters = sClient.getInputParameters(operator);
logger.debug("Parameters: " + parameters);
for (Parameter parameter : parameters) {
logger.debug(
"Parameter:[Name=" + parameter.getName() + ", Typology=" + parameter.getTypology() + "]");
}
dmTest.createRequest(operator);
logger.debug("Start Computation");
ComputationId computationId = sClient.startComputation(operator);
logger.debug("Started ComputationId: " + computationId);
return computationId;
}
} catch (ServiceException e) {
throw e;
} catch (Throwable e) {
throw new ServiceException(e.getLocalizedMessage(), e);
}
}
private ComputationStatus monitorSingleTest(SClient sClient, ComputationId computationId) throws ServiceException {
try {
logger.debug("Requesting operation progress");
ComputationStatus computationStatus = null;
Status status = null;
while (status == null || status.compareTo(Status.ACCEPTED) == 0 || status.compareTo(Status.RUNNING) == 0) {
try {
computationStatus = sClient.getComputationStatus(computationId);
} catch (Exception e) {
logger.error("Error retrieving computation Status:" + e.getLocalizedMessage(), e);
throw new ServiceException("Error retrieving computation Status:" + e.getLocalizedMessage(), e);
}
logger.debug("ComputationStatus: " + computationStatus);
if (computationStatus == null) {
logger.error("ComputationStatus is null");
throw new ServiceException("Error retrieving computation Status: ComputationStatus is null");
}
status = computationStatus.getStatus();
if (status == null) {
logger.error("Status is null");
throw new ServiceException("Error retrieving computation Status: Status is null");
} else {
switch (status) {
case CANCELLED:
case COMPLETE:
case FAILED:
break;
case ACCEPTED:
case RUNNING:
default:
try {
Thread.sleep(Constants.TEST_MONITOR_PERIODMILLIS);
} catch (InterruptedException e) {
}
break;
}
}
}
return computationStatus;
} catch (ServiceException e) {
logger.error(e.getLocalizedMessage(), e);
throw e;
} catch (Throwable e) {
logger.error(e.getLocalizedMessage(), e);
throw new ServiceException(e.getLocalizedMessage(), e);
}
}
private String retrieveOutputForSingleTest(SClient sClient, ComputationId computationId) throws ServiceException {
try {
OutputData outputData = sClient.getOutputDataByComputationId(computationId);
if (dmTest.isValidResult(outputData)) {
return dmTest.getResult(outputData);
} else {
throw new ServiceException("Invalid output data for test: " + dmTest.getId());
}
} catch (ServiceException e) {
logger.error(e.getLocalizedMessage());
throw e;
} catch (Throwable e) {
logger.error(e.getLocalizedMessage(), e);
throw new ServiceException(e.getLocalizedMessage(), e);
}
}
}

@ -0,0 +1,61 @@
package org.gcube.portlets.user.dataminermanagertester.server.testbuild;
import org.gcube.portlets.user.dataminermanagertester.server.testconfig.BionymLocalTest;
import org.gcube.portlets.user.dataminermanagertester.server.testconfig.CMSY2Test;
import org.gcube.portlets.user.dataminermanagertester.server.testconfig.CSquareColumnCreatorTest;
import org.gcube.portlets.user.dataminermanagertester.server.testconfig.DBScanTest;
import org.gcube.portlets.user.dataminermanagertester.server.testconfig.DMTest;
import org.gcube.portlets.user.dataminermanagertester.server.testconfig.FeedForwardAnnTest;
import org.gcube.portlets.user.dataminermanagertester.server.testconfig.GenericChartsTest;
import org.gcube.portlets.user.dataminermanagertester.server.testconfig.ListDBNameTest;
import org.gcube.portlets.user.dataminermanagertester.server.testconfig.OpenMeshRecostructorGPUTest;
import org.gcube.portlets.user.dataminermanagertester.server.testconfig.PolygonsToMapTest;
import org.gcube.portlets.user.dataminermanagertester.server.testconfig.RasterDataPublisherTest;
import org.gcube.portlets.user.dataminermanagertester.server.testconfig.WebAppPublisherTest;
import org.gcube.portlets.user.dataminermanagertester.server.testconfig.XYExtractorTest;
import org.gcube.portlets.user.dataminermanagertester.shared.config.TestType;
import org.gcube.portlets.user.dataminermanagertester.shared.exception.ServiceException;
/**
*
* @author Giancarlo Panichi
*
*
*/
public class TestBuilder {
public DMTest build(TestType testType) throws ServiceException {
if (testType != null) {
switch (testType) {
case FeedForwardAnn:
return new FeedForwardAnnTest();
case BionymLocal:
return new BionymLocalTest();
case CMSY2:
return new CMSY2Test();
case RasterDataPublisher:
return new RasterDataPublisherTest();
case WebAppPublisher:
return new WebAppPublisherTest();
case XYExtractor:
return new XYExtractorTest();
case CSquareColumnCreator:
return new CSquareColumnCreatorTest();
case DBScan:
return new DBScanTest();
case ListDBName:
return new ListDBNameTest();
case OpenMeshRecostructorGPU:
return new OpenMeshRecostructorGPUTest();
case GenericCharts:
return new GenericChartsTest();
case PolygonsToMap:
return new PolygonsToMapTest();
default:
throw new ServiceException("Test not found");
}
} else {
throw new ServiceException("Test not found");
}
}
}

@ -0,0 +1,184 @@
package org.gcube.portlets.user.dataminermanagertester.server.testconfig;
import java.util.ArrayList;
import java.util.List;
import org.gcube.data.analysis.dataminermanagercl.shared.data.OutputData;
import org.gcube.data.analysis.dataminermanagercl.shared.data.output.MapResource;
import org.gcube.data.analysis.dataminermanagercl.shared.data.output.Resource;
import org.gcube.data.analysis.dataminermanagercl.shared.parameters.EnumParameter;
import org.gcube.data.analysis.dataminermanagercl.shared.parameters.ObjectParameter;
import org.gcube.data.analysis.dataminermanagercl.shared.parameters.Parameter;
import org.gcube.data.analysis.dataminermanagercl.shared.process.Operator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
*
* @author Giancarlo Panichi
*
*
*/
public class BionymLocalTest implements DMTest {
private static Logger logger = LoggerFactory.getLogger(BionymLocalTest.class);
private static final String id = "org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.BIONYM_LOCAL";
@Override
public String getId() {
return id;
}
@Override
public void createRequest(Operator operator) {
logger.debug("Create Request");
ObjectParameter speciesAuthorName = new ObjectParameter();
speciesAuthorName.setName("SpeciesAuthorName");
speciesAuthorName.setValue("Gadus morhua (Linnaeus, 1758)");
EnumParameter taxaAuthorityFile = new EnumParameter();
taxaAuthorityFile.setName("Taxa_Authority_File");
taxaAuthorityFile.setValue("FISHBASE");
EnumParameter parserName = new EnumParameter();
parserName.setName("Parser_Name");
parserName.setValue("SIMPLE");
ObjectParameter activatePreparsingProcessing = new ObjectParameter();
activatePreparsingProcessing.setName("Activate_Preparsing_Processing");
activatePreparsingProcessing.setValue("true");
ObjectParameter useStemmedGenusAndSpecies = new ObjectParameter();
useStemmedGenusAndSpecies.setName("Use_Stemmed_Genus_and_Species");
useStemmedGenusAndSpecies.setValue("false");
EnumParameter accuracyVsSpeed = new EnumParameter();
accuracyVsSpeed.setName("Accuracy_vs_Speed");
accuracyVsSpeed.setValue("MAX_ACCURACY");
EnumParameter matcher1 = new EnumParameter();
matcher1.setName("Matcher_1");
matcher1.setValue("GSAy");
ObjectParameter threshold1 = new ObjectParameter();
threshold1.setName("Threshold_1");
threshold1.setValue("0.6");
ObjectParameter maxResults1 = new ObjectParameter();
maxResults1.setName("MaxResults_1");
maxResults1.setValue("10");
EnumParameter matcher2 = new EnumParameter();
matcher2.setName("Matcher_2");
matcher2.setValue("FUZZYMATCH");
ObjectParameter threshold2 = new ObjectParameter();
threshold2.setName("Threshold_2");
threshold2.setValue("0.6");
ObjectParameter maxResults2 = new ObjectParameter();
maxResults2.setName("MaxResults_2");
maxResults2.setValue("10");
EnumParameter matcher3 = new EnumParameter();
matcher3.setName("Matcher_3");
matcher3.setValue("LEVENSHTEIN");
ObjectParameter threshold3 = new ObjectParameter();
threshold3.setName("Threshold_3");
threshold3.setValue("0.4");
ObjectParameter maxResults3 = new ObjectParameter();
maxResults3.setName("MaxResults_3");
maxResults3.setValue("5");
EnumParameter matcher4 = new EnumParameter();
matcher4.setName("Matcher_4");
matcher4.setValue("TRIGRAM");
ObjectParameter threshold4 = new ObjectParameter();
threshold4.setName("Threshold_4");
threshold4.setValue("0.4");
ObjectParameter maxResults4 = new ObjectParameter();
maxResults4.setName("MaxResults_4");
maxResults4.setValue("5");
EnumParameter matcher5 = new EnumParameter();
matcher5.setName("Matcher_5");
matcher5.setValue("NONE");
ObjectParameter threshold5 = new ObjectParameter();
threshold5.setName("Threshold_5");
threshold5.setValue("0.2");
ObjectParameter maxResults5 = new ObjectParameter();
maxResults5.setName("MaxResults_5");
maxResults5.setValue("0");
List<Parameter> parameters = new ArrayList<>();
parameters.add(speciesAuthorName);
parameters.add(taxaAuthorityFile);
parameters.add(parserName);
parameters.add(activatePreparsingProcessing);
parameters.add(useStemmedGenusAndSpecies);
parameters.add(accuracyVsSpeed);
parameters.add(matcher1);
parameters.add(threshold1);
parameters.add(maxResults1);
parameters.add(matcher2);
parameters.add(threshold2);
parameters.add(maxResults2);
parameters.add(matcher3);
parameters.add(threshold3);
parameters.add(maxResults3);
parameters.add(matcher4);
parameters.add(threshold4);
parameters.add(maxResults4);
parameters.add(matcher5);
parameters.add(threshold5);
parameters.add(maxResults5);
logger.debug("Parameters set: " + parameters);
operator.setOperatorParameters(parameters);
}
@Override
public String getResult(OutputData outputData) {
StringBuilder result = new StringBuilder();
logger.debug("Output: " + outputData);
Resource resource = outputData.getResource();
if (resource.isMap()) {
MapResource mapResource = (MapResource) resource;
for (String key : mapResource.getMap().keySet()) {
logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key));
result.append("Entry: " + key + " = " + mapResource.getMap().get(key));
}
} else {
}
return result.toString();
}
@Override
public boolean isValidResult(OutputData outputData) {
boolean valid;
logger.debug("Output: " + outputData);
Resource resource = outputData.getResource();
if (resource.isMap()) {
MapResource mapResource = (MapResource) resource;
for (String key : mapResource.getMap().keySet()) {
logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key));
}
valid = true;
} else {
valid = false;
}
return valid;
}
}

@ -0,0 +1,287 @@
package org.gcube.portlets.user.dataminermanagertester.server.testconfig;
import java.util.ArrayList;
import java.util.List;
import org.gcube.data.analysis.dataminermanagercl.shared.data.OutputData;
import org.gcube.data.analysis.dataminermanagercl.shared.data.output.MapResource;
import org.gcube.data.analysis.dataminermanagercl.shared.data.output.Resource;
import org.gcube.data.analysis.dataminermanagercl.shared.parameters.EnumParameter;
import org.gcube.data.analysis.dataminermanagercl.shared.parameters.FileParameter;
import org.gcube.data.analysis.dataminermanagercl.shared.parameters.ObjectParameter;
import org.gcube.data.analysis.dataminermanagercl.shared.parameters.Parameter;
import org.gcube.data.analysis.dataminermanagercl.shared.process.Operator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
*
* @author Giancarlo Panichi
*
*
*/
public class CMSY2Test implements DMTest {
private static Logger logger = LoggerFactory.getLogger(CMSY2Test.class);
private static final String id = "org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.CMSY_2";
@Override
public String getId() {
return id;
}
@Override
public void createRequest(Operator operator) {
logger.debug("Create Request");
FileParameter catchFile = new FileParameter();
catchFile.setName("catch_file");
catchFile
.setValue("http://data.d4science.org/R3BDYS91WkRBaVlUQ29LNWFERGs5TTA5U3o3Rmp5R2hHbWJQNStIS0N6Yz0");
ObjectParameter region = new ObjectParameter();
region.setName("Region");
region.setValue("Mediterranean");
ObjectParameter subRegion = new ObjectParameter();
subRegion.setName("Subregion");
subRegion.setValue("Adriatic Sea");
ObjectParameter stock = new ObjectParameter();
stock.setName("Stock");
stock.setValue("Athe_boy_AD");
ObjectParameter group = new ObjectParameter();
group.setName("Group");
group.setValue("Plankton feeders");
ObjectParameter name = new ObjectParameter();
name.setName("Name");
name.setValue("Sand smelt in Adriatic Sea");
ObjectParameter englishName = new ObjectParameter();
englishName.setName("EnglishName");
englishName.setValue("Big scale sand smelt");
ObjectParameter scientificName = new ObjectParameter();
scientificName.setName("ScientificName");
scientificName.setValue("Atherina boyeri");
ObjectParameter source = new ObjectParameter();
source.setName("Source");
source.setValue("-");
ObjectParameter minOfYear = new ObjectParameter();
minOfYear.setName("MinOfYear");
minOfYear.setValue("1970");
ObjectParameter maxOfYear = new ObjectParameter();
maxOfYear.setName("MaxOfYear");
maxOfYear.setValue("2014");
ObjectParameter startYear = new ObjectParameter();
startYear.setName("StartYear");
startYear.setValue("1970");
ObjectParameter endYear = new ObjectParameter();
endYear.setName("EndYear");
endYear.setValue("2014");
ObjectParameter flim = new ObjectParameter();
flim.setName("Flim");
flim.setValue("NA");
ObjectParameter fpa = new ObjectParameter();
fpa.setName("Fpa");
fpa.setValue("NA");
ObjectParameter blim = new ObjectParameter();
blim.setName("Blim");
blim.setValue("NA");
ObjectParameter bpa = new ObjectParameter();
bpa.setName("Bpa");
bpa.setValue("NA");
ObjectParameter bmsy = new ObjectParameter();
bmsy.setName("Bmsy");
bmsy.setValue("NA");
ObjectParameter fmsy = new ObjectParameter();
fmsy.setName("FMSY");
fmsy.setValue("NA");
ObjectParameter msy = new ObjectParameter();
msy.setName("MSY");
msy.setValue("NA");
ObjectParameter msybtrigger = new ObjectParameter();
msybtrigger.setName("MSYBtrigger");
msybtrigger.setValue("NA");
ObjectParameter b40 = new ObjectParameter();
b40.setName("B40");
b40.setValue("NA");
ObjectParameter m = new ObjectParameter();
m.setName("M");
m.setValue("NA");
ObjectParameter fofl = new ObjectParameter();
fofl.setName("Fofl");
fofl.setValue("NA");
ObjectParameter last_F = new ObjectParameter();
last_F.setName("last_F");
last_F.setValue("NA");
EnumParameter resilience=new EnumParameter();
resilience.setName("Resilience");
resilience.setValue("Medium");
ObjectParameter rLow = new ObjectParameter();
rLow.setName("r.low");
rLow.setValue("NA");
ObjectParameter rHi = new ObjectParameter();
rHi.setName("r.hi");
rHi.setValue("NA");
ObjectParameter stbLow = new ObjectParameter();
stbLow.setName("stb.low");
stbLow.setValue("0.2");
ObjectParameter stbHi = new ObjectParameter();
stbHi.setName("stb.hi");
stbHi.setValue("0.6");
ObjectParameter intYr = new ObjectParameter();
intYr.setName("int.yr");
intYr.setValue("NA");
ObjectParameter intbLow = new ObjectParameter();
intbLow.setName("intb.low");
intbLow.setValue("NA");
ObjectParameter intbHi = new ObjectParameter();
intbHi.setName("intb.hi");
intbHi.setValue("NA");
ObjectParameter endbLow = new ObjectParameter();
endbLow.setName("endb.low");
endbLow.setValue("0.01");
ObjectParameter endbHi = new ObjectParameter();
endbHi.setName("endb.hi");
endbHi.setValue("0.4");
ObjectParameter qStart = new ObjectParameter();
qStart.setName("q.start");
qStart.setValue("NA");
ObjectParameter qEnd = new ObjectParameter();
qEnd.setName("q.end");
qEnd.setValue("NA");
EnumParameter btype=new EnumParameter();
btype.setName("btype");
btype.setValue("None");
ObjectParameter forceCmsy = new ObjectParameter();
forceCmsy.setName("force.cmsy");
forceCmsy.setValue("false");
ObjectParameter comment = new ObjectParameter();
comment.setName("Comment");
comment.setValue("landings");
List<Parameter> parameters = new ArrayList<>();
parameters.add(catchFile);
parameters.add(region);
parameters.add(subRegion);
parameters.add(stock);
parameters.add(group);
parameters.add(name);
parameters.add(englishName);
parameters.add(scientificName);
parameters.add(source);
parameters.add(minOfYear);
parameters.add(maxOfYear);
parameters.add(startYear);
parameters.add(endYear);
parameters.add(flim);
parameters.add(fpa);
parameters.add(blim);
parameters.add(bpa);
parameters.add(bmsy);
parameters.add(fmsy);
parameters.add(msy);
parameters.add(msybtrigger);
parameters.add(b40);
parameters.add(m);
parameters.add(fofl);
parameters.add(last_F);
parameters.add(resilience);
parameters.add(rLow);
parameters.add(rHi);
parameters.add(stbLow);
parameters.add(stbHi);
parameters.add(intYr);
parameters.add(intbLow);
parameters.add(intbHi);
parameters.add(endbLow);
parameters.add(endbHi);
parameters.add(qStart);
parameters.add(qEnd);
parameters.add(btype);
parameters.add(forceCmsy);
parameters.add(comment);
logger.debug("Parameters set: " + parameters);
operator.setOperatorParameters(parameters);
}
@Override
public String getResult(OutputData outputData) {
StringBuilder result=new StringBuilder();
logger.debug("Output: " + outputData);
Resource resource = outputData.getResource();
if (resource.isMap()) {
MapResource mapResource = (MapResource) resource;
for (String key : mapResource.getMap().keySet()) {
logger.debug("Entry: " + key + " = "
+ mapResource.getMap().get(key));
result.append("Entry: " + key + " = "
+ mapResource.getMap().get(key));
}
} else {
}
return result.toString();
}
@Override
public boolean isValidResult(OutputData outputData) {
boolean valid;
logger.debug("Output: " + outputData);
Resource resource = outputData.getResource();
if (resource.isMap()) {
MapResource mapResource = (MapResource) resource;
for (String key : mapResource.getMap().keySet()) {
logger.debug("Entry: " + key + " = "
+ mapResource.getMap().get(key));
}
valid=true;
} else {
valid=false;
}
return valid;
}
}

@ -0,0 +1,107 @@
package org.gcube.portlets.user.dataminermanagertester.server.testconfig;
import java.util.ArrayList;
import java.util.List;
import org.gcube.data.analysis.dataminermanagercl.shared.data.OutputData;
import org.gcube.data.analysis.dataminermanagercl.shared.data.output.MapResource;
import org.gcube.data.analysis.dataminermanagercl.shared.data.output.Resource;
import org.gcube.data.analysis.dataminermanagercl.shared.parameters.ObjectParameter;
import org.gcube.data.analysis.dataminermanagercl.shared.parameters.Parameter;
import org.gcube.data.analysis.dataminermanagercl.shared.parameters.TabularParameter;
import org.gcube.data.analysis.dataminermanagercl.shared.process.Operator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
*
* @author Giancarlo Panichi
*
*
*/
public class CSquareColumnCreatorTest implements DMTest {
private static Logger logger = LoggerFactory.getLogger(CSquareColumnCreatorTest.class);
private static final String id = "org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.CSQUARE_COLUMN_CREATOR";
@Override
public String getId() {
return id;
}
@Override
public void createRequest(Operator operator) {
logger.debug("Create Request");
TabularParameter occurencePointsTable = new TabularParameter();
occurencePointsTable.setName("InputTable");
occurencePointsTable
.setValue("http://goo.gl/sdlD5a");
ObjectParameter longitude = new ObjectParameter();
longitude.setName("Longitude_Column");
longitude.setValue("decimallongitude");
ObjectParameter latitude = new ObjectParameter();
latitude.setName("Latitude_Column");
latitude.setValue("decimallatitude");
ObjectParameter cSquareResolution = new ObjectParameter();
cSquareResolution.setName("CSquare_Resolution");
cSquareResolution.setValue("0.1");
ObjectParameter outputTableName = new ObjectParameter();
outputTableName.setName("OutputTableName");
outputTableName.setValue("wps_csquare_column");
List<Parameter> parameters = new ArrayList<>();
parameters.add(occurencePointsTable);
parameters.add(longitude);
parameters.add(latitude);
parameters.add(cSquareResolution);
parameters.add(outputTableName);
logger.debug("Parameters set: " + parameters);
operator.setOperatorParameters(parameters);
}
@Override
public String getResult(OutputData outputData) {
StringBuilder result = new StringBuilder();
logger.debug("Output: " + outputData);
Resource resource = outputData.getResource();
if (resource.isMap()) {
MapResource mapResource = (MapResource) resource;
for (String key : mapResource.getMap().keySet()) {
logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key));
result.append("Entry: " + key + " = " + mapResource.getMap().get(key));
}
} else {
}
return result.toString();
}
@Override
public boolean isValidResult(OutputData outputData) {
boolean valid;
logger.debug("Output: " + outputData);
Resource resource = outputData.getResource();
if (resource.isMap()) {
MapResource mapResource = (MapResource) resource;
for (String key : mapResource.getMap().keySet()) {
logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key));
}
valid = true;
} else {
valid = false;
}
return valid;
}
}

@ -0,0 +1,176 @@
package org.gcube.portlets.user.dataminermanagertester.server.testconfig;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.gcube.data.analysis.dataminermanagercl.shared.data.OutputData;
import org.gcube.data.analysis.dataminermanagercl.shared.data.output.FileResource;
import org.gcube.data.analysis.dataminermanagercl.shared.data.output.ImageResource;
import org.gcube.data.analysis.dataminermanagercl.shared.data.output.MapResource;
import org.gcube.data.analysis.dataminermanagercl.shared.data.output.Resource;
import org.gcube.data.analysis.dataminermanagercl.shared.data.output.TableResource;
import org.gcube.data.analysis.dataminermanagercl.shared.parameters.ColumnListParameter;
import org.gcube.data.analysis.dataminermanagercl.shared.parameters.ObjectParameter;
import org.gcube.data.analysis.dataminermanagercl.shared.parameters.Parameter;
import org.gcube.data.analysis.dataminermanagercl.shared.parameters.TabularParameter;
import org.gcube.data.analysis.dataminermanagercl.shared.process.Operator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
*
* @author Giancarlo Panichi
*
*
*/
public class DBScanTest implements DMTest {
private static Logger logger = LoggerFactory.getLogger(DBScanTest.class);
private static final String id = "org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.clusterers.DBSCAN";
@Override
public String getId() {
return id;
}
@Override
public void createRequest(Operator operator) {
logger.debug("Create Request");
TabularParameter occurencePointsTable = new TabularParameter();
occurencePointsTable.setName("OccurrencePointsTable");
occurencePointsTable
.setValue("http://data.d4science.org/YmRKWDU4Y0RJT2hSLzcybU4zRmJoTEg2YTBMWlRZVUpHbWJQNStIS0N6Yz0");
ColumnListParameter columnListParameter = new ColumnListParameter();
columnListParameter.setName("FeaturesColumnNames");
columnListParameter.setValue("depthmean|sstmnmax|salinitymin");
ObjectParameter occurencePointsClusterLabel = new ObjectParameter();
occurencePointsClusterLabel.setName("OccurrencePointsClusterLabel");
occurencePointsClusterLabel.setValue("Test");
ObjectParameter epsilon = new ObjectParameter();
epsilon.setName("epsilon");
epsilon.setValue("10");
ObjectParameter minPoints = new ObjectParameter();
minPoints.setName("min_points");
minPoints.setValue("1");
List<Parameter> parameters = new ArrayList<>();
parameters.add(occurencePointsTable);
parameters.add(columnListParameter);
parameters.add(occurencePointsClusterLabel);
parameters.add(epsilon);
parameters.add(minPoints);
logger.debug("Parameters set: " + parameters);
operator.setOperatorParameters(parameters);
}
@Override
public String getResult(OutputData outputData) {
StringBuilder result = new StringBuilder();
logger.debug("Output: " + outputData);
Resource resource = outputData.getResource();
if (resource.isMap()) {
MapResource mapResource = (MapResource) resource;
for (String key : mapResource.getMap().keySet()) {
Resource res = mapResource.getMap().get(key);
switch (res.getResourceType()) {
case FILE:
FileResource fileResource = (FileResource) res;
String fileName = retrieveFileName(fileResource.getUrl());
logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key) + ", FileName=" + fileName);
result.append("Entry: " + key + " = " + mapResource.getMap().get(key) + ", FileName=" + fileName);
break;
case IMAGE:
ImageResource imageResource = (ImageResource) res;
String imageName = retrieveFileName(imageResource.getLink());
logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key) + ", ImageName=" + imageName);
result.append("Entry: " + key + " = " + mapResource.getMap().get(key) + ", ImageName=" + imageName);
break;
case MAP:
logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key));
result.append("Entry: " + key + " = " + mapResource.getMap().get(key));
break;
case OBJECT:
logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key));
result.append("Entry: " + key + " = " + mapResource.getMap().get(key));
break;
case TABULAR:
TableResource tableResource = (TableResource) res;
String tableName = retrieveFileName(tableResource.getResourceId());
logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key) + ", TableName=" + tableName);
result.append("Entry: " + key + " = " + mapResource.getMap().get(key) + ", TableName=" + tableName);
break;
default:
logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key));
result.append("Entry: " + key + " = " + mapResource.getMap().get(key));
break;
}
}
} else {
}
return result.toString();
}
@Override
public boolean isValidResult(OutputData outputData) {
boolean valid;
logger.debug("Output: " + outputData);
Resource resource = outputData.getResource();
if (resource.isMap()) {
MapResource mapResource = (MapResource) resource;
for (String key : mapResource.getMap().keySet()) {
logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key));
}
valid = true;
} else {
valid = false;
}
return valid;
}
private String retrieveFileName(String url) {
String fileName = "output";
try {
URL urlObj;
urlObj = new URL(url);
HttpURLConnection connection = (HttpURLConnection) urlObj.openConnection();
connection.setRequestMethod("GET");
String contentDisposition = connection.getHeaderField("Content-Disposition");
Pattern regex = Pattern.compile("(?<=filename=\").*?(?=\")");
Matcher regexMatcher = regex.matcher(contentDisposition);
if (regexMatcher.find()) {
fileName = regexMatcher.group();
}
if (fileName == null || fileName.isEmpty()) {
fileName = "output";
}
return fileName;
} catch (Throwable e) {
logger.error("Error retrieving file name: " + e.getLocalizedMessage(), e);
return fileName;
}
}
}

@ -0,0 +1,22 @@
package org.gcube.portlets.user.dataminermanagertester.server.testconfig;
import org.gcube.data.analysis.dataminermanagercl.shared.data.OutputData;
import org.gcube.data.analysis.dataminermanagercl.shared.process.Operator;
/**
*
* @author Giancarlo Panichi
*
*
*/
public interface DMTest {
public String getId();
public void createRequest(Operator operator);
public boolean isValidResult(OutputData outputData);
public String getResult(OutputData outputData);
}

@ -0,0 +1,122 @@
package org.gcube.portlets.user.dataminermanagertester.server.testconfig;
import java.util.ArrayList;
import java.util.List;
import org.gcube.data.analysis.dataminermanagercl.shared.data.OutputData;
import org.gcube.data.analysis.dataminermanagercl.shared.data.output.MapResource;
import org.gcube.data.analysis.dataminermanagercl.shared.data.output.Resource;
import org.gcube.data.analysis.dataminermanagercl.shared.parameters.ColumnListParameter;
import org.gcube.data.analysis.dataminermanagercl.shared.parameters.ColumnParameter;
import org.gcube.data.analysis.dataminermanagercl.shared.parameters.ListParameter;
import org.gcube.data.analysis.dataminermanagercl.shared.parameters.ObjectParameter;
import org.gcube.data.analysis.dataminermanagercl.shared.parameters.Parameter;
import org.gcube.data.analysis.dataminermanagercl.shared.parameters.TabularParameter;
import org.gcube.data.analysis.dataminermanagercl.shared.process.Operator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
*
* @author Giancarlo Panichi
*
*
*/
public class FeedForwardAnnTest implements DMTest {
private static Logger logger = LoggerFactory.getLogger(FeedForwardAnnTest.class);
private static final String id = "org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.modellers.FEED_FORWARD_ANN";
@Override
public String getId() {
return id;
}
@Override
public void createRequest(Operator operator) {
TabularParameter trainingDataSet = new TabularParameter();
trainingDataSet.setName("TrainingDataSet");
trainingDataSet.setValue("http://data.d4science.org/K0ZoUlVDNW1hR0hDZWZucS9UQkJmUVRTeWRuRVBGUC9HbWJQNStIS0N6Yz0");
ColumnListParameter trainingColumns = new ColumnListParameter();
trainingColumns.setName("TrainingColumns");
trainingColumns.setValue("depthmin|depthmax|depthmean|depthsd");
ColumnParameter targetColumn = new ColumnParameter();
targetColumn.setName("TargetColumn");
targetColumn.setValue("sstanmean");
ListParameter layersNeurons = new ListParameter();
layersNeurons.setName("LayersNeurons");
layersNeurons.setValue("20");
ObjectParameter reference = new ObjectParameter();
reference.setName("Reference");
reference.setValue("1");
ObjectParameter learningThreshold = new ObjectParameter();
learningThreshold.setName("LearningThreshold");
learningThreshold.setValue("0.0001");
ObjectParameter maxIterations = new ObjectParameter();
maxIterations.setName("MaxIterations");
maxIterations.setValue("10");
ObjectParameter modelName = new ObjectParameter();
modelName.setName("ModelName");
modelName.setValue("trained_network");
List<Parameter> parameters = new ArrayList<>();
parameters.add(trainingDataSet);
parameters.add(trainingColumns);
parameters.add(targetColumn);
parameters.add(layersNeurons);
parameters.add(reference);
parameters.add(learningThreshold);
parameters.add(maxIterations);
parameters.add(modelName);
operator.setOperatorParameters(parameters);
}
@Override
public String getResult(OutputData outputData) {
StringBuilder result=new StringBuilder();
logger.debug("Output: " + outputData);
Resource resource = outputData.getResource();
if (resource.isMap()) {
MapResource mapResource = (MapResource) resource;
for (String key : mapResource.getMap().keySet()) {
logger.debug("Entry: " + key + " = "
+ mapResource.getMap().get(key));
result.append("Entry: " + key + " = "
+ mapResource.getMap().get(key));
}
} else {
}
return result.toString();
}
@Override
public boolean isValidResult(OutputData outputData) {
boolean valid;
logger.debug("Output: " + outputData);
Resource resource = outputData.getResource();
if (resource.isMap()) {
MapResource mapResource = (MapResource) resource;
for (String key : mapResource.getMap().keySet()) {
logger.debug("Entry: " + key + " = "
+ mapResource.getMap().get(key));
}
valid=true;
} else {
valid=false;
}
return valid;
}
}

@ -0,0 +1,171 @@
package org.gcube.portlets.user.dataminermanagertester.server.testconfig;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.gcube.data.analysis.dataminermanagercl.shared.data.OutputData;
import org.gcube.data.analysis.dataminermanagercl.shared.data.output.FileResource;
import org.gcube.data.analysis.dataminermanagercl.shared.data.output.ImageResource;
import org.gcube.data.analysis.dataminermanagercl.shared.data.output.MapResource;
import org.gcube.data.analysis.dataminermanagercl.shared.data.output.Resource;
import org.gcube.data.analysis.dataminermanagercl.shared.data.output.TableResource;
import org.gcube.data.analysis.dataminermanagercl.shared.parameters.ColumnListParameter;
import org.gcube.data.analysis.dataminermanagercl.shared.parameters.ObjectParameter;
import org.gcube.data.analysis.dataminermanagercl.shared.parameters.Parameter;
import org.gcube.data.analysis.dataminermanagercl.shared.parameters.TabularParameter;
import org.gcube.data.analysis.dataminermanagercl.shared.process.Operator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
*
* @author Giancarlo Panichi
*
*
*/
public class GenericChartsTest implements DMTest {
private static Logger logger = LoggerFactory.getLogger(GenericChartsTest.class);
private static final String id = "org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.GENERIC_CHARTS";
@Override
public String getId() {
return id;
}
@Override
public void createRequest(Operator operator) {
logger.debug("Create Request");
TabularParameter inputTableParameter = new TabularParameter();
inputTableParameter.setName("InputTable");
inputTableParameter.setValue(
"https://data.d4science.org/shub/E_N0VSZmRHUkJQckdPOS9RR1NvajdvbUhMTHlRV2FBdGhzNTBLNEZWa21LbG9oV0hFMDUwTHNtZFhGSmh0SkRneQ==");
ObjectParameter topElementsNumberParameter = new ObjectParameter();
topElementsNumberParameter.setName("TopElementsNumber");
topElementsNumberParameter.setValue("10");
ColumnListParameter attributesParameter = new ColumnListParameter();
attributesParameter.setName("Attributes");
attributesParameter.setValue("x|y");
ColumnListParameter quantitiesParameter = new ColumnListParameter();
quantitiesParameter.setName("Quantities");
quantitiesParameter.setValue("fvalue");
List<Parameter> parameters = new ArrayList<>();
parameters.add(inputTableParameter);
parameters.add(topElementsNumberParameter);
parameters.add(attributesParameter);
parameters.add(quantitiesParameter);
logger.debug("Parameters set: " + parameters);
operator.setOperatorParameters(parameters);
}
@Override
public String getResult(OutputData outputData) {
StringBuilder result = new StringBuilder();
logger.debug("Output: " + outputData);
Resource resource = outputData.getResource();
if (resource.isMap()) {
MapResource mapResource = (MapResource) resource;
for (String key : mapResource.getMap().keySet()) {
Resource res = mapResource.getMap().get(key);
switch (res.getResourceType()) {
case FILE:
FileResource fileResource = (FileResource) res;
String fileName = retrieveFileName(fileResource.getUrl());
logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key) + ", FileName=" + fileName);
result.append("Entry: " + key + " = " + mapResource.getMap().get(key) + ", FileName=" + fileName);
break;
case IMAGE:
ImageResource imageResource = (ImageResource) res;
String imageName = retrieveFileName(imageResource.getLink());
logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key) + ", ImageName=" + imageName);
result.append("Entry: " + key + " = " + mapResource.getMap().get(key) + ", ImageName=" + imageName);
break;
case MAP:
logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key));
result.append("Entry: " + key + " = " + mapResource.getMap().get(key));
break;
case OBJECT:
logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key));
result.append("Entry: " + key + " = " + mapResource.getMap().get(key));
break;
case TABULAR:
TableResource tableResource = (TableResource) res;
String tableName = retrieveFileName(tableResource.getResourceId());
logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key) + ", TableName=" + tableName);
result.append("Entry: " + key + " = " + mapResource.getMap().get(key) + ", TableName=" + tableName);
break;
default:
logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key));
result.append("Entry: " + key + " = " + mapResource.getMap().get(key));
break;
}
}
} else {
}
return result.toString();
}
@Override
public boolean isValidResult(OutputData outputData) {
boolean valid;
logger.debug("Output: " + outputData);
Resource resource = outputData.getResource();
if (resource.isMap()) {
MapResource mapResource = (MapResource) resource;
for (String key : mapResource.getMap().keySet()) {
logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key));
}
valid = true;
} else {
valid = false;
}
return valid;
}
private String retrieveFileName(String url) {
String fileName = "output";
try {
URL urlObj;
urlObj = new URL(url);
HttpURLConnection connection = (HttpURLConnection) urlObj.openConnection();
connection.setRequestMethod("GET");
String contentDisposition = connection.getHeaderField("Content-Disposition");
Pattern regex = Pattern.compile("(?<=filename=\").*?(?=\")");
Matcher regexMatcher = regex.matcher(contentDisposition);
if (regexMatcher.find()) {
fileName = regexMatcher.group();
}
if (fileName == null || fileName.isEmpty()) {
fileName = "output";
}
return fileName;
} catch (Throwable e) {
logger.error("Error retrieving file name: " + e.getLocalizedMessage(), e);
return fileName;
}
}
}

@ -0,0 +1,88 @@
package org.gcube.portlets.user.dataminermanagertester.server.testconfig;
import java.util.ArrayList;
import java.util.List;
import org.gcube.data.analysis.dataminermanagercl.shared.data.OutputData;
import org.gcube.data.analysis.dataminermanagercl.shared.data.output.MapResource;
import org.gcube.data.analysis.dataminermanagercl.shared.data.output.Resource;
import org.gcube.data.analysis.dataminermanagercl.shared.parameters.ObjectParameter;
import org.gcube.data.analysis.dataminermanagercl.shared.parameters.Parameter;
import org.gcube.data.analysis.dataminermanagercl.shared.process.Operator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
*
* @author Giancarlo Panichi
*
*
*/
public class ListDBNameTest implements DMTest {
private static Logger logger = LoggerFactory.getLogger(ListDBNameTest.class);
private static final String id = "org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.LISTDBNAMES";
@Override
public String getId() {
return id;
}
@Override
public void createRequest(Operator operator) {
logger.debug("Create Request");
ObjectParameter maxNumber = new ObjectParameter();
maxNumber.setName("MaxNumber");
maxNumber.setValue("-1");
List<Parameter> parameters = new ArrayList<>();
parameters.add(maxNumber);
logger.debug("Parameters set: " + parameters);
operator.setOperatorParameters(parameters);
}
@Override
public String getResult(OutputData outputData) {
StringBuilder result=new StringBuilder();
logger.debug("Output: " + outputData);
Resource resource = outputData.getResource();
if (resource.isMap()) {
MapResource mapResource = (MapResource) resource;
for (String key : mapResource.getMap().keySet()) {
logger.debug("Entry: " + key + " = "
+ mapResource.getMap().get(key));
result.append("Entry: " + key + " = "
+ mapResource.getMap().get(key));
}
} else {
}
return result.toString();
}
@Override
public boolean isValidResult(OutputData outputData) {
boolean valid;
logger.debug("Output: " + outputData);
Resource resource = outputData.getResource();
if (resource.isMap()) {
MapResource mapResource = (MapResource) resource;
for (String key : mapResource.getMap().keySet()) {
logger.debug("Entry: " + key + " = "
+ mapResource.getMap().get(key));
}
valid=true;
} else {
valid=false;
}
return valid;
}
}

@ -0,0 +1,84 @@
package org.gcube.portlets.user.dataminermanagertester.server.testconfig;
import java.util.ArrayList;
import java.util.List;
import org.gcube.data.analysis.dataminermanagercl.shared.data.OutputData;
import org.gcube.data.analysis.dataminermanagercl.shared.data.output.MapResource;
import org.gcube.data.analysis.dataminermanagercl.shared.data.output.Resource;
import org.gcube.data.analysis.dataminermanagercl.shared.parameters.FileParameter;
import org.gcube.data.analysis.dataminermanagercl.shared.parameters.Parameter;
import org.gcube.data.analysis.dataminermanagercl.shared.process.Operator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
*
* @author Giancarlo Panichi
*
*
*/
public class OpenMeshRecostructorGPUTest implements DMTest {
private static Logger logger = LoggerFactory.getLogger(OpenMeshRecostructorGPUTest.class);
private static final String id = "org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.OPEN_MESH_RECONSTRUCTOR_GPU";
@Override
public String getId() {
return id;
}
@Override
public void createRequest(Operator operator) {
logger.debug("Create Request");
FileParameter inputZipFile = new FileParameter();
inputZipFile.setName("InputZipFile");
inputZipFile
.setValue("https://data.d4science.org/shub/E_ZWNlZW1VbzI1NGdyRTRrbWtGZXcvdU52cG1RVnd2UDZrdGp1cDFodmZWRzFtQVlydVNHV0NuVis1VVRFT0FWZg==");
List<Parameter> parameters = new ArrayList<>();
parameters.add(inputZipFile);
logger.debug("Parameters set: " + parameters);
operator.setOperatorParameters(parameters);
}
@Override
public String getResult(OutputData outputData) {
StringBuilder result = new StringBuilder();
logger.debug("Output: " + outputData);
Resource resource = outputData.getResource();
if (resource.isMap()) {
MapResource mapResource = (MapResource) resource;
for (String key : mapResource.getMap().keySet()) {
logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key));
result.append("Entry: " + key + " = " + mapResource.getMap().get(key));
}
} else {
}
return result.toString();
}
@Override
public boolean isValidResult(OutputData outputData) {
boolean valid;
logger.debug("Output: " + outputData);
Resource resource = outputData.getResource();
if (resource.isMap()) {
MapResource mapResource = (MapResource) resource;
for (String key : mapResource.getMap().keySet()) {
logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key));
}
valid = true;
} else {
valid = false;
}
return valid;
}
}

@ -0,0 +1,187 @@
package org.gcube.portlets.user.dataminermanagertester.server.testconfig;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.gcube.data.analysis.dataminermanagercl.shared.data.OutputData;
import org.gcube.data.analysis.dataminermanagercl.shared.data.output.FileResource;
import org.gcube.data.analysis.dataminermanagercl.shared.data.output.ImageResource;
import org.gcube.data.analysis.dataminermanagercl.shared.data.output.MapResource;
import org.gcube.data.analysis.dataminermanagercl.shared.data.output.Resource;
import org.gcube.data.analysis.dataminermanagercl.shared.data.output.TableResource;
import org.gcube.data.analysis.dataminermanagercl.shared.parameters.ColumnListParameter;
import org.gcube.data.analysis.dataminermanagercl.shared.parameters.EnumParameter;
import org.gcube.data.analysis.dataminermanagercl.shared.parameters.ObjectParameter;
import org.gcube.data.analysis.dataminermanagercl.shared.parameters.Parameter;
import org.gcube.data.analysis.dataminermanagercl.shared.parameters.TabularParameter;
import org.gcube.data.analysis.dataminermanagercl.shared.process.Operator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
*
* @author Giancarlo Panichi
*
*
*/
public class PolygonsToMapTest implements DMTest {
private static Logger logger = LoggerFactory.getLogger(PolygonsToMapTest.class);
private static final String id = "org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.POLYGONS_TO_MAP";
@Override
public String getId() {
return id;
}
@Override
public void createRequest(Operator operator) {
logger.debug("Create Request");
EnumParameter publicationLevelParameter = new EnumParameter();
publicationLevelParameter.setName("PublicationLevel");
publicationLevelParameter.setValue("PRIVATE");
ObjectParameter mapNameParameter = new ObjectParameter();
mapNameParameter.setName("MapName");
mapNameParameter.setValue("Example polygon map generated for Test");
TabularParameter inputTableParameter = new TabularParameter();
inputTableParameter.setName("InputTable");
inputTableParameter.setValue(
"https://data.d4science.org/shub/E_TWZKc3hKejZYREZYSWZlVnBsdzlEbkNhdXIxSHUvYlpNTkxUSGx2cXV3TzVHdGJ0M1RQZEpWUFkyc3haNW04Yw==");
ColumnListParameter xDimensionParameter = new ColumnListParameter();
xDimensionParameter.setName("xDimension");
xDimensionParameter.setValue("centerlong");
ColumnListParameter yDimensionParameter = new ColumnListParameter();
yDimensionParameter.setName("yDimension");
yDimensionParameter.setValue("centerlat");
ColumnListParameter infoParameter = new ColumnListParameter();
infoParameter.setName("Info");
infoParameter.setValue("faoaream");
ObjectParameter resolutionParameter=new ObjectParameter();
resolutionParameter.setName("Resolution");
resolutionParameter.setValue("0.5");
List<Parameter> parameters = new ArrayList<>();
parameters.add(publicationLevelParameter);
parameters.add(mapNameParameter);
parameters.add(inputTableParameter);
parameters.add(xDimensionParameter);
parameters.add(yDimensionParameter);
parameters.add(infoParameter);
parameters.add(resolutionParameter);
logger.debug("Parameters set: " + parameters);
operator.setOperatorParameters(parameters);
}
@Override
public String getResult(OutputData outputData) {
StringBuilder result = new StringBuilder();
logger.debug("Output: " + outputData);
Resource resource = outputData.getResource();
if (resource.isMap()) {
MapResource mapResource = (MapResource) resource;
for (String key : mapResource.getMap().keySet()) {
Resource res = mapResource.getMap().get(key);
switch (res.getResourceType()) {
case FILE:
FileResource fileResource = (FileResource) res;
String fileName = retrieveFileName(fileResource.getUrl());
logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key) + ", FileName=" + fileName);
result.append("Entry: " + key + " = " + mapResource.getMap().get(key) + ", FileName=" + fileName);
break;
case IMAGE:
ImageResource imageResource = (ImageResource) res;
String imageName = retrieveFileName(imageResource.getLink());
logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key) + ", ImageName=" + imageName);
result.append("Entry: " + key + " = " + mapResource.getMap().get(key) + ", ImageName=" + imageName);
break;
case MAP:
logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key));
result.append("Entry: " + key + " = " + mapResource.getMap().get(key));
break;
case OBJECT:
logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key));
result.append("Entry: " + key + " = " + mapResource.getMap().get(key));
break;
case TABULAR:
TableResource tableResource = (TableResource) res;
String tableName = retrieveFileName(tableResource.getResourceId());
logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key) + ", TableName=" + tableName);
result.append("Entry: " + key + " = " + mapResource.getMap().get(key) + ", TableName=" + tableName);
break;
default:
logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key));
result.append("Entry: " + key + " = " + mapResource.getMap().get(key));
break;
}
}
} else {
}
return result.toString();
}
@Override
public boolean isValidResult(OutputData outputData) {
boolean valid;
logger.debug("Output: " + outputData);
Resource resource = outputData.getResource();
if (resource.isMap()) {
MapResource mapResource = (MapResource) resource;
for (String key : mapResource.getMap().keySet()) {
logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key));
}
valid = true;
} else {
valid = false;
}
return valid;
}
private String retrieveFileName(String url) {
String fileName = "output";
try {
URL urlObj;
urlObj = new URL(url);
HttpURLConnection connection = (HttpURLConnection) urlObj.openConnection();
connection.setRequestMethod("GET");
String contentDisposition = connection.getHeaderField("Content-Disposition");
Pattern regex = Pattern.compile("(?<=filename=\").*?(?=\")");
Matcher regexMatcher = regex.matcher(contentDisposition);
if (regexMatcher.find()) {
fileName = regexMatcher.group();
}
if (fileName == null || fileName.isEmpty()) {
fileName = "output";
}
return fileName;
} catch (Throwable e) {
logger.error("Error retrieving file name: " + e.getLocalizedMessage(), e);
return fileName;
}
}
}

@ -0,0 +1,127 @@
package org.gcube.portlets.user.dataminermanagertester.server.testconfig;
import java.util.ArrayList;
import java.util.List;
import org.gcube.data.analysis.dataminermanagercl.shared.data.OutputData;
import org.gcube.data.analysis.dataminermanagercl.shared.data.output.MapResource;
import org.gcube.data.analysis.dataminermanagercl.shared.data.output.Resource;
import org.gcube.data.analysis.dataminermanagercl.shared.parameters.FileParameter;
import org.gcube.data.analysis.dataminermanagercl.shared.parameters.ObjectParameter;
import org.gcube.data.analysis.dataminermanagercl.shared.parameters.Parameter;
import org.gcube.data.analysis.dataminermanagercl.shared.process.Operator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
*
* @author Giancarlo Panichi
*
*
*/
public class RasterDataPublisherTest implements DMTest {
private static Logger logger = LoggerFactory.getLogger(RasterDataPublisherTest.class);
private static final String id = "org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.RASTER_DATA_PUBLISHER";
@Override
public String getId() {
return id;
}
@Override
public void createRequest(Operator operator) {
logger.debug("Create Request");
ObjectParameter publicationLevel = new ObjectParameter();
publicationLevel.setName("PublicationLevel");
publicationLevel.setValue("PUBLIC");
ObjectParameter datasetAbstract = new ObjectParameter();
datasetAbstract.setName("DatasetAbstract");
datasetAbstract.setValue("Abstract");
ObjectParameter datasetTitle = new ObjectParameter();
datasetTitle.setName("DatasetTitle");
datasetTitle.setValue("Generic Raster Layer Test3");
FileParameter rasterFile=new FileParameter();
rasterFile.setName("RasterFile");
rasterFile.setValue("http://data.d4science.org/QTVNbXp5cmI0MG52TTE0K2paNzhXZWlCTHhweU8rUCtHbWJQNStIS0N6Yz0");
ObjectParameter innerLayerName = new ObjectParameter();
innerLayerName.setName("InnerLayerName");
innerLayerName.setValue("analyzed_field");
ObjectParameter fileNameOnInfra = new ObjectParameter();
fileNameOnInfra.setName("FileNameOnInfra");
fileNameOnInfra.setValue("raster-1465493226242.nc");
ObjectParameter topics = new ObjectParameter();
topics.setName("Topics");
topics.setValue("analyzed_field");
ObjectParameter spatialResolution = new ObjectParameter();
spatialResolution.setName("SpatialResolution");
spatialResolution.setValue("-1");
List<Parameter> parameters = new ArrayList<>();
parameters.add(publicationLevel);
parameters.add(datasetAbstract);
parameters.add(datasetTitle);
parameters.add(rasterFile);
parameters.add(innerLayerName);
parameters.add(fileNameOnInfra);
parameters.add(topics);
parameters.add(spatialResolution);
logger.debug("Parameters set: " + parameters);
operator.setOperatorParameters(parameters);
}
@Override
public String getResult(OutputData outputData) {
StringBuilder result=new StringBuilder();
logger.debug("Output: " + outputData);
Resource resource = outputData.getResource();
if (resource.isMap()) {
MapResource mapResource = (MapResource) resource;
for (String key : mapResource.getMap().keySet()) {
logger.debug("Entry: " + key + " = "
+ mapResource.getMap().get(key));
result.append("Entry: " + key + " = "
+ mapResource.getMap().get(key));
}
} else {
}
return result.toString();
}
@Override
public boolean isValidResult(OutputData outputData) {
boolean valid;
logger.debug("Output: " + outputData);
Resource resource = outputData.getResource();
if (resource.isMap()) {
MapResource mapResource = (MapResource) resource;
for (String key : mapResource.getMap().keySet()) {
logger.debug("Entry: " + key + " = "
+ mapResource.getMap().get(key));
}
valid=true;
} else {
valid=false;
}
return valid;
}
}

@ -0,0 +1,84 @@
package org.gcube.portlets.user.dataminermanagertester.server.testconfig;
import java.util.ArrayList;
import java.util.List;
import org.gcube.data.analysis.dataminermanagercl.shared.data.OutputData;
import org.gcube.data.analysis.dataminermanagercl.shared.data.output.MapResource;
import org.gcube.data.analysis.dataminermanagercl.shared.data.output.Resource;
import org.gcube.data.analysis.dataminermanagercl.shared.parameters.FileParameter;
import org.gcube.data.analysis.dataminermanagercl.shared.parameters.Parameter;
import org.gcube.data.analysis.dataminermanagercl.shared.process.Operator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
*
* @author Giancarlo Panichi
*
*
*/
public class WebAppPublisherTest implements DMTest {
private static Logger logger = LoggerFactory.getLogger(WebAppPublisherTest.class);
private static final String id = "org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.WEB_APP_PUBLISHER";
@Override
public String getId() {
return id;
}
@Override
public void createRequest(Operator operator) {
logger.debug("Create Request");
FileParameter zipFile = new FileParameter();
zipFile.setName("ZipFile");
zipFile.setValue("http://goo.gl/dYQ089");
List<Parameter> parameters = new ArrayList<>();
parameters.add(zipFile);
logger.debug("Parameters set: " + parameters);
operator.setOperatorParameters(parameters);
}
@Override
public String getResult(OutputData outputData) {
StringBuilder result = new StringBuilder();
logger.debug("Output: " + outputData);
Resource resource = outputData.getResource();
if (resource.isMap()) {
MapResource mapResource = (MapResource) resource;
for (String key : mapResource.getMap().keySet()) {
logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key));
result.append("Entry: " + key + " = " + mapResource.getMap().get(key));
}
} else {
}
return result.toString();
}
@Override
public boolean isValidResult(OutputData outputData) {
boolean valid;
logger.debug("Output: " + outputData);
Resource resource = outputData.getResource();
if (resource.isMap()) {
MapResource mapResource = (MapResource) resource;
for (String key : mapResource.getMap().keySet()) {
logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key));
}
valid = true;
} else {
valid = false;
}
return valid;
}
}

@ -0,0 +1,136 @@
package org.gcube.portlets.user.dataminermanagertester.server.testconfig;
import java.util.ArrayList;
import java.util.List;
import org.gcube.data.analysis.dataminermanagercl.shared.data.OutputData;
import org.gcube.data.analysis.dataminermanagercl.shared.data.output.MapResource;
import org.gcube.data.analysis.dataminermanagercl.shared.data.output.Resource;
import org.gcube.data.analysis.dataminermanagercl.shared.parameters.ObjectParameter;
import org.gcube.data.analysis.dataminermanagercl.shared.parameters.Parameter;
import org.gcube.data.analysis.dataminermanagercl.shared.process.Operator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
*
* @author Giancarlo Panichi
*
*
*/
public class XYExtractorTest implements DMTest {
private static Logger logger = LoggerFactory.getLogger(XYExtractorTest.class);
private static final String id = "org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.XYEXTRACTOR";
@Override
public String getId() {
return id;
}
@Override
public void createRequest(Operator operator) {
logger.debug("Create Request");
ObjectParameter outputTableLabel = new ObjectParameter();
outputTableLabel.setName("OutputTableLabel");
outputTableLabel.setValue("wps_xy_extractor");
ObjectParameter layer = new ObjectParameter();
layer.setName("Layer");
layer.setValue("3fb7fd88-33d4-492d-b241-4e61299c44bb");
ObjectParameter yResolution = new ObjectParameter();
yResolution.setName("YResolution");
yResolution.setValue("0.5");
ObjectParameter xResolution = new ObjectParameter();
xResolution.setName("XResolution");
xResolution.setValue("0.5");
ObjectParameter bBox_LowerLeftLong = new ObjectParameter();
bBox_LowerLeftLong.setName("BBox_LowerLeftLong");
bBox_LowerLeftLong.setValue("-50");
ObjectParameter bBox_UpperRightLat = new ObjectParameter();
bBox_UpperRightLat.setName("BBox_UpperRightLat");
bBox_UpperRightLat.setValue("60");
ObjectParameter bBox_LowerLeftLat = new ObjectParameter();
bBox_LowerLeftLat.setName("BBox_LowerLeftLat");
bBox_LowerLeftLat.setValue("-60");
ObjectParameter bBox_UpperRightLong = new ObjectParameter();
bBox_UpperRightLong.setName("BBox_UpperRightLong");
bBox_UpperRightLong.setValue("50");
ObjectParameter z = new ObjectParameter();
z.setName("Z");
z.setValue("0");
ObjectParameter timeIndex = new ObjectParameter();
timeIndex.setName("TimeIndex");
timeIndex.setValue("0");
List<Parameter> parameters = new ArrayList<>();
parameters.add(outputTableLabel);
parameters.add(layer);
parameters.add(yResolution);
parameters.add(xResolution);
parameters.add(bBox_LowerLeftLong);
parameters.add(bBox_UpperRightLat);
parameters.add(bBox_LowerLeftLat);
parameters.add(bBox_UpperRightLong);
parameters.add(z);
parameters.add(timeIndex);
logger.debug("Parameters set: " + parameters);
operator.setOperatorParameters(parameters);
}
@Override
public String getResult(OutputData outputData) {
StringBuilder result=new StringBuilder();
logger.debug("Output: " + outputData);
Resource resource = outputData.getResource();
if (resource.isMap()) {
MapResource mapResource = (MapResource) resource;
for (String key : mapResource.getMap().keySet()) {
logger.debug("Entry: " + key + " = "
+ mapResource.getMap().get(key));
result.append("Entry: " + key + " = "
+ mapResource.getMap().get(key));
}
} else {
}
return result.toString();
}
@Override
public boolean isValidResult(OutputData outputData) {
boolean valid;
logger.debug("Output: " + outputData);
Resource resource = outputData.getResource();
if (resource.isMap()) {
MapResource mapResource = (MapResource) resource;
for (String key : mapResource.getMap().keySet()) {
logger.debug("Entry: " + key + " = "
+ mapResource.getMap().get(key));
}
valid=true;
} else {
valid=false;
}
return valid;
}
}

@ -0,0 +1,75 @@
package org.gcube.portlets.user.dataminermanagertester.shared;
/**
*
* @author Giancarlo Panichi
*
*
*/
public class Constants {
public static final boolean DEBUG_MODE = false;
public static final boolean TEST_ENABLE = false;
public static final String APPLICATION_ID = "org.gcube.portlets.user.dataminermanagertester.portlet.DataMinerManagerTester";
public static final String DATA_MINER_MANAGER_ID = "DataMinerManagerTesterId";
public static final String DATA_MINER_LANG_COOKIE = "DataMinerTesterLangCookie";
public static final String DATA_MINER_LANG = "DataMinerTesterLang";
public static final String DATA_MINER_OPERATOR_ID = "OperatorId";
public static final String TOKEN = "token";
public static final String DEFAULT_USER = "giancarlo.panichi";
public final static String DEFAULT_SCOPE = "/gcube/devNext";
public final static String DEFAULT_TOKEN = "ae1208f0-210d-47c9-9b24-d3f2dfcce05f-98187548";
public static final String DEFAULT_ROLE = "OrganizationMember";
// public final static String DEFAULT_SCOPE = "/gcube/devNext";
// public final static String DEFAULT_SCOPE = "/gcube/devNext/NextNext";
public static final String SClientMap = "DataMinerClientMap";
public static final String DATA_MINER_SERVICE_NAME = "DataMiner";
public static final String DATAMINER_SERVICE_CATEGORY = "DataAnalysis";
public static final String TD_DATASOURCE_FACTORY_ID = "DataMinerManager";
public static final int TIME_UPDATE_COMPUTATION_STATUS_PANEL = 5 * 1000;// 7*1000;
public static final String[] ClassificationNames = { "User Perspective" };
// "Computation Perspective"};
public static final String UserClassificationName = ClassificationNames[0];
// public final static String computationClassificationName =
// classificationNames[1];
// WPS Data Miner
public static final String WPSServiceURL = "http://dataminer-d-d4s.d4science.org:80/wps/";
public static final String WPSWebProcessingService = "WebProcessingService";
public static final String WPSCancelComputationServlet = "CancelComputationServlet";
public static final String WPSToken = "f0666597-4302-49ce-bea2-555b94e569cb";
public static final String WPSUser = "giancarlo.panichi";
public static final String WPSLanguage = "en-US";
/*
* public static final String WPSToken =
* "4ccc2c35-60c9-4c9b-9800-616538d5d48b"; public static final String
* WPSUser = "gianpaolo.coro";
*/
// DownloadFolderServlet
public static final String DOWNLOAD_FOLDER_SERVLET = "DownloadFolderServlet";
public static final String DOWNLOAD_FOLDER_SERVLET_ITEM_ID_PARAMETER = "itemId";
public static final String DOWNLOAD_FOLDER_SERVLET_FOLDER_NAME_PARAMETER = "folderName";
// ClientMonitor
public static final int CLIENT_MONITOR_PERIODMILLIS = 2000;
public static final int CLIENT_MONITOR_TIME_OUT_PERIODMILLIS = 1800000;
// Session
public static final String CURR_GROUP_ID = "CURR_GROUP_ID";
public static final String CURR_USER_ID = "CURR_USER_ID";
// TimeOut
public static final long SERVICE_CLIENT_THREAD_POOL_TIME_OUT_UPDATE_MILLIS = 86400000;
public static final long SERVICE_CLIENT_TIMEOUT_DEFAULT_MILLIS = 1800000;
public static final int DAEMON_SLEEP_MILLIS = 1000;
public static final int TEST_MONITOR_PERIODMILLIS = 3000;
}

@ -0,0 +1,84 @@
package org.gcube.portlets.user.dataminermanagertester.shared.config;
import java.io.Serializable;
import java.util.ArrayList;
/**
*
* @author Giancarlo Panichi
*
*
*/
public class DMBatchConfig implements Serializable {
private static final long serialVersionUID = 4251753074961060428L;
private ArrayList<String> dms;
private String token;
private String protocol;
private String testType;
public DMBatchConfig() {
super();
}
public DMBatchConfig(ArrayList<String> dms, String token, String protocol, String testType) {
super();
this.dms = dms;
this.token = token;
this.protocol = protocol;
this.testType = testType;
}
public ArrayList<String> getDms() {
return dms;
}
public void setDms(ArrayList<String> dms) {
this.dms = dms;
}
public ArrayList<String> getDmsUrls() {
ArrayList<String> dmsUrls = new ArrayList<>();
if (protocol != null) {
if (dms != null && !dms.isEmpty()) {
for (int i = 0; i < dms.size(); i++) {
String dmName = dms.get(i);
String url = new String(protocol + "://" + dmName + "/wps/");
dmsUrls.add(url);
}
}
}
return dmsUrls;
}
public String getToken() {
return token;
}
public void setToken(String token) {
this.token = token;
}
public String getProtocol() {
return protocol;
}
public void setProtocol(String protocol) {
this.protocol = protocol;
}
public String getTestType() {
return testType;
}
public void setTestType(String testType) {
this.testType = testType;
}
@Override
public String toString() {
return "DMBatchConfig [dms=" + dms + ", token=" + token + ", protocol=" + protocol + ", testType=" + testType
+ "]";
}
}

@ -0,0 +1,76 @@
package org.gcube.portlets.user.dataminermanagertester.shared.config;
import java.io.Serializable;
/**
*
* @author Giancarlo Panichi
*
*
*/
public class DMConfig implements Serializable {
private static final long serialVersionUID = 4251753074961060428L;
private String dm;
private String token;
private String protocol;
private String testType;
public DMConfig() {
super();
}
public DMConfig(String dm, String token, String protocol, String testType) {
super();
this.dm = dm;
this.token = token;
this.protocol = protocol;
this.testType = testType;
}
public String getDm() {
return dm;
}
public void setDm(String dm) {
this.dm = dm;
}
public String getDmUrl() {
String url = null;
if (protocol != null && dm != null) {
url = new String(protocol + "://" + dm + "/wps/");
}
return url;
}
public String getToken() {
return token;
}
public void setToken(String token) {
this.token = token;
}
public String getProtocol() {
return protocol;
}
public void setProtocol(String protocol) {
this.protocol = protocol;
}
public String getTestType() {
return testType;
}
public void setTestType(String testType) {
this.testType = testType;
}
@Override
public String toString() {
return "DMConfig [dm=" + dm + ", token=" + token + ", protocol=" + protocol + ", testType=" + testType + "]";
}
}

@ -0,0 +1,95 @@
package org.gcube.portlets.user.dataminermanagertester.shared.config;
import java.io.Serializable;
/**
*
* @author Giancarlo Panichi
*
*
*/
public class DMDiffConfig implements Serializable {
private static final long serialVersionUID = -8892345776441085380L;
private String dm1;
private String token1;
private String dm2;
private String token2;
private String protocol;
public DMDiffConfig() {
super();
}
public DMDiffConfig(String dm1, String token1, String dm2, String token2, String protocol) {
super();
this.dm1 = dm1;
this.token1 = token1;
this.dm2 = dm2;
this.token2 = token2;
this.protocol = protocol;
}
public String getDm1() {
return dm1;
}
public void setDm1(String dm1) {
this.dm1 = dm1;
}
public String getDmUrl1() {
String url=null;
if (protocol != null && dm1 != null) {
url = new String(protocol + "://" + dm1 + "/wps/");
}
return url;
}
public String getToken1() {
return token1;
}
public void setToken1(String token1) {
this.token1 = token1;
}
public String getDm2() {
return dm2;
}
public void setDm2(String dm2) {
this.dm2 = dm2;
}
public String getDmUrl2() {
String url=null;
if (protocol != null && dm2 != null) {
url = new String(protocol + "://" + dm2 + "/wps/");
}
return url;
}
public String getToken2() {
return token2;
}
public void setToken2(String token2) {
this.token2 = token2;
}
public String getProtocol() {
return protocol;
}
public void setProtocol(String protocol) {
this.protocol = protocol;
}
@Override
public String toString() {
return "DMDiffConfig [dm1=" + dm1 + ", token1=" + token1 + ", dm2=" + dm2 + ", token2=" + token2 + ", protocol="
+ protocol + "]";
}
}

@ -0,0 +1,44 @@
package org.gcube.portlets.user.dataminermanagertester.shared.config;
/**
*
* @author Giancarlo Panichi
*
*
*/
public enum ProtocolType {
Http("http"), https("https");
private ProtocolType(final String id) {
this.id = id;
}
private final String id;
@Override
public String toString() {
return id;
}
public String getLabel() {
return id;
}
public boolean compareId(String identificator) {
if (identificator.compareTo(id) == 0) {
return true;
} else {
return false;
}
}
public static ProtocolType getTypeFromId(String id) {
for (ProtocolType testType : values()) {
if (testType.id.compareToIgnoreCase(id) == 0) {
return testType;
}
}
return null;
}
}

@ -0,0 +1,48 @@
package org.gcube.portlets.user.dataminermanagertester.shared.config;
/**
*
* @author Giancarlo Panichi
*
*
*/
public enum TestType {
Capabilities("Capabilities"), DBScan("DBScan"), BionymLocal("Bionym Local"), CMSY2("CMSY 2"), CSquareColumnCreator(
"CSquare Column Creator"), FeedForwardAnn("Feed Forward ANN"), GenericCharts("Generic Charts"), ListDBName(
"List DB Name"), OpenMeshRecostructorGPU("Open Mesh Recostructor GPU"), PolygonsToMap(
"Polygons To Map"), RasterDataPublisher("Raster Data Publisher"), XYExtractor(
"XYExtractor"), WebAppPublisher("Web App Publisher");
private TestType(final String id) {
this.id = id;
}
private final String id;
@Override
public String toString() {
return id;
}
public String getLabel() {
return id;
}
public boolean compareId(String identificator) {
if (identificator.compareTo(id) == 0) {
return true;
} else {
return false;
}
}
public static TestType getTypeFromId(String id) {
for (TestType testType : values()) {
if (testType.id.compareToIgnoreCase(id) == 0) {
return testType;
}
}
return null;
}
}

@ -0,0 +1,42 @@
/**
*
*/
package org.gcube.portlets.user.dataminermanagertester.shared.exception;
/**
*
* @author Giancarlo Panichi
*
*
*/
public class ServiceException extends Exception {
private static final long serialVersionUID = 2448597554902518518L;
/**
*
*/
public ServiceException() {
super();
}
/**
* @param message
* message
*/
public ServiceException(String message) {
super(message);
}
/**
*
* @param message
* message
* @param throwable
* error
*/
public ServiceException(String message, Throwable throwable) {
super(message, throwable);
}
}

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save