2251: Accounting Manager - Stacked column chart for tops

Task-Url: https://support.d4science.org/issues/2251

git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/data-miner-manager@126827 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Giancarlo Panichi 2016-04-06 16:28:32 +00:00
parent 59aeb4af5e
commit 9e85d968db
979 changed files with 30419 additions and 0 deletions

29
.classpath Normal file
View File

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="target/data-miner-manager-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 including="**/*.java" kind="src" output="target/data-miner-manager-1.0.0-SNAPSHOT/WEB-INF/classes" path="src/main/resources"/>
<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 including="**/*.java" kind="src" output="target/test-classes" path="src/test/resources"/>
<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.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="target/data-miner-manager-1.0.0-SNAPSHOT/WEB-INF/classes"/>
</classpath>

53
.project Normal file
View File

@ -0,0 +1,53 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>data-miner-manager</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.m2e.core.maven2Builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<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.m2e.core.maven2Nature</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>
</natures>
</projectDescription>

16
dataminermanager.launch Normal file
View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="com.google.gdt.eclipse.suite.webapp">
<stringAttribute key="com.google.gdt.eclipse.suiteMainTypeProcessor.PREVIOUSLY_SET_MAIN_TYPE_NAME" value="com.google.gwt.dev.GWTShell"/>
<stringAttribute key="com.google.gwt.eclipse.core.URL" value="DataMinerManager.html"/>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
<listEntry value="/data-miner-manager"/>
</listAttribute>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
<listEntry value="4"/>
</listAttribute>
<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="com.google.gdt.eclipse.maven.mavenClasspathProvider"/>
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="com.google.gwt.dev.GWTShell"/>
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-remoteUI &quot;${gwt_remote_ui_server_port}:${unique_id}&quot; -logLevel INFO -codeServerPort 9997 -port 8888 DataMinerManager.html"/>
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="data-miner-manager"/>
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xmx512m -Dgwt.nowarn.legacy.tools"/>
</launchConfiguration>

1
distro/LICENSE Normal file
View File

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

68
distro/README Normal file
View File

@ -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.

6
distro/changelog.xml Normal file
View File

@ -0,0 +1,6 @@
<ReleaseNotes>
<Changeset component="org.gcube.portlets-user.data-miner-manager.1-0-0"
date="2012-10-18">
<Change>First release</Change>
</Changeset>
</ReleaseNotes>

32
distro/descriptor.xml Normal file
View File

@ -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>

29
distro/profile.xml Normal file
View File

@ -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>

573
pom.xml Normal file
View File

@ -0,0 +1,573 @@
<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</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>data-miner-manager</name>
<description>data-miner-manager offers a unique access to perform data mining and statistical operations on heterogeneous data</description>
<scm>
<url>https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/data-miner-manager</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 Version -->
<javaVersion>1.7</javaVersion>
<!-- GWT configuration -->
<gwtVersion>2.6.1</gwtVersion>
<gwtLogVersion>3.3.2</gwtLogVersion>
<gxtVersion>3.1.1</gxtVersion>
<gxt2Version>2.6.1</gxt2Version>
<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>
<!--
<dependency>
<groupId>xerces</groupId>
<artifactId>xercesImpl</artifactId>
<version>2.7.1</version>
</dependency> -->
<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>
<!-- Storage -->
<dependency>
<groupId>org.gcube.contentmanagement</groupId>
<artifactId>storage-manager-core</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.gcube.contentmanagement</groupId>
<artifactId>storage-manager-wrapper</artifactId>
<scope>runtime</scope>
</dependency>
<!-- Home Library -->
<dependency>
<groupId>org.gcube.common</groupId>
<artifactId>home-library</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.gcube.common</groupId>
<artifactId>home-library-jcr</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.gcube.common</groupId>
<artifactId>home-library-model</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.gcube.common</groupId>
<artifactId>common-authorization</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.gcube.common</groupId>
<artifactId>authorization-client</artifactId>
<scope>runtime</scope>
</dependency>
</dependencies>
</profile>
</profiles>
<dependencies>
<!-- GWT -->
<dependency>
<groupId>com.google.gwt</groupId>
<artifactId>gwt-user</artifactId>
<version>${gwtVersion}</version>
</dependency>
<dependency>
<groupId>com.google.gwt</groupId>
<artifactId>gwt-servlet</artifactId>
<version>${gwtVersion}</version>
</dependency>
<!-- GXT 2
<dependency>
<groupId>com.sencha.gxt</groupId>
<artifactId>gxt2.2.5-gwt2.X</artifactId>
<version>${gxt2Version}</version>
</dependency> -->
<!-- GXT 3 -->
<dependency>
<groupId>com.sencha.gxt</groupId>
<artifactId>gxt</artifactId>
<version>${gxtVersion}</version>
</dependency>
<!--
<dependency>
<groupId>com.ibm.icu</groupId>
<artifactId>icu4j</artifactId>
<version>51.2</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>xerces</groupId>
<artifactId>xercesImpl</artifactId>
<version>2.7.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.gcube.core</groupId>
<artifactId>common-generic-clients</artifactId>
<version>[1.0.0-SNAPSHOT,4.0.0-SNAPSHOT)</version>
<scope>provided</scope>
</dependency> -->
<dependency>
<groupId>javax.portlet</groupId>
<artifactId>portlet-api</artifactId>
</dependency>
<dependency>
<groupId>org.gcube.applicationsupportlayer</groupId>
<artifactId>accesslogger</artifactId>
</dependency>
<dependency>
<groupId>org.gcube.portal</groupId>
<artifactId>custom-portal-handler</artifactId>
</dependency>
<dependency>
<groupId>org.gcube.core</groupId>
<artifactId>common-scope-maps</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.gcube.applicationsupportlayer</groupId>
<artifactId>aslcore</artifactId>
<scope>provided</scope>
<exclusions>
<exclusion>
<artifactId>xalan</artifactId>
<groupId>xalan</groupId>
</exclusion>
</exclusions>
</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>
<!-- GCube Widget -->
<dependency>
<groupId>org.gcube.portlets.user</groupId>
<artifactId>gcube-widgets</artifactId>
</dependency>
<!-- Session Checker -->
<dependency>
<groupId>org.gcube.portlets.widgets</groupId>
<artifactId>session-checker</artifactId>
<version>[0.0.0-SNAPSHOT,1.0.0-SNAPSHOT)</version>
</dependency>
<dependency>
<groupId>org.gcube.applicationsupportlayer</groupId>
<artifactId>aslsocial</artifactId>
</dependency>
<!--
<dependency>
<groupId>org.gcube.core</groupId>
<artifactId>common-fw-clients</artifactId>
<scope>provided</scope>
</dependency> -->
<!-- Storage -->
<dependency>
<groupId>org.gcube.contentmanagement</groupId>
<artifactId>storage-manager-core</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.gcube.contentmanagement</groupId>
<artifactId>storage-manager-wrapper</artifactId>
<scope>provided</scope>
</dependency>
<!-- Information System Client IC-Client -->
<dependency>
<groupId>org.gcube.resources.discovery</groupId>
<artifactId>ic-client</artifactId>
</dependency>
<!-- Nord52 -->
<dependency>
<groupId>org.n52.wps</groupId>
<artifactId>52n-wps-client-lib</artifactId>
<version>3.2.0</version>
<exclusions>
<exclusion>
<artifactId>gt-opengis</artifactId>
<groupId>org.geotools</groupId>
</exclusion>
<exclusion>
<groupId>xerces</groupId>
<artifactId>xercesImpl</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--
<dependency>
<groupId>org.gcube.portlets.user</groupId>
<artifactId>csv-import-wizard</artifactId>
<version>[1.0.0-SNAPSHOT,3.0.0-SNAPSHOT)</version>
</dependency>
<dependency>
<groupId>org.gcube.portlets.user</groupId>
<artifactId>csv-import-wizard-workspace</artifactId>
<version>[1.0.0-SNAPSHOT,3.0.0-SNAPSHOT)</version>
</dependency> -->
<!-- <dependency> -->
<!-- <groupId>org.gcube.portlets.user</groupId> -->
<!-- <artifactId>csv-import-wizard</artifactId> -->
<!-- <version>1.0.0-SNAPSHOT</version> -->
<!-- <scope>system</scope> -->
<!-- <systemPath>${basedir}/src/main/webapp/WEB-INF/lib/csv-import-wizard-1.0.0-SNAPSHOT.jar</systemPath> -->
<!-- </dependency> -->
<!-- <dependency> -->
<!-- <groupId>org.gcube.portlets.user</groupId> -->
<!-- <artifactId>csv-import-wizard-workspace</artifactId> -->
<!-- <version>1.1.0-SNAPSHOT</version> -->
<!-- <scope>system</scope> -->
<!-- <systemPath>${basedir}/src/main/webapp/WEB-INF/lib/csv-import-wizard-workspace-1.1.0-SNAPSHOT.jar</systemPath> -->
<!-- </dependency> -->
<!--
<dependency>
<groupId>org.gcube.portlets.user</groupId>
<artifactId>tabular-data-widget</artifactId>
<version>[1.0.0-SNAPSHOT,3.0.0-SNAPSHOT)</version>
</dependency>
<dependency>
<groupId>org.gcube.portlets.user</groupId>
<artifactId>tabular-data-widget-jdbc-source</artifactId>
<version>[1.0.0-SNAPSHOT,2.0.0-SNAPSHOT)</version>
</dependency>
<dependency>
<groupId>postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>8.4-702.jdbc4</version>
<scope>provided</scope>
</dependency> -->
<!--
<dependency>
<groupId>org.gwtopenmaps.openlayers</groupId>
<artifactId>gwt-openlayers-client</artifactId>
<version>0.6</version>
<scope>provided</scope>
</dependency> -->
<!-- Home Library -->
<dependency>
<groupId>org.gcube.common</groupId>
<artifactId>home-library</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.gcube.common</groupId>
<artifactId>home-library-jcr</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.gcube.common</groupId>
<artifactId>home-library-model</artifactId>
<scope>provided</scope>
</dependency>
<!--
<dependency>
<groupId>org.gcube.data.access</groupId>
<artifactId>streams</artifactId>
<version>[1.0.0-SNAPSHOT, 3.0.0-SNAPSHOT)</version>
<scope>provided</scope>
</dependency> -->
<!-- csv4j -->
<dependency>
<groupId>org.gcube.common</groupId>
<artifactId>csv4j</artifactId>
<version>[1.2.0-SNAPSHOT, 2.0.0-SNAPSHOT)</version>
</dependency>
<!-- Guided Tour
<dependency>
<groupId>org.gcube.portlets.widgets</groupId>
<artifactId>guided-tour-widget</artifactId>
<version>[1.0.0-SNAPSHOT, 3.0.0-SNAPSHOT)</version>
<scope>provided</scope>
</dependency> -->
<!-- Workspace Explorer -->
<dependency>
<groupId>org.gcube.portlets.widgets</groupId>
<artifactId>workspace-explorer</artifactId>
<version>[1.0.0-SNAPSHOT, 2.0.0-SNAPSHOT)</version>
</dependency>
<!-- Workspace Uploader -->
<dependency>
<groupId>org.gcube.portlets.widgets</groupId>
<artifactId>workspace-uploader</artifactId>
<version>[1.0.0-SNAPSHOT,2.0.0-SNAPSHOT)</version>
</dependency>
<!-- LOGGING -->
<dependency>
<groupId>com.allen-sauer.gwt.log</groupId>
<artifactId>gwt-log</artifactId>
<version>${gwtLogVersion}</version>
</dependency>
<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>
</dependencies>
<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>
<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>
<build>
<!-- Generate compiled stuff in the folder used for developing mode -->
<outputDirectory>${webappDirectory}/WEB-INF/classes</outputDirectory>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.*</include>
</includes>
</resource>
</resources>
<plugins>
<!-- GWT Maven Plugin -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>gwt-maven-plugin</artifactId>
<version>${gwtVersion}</version>
<executions>
<execution>
<configuration>
<extraJvmArgs>-Xss512m -Xmx3072m -XX:MaxPermSize=2048m</extraJvmArgs>
</configuration>
<goals>
<goal>compile</goal>
<goal>test</goal>
</goals>
</execution>
</executions>
<configuration>
<runTarget>DataMinerManager.html</runTarget>
<hostedWebapp>${webappDirectory}</hostedWebapp>
<module>org.gcube.portlets.user.dataminermanager.dataminermanager</module>
</configuration>
</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>2.3.2</version>
<configuration>
<source>${javaVersion}</source>
<target>${javaVersion}</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2</version>
<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>

View File

@ -0,0 +1,401 @@
package org.gcube.portlets.user.dataminermanager.client;
import java.util.List;
import org.gcube.portlets.user.dataminermanager.client.bean.OperatorsClassification;
import org.gcube.portlets.user.dataminermanager.client.common.EventBusProvider;
import org.gcube.portlets.user.dataminermanager.client.dataspace.DataSpacePanel;
import org.gcube.portlets.user.dataminermanager.client.events.MaskEvent;
import org.gcube.portlets.user.dataminermanager.client.events.ResubmitComputationEvent;
import org.gcube.portlets.user.dataminermanager.client.experimentArea.ExperimentPanel;
import org.gcube.portlets.user.dataminermanager.client.resources.Resources;
import org.gcube.portlets.user.dataminermanager.client.rpc.DataMinerPortletService;
import org.gcube.portlets.user.dataminermanager.client.rpc.DataMinerPortletServiceAsync;
import org.gcube.portlets.user.dataminermanager.shared.Constants;
import com.allen_sauer.gwt.log.client.Log;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
import com.google.gwt.core.client.Scheduler;
import com.google.gwt.core.client.Scheduler.ScheduledCommand;
import com.google.gwt.event.dom.client.MouseDownEvent;
import com.google.gwt.event.dom.client.MouseDownHandler;
//import com.google.gwt.event.logical.shared.ResizeEvent;
//import com.google.gwt.event.logical.shared.ResizeHandler;
import com.google.gwt.resources.client.ImageResource;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.RootPanel;
import com.sencha.gxt.core.client.util.Margins;
import com.sencha.gxt.widget.core.client.container.BorderLayoutContainer;
import com.sencha.gxt.widget.core.client.container.BorderLayoutContainer.BorderLayoutData;
import com.sencha.gxt.widget.core.client.container.HorizontalLayoutContainer;
import com.sencha.gxt.widget.core.client.container.HorizontalLayoutContainer.HorizontalLayoutData;
import com.sencha.gxt.widget.core.client.container.MarginData;
import com.sencha.gxt.widget.core.client.container.SimpleContainer;
import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer;
import com.sencha.gxt.widget.core.client.container.Viewport;
/**
* Entry point classes define <code>onModuleLoad()</code>.
*/
public class DataMinerManager implements EntryPoint {
public static final Resources resources = GWT.create(Resources.class);
private static final DataMinerPortletServiceAsync dataMinerService = GWT
.create(DataMinerPortletService.class);
private static final String SM_DIV = "contentDiv";
private static List<OperatorsClassification> operatorsClassifications = null;
private DataMinerManagerController dataMinerManagerController;
private DataSpacePanel dataSpacePanel = new DataSpacePanel();
// private InputSpacePanel inputSpacePanel = new InputSpacePanel();
private ExperimentPanel experimentPanel = new ExperimentPanel();
// private JobsPanel jobsPanel = new JobsPanel();
// private VerticalPanel verticalPanel = new VerticalPanel();
private SimpleContainer previousPanel;
private SimpleContainer homeMenu;
private SimpleContainer centerPanel;
/*
* private BorderLayoutData centerPanelData; private LayoutContainer
* dataMinerManagerLayout;
*/
public enum MenuItem {
DATA_SPACE, EXPERIMENT, COMPUTATIONS
};
private Header header;
// Main Panel
private static BorderLayoutContainer mainPanelLayout;
/**
* {@inheritDoc}
*/
public void onModuleLoad() {
/*
* Install an UncaughtExceptionHandler which will produce
* <code>FATAL</code> log messages
*/
Log.setUncaughtExceptionHandler();
// use deferred command to catch initialization exceptions in
// onModuleLoad2
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
public void execute() {
loadMainPanel();
}
});
}
protected void loadMainPanel() {
// AccountingManagerResources.INSTANCE.accountingManagerCSS().ensureInjected();
// ScriptInjector.fromString(AccountingManagerResources.INSTANCE.jqueryJs().getText()).setWindow(ScriptInjector.TOP_WINDOW).inject();
dataMinerManagerController = new DataMinerManagerController();
// Layout
mainPanelLayout = new BorderLayoutContainer();
mainPanelLayout.setId("mainPanelLayout");
mainPanelLayout.setBorders(false);
mainPanelLayout.setResize(true);
mainPanelLayout.getElement().getStyle().setBackgroundColor("#FFFFFF");
// mainPanelLayout.getElement().getStyle().setBackgroundColor("rgb(3, 126, 207)");
centerPanel = new SimpleContainer();
MarginData mainData = new MarginData(new Margins(2));
mainPanelLayout.setCenterWidget(centerPanel, mainData);
// Menu
header = new Header() {
@Override
public void select(MenuItem menuItem) {
if (menuItem == null)
switchTo(homeMenu);
else if (menuItem == MenuItem.EXPERIMENT)
switchTo(experimentPanel);
else if (menuItem == MenuItem.DATA_SPACE)
switchTo(dataSpacePanel);
/*
* else if (menuItem == MenuItem.COMPUTATIONS)
* switchTo(jobsPanel);
*/
}
};
BorderLayoutData menuData = new BorderLayoutData(58);
menuData.setMargins(new Margins(5));
menuData.setCollapsible(false);
menuData.setSplit(false);
mainPanelLayout.setNorthWidget(header, menuData);
// Filters
/*
* FiltersPanel filtersPanel=new FiltersPanel(eventBus);
* BorderLayoutData westData = new BorderLayoutData(410);
* westData.setCollapsible(false); westData.setSplit(false);
* westData.setFloatable(false); westData.setCollapseMini(false);
* westData.setMargins(new Margins(2, 7, 2, 7));
* westData.setCollapseHidden(true); westData.setMaxSize(410);
* westData.setMinSize(410); mainPanelLayout.setWestWidget(filtersPanel,
* westData); filtersPanel.expand(); filtersPanel.enable();
*/
homeMenu = createMenuPanel();
centerPanel.add(homeMenu);
previousPanel = homeMenu;
bind(mainPanelLayout);
bindEvents();
/*
* dataMinerManagerController.setMainPanelLayout(mainPanelLayout);
* dataMinerManagerController.restoreUISession();
*/
}
protected void bind(BorderLayoutContainer mainWidget) {
try {
RootPanel root = RootPanel.get(SM_DIV);
Log.info("Root Panel: " + root);
if (root == null) {
Log.info("Div with id " + SM_DIV
+ " not found, starting in dev mode");
Viewport viewport = new Viewport();
viewport.setWidget(mainWidget);
viewport.onResize();
RootPanel.get().add(viewport);
} else {
Log.info("Application div with id " + SM_DIV
+ " found, starting in portal mode");
PortalViewport viewport = new PortalViewport();
Log.info("Created Viewport");
viewport.setEnableScroll(false);
viewport.setWidget(mainWidget);
Log.info("Set Widget");
Log.info("getOffsetWidth(): " + viewport.getOffsetWidth());
Log.info("getOffsetHeight(): " + viewport.getOffsetHeight());
viewport.onResize();
root.add(viewport);
Log.info("Added viewport to root");
}
} catch (Exception e) {
e.printStackTrace();
Log.error("Error in attach viewport:" + e.getLocalizedMessage());
}
}
/*
* private void updateSize() { RootPanel smDiv = RootPanel.get(SM_DIV);
*
* int topBorder = smDiv.getAbsoluteTop(); int leftBorder =
* smDiv.getAbsoluteLeft();
*
* int rootHeight = Window.getClientHeight() - topBorder - 4;// - ((footer
* // == // null)?0:(footer.getOffsetHeight()-15)); int rootWidth =
* Window.getClientWidth() - 2 * leftBorder - 5; // - // rightScrollBar;
*
* //
* System.out.println("New Data Miner Manager dimension Width: "+rootWidth
* +"; Height: "+rootHeight);
*
* if (previousPanel == menu) dataMinerManagerLayout.setSize(rootWidth,
* 700); else dataMinerManagerLayout.setSize(rootWidth, rootHeight); }
*/
/**
*
*/
private void bindEvents() {
EventBusProvider.INSTANCE.addHandler(MaskEvent.getType(),
new MaskEvent.MaskHandler() {
@Override
public void onMask(MaskEvent event) {
if (mainPanelLayout == null)
return;
String message = event.getMessage();
if (message == null)
mainPanelLayout.unmask();
else
mainPanelLayout.mask(message);
// Constants.maskLoadingStyle);
}
});
/*
* EventBusProvider.getInstance().addHandler(
* SessionExpiredEvent.getType(), new
* SessionExpiredEvent.SessionExpiredHandler() {
*
* @Override public void onSessionExpired(SessionExpiredEvent event) {
* Window.alert("The session has expired. Please refresh the page."); }
* });
*/
EventBusProvider.INSTANCE.addHandler(
ResubmitComputationEvent.getType(),
new ResubmitComputationEvent.ResubmitComputationHandler() {
@Override
public void onResubmitComputation(
ResubmitComputationEvent event) {
switchTo(experimentPanel);
header.setMenuSelected(MenuItem.EXPERIMENT);
}
});
}
/**
* @return
*/
private SimpleContainer createMenuPanel() {
SimpleContainer topLc = new SimpleContainer();
VerticalLayoutContainer lc = new VerticalLayoutContainer();
// lc.setSize(640, 400);
lc.addStyleName("smLayoutContainer");
lc.addStyleName("smMenu");
/*
* LayoutContainer itemDataSpace = createMenuItem(
* "Access to the Data Space",
* "The data space contains the set of input and output data sets of the users. It is possible to upload and share tables. Data sources can be chosen from those hosted by the infrastructure. Outputs of the computations can be even saved in this space."
* , resources.inputSpaceIcon(), new Listener<BaseEvent>() {
*
* @Override public void handleEvent(BaseEvent be) {
* switchTo(dataSpacePanel);
* header.setMenuSelected(MenuItem.DATA_SPACE); } });
* lc.add(itemDataSpace);
*/
HorizontalLayoutContainer itemExperiment = createMenuItem(
"Execute an Experiment",
"This section allows to execute or prepare a Niche Modeling experiment. The section is endowed with a list of algorithms for training and executing statistical models for biological applications. Evaluation of the performances is possible by means of several kinds of measurement systems and processes.",
resources.computationIcon(), new MouseDownHandler() {
@Override
public void onMouseDown(MouseDownEvent event) {
switchTo(experimentPanel);
header.setMenuSelected(MenuItem.EXPERIMENT);
}
});
lc.add(itemExperiment);
/*
* LayoutContainer itemJobs = createMenuItem( "Check the Computations",
* "This section allows to check the status of the computation. A list of processes launched by the user is shown along with meta-information. By clicking on the completed jobs it is possible to visualize the data set contents."
* , resources.jobsIcon(), new Listener<BaseEvent>() {
*
* @Override public void handleEvent(BaseEvent be) {
* switchTo(jobsPanel); header.setMenuSelected(MenuItem.COMPUTATIONS); }
* }); lc.add(itemJobs);
*/
topLc.add(lc);
return topLc;
}
/**
*
*/
private void switchTo(SimpleContainer lc) {
// boolean updt = (previousPanel != lc && (previousPanel == homeMenu ||
// lc == homeMenu));
centerPanel.remove(previousPanel);
centerPanel.add(lc);
centerPanel.forceLayout();
previousPanel = lc;
/*
* if (updt) updateSize();
*/
}
private HorizontalLayoutContainer createMenuItem(String title,
String description, ImageResource imgResource,
MouseDownHandler handle) {
HorizontalLayoutContainer horiz = new HorizontalLayoutContainer();
horiz.addDomHandler(handle, MouseDownEvent.getType());
HorizontalLayoutData layoutData = new HorizontalLayoutData(100, 100,
new Margins(5));
Image img = new Image(imgResource);
HTML text = new HTML("<b>" + title + "</b><br>" + description);
text.addStyleName("smMenuItemText");
horiz.add(text, layoutData);
horiz.add(img, layoutData);
return horiz;
}
/**
* @return the operatorsClassification
*/
public static List<OperatorsClassification> getOperatorsClassifications() {
return operatorsClassifications;
}
/**
* @param operatorsClassification
* the operatorsClassification to set
*/
public static void setOperatorsClassifications(
List<OperatorsClassification> operatorsClassifications) {
DataMinerManager.operatorsClassifications = operatorsClassifications;
}
public static OperatorsClassification getDefaultOperatorsClassification() {
if (operatorsClassifications == null)
return null;
OperatorsClassification find = null;
for (OperatorsClassification oc : operatorsClassifications)
// Constants.ComputationClassificationName
if (oc.getName().equals(Constants.UserClassificationName))
find = oc;
return find;
}
public static OperatorsClassification getOperatorsClassificationByName(
String classificationName) {
if (operatorsClassifications == null)
return null;
OperatorsClassification find = null;
for (OperatorsClassification oc : operatorsClassifications)
if (oc.getName().equals(classificationName))
find = oc;
return (find == null ? getDefaultOperatorsClassification() : find);
}
public static DataMinerPortletServiceAsync getService() {
return dataMinerService;
}
/**
* @return
*/
/*
* public static TabularData getTabularData() { if (tabularData == null)
* tabularData = new TabularData(Constants.TD_DATASOURCE_FACTORY_ID); return
* tabularData; }
*/
}

View File

@ -0,0 +1,145 @@
package org.gcube.portlets.user.dataminermanager.client;
import org.gcube.portlets.user.dataminermanager.client.common.EventBusProvider;
import org.gcube.portlets.user.dataminermanager.client.events.DataMinerWorkAreaEvent;
import org.gcube.portlets.user.dataminermanager.client.events.SessionExpiredEvent;
import org.gcube.portlets.user.dataminermanager.client.rpc.DataMinerPortletServiceAsync;
import org.gcube.portlets.user.dataminermanager.client.type.DataMinerWorkAreaEventType;
import org.gcube.portlets.user.dataminermanager.client.util.UtilsGXT3;
import org.gcube.portlets.user.dataminermanager.shared.exception.ExpiredSessionServiceException;
import org.gcube.portlets.user.dataminermanager.shared.session.UserInfo;
import org.gcube.portlets.user.dataminermanager.shared.workspace.DataMinerWorkArea;
import org.gcube.portlets.widgets.sessionchecker.client.CheckSession;
import com.allen_sauer.gwt.log.client.Log;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.rpc.AsyncCallback;
/**
*
* @author Giancarlo Panichi email: <a
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
*
*/
public class DataMinerManagerController {
private EventBus eventBus;
private UserInfo userInfo;
private DataMinerWorkArea dataMinerWorkArea;
public DataMinerManagerController() {
eventBus = EventBusProvider.INSTANCE;
init();
}
public UserInfo getUserInfo() {
return userInfo;
}
public DataMinerWorkArea getDataMinerWorkArea() {
return dataMinerWorkArea;
}
private void init() {
callHello();
checkSession();
bindToEvents();
}
private void checkSession() {
// if you do not need to something when the session expire
CheckSession.getInstance().startPolling();
}
private void sessionExpiredShow() {
CheckSession.showLogoutDialog();
}
private void sessionExpiredShowDelayed() {
Timer timeoutTimer = new Timer() {
public void run() {
sessionExpiredShow();
}
};
int TIMEOUT = 3; // 3 second timeout
timeoutTimer.schedule(TIMEOUT * 1000); // timeout is in milliseconds
}
private void callHello() {
DataMinerPortletServiceAsync.INSTANCE
.hello(new AsyncCallback<UserInfo>() {
@Override
public void onFailure(Throwable caught) {
Log.info("No valid user found: " + caught.getMessage());
if (caught instanceof ExpiredSessionServiceException) {
UtilsGXT3.alert("Error", "Expired Session");
sessionExpiredShowDelayed();
} else {
UtilsGXT3.alert(
"Error",
"No user found: "
+ caught.getLocalizedMessage());
}
}
@Override
public void onSuccess(UserInfo result) {
userInfo = result;
Log.info("Hello: " + userInfo.getUsername());
retrieveDataMinerWorkArea();
}
});
}
private void bindToEvents() {
EventBusProvider.INSTANCE.addHandler(SessionExpiredEvent.TYPE,
new SessionExpiredEvent.SessionExpiredEventHandler() {
@Override
public void onChange(SessionExpiredEvent event) {
Log.debug("Catch Event SessionExpiredEvent");
sessionExpiredShow();
}
});
}
private void retrieveDataMinerWorkArea() {
DataMinerPortletServiceAsync.INSTANCE
.getDataMinerWorkArea(new AsyncCallback<DataMinerWorkArea>() {
@Override
public void onFailure(Throwable caught) {
Log.info("No valid user found: " + caught.getMessage());
if (caught instanceof ExpiredSessionServiceException) {
UtilsGXT3.alert("Error", "Expired Session");
sessionExpiredShowDelayed();
} else {
UtilsGXT3.alert("Error",
"Error retrieving DataMiner work area info: "
+ caught.getLocalizedMessage());
}
}
@Override
public void onSuccess(DataMinerWorkArea result) {
Log.debug("DataMinerWorkArea: " + result);
dataMinerWorkArea = result;
DataMinerWorkAreaEvent dataMinerWorkAreaEvent = new DataMinerWorkAreaEvent(
DataMinerWorkAreaEventType.UPDATE, result);
eventBus.fireEvent(dataMinerWorkAreaEvent);
}
});
}
}

View File

@ -0,0 +1,162 @@
/**
*
*/
package org.gcube.portlets.user.dataminermanager.client;
import org.gcube.portlets.user.dataminermanager.client.DataMinerManager.MenuItem;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Image;
/**
* @author ceras
*
*/
public abstract class Header extends HorizontalPanel {
public abstract void select(MenuItem menuItem);
Image menuGoBack, menuExperiment; // menuInputSpace, menuComputations;
MenuItem currentSelection = null;
Image currentImageSelection = null;
//private Image menuDataSpace;
/**
*
*/
public Header() {
super();
// this.setStyleAttribute("background-color", "#FFFFFF");
Image logo = new Image(DataMinerManager.resources.logoLittle());
logo.setAltText("Data Miner Manager");
logo.setTitle("Data Miner Manager");
logo.addStyleName("menuImgLogo");
menuGoBack = new Image(DataMinerManager.resources.goBack());
menuGoBack.addStyleName("menuItemImage");
menuGoBack.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
if (setMenuSelected(null))
select(null);
}
});
/*
menuDataSpace = new Image(
DataMinerManager.resources.menuItemInputspace());
menuDataSpace.addStyleName("menuItemImage");
menuDataSpace.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
if (setMenuSelected(MenuItem.DATA_SPACE))
select(MenuItem.DATA_SPACE);
}
});
*/
menuExperiment = new Image(
DataMinerManager.resources.menuItemExperiment());
menuExperiment.addStyleName("menuItemImage");
menuExperiment.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
if (setMenuSelected(MenuItem.EXPERIMENT))
select(MenuItem.EXPERIMENT);
}
});
/*
* menuComputations = new Image(
* DataMinerManager.resources.menuItemComputations());
* menuComputations.addStyleName("menuItemImage");
* menuComputations.addClickHandler(new ClickHandler() {
*
* @Override public void onClick(ClickEvent event) { if
* (setMenuSelected(MenuItem.COMPUTATIONS))
* select(MenuItem.COMPUTATIONS); } });
*/
this.add(logo);
this.add(menuGoBack);
//this.add(menuDataSpace);
this.add(menuExperiment);
// this.add(menuComputations);
this.setCellWidth(logo, "100px");
this.setCellWidth(menuGoBack, "100px");
//this.setCellWidth(menuDataSpace, "80px");
this.setCellWidth(menuExperiment, "80px");
// this.setCellWidth(menuComputations, "80px");
menuGoBack.setVisible(false);
//menuDataSpace.setVisible(false);
menuExperiment.setVisible(false);
// menuComputations.setVisible(false);
}
/**
* @param inputSpace
*/
public boolean setMenuSelected(MenuItem menuItem) {
// return true if the menu was changed
if (menuItem == currentSelection)
return false; // nothing to change
if (menuItem == null) {
menuGoBack.setVisible(false);
//menuDataSpace.setVisible(false);
menuExperiment.setVisible(false);
// menuComputations.setVisible(false);
if (currentSelection == MenuItem.EXPERIMENT)
menuExperiment.removeStyleName("menuItemImage-selected");
/*
else if (currentSelection == MenuItem.DATA_SPACE)
menuDataSpace.removeStyleName("menuItemImage-selected");
*/
/*
* else if (currentSelection == MenuItem.COMPUTATIONS)
* menuComputations.removeStyleName("menuItemImage-selected");
*/
} else {
if (currentSelection == null) {
menuGoBack.setVisible(true);
//menuDataSpace.setVisible(true);
menuExperiment.setVisible(true);
// menuComputations.setVisible(true);
}
if (currentSelection == MenuItem.EXPERIMENT)
menuExperiment.removeStyleName("menuItemImage-selected");
/*else if (currentSelection == MenuItem.DATA_SPACE)
menuDataSpace.removeStyleName("menuItemImage-selected");*/
/*
* else if (currentSelection == MenuItem.COMPUTATIONS)
* menuComputations.removeStyleName("menuItemImage-selected");
*/
Image imgNew=menuExperiment;
/*
Image imgNew = (menuItem == MenuItem.DATA_SPACE ? menuDataSpace
: menuExperiment);
*/
/*
* Image imgNew = (menuItem == MenuItem.DATA_SPACE ? menuDataSpace :
* (menuItem == MenuItem.EXPERIMENT ? menuExperiment :
* menuComputations));
*/
imgNew.addStyleName("menuItemImage-selected");
}
currentSelection = menuItem;
return true;
}
}

View File

@ -0,0 +1,153 @@
/**
*
*/
package org.gcube.portlets.user.dataminermanager.client;
import com.allen_sauer.gwt.log.client.Log;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.Element;
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
import com.google.gwt.user.client.Window;
import com.sencha.gxt.core.client.dom.XDOM;
import com.sencha.gxt.core.client.dom.XElement;
import com.sencha.gxt.widget.core.client.container.SimpleContainer;
import com.sencha.gxt.widget.core.client.container.Viewport.ViewportAppearance;
/**
*
* @author "Giancarlo Panichi"
* <a href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
*
*/
public class PortalViewport extends SimpleContainer {
protected int rightScrollBarSize = 17;
protected boolean enableScroll;
/**
* Creates a viewport layout container with the default appearance.
*/
public PortalViewport() {
this(GWT.<ViewportAppearance> create(ViewportAppearance.class));
}
/**
* Creates a viewport layout container with the specified appearance.
*
* @param appearance
* the appearance of the viewport layout container
*/
public PortalViewport(ViewportAppearance appearance) {
super(true);
try {
SafeHtmlBuilder sb = new SafeHtmlBuilder();
appearance.render(sb);
XElement element=XDOM.create(sb.toSafeHtml());
setElement((Element)element);
monitorWindowResize = true;
forceLayoutOnResize = true;
getFocusSupport().setIgnore(false);
resize();
} catch (Exception e) {
Log.error("PortalViewport: constructor error "
+ e.getLocalizedMessage());
}
}
/**
* Returns true if window scrolling is enabled.
*
* @return true if window scrolling is enabled
*/
public boolean isEnableScroll() {
return enableScroll;
}
/**
* Sets whether window scrolling is enabled.
*
* @param enableScroll
* true to enable window scrolling
*/
public void setEnableScroll(boolean enableScroll) {
this.enableScroll = enableScroll;
Window.enableScrolling(enableScroll);
}
/**
* @return the rightScrollBarSize
*/
public int getRightScrollBarSize() {
return rightScrollBarSize;
}
/**
* @param rightScrollBarSize
* the rightScrollBarSize to set
*/
public void setRightScrollBarSize(int rightScrollBarSize) {
this.rightScrollBarSize = rightScrollBarSize;
}
@Override
protected void onAttach() {
super.onAttach();
setEnableScroll(enableScroll);
resize();
}
protected void resize() {
int viewWidth;
if(enableScroll){
viewWidth= calculateWidth() - rightScrollBarSize;
} else {
viewWidth = calculateWidth();
}
int viewHeight = calculateHeight();
Log.info("AM resize viewWidth: " + viewWidth + " viewHeight: "
+ viewHeight + " clientWidth: " + Window.getClientWidth()
+ " clientHeight: " + Window.getClientHeight());
try {
setPixelSize(viewWidth, viewHeight);
} catch (Exception e) {
Log.error("PortalViewport: error in resize() at setPixelSize "
+ e.getLocalizedMessage());
}
}
/**
* {@inheritDoc}
*/
@Override
protected void onWindowResize(int width, int height) {
int viewWidth = calculateWidth();
int viewHeight = calculateHeight();
Log.trace("AM onWindowResize viewWidth: " + viewWidth
+ " viewHeight: " + viewHeight + " clientWidth: "
+ Window.getClientWidth() + " clientHeight: "
+ Window.getClientHeight());
setPixelSize(viewWidth, viewHeight);
}
protected int calculateWidth() {
int leftBorder = getAbsoluteLeft();
Log.info("AM width: "
+ String.valueOf(Window.getClientWidth() - 2 * leftBorder));
return Window.getClientWidth() - 2 * leftBorder;
}
protected int calculateHeight() {
int topBorder = getAbsoluteTop();
Log.info("AM height: "
+ String.valueOf(Window.getClientHeight() - topBorder - 34));
return Window.getClientHeight() - topBorder - 34;
}
}

View File

@ -0,0 +1,130 @@
/**
*
*/
package org.gcube.portlets.user.dataminermanager.client.bean;
import java.io.Serializable;
import java.util.Date;
import org.gcube.portlets.user.dataminermanager.client.DataMinerManager;
import org.gcube.portlets.user.dataminermanager.client.bean.output.Resource;
import org.gcube.portlets.user.dataminermanager.shared.data.ComputationId;
public class ComputationItem implements Serializable{
private static final long serialVersionUID = 7948340340190844208L;
// force to implement these objects in javascript
private ComputationId computationId;
private String id;
private String name;
private String description;
private String categoryId;
private String operatorId;
private String infrastructure;
private Date creationDate;
private Date endDate;
private ComputationStatus status;
private Resource resource;
private Operator operator;
/**
*
*/
public ComputationItem() {
super();
}
public ComputationItem(ComputationId computationId, String name, String description,
String categoryId, String operatorId, String infrastructure,
Date creationDate, Date endDate,
ComputationStatus status, Resource resource) {
super();
this.computationId=computationId;
this.id=computationId.getId();
this.name=name;
this.description=description;
this.categoryId=categoryId;
this.operatorId=operatorId;
this.infrastructure=infrastructure;
this.creationDate=creationDate;
this.endDate=endDate;
this.status=status;
this.resource=resource;
}
public OperatorCategory getOperatorCategory() {
OperatorsClassification classification = DataMinerManager.getDefaultOperatorsClassification();
if (classification==null)
return null;
else
return classification.getCategoryById(categoryId);
}
public Operator getOperator() {
if (operator==null) {
OperatorsClassification classification = DataMinerManager.getDefaultOperatorsClassification();
if (classification!=null)
operator=classification.getOperatorById(operatorId);
}
return operator;
}
public ComputationId getComputationId() {
return computationId;
}
public String getId() {
return id;
}
public String getName() {
return name;
}
public String getDescription() {
return description;
}
public String getCategoryId() {
return categoryId;
}
public String getOperatorId() {
return operatorId;
}
public String getInfrastructure() {
return infrastructure;
}
public Date getCreationDate() {
return creationDate;
}
public Date getEndDate() {
return endDate;
}
public ComputationStatus getStatus() {
return status;
}
public Resource getResource() {
return resource;
}
public void setEndDate(Date endDate) {
this.endDate=endDate;
}
}

View File

@ -0,0 +1,130 @@
package org.gcube.portlets.user.dataminermanager.client.bean;
import java.io.Serializable;
import java.util.Date;
import org.gcube.portlets.user.dataminermanager.client.bean.output.Resource;
public class ComputationStatus implements Serializable {
/**
*
*/
private static final long serialVersionUID = -1943128398882978439L;
public enum Status{
PENDING,
RUNNING,
COMPLETE,
FAILED
};
private double percentage;
private Status status;
private Date endDate;
private String message;
private Resource errResource;
public ComputationStatus() {
this.status = Status.PENDING;
}
public ComputationStatus(double percentage) {
super();
this.percentage = percentage;
this.status = Status.RUNNING;
}
public ComputationStatus(Status status, double percentage) {
super();
this.percentage = percentage;
this.status = status;
}
public double getPercentage() {
return percentage;
}
public void setPercentage(float percentage) {
this.percentage = percentage;
}
public Status getStatus() {
return status;
}
public void setStatus(Status status) {
this.status = status;
}
public boolean isComplete() {
return this.status == Status.COMPLETE;
}
public boolean isFailed() {
return this.status == Status.FAILED;
}
public boolean isRunning() {
return this.status == Status.RUNNING;
}
public boolean isPending() {
return this.status == Status.PENDING;
}
public boolean isTerminated() {
return status==Status.COMPLETE || status==Status.FAILED;
}
/**
* @param endDate the endDate to set
*/
public void setEndDate(Date endDate) {
this.endDate = endDate;
}
/**
* @return the endDate
*/
public Date getEndDate() {
return endDate;
}
/**
* @param message the message to set
*/
public void setMessage(String message) {
this.message = message;
}
/**
* @return the message
*/
public String getMessage() {
return message;
}
public Resource getErrResource()
{
return errResource;
}
public void setErrResource(Resource errRes)
{
this.errResource= errRes;
}
@Override
public String toString() {
return "ComputationStatus [percentage=" + percentage + ", status="
+ status + ", endDate=" + endDate + ", message=" + message
+ ", errResource=" + errResource + "]";
}
}

View File

@ -0,0 +1,166 @@
/**
*
*/
package org.gcube.portlets.user.dataminermanager.client.bean;
import java.io.Serializable;
/**
* @author ceras
*
*/
public class CsvMetadata implements Serializable {
/**
*
*/
private static final long serialVersionUID = -6513418575213232121L;
private boolean hasHeader;
private String fileAbsolutePath, template, tableName, description, delimiterChar, commentChar;
public CsvMetadata() {
super();
}
/**
* @param hasHeader
* @param fileAbsolutePath
* @param tableName
* @param delimiterChar
* @param commentChar
*/
public CsvMetadata(boolean hasHeader, String fileAbsolutePath, String delimiterChar, String commentChar) {
super();
this.hasHeader = hasHeader;
this.fileAbsolutePath = fileAbsolutePath;
this.delimiterChar = delimiterChar;
this.commentChar = commentChar;
}
/**
* @return the hasHeader
*/
public boolean isHasHeader() {
return hasHeader;
}
/**
* @param hasHeader the hasHeader to set
*/
public void setHasHeader(boolean hasHeader) {
this.hasHeader = hasHeader;
}
/**
* @return the fileAbsolutePath
*/
public String getFileAbsolutePath() {
return fileAbsolutePath;
}
/**
* @param fileAbsolutePath the fileAbsolutePath to set
*/
public void setFileAbsolutePath(String fileAbsolutePath) {
this.fileAbsolutePath = fileAbsolutePath;
}
/**
* @return the template
*/
public String getTemplate() {
return template;
}
/**
* @param template the template to set
*/
public void setTemplate(String template) {
this.template = template;
}
/**
* @return the tableName
*/
public String getTableName() {
return tableName;
}
/**
* @param tableName the tableName to set
*/
public void setTableName(String tableName) {
this.tableName = tableName;
}
/**
* @return the description
*/
public String getDescription() {
return description;
}
/**
* @param description the description to set
*/
public void setDescription(String description) {
this.description = description;
}
/**
* @return the delimiterChar
*/
public String getDelimiterChar() {
return delimiterChar;
}
/**
* @param delimiterChar the delimiterChar to set
*/
public void setDelimiterChar(String delimiterChar) {
this.delimiterChar = delimiterChar;
}
/**
* @return the commentChar
*/
public String getCommentChar() {
return commentChar;
}
/**
* @param commentChar the commentChar to set
*/
public void setCommentChar(String commentChar) {
this.commentChar = commentChar;
}
/**
* @return the serialversionuid
*/
public static long getSerialversionuid() {
return serialVersionUID;
}
}

View File

@ -0,0 +1,129 @@
package org.gcube.portlets.user.dataminermanager.client.bean;
import java.io.Serializable;
public class FileMetadata implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private String fileAbsolutePath, fileTaxaPath,fileVernaculaPath, fileName, description, type;
public FileMetadata() {
super();
}
public FileMetadata( String fileAbsolutePath,String type) {
super();
this.fileAbsolutePath = fileAbsolutePath;
this.fileTaxaPath=null;
this.fileVernaculaPath=null;
this.type=type;
}
public FileMetadata( String fileAbsolutePath,String fileTaxaPath, String fileVernacularPath,String type) {
super();
this.fileAbsolutePath = fileAbsolutePath;
this.fileTaxaPath=fileTaxaPath;
this.fileVernaculaPath=fileVernacularPath;
this.type=type;
}
public String getType()
{
return type;
}
public void setType(String type)
{
this.type=type;
}
/**
* @return the fileAbsolutePath
*/
public String getTaxaFileAbsolutePath() {
return fileTaxaPath;
}
/**
* @param fileAbsolutePath the fileAbsolutePath to set
*/
public void setTaxaFileAbsolutePath(String fileTaxaPath) {
this.fileTaxaPath = fileTaxaPath;
}
/**
* @return the fileAbsolutePath
*/
public String getVernacularFileAbsolutePath() {
return fileVernaculaPath;
}
/**
* @param fileAbsolutePath the fileAbsolutePath to set
*/
public void setVernacularFileAbsolutePath(String fileVernaculaPath) {
this.fileVernaculaPath = fileVernaculaPath;
}
/**
* @return the fileAbsolutePath
*/
public String getFileAbsolutePath() {
return fileAbsolutePath;
}
/**
* @param fileAbsolutePath the fileAbsolutePath to set
*/
public void setFileAbsolutePath(String fileAbsolutePath) {
this.fileAbsolutePath = fileAbsolutePath;
}
/**
* @return the description
*/
public String getDescription() {
return description;
}
/**
* @param description the description to set
*/
public void setDescription(String description) {
this.description = description;
}
/**
* @return the fileName
*/
public String getFileName() {
return fileName;
}
/**
* @param fileName the tableName to set
*/
public void setFileName(String fileName) {
this.fileName = fileName;
}
}

View File

@ -0,0 +1,139 @@
/**
*
*/
package org.gcube.portlets.user.dataminermanager.client.bean;
import java.io.Serializable;
import java.util.Date;
import org.gcube.portlets.user.dataminermanager.client.bean.ComputationStatus.Status;
import org.gcube.portlets.user.dataminermanager.client.bean.output.Resource;
/**
* @author ceras
*
*/
public class ImportStatus implements Serializable {
/**
*
*/
private static final long serialVersionUID = 190974315819110637L;
Status status;
String id, fileName, resourceId;
Date date;
Resource resource;
/**
*
*/
public ImportStatus() {
super();
}
/**
* @param id
* @param fileName
* @param isCompleted
*/
public ImportStatus(String id, String fileName, Status status, Date date) {
super();
this.id = id;
this.fileName = fileName;
this.status = status;
this.date = date;
this.resource=new Resource();
}
/**
* @return the id
*/
public String getId() {
return id;
}
/**
* @param id the id to set
*/
public void setId(String id) {
this.id = id;
}
/**
* @return the fileName
*/
public String getFileName() {
return fileName;
}
/**
* @param fileName the fileName to set
*/
public void setFileName(String fileName) {
this.fileName = fileName;
}
/**
* @return the status
*/
public Status getStatus() {
return status;
}
/**
* @param status the status to set
*/
public void setStatus(Status status) {
this.status = status;
}
/**
* @return the date
*/
public Date getDate() {
return date;
}
/**
* @return the resourceId
*/
public String getResourceId() {
return resourceId;
}
/**
* @param resourceId the resourceId to set
*/
public void setResourceId(String resourceId) {
this.resourceId = resourceId;
}
public void setResource(Resource resource)
{
this.resource=resource;
}
public Resource getResoruce()
{
return resource;
}
/**
* @param date the date to set
*/
public void setDate(Date date) {
this.date = date;
}
public boolean isFailed() {
return this.status == Status.FAILED;
}
public boolean isComplete() {
return this.status == Status.COMPLETE;
}
public boolean isTerminated() {
return this.status==Status.COMPLETE || this.status==Status.FAILED;
}
}

View File

@ -0,0 +1,232 @@
/**
*
*/
package org.gcube.portlets.user.dataminermanager.client.bean;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import org.gcube.portlets.user.dataminermanager.client.bean.parameters.Parameter;
import org.gcube.portlets.user.dataminermanager.shared.StringUtil;
/**
* @author ceras
*
*/
public class Operator implements Serializable {
private static final long serialVersionUID = -4084498655645951188L;
private String id;
private String name;
private String briefDescription;
private String description;
private OperatorCategory category;
private List<Parameter> operatorParameters = new ArrayList<Parameter>();
private boolean hasImage = false;
/**
*
*/
public Operator() {
super();
}
/**
* @param id
* @param briefDescription
* @param description
* @param category
*/
public Operator(String id, String briefDescription, String description,
OperatorCategory category) {
super();
this.id = id;
if (id != null)
this.name = StringUtil.getCapitalWords(id);
this.briefDescription = briefDescription;
this.description = description;
this.category = category;
}
/**
* @param id
* @param briefDescription
* @param description
* @param category
* @param hasImage
*/
public Operator(String id, String briefDescription, String description,
OperatorCategory category, boolean hasImage) {
super();
this.id = id;
if (id != null)
this.name = StringUtil.getCapitalWords(id);
this.briefDescription = briefDescription;
this.description = description;
this.category = category;
this.hasImage = hasImage;
}
/**
* @param id
* @param briefDescription
* @param description
* @param category
*/
public Operator(String id, String name, String briefDescription,
String description, OperatorCategory category) {
super();
this.id = id;
if (name != null)
this.name = StringUtil.getCapitalWords(name);
this.briefDescription = briefDescription;
this.description = description;
this.category = category;
}
/**
* @param id
* @param name
* @param briefDescription
* @param description
* @param category
* @param operatorParameters
* @param hasImage
*/
public Operator(String id, String name, String briefDescription,
String description, OperatorCategory category,
List<Parameter> operatorParameters, boolean hasImage) {
super();
this.id = id;
if (name != null)
this.name = StringUtil.getCapitalWords(name);
this.briefDescription = briefDescription;
this.description = description;
this.category = category;
this.operatorParameters = operatorParameters;
this.hasImage = hasImage;
}
/**
* @return the id
*/
public String getId() {
return id;
}
/**
* @param id
* the id to set
*/
public void setId(String id) {
this.id = id;
}
/**
* @return the briefDescription
*/
public String getBriefDescription() {
return briefDescription;
}
/**
* @param briefDescription
* the briefDescription to set
*/
public void setBriefDescription(String briefDescription) {
this.briefDescription = briefDescription;
}
/**
* @return the description
*/
public String getDescription() {
return description;
}
/**
* @param description
* the description to set
*/
public void setDescription(String description) {
this.description = description;
}
/**
* @return the category
*/
public OperatorCategory getCategory() {
return category;
}
/**
* @param category
* the category to set
*/
public void setCategory(OperatorCategory category) {
this.category = category;
}
/**
* @return the operatorParameters
*/
public List<Parameter> getOperatorParameters() {
return operatorParameters;
}
/**
* @param operatorParameters
* the operatorParameters to set
*/
public void setOperatorParameters(List<Parameter> operatorParameters) {
this.operatorParameters = operatorParameters;
}
public void addOperatorParameter(Parameter operatorParameter) {
this.operatorParameters.add(operatorParameter);
}
/**
* @param name
* the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* @return the name
*/
public String getName() {
return name;
}
public boolean hasImage() {
return hasImage;
}
/**
* @param hasImage
* the hasImage to set
*/
public void setHasImage(boolean hasImage) {
this.hasImage = hasImage;
}
public Operator clone() {
return new Operator(id, name, briefDescription, description, category,
new ArrayList<Parameter>(operatorParameters), hasImage);
}
@Override
public String toString() {
return "Operator [id=" + id + ", name=" + name + ", briefDescription="
+ briefDescription + ", description=" + description
+", operatorParameters="
+ operatorParameters + ", hasImage=" + hasImage + "]";
}
}

View File

@ -0,0 +1,219 @@
/**
*
*/
package org.gcube.portlets.user.dataminermanager.client.bean;
import java.util.ArrayList;
import java.util.List;
import com.google.gwt.user.client.rpc.IsSerializable;
/**
* @author ceras
*
*/
public class OperatorCategory implements IsSerializable {
private String id;
private String name;
private String briefDescription;
private String description;
private List<Operator> operators = new ArrayList<Operator>();
private boolean hasImage = false;
/**
*
*/
public OperatorCategory() {
super();
}
/**
* @param id
* @param briefDescription
* @param description
*/
public OperatorCategory(String id, String briefDescription, String description) {
super();
this.id = id;
setNameFromId();
this.briefDescription = briefDescription;
this.description = description;
}
/**
* @param string
* @param string2
* @param string3
* @param b
*/
public OperatorCategory(String id, String briefDescription, String description, boolean hasImage) {
super();
this.id = id;
setNameFromId();
this.briefDescription = briefDescription;
this.description = description;
this.hasImage = hasImage;
}
/**
* @param id
* @param briefDescription
* @param description
* @param operators
*/
public OperatorCategory(String id, String briefDescription,
String description, List<Operator> operators) {
super();
this.id = id;
setNameFromId();
this.briefDescription = briefDescription;
this.description = description;
this.operators = operators;
}
/**
* @param id
* @param briefDescription
* @param description
* @param operators
*/
public OperatorCategory(String id, String name, String briefDescription,
String description, List<Operator> operators) {
super();
this.id = id;
this.name = name;
this.briefDescription = briefDescription;
this.description = description;
this.operators = operators;
}
/**
* @return the id
*/
public String getId() {
return id;
}
/**
* @param id the id to set
*/
public void setId(String id) {
this.id = id;
}
/**
* @return the briefDescription
*/
public String getBriefDescription() {
return briefDescription;
}
/**
* @param briefDescription the briefDescription to set
*/
public void setBriefDescription(String briefDescription) {
this.briefDescription = briefDescription;
}
/**
* @return the description
*/
public String getDescription() {
return description;
}
/**
* @param description the description to set
*/
public void setDescription(String description) {
this.description = description;
}
/**
* @return the operators
*/
public List<Operator> getOperators() {
return operators;
}
/**
* @param operators the operators to set
*/
public void setOperators(List<Operator> operators) {
this.operators = operators;
}
public void addOperator(Operator operator) {
this.operators.add(operator);
}
/**
*
*/
private void setNameFromId() {
if (id!=null) {
String name = "";
boolean precUnderscore = true;
for (int i=0; i<id.length(); i++) {
char c = id.charAt(i);
if (c == '_') {
precUnderscore = true;
name += " ";
} else {
name += (precUnderscore ? Character.toUpperCase(c) : Character.toLowerCase(c));
if (precUnderscore == true)
precUnderscore = false;
}
}
this.name = name;
}
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* @return the name
*/
public String getName() {
return name;
}
public boolean hasImage() {
return hasImage;
}
/**
* @param hasImage the hasImage to set
*/
public void setHasImage(boolean hasImage) {
this.hasImage = hasImage;
}
public OperatorCategory clone() {
OperatorCategory op = new OperatorCategory(id, name, briefDescription, description, new ArrayList<Operator>(operators));
op.setHasImage(hasImage);
return op;
}
@Override
public String toString() {
return "OperatorCategory [id=" + id + ", name=" + name
+ ", briefDescription=" + briefDescription + ", description="
+ description + ", operators=" + operators + ", hasImage="
+ hasImage + "]";
}
}

View File

@ -0,0 +1,117 @@
/**
*
*/
package org.gcube.portlets.user.dataminermanager.client.bean;
import java.util.ArrayList;
import java.util.List;
import com.google.gwt.user.client.rpc.IsSerializable;
/**
* @author ceras
*
*/
public class OperatorsClassification implements IsSerializable {
private String name;
private List<OperatorCategory> operatorCategories = new ArrayList<OperatorCategory>();
private List<Operator> operators = new ArrayList<Operator>();
public OperatorsClassification() {
super();
}
/**
*
*/
public OperatorsClassification(String name) {
super();
this.name = name;
}
/**
* @param operatorCategories
* @param operators
*/
public OperatorsClassification(String name, List<OperatorCategory> operatorCategories,
List<Operator> operators) {
this(name);
this.operatorCategories = operatorCategories;
this.operators = operators;
}
/**
* @return the operatorCategories
*/
public List<OperatorCategory> getOperatorCategories() {
return operatorCategories;
}
/**
* @param operatorCategories the operatorCategories to set
*/
public void setOperatorCategories(List<OperatorCategory> operatorCategories) {
this.operatorCategories = operatorCategories;
}
/**
* @return the operators
*/
public List<Operator> getOperators() {
return operators;
}
/**
* @param operators the operators to set
*/
public void setOperators(List<Operator> operators) {
this.operators = operators;
}
public Operator getOperatorById(String id) {
if (id==null)
return null;
Operator operator = null;
for (Operator op: operators)
if (op.getId().contentEquals(id)) {
operator = op;
break;
}
return operator;
}
public OperatorCategory getCategoryById(String id) {
OperatorCategory category = null;
for (OperatorCategory cat: operatorCategories)
if (cat.getId().contentEquals(id)) {
category = cat;
break;
}
return category;
}
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "OperatorsClassification [name=" + name
+ ", operatorCategories=" + operatorCategories + ", operators="
+ operators + "]";
}
}

View File

@ -0,0 +1,150 @@
package org.gcube.portlets.user.dataminermanager.client.bean;
import java.io.Serializable;
import java.util.Date;
import java.util.ArrayList;
import java.util.List;
import org.gcube.portlets.user.dataminermanager.client.DataMinerManager;
/**
*
* @author Giancarlo Panichi
* email: <a href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
*
*/
public class ResourceItem implements Serializable {
private static final long serialVersionUID = 2814548224382024267L;
private List<String> columnNames = new ArrayList<String>();
private Type type;
private String id;
private String name;
private String description;
private String template;
private Provenance provenance;
private Date creationDate;
private String operatorId;
private String url;
private Operator operator;
public enum Provenance {
IMPORTED,
COMPUTED,
SYSTEM
};
public enum Type {
TABLE,
FILE
}
public ResourceItem() {
super();
}
public ResourceItem(Type type, String id, String name, String description,
String template, Provenance provenance, Date creationDate,
String operatorId, String url) {
this.type=type;
this.id= id;
this.name=name;
this.description=description;
this.template=template;
this.provenance=provenance;
this.creationDate=creationDate;
this.operatorId=operatorId;
this.url=url;
}
public void setColumnNames(List<String> columnNames) {
this.columnNames = columnNames;
}
/**
* @return the columnNames
*/
public List<String> getColumnNames() {
return columnNames;
}
/**
* @param columnName
*/
public void addColumnName(String columnName) {
this.columnNames.add(columnName);
}
public Operator getOperator() {
if (operator==null) {
OperatorsClassification classification = DataMinerManager.getDefaultOperatorsClassification();
if (classification!=null)
operator=classification.getOperatorById(operatorId);
}
return operator;
}
public boolean isFile() {
return type==Type.FILE;
}
public boolean isTable() {
return type==Type.TABLE;
}
public Type getType() {
return type;
}
public String getId() {
return id;
}
public String getName() {
return name;
}
public String getDescription() {
return description;
}
public String getTemplate() {
return template;
}
public Provenance getProvenance() {
return provenance;
}
public Date getCreationDate() {
return creationDate;
}
public String getOperatorId() {
return operatorId;
}
public String getUrl() {
return url;
}
}

View File

@ -0,0 +1,116 @@
/**
*
*/
package org.gcube.portlets.user.dataminermanager.client.bean;
import java.util.HashMap;
import java.util.Map;
/**
* @author ceras
*
*/
public class TemplateDescriptor {
public static TemplateDescriptor descriptors[] = {
new TemplateDescriptor("HCAF", "HCAF Data Set", ""),
new TemplateDescriptor("OCCURRENCE_SPECIES", "Occurrence Species Data Set", ""),
new TemplateDescriptor("OCCURRENCE_AQUAMAPS", "Occurrence Aquamaps", ""),
new TemplateDescriptor("HSPEN", "HSPEN Data Set", ""),
new TemplateDescriptor("HSPEC", "HSPEC Data Set", ""),
new TemplateDescriptor("CLUSTER", "Cluster Data Set", ""),
new TemplateDescriptor("TRAININGSET", "Neural Network Training Set", ""),
new TemplateDescriptor("TESTSET", "Neural Network Test Set", ""),
new TemplateDescriptor("GENERIC", "Generic Data set", ""),
new TemplateDescriptor("MINMAXLAT", "Min Max Lat Data Set", ""),
new TemplateDescriptor("TIMESERIES", "time Series Data Set", ""),
};
public static String[] s = new String[]{""};
public static Map<String, String[][]> map;
static {
map = new HashMap<String, String[][]>();
map.put("HCAF", new String[][]{
{"csquarecode", "string"},
{"depthmin", "real"},
{"depthmax", "real"},
{"depthmean", "real"},
{"depthsd", "real"},
{"sstanmean", "real"},
{"sstansd", "real"},
{"sstmnmax", "real"},
{"sstmnmin", "real"},
{"sstmnrange", "real"},
{"sbtanmean", "real"},
{"salinitymean", "real"},
{"salinitysd", "real"},
{"salinitymax", "real"},
{"salinitymin", "real"},
{"salinitybmean", "real"},
{"primprodmean", "integer"},
{"iceconann", "real"},
{"iceconspr", "real"},
{"iceconsum", "real"},
{"iceconfal", "real"},
{"iceconwin", "real"},
{"faoaream", "integer"},
{"eezall", "string"},
{"lme", "integer"},
{"landdist", "integer"},
{"oceanarea", "real"},
{"centerlat", "real"},
{"centerlong", "real"},
});
}
public static TemplateDescriptor defaultDescriptor = descriptors[0];
// public enum Template {
// HCAF,
// OCCURRENCE_SPECIES,
// OCCURRENCE_AQUAMAPS,
// HSPEN,
// HSPEC,
// CLUSTER,
// TRAININGSET,
// TESTSET,
// GENERIC,
// MINMAXLAT,
// TIMESERIES,
// }
private String id, title, description;
/**
* @param title
* @param description
*/
public TemplateDescriptor(String id, String title, String description) {
super();
this.id = id;
this.title = title;
this.description = description;
}
/**
* @return the id
*/
public String getId() {
return id;
}
/**
* @return the description
*/
public String getDescription() {
return description;
}
/**
* @return the name
*/
public String getTitle() {
return title;
}
}

View File

@ -0,0 +1,48 @@
/**
*
*/
package org.gcube.portlets.user.dataminermanager.client.bean.output;
import java.io.Serializable;
/**
*
* @author Giancarlo Panichi email: <a
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
*
*/
public class ErrorResource extends Resource implements Serializable {
private static final long serialVersionUID = -5452797429958563962L;
private String stackTrace;
public ErrorResource() {
super();
this.setResourceType(ResourceType.ERROR);
}
public ErrorResource(String stackTrace) {
super();
this.stackTrace = stackTrace;
this.setResourceType(ResourceType.ERROR);
}
public String getStackTrace() {
return stackTrace;
}
public void setStackTrace(String stackTrace) {
this.stackTrace = stackTrace;
}
@Override
public String toString() {
return "ErrorResource [getResourceId()=" + getResourceId()
+ ", getDescription()=" + getDescription() + ", getName()="
+ getName() + ", getResourceType()=" + getResourceType()
+ ", stackTrace=" + stackTrace + "]";
}
}

View File

@ -0,0 +1,84 @@
/**
*
*/
package org.gcube.portlets.user.dataminermanager.client.bean.output;
import java.io.Serializable;
/**
* @author ceras
*
*/
public class FileResource extends Resource implements Serializable {
/**
*
*/
private static final long serialVersionUID = 799627064179136509L;
private String url;
private String mimeType;
/**
*
*/
public FileResource() {
super();
this.setResourceType(ResourceType.FILE);
}
/**
*
* @param resourceId
* @param name
* @param description
* @param url
* @param mimeType
*/
public FileResource(String resourceId, String name, String description,
String url, String mimeType) {
super(resourceId, name, description, ResourceType.FILE);
this.url=url;
this.mimeType =mimeType;
}
/**
* @return the url
*/
public String getUrl() {
return url;
}
/**
* @param url the url to set
*/
public void setUrl(String url) {
this.url = url;
}
/**
* @return the mimeType
*/
public String getMimeType() {
return mimeType;
}
/**
* @param mimeType the mimeType to set
*/
public void setMimeType(String mimeType) {
this.mimeType = mimeType;
}
@Override
public String toString() {
return "FileResource [url=" + url + ", mimeType=" + mimeType
+ ", getResourceId()=" + getResourceId() + ", getName()="
+ getName() + ", getDescription()=" + getDescription()
+ ", getResourceType()=" + getResourceType() + "]";
}
}

View File

@ -0,0 +1,75 @@
/**
*
*/
package org.gcube.portlets.user.dataminermanager.client.bean.output;
import java.io.Serializable;
/**
* @author ceras
*
*/
public class ImagesResource extends Resource implements Serializable {
/**
*
*/
private static final long serialVersionUID = 8772836076910728324L;
private String link;
private String mimeType;
/**
*
*/
public ImagesResource() {
super();
this.setResourceType(ResourceType.IMAGES);
}
/**
*
* @param resourceId
* @param name
* @param description
* @param link
*/
public ImagesResource(String resourceId, String name, String description,
String link, String mimeType) {
super(resourceId, name, description, ResourceType.IMAGES);
this.link = link;
this.mimeType = mimeType;
}
/**
*
* @return link
*/
public String getLink() {
return link;
}
/**
*
* @param link
*/
public void setLink(String link) {
this.link = link;
}
public String getMimeType() {
return mimeType;
}
public void setMimeType(String mimeType) {
this.mimeType = mimeType;
}
@Override
public String toString() {
return "ImagesResource [link=" + link + ", mimeType=" + mimeType
+ ", getResourceId()=" + getResourceId() + ", getName()="
+ getName() + ", getDescription()=" + getDescription()
+ ", getResourceType()=" + getResourceType() + "]";
}
}

View File

@ -0,0 +1,51 @@
/**
*
*/
package org.gcube.portlets.user.dataminermanager.client.bean.output;
import java.io.Serializable;
import java.util.Map;
/**
* @author ceras
*
*/
public class MapResource extends Resource implements Serializable {
/**
*
*/
private static final long serialVersionUID = 8772836076910728324L;
private Map<String, Resource> map;
/**
*
*/
public MapResource() {
super();
this.setResourceType(ResourceType.MAP);
}
public MapResource(String resourceId, String name, String description,
Map<String, Resource> map) {
super(resourceId, name, description, ResourceType.MAP);
this.map = map;
}
public Map<String, Resource> getMap() {
return map;
}
public void setMap(Map<String, Resource> map) {
this.map = map;
}
@Override
public String toString() {
return "MapResource [map=" + map + ", getResourceId()="
+ getResourceId() + ", getName()=" + getName()
+ ", getDescription()=" + getDescription()
+ ", getResourceType()=" + getResourceType() + "]";
}
}

View File

@ -0,0 +1,60 @@
/**
*
*/
package org.gcube.portlets.user.dataminermanager.client.bean.output;
import java.io.Serializable;
/**
* @author ceras
*
*/
public class ObjectResource extends Resource implements Serializable {
/**
*
*/
private static final long serialVersionUID = 8772836076910728324L;
private String value;
/**
*
*/
public ObjectResource() {
super();
this.setResourceType(ResourceType.OBJECT);
}
/**
*
*/
public ObjectResource(String resourceId, String name, String description,
String value) {
super(resourceId, name, description, ResourceType.OBJECT);
this.value = value;
}
/**
* @return the url
*/
public String getValue() {
return value;
}
/**
* @param url
* the url to set
*/
public void setValue(String value) {
this.value = value;
}
@Override
public String toString() {
return "ObjectResource [value=" + value + ", getResourceId()="
+ getResourceId() + ", getName()=" + getName()
+ ", getDescription()=" + getDescription()
+ ", getResourceType()=" + getResourceType() + "]";
}
}

View File

@ -0,0 +1,140 @@
/**
*
*/
package org.gcube.portlets.user.dataminermanager.client.bean.output;
import java.io.Serializable;
/**
* @author ceras
*
*/
public class Resource implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1417885805472591661L;
public enum ResourceType {
OBJECT, FILE, TABULAR, MAP, IMAGES, ERROR
};
private String resourceId, name, description;
private ResourceType resourceType;
/**
*
*/
public Resource() {
super();
}
/**
*
* @param resourceId
* @param name
* @param description
* @param resourceType
*/
public Resource(String resourceId, String name, String description,
ResourceType resourceType) {
super();
this.resourceId = resourceId;
this.name = name;
this.description = description;
this.resourceType = resourceType;
}
/**
* @return the resourceId
*/
public String getResourceId() {
return resourceId;
}
/**
* @param resourceId
* the resourceId to set
*/
public void setResourceId(String resourceId) {
this.resourceId = resourceId;
}
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name
* the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* @return the description
*/
public String getDescription() {
return description;
}
/**
* @param description
* the description to set
*/
public void setDescription(String description) {
this.description = description;
}
/**
* @return the resourceType
*/
public ResourceType getResourceType() {
return resourceType;
}
/**
* @param resourceType
* the resourceType to set
*/
public void setResourceType(ResourceType resourceType) {
this.resourceType = resourceType;
}
public boolean isTabular() {
return this.resourceType == ResourceType.TABULAR;
}
public boolean isObject() {
return this.resourceType == ResourceType.OBJECT;
}
public boolean isFile() {
return this.resourceType == ResourceType.FILE;
}
public boolean isMap() {
return this.resourceType == ResourceType.MAP;
}
public boolean isImages() {
return this.resourceType == ResourceType.IMAGES;
}
public boolean isError() {
return this.resourceType == ResourceType.ERROR;
}
@Override
public String toString() {
return "Resource [resourceId=" + resourceId + ", name=" + name
+ ", description=" + description + ", resourceType="
+ resourceType + "]";
}
}

View File

@ -0,0 +1,52 @@
/**
*
*/
package org.gcube.portlets.user.dataminermanager.client.bean.output;
import com.google.gwt.user.client.rpc.IsSerializable;
/**
* @author ceras
*
*/
public class TableResource extends Resource implements IsSerializable {
private static final long serialVersionUID = -1506902532089828988L;
private String template;
public TableResource() {
super();
this.setResourceType(ResourceType.TABULAR);
}
public TableResource(String resourceId, String name, String description, String template) {
super(resourceId, name, description, ResourceType.TABULAR);
this.template = template;
}
/**
* @return the template
*/
public String getTemplate() {
return template;
}
/**
* @param template
* the template to set
*/
public void setTemplate(String template) {
this.template = template;
}
@Override
public String toString() {
return "TableResource [template=" + template + ", getResourceId()="
+ getResourceId() + ", getName()=" + getName()
+ ", getDescription()=" + getDescription()
+ ", getResourceType()=" + getResourceType() + "]";
}
}

View File

@ -0,0 +1,68 @@
/**
*
*/
package org.gcube.portlets.user.dataminermanager.client.bean.parameters;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
/**
* @author ceras
*
*/
public class ColumnListParameter extends Parameter implements Serializable {
private static final long serialVersionUID = -6743494426144267089L;
String referredTabularParameterName;
List<String> columnNames = new ArrayList<String>();
String value;
private String separator;
public ColumnListParameter() {
super();
this.typology = ParameterTypology.COLUMN_LIST;
}
public ColumnListParameter(String name, String description, String referredTabularParameterName, String separator) {
super(name, ParameterTypology.COLUMN_LIST, description);
this.referredTabularParameterName = referredTabularParameterName;
this.separator = separator;
}
/**
* @param referredTabularParameterName the referredTabularParameterName to set
*/
public void setReferredTabularParameterName(String referredTabularParameterName) {
this.referredTabularParameterName = referredTabularParameterName;
}
/**
* @return the referredTabularParameterName
*/
public String getReferredTabularParameterName() {
return referredTabularParameterName;
}
/**
* @return the value
*/
public String getValue() {
return value;
}
@Override
public void setValue(String value) {
this.value = value;
}
/**
* @return the separator
*/
public String getSeparator() {
return separator;
}
}

View File

@ -0,0 +1,82 @@
/**
*
*/
package org.gcube.portlets.user.dataminermanager.client.bean.parameters;
import java.io.Serializable;
/**
* @author ceras
*
*/
public class ColumnParameter extends Parameter implements Serializable {
/**
*
*/
private static final long serialVersionUID = -5084557326770554659L;
String referredTabularParameterName;
String defaultColumn;
String value;
/**
*
*/
public ColumnParameter() {
super();
this.typology = ParameterTypology.COLUMN;
}
/**
*
*/
public ColumnParameter(String name, String description, String referredTabularParameterName, String defaultColumn) {
super(name, ParameterTypology.COLUMN, description);
this.referredTabularParameterName = referredTabularParameterName;
this.defaultColumn = defaultColumn;
}
/**
* @param referredTabularParameterName the referredTabularParameterName to set
*/
public void setReferredTabularParameterName(
String referredTabularParameterName) {
this.referredTabularParameterName = referredTabularParameterName;
}
/**
* @return the referredTabularParameterName
*/
public String getReferredTabularParameterName() {
return referredTabularParameterName;
}
/**
* @return the defaultValue
*/
public String getDefaultColumn() {
return defaultColumn;
}
/**
* @param defaultValue the defaultValue to set
*/
public void setDefaultColumn(String defaultColumn) {
this.defaultColumn = defaultColumn;
}
/**
* @return the value
*/
public String getValue() {
return value;
}
@Override
public void setValue(String value) {
this.value = value;
}
}

View File

@ -0,0 +1,89 @@
/**
*
*/
package org.gcube.portlets.user.dataminermanager.client.bean.parameters;
import java.util.ArrayList;
import java.util.List;
import com.google.gwt.user.client.rpc.IsSerializable;
/**
* @author ceras
*
*/
public class EnumParameter extends Parameter implements IsSerializable {
private static final long serialVersionUID = 1673874854501249519L;
List<String> values = new ArrayList<String>();
String defaultValue;
String value;
/**
*
*/
public EnumParameter() {
super();
this.typology = ParameterTypology.ENUM;
}
/**
* @param type
* @param defaultValue
* @param value
*/
public EnumParameter(String name, String description, List<String> values, String defaultValue) {
super(name, ParameterTypology.ENUM, description);
this.values = values;
this.defaultValue = defaultValue;
}
/**
* @return the defaultValue
*/
public String getDefaultValue() {
return defaultValue;
}
/**
* @param defaultValue the defaultValue to set
*/
public void setDefaultValue(String defaultValue) {
this.defaultValue = defaultValue;
}
/**
* @param values the values to set
*/
public void setValues(List<String> values) {
this.values = values;
}
/**
* @return the values
*/
public List<String> getValues() {
return values;
}
public void addValue(String value) {
this.values.add(value);
}
/**
* @return the value
*/
@Override
public String getValue() {
return value;
}
@Override
public void setValue(String value) {
this.value = value;
}
}

View File

@ -0,0 +1,71 @@
/**
*
*/
package org.gcube.portlets.user.dataminermanager.client.bean.parameters;
import com.google.gwt.user.client.rpc.IsSerializable;
/**
* @author ceras
*
*/
public class FileParameter extends Parameter implements IsSerializable {
private static final long serialVersionUID = -2967577990287112937L;
private String mimeType;
private String value;
/**
*
*/
public FileParameter() {
super();
this.typology = ParameterTypology.FILE;
}
/**
*
* @param name
* @param description
* @param fileName
* @param mimeType
*/
public FileParameter(String name, String description, String mimeType) {
super(name, ParameterTypology.FILE, description);
this.mimeType = mimeType;
}
public String getMimeType() {
return mimeType;
}
public void setMimeType(String mimeType) {
this.mimeType = mimeType;
}
/**
*
*/
public String getValue() {
return value;
}
/**
*
*/
@Override
public void setValue(String value) {
this.value=value;
}
@Override
public String toString() {
return "FileParameter [mimeType=" + mimeType + ", value=" + value
+ ", name=" + name + ", description=" + description
+ ", typology=" + typology + "]";
}
}

View File

@ -0,0 +1,81 @@
/**
*
*/
package org.gcube.portlets.user.dataminermanager.client.bean.parameters;
import com.google.gwt.user.client.rpc.IsSerializable;
/**
* @author ceras
*
*/
public class ListParameter extends Parameter implements IsSerializable {
private static final long serialVersionUID = 5405965026753332225L;
private String type;
private String value;
private String separator;
/**
*
*/
public ListParameter() {
super();
this.typology = ParameterTypology.LIST;
}
/**
* @param defaultValue
* @param value
*/
public ListParameter(String name, String description, String type, String separator) {
super(name, ParameterTypology.LIST, description);
this.type = type;
this.separator = separator;
}
/**
* @return the type
*/
public String getType() {
return type;
}
/**
* @param type the type to set
*/
public void setType(String type) {
this.type = type;
}
@Override
public void setValue(String value) {
this.value = value;
}
@Override
public String getValue() {
return value;
}
/**
* @return the separator
*/
public String getSeparator() {
return separator;
}
@Override
public String toString() {
return "ListParameter [type=" + type + ", value=" + value
+ ", separator=" + separator + ", name=" + name
+ ", description=" + description + ", typology=" + typology
+ "]";
}
}

View File

@ -0,0 +1,88 @@
package org.gcube.portlets.user.dataminermanager.client.bean.parameters;
import com.google.gwt.user.client.rpc.IsSerializable;
/**
* @author ceras
*
*/
public class ObjectParameter extends Parameter implements IsSerializable {
private static final long serialVersionUID = 1058462575242430851L;
private String type;
private String defaultValue;
private String value;
/**
*
*/
public ObjectParameter() {
super();
this.typology = ParameterTypology.OBJECT;
}
public ObjectParameter(String name, String description, String type, String defaultValue) {
super(name, ParameterTypology.OBJECT, description);
this.type = type;
this.defaultValue = defaultValue;
}
/**
* @return the type
*/
public String getType() {
return type;
}
/**
* @param type the type to set
*/
public void setType(String type) {
this.type = type;
}
/**
* @return the defaultValue
*/
public String getDefaultValue() {
return defaultValue;
}
/**
* @param defaultValue the defaultValue to set
*/
public void setDefaultValue(String defaultValue) {
this.defaultValue = defaultValue;
}
/**
* @return the value
*/
public String getValue() {
return value;
}
@Override
public void setValue(String value) {
this.value = value;
}
@Override
public String toString() {
return "ObjectParameter [type=" + type + ", defaultValue="
+ defaultValue + ", value=" + value + ", name=" + name
+ ", description=" + description + ", typology=" + typology
+ "]";
}
}

View File

@ -0,0 +1,135 @@
/**
*
*/
package org.gcube.portlets.user.dataminermanager.client.bean.parameters;
import java.io.Serializable;
/**
*
* @author Giancarlo Panichi
* email: <a href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
*
*/
public abstract class Parameter implements Serializable {
/**
*
*/
private static final long serialVersionUID = -555286289487491703L;
public enum ParameterTypology {OBJECT, TABULAR, FILE, ENUM, LIST, COLUMN, COLUMN_LIST, TABULAR_LIST};
String name;
String description;
ParameterTypology typology;
/**
*
*/
public Parameter() {
super();
}
/**
* @param name
* @param type
* @param description
* @param defaultValue
* @param value
*/
public Parameter(String name, ParameterTypology type, String description) {
super();
this.name = name;
this.typology = type;
this.description = description;
}
public abstract void setValue(String value);
public abstract String getValue();
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* @return the typology
*/
public ParameterTypology getTypology() {
return typology;
}
/**
* @param typology the typology to set
*/
public void setTypology(ParameterTypology typology) {
this.typology = typology;
}
/**
* @return the description
*/
public String getDescription() {
return description;
}
/**
* @param description the description to set
*/
public void setDescription(String description) {
this.description = description;
}
public boolean isObject() {
return this.typology == ParameterTypology.OBJECT;
}
public boolean isTabular() {
return this.typology == ParameterTypology.TABULAR;
}
public boolean isFile() {
return this.typology == ParameterTypology.FILE;
}
public boolean isEnum() {
return this.typology == ParameterTypology.ENUM;
}
public boolean isList() {
return this.typology == ParameterTypology.LIST;
}
public boolean isColumn() {
return this.typology == ParameterTypology.COLUMN;
}
public boolean isColumnList() {
return this.typology == ParameterTypology.COLUMN_LIST;
}
public boolean isTabularList() {
return this.typology == ParameterTypology.TABULAR_LIST;
}
@Override
public String toString() {
return "Parameter [name=" + name + ", description=" + description
+ ", typology=" + typology + "]";
}
}

View File

@ -0,0 +1,85 @@
/**
*
*/
package org.gcube.portlets.user.dataminermanager.client.bean.parameters;
import java.io.Serializable;
import java.util.ArrayList;
/**
* @author ceras
*
*/
public class TabularListParameter extends Parameter implements Serializable {
private static final long serialVersionUID = -1786477950530892502L;
private String value;
private String separator;
private ArrayList<String> templates = new ArrayList<String>();
//private List<String> tableNames = new ArrayList<String>();
public TabularListParameter() {
super();
this.typology = ParameterTypology.TABULAR_LIST;
}
/**
* @param defaultValue
* @param value
*/
public TabularListParameter(String name, String description, String separator) {
super(name, ParameterTypology.TABULAR_LIST, description);
this.separator = separator;
}
@Override
public void setValue(String value) {
this.value = value;
}
@Override
public String getValue() {
return value;
}
/**
* @return the separator
*/
public String getSeparator() {
return separator;
}
/**
* @param templates the templates to set
*/
public void setTemplates(ArrayList<String> templates) {
this.templates = templates;
}
/**
* @return the templates
*/
public ArrayList<String> getTemplates() {
return templates;
}
public void addTemplate(String template) {
templates.add(template);
}
@Override
public String toString() {
return "TabularListParameter [value=" + value + ", separator="
+ separator + ", templates=" + templates + ", name=" + name
+ ", description=" + description + ", typology=" + typology
+ "]";
}
}

View File

@ -0,0 +1,87 @@
/**
*
*/
package org.gcube.portlets.user.dataminermanager.client.bean.parameters;
import java.io.Serializable;
import java.util.ArrayList;
/**
* @author ceras
*
*/
public class TabularParameter extends Parameter implements Serializable {
private static final long serialVersionUID = 8038591467145151553L;
private String tableName;
private ArrayList<String> templates = new ArrayList<String>();
/**
*
*/
public TabularParameter() {
super();
this.typology = ParameterTypology.TABULAR;
}
/**
*
* @param name
* @param description
* @param tableName
*/
public TabularParameter(String name, String description, String tableName) {
super(name, ParameterTypology.TABULAR, description);
this.tableName = tableName;
this.templates = null;
}
/**
*
* @param name
* @param description
* @param tableName
* @param templates
*/
public TabularParameter(String name, String description, String tableName,
ArrayList<String> templates) {
super(name, ParameterTypology.TABULAR, description);
this.tableName = tableName;
this.templates = templates;
}
public String getTableName() {
return tableName;
}
public void setTableName(String tableName) {
this.tableName = tableName;
}
public ArrayList<String> getTemplates() {
return templates;
}
public void setTemplates(ArrayList<String> templates) {
this.templates = templates;
}
@Override
public String getValue() {
return getTableName();
}
@Override
public void setValue(String value) {
this.setTableName(value);
}
@Override
public String toString() {
return "TabularParameter [tableName=" + tableName + ", templates="
+ templates + ", name=" + name + ", description=" + description
+ ", typology=" + typology + "]";
}
}

View File

@ -0,0 +1,19 @@
/**
*
*/
package org.gcube.portlets.user.dataminermanager.client.common;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.event.shared.SimpleEventBus;
/**
*
* @author Giancarlo Panichi email: <a
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
*
*/
public class EventBusProvider {
public static final EventBus INSTANCE = new SimpleEventBus();
}

View File

@ -0,0 +1,21 @@
package org.gcube.portlets.user.dataminermanager.client.custom;
/**
* Fix for z-index bug between GXT3 and GXT2
*
* @author giancarlo email: <a
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
*
*/
public class Gxt2ZIndexXDOM extends
com.sencha.gxt.core.client.dom.XDOM.XDOMImpl {
/*
public int getTopZIndex() {
return com.extjs.gxt.ui.client.core.XDOM.getTopZIndex();
}
public int getTopZIndex(int i) {
return com.extjs.gxt.ui.client.core.XDOM.getTopZIndex(i);
}*/
}

View File

@ -0,0 +1,19 @@
package org.gcube.portlets.user.dataminermanager.client.dataspace;
import com.google.gwt.user.client.ui.HTML;
import com.sencha.gxt.widget.core.client.container.SimpleContainer;
/**
*
* @author Giancarlo Panichi
* email: <a href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
*
*/
public class ComputedDataPanel extends SimpleContainer{
public ComputedDataPanel() {
HTML html=new HTML("Ciao");
add(html);
}
}

View File

@ -0,0 +1,27 @@
/**
*
*/
package org.gcube.portlets.user.dataminermanager.client.dataspace;
import com.sencha.gxt.core.client.util.Margins;
import com.sencha.gxt.widget.core.client.container.SimpleContainer;
import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer;
import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer.VerticalLayoutData;
public class DataSpacePanel extends SimpleContainer {
/**
*
*/
public DataSpacePanel() {
super();
VerticalLayoutContainer v=new VerticalLayoutContainer();
ImportedDataPanel importedDataPanel=new ImportedDataPanel();
ComputedDataPanel computedDataPanel=new ComputedDataPanel();
v.add(importedDataPanel,new VerticalLayoutData(1, 0.5, new Margins(0)));
v.add(computedDataPanel,new VerticalLayoutData(1, 0.5, new Margins(0)));
add(v);
}
}

View File

@ -0,0 +1,354 @@
package org.gcube.portlets.user.dataminermanager.client.dataspace;
import org.gcube.portlets.user.dataminermanager.client.common.EventBusProvider;
import org.gcube.portlets.user.dataminermanager.client.events.DataMinerWorkAreaEvent;
import org.gcube.portlets.user.dataminermanager.client.events.DeleteItemEvent;
import org.gcube.portlets.user.dataminermanager.client.events.SessionExpiredEvent;
import org.gcube.portlets.user.dataminermanager.client.events.UIStateEvent;
import org.gcube.portlets.user.dataminermanager.client.rpc.DataMinerPortletServiceAsync;
import org.gcube.portlets.user.dataminermanager.client.util.UtilsGXT3;
import org.gcube.portlets.user.dataminermanager.shared.exception.ExpiredSessionServiceException;
import org.gcube.portlets.user.dataminermanager.shared.workspace.ItemDescription;
import org.gcube.portlets.widgets.workspaceuploader.client.WorkspaceUploadNotification.WorskpaceUploadNotificationListener;
import org.gcube.portlets.widgets.workspaceuploader.client.uploader.DialogUpload.UPLOAD_TYPE;
import org.gcube.portlets.widgets.workspaceuploader.client.uploader.dragdrop.MultipleDNDUpload;
import org.gcube.portlets.widgets.wsexplorer.client.explore.WorkspaceResourcesExplorerPanel;
import org.gcube.portlets.widgets.wsexplorer.client.notification.WorkspaceExplorerSelectNotification.WorskpaceExplorerSelectNotificationListener;
import org.gcube.portlets.widgets.wsexplorer.shared.Item;
import com.allen_sauer.gwt.log.client.Log;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.sencha.gxt.cell.core.client.ButtonCell.ButtonScale;
import com.sencha.gxt.cell.core.client.ButtonCell.IconAlign;
import com.sencha.gxt.core.client.dom.ScrollSupport.ScrollMode;
import com.sencha.gxt.core.client.util.Margins;
import com.sencha.gxt.widget.core.client.ContentPanel;
import com.sencha.gxt.widget.core.client.button.TextButton;
import com.sencha.gxt.widget.core.client.container.BoxLayoutContainer.BoxLayoutData;
import com.sencha.gxt.widget.core.client.container.MarginData;
import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer;
import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer.VerticalLayoutData;
import com.sencha.gxt.widget.core.client.event.SelectEvent;
import com.sencha.gxt.widget.core.client.event.SelectEvent.SelectHandler;
import com.sencha.gxt.widget.core.client.toolbar.ToolBar;
/**
*
* @author Giancarlo Panichi email: <a
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
*
*/
public class ImportedDataPanel extends ContentPanel {
private Item selectedItem;
private MultipleDNDUpload dnd;
private WorkspaceResourcesExplorerPanel wsResourcesExplorerPanel;
private TextButton btnOpen;
private TextButton btnDelete;
private TextButton btnReload;
private VerticalLayoutContainer v;
public ImportedDataPanel() {
super();
Log.debug("ImportedDataPanel");
// msgs = GWT.create(ServiceCategoryMessages.class);
init();
bindToEvents();
}
private void init() {
setId("ImportedDataPanel");
forceLayoutOnResize = true;
setBodyBorder(true);
setBorders(true);
setHeaderVisible(true);
setResize(true);
setAnimCollapse(false);
setHeadingText("Imported Data");
}
private void bindToEvents() {
EventBusProvider.INSTANCE.addHandler(UIStateEvent.TYPE,
new UIStateEvent.UIStateEventHandler() {
@Override
public void onChange(UIStateEvent event) {
manageStateEvents(event);
}
});
EventBusProvider.INSTANCE.addHandler(DataMinerWorkAreaEvent.TYPE,
new DataMinerWorkAreaEvent.DataMinerWorkAreaEventHandler() {
@Override
public void onChange(DataMinerWorkAreaEvent event) {
manageDataMinerWorkAreaEvents(event);
}
});
}
private void manageStateEvents(UIStateEvent event) {
Log.debug("ImportedDataPanel recieved UIStateEvent: "
+ event.toString());
switch (event.getUiStateType()) {
case START:
break;
case WAITING:
break;
case UPDATE:
break;
default:
break;
}
}
private void manageDataMinerWorkAreaEvents(DataMinerWorkAreaEvent event) {
Log.debug("ImportedDataPanel recieved UIStateEvent: "
+ event.toString());
switch (event.getDataMinerWorkAreaEventType()) {
case OPEN:
case UPDATE:
reloadWSResourceExplorerPanel(event);
break;
default:
break;
}
}
private void create(DataMinerWorkAreaEvent event) {
try {
if(event==null|| event.getDataMinerWorkArea()==null||
event.getDataMinerWorkArea().getImportedData()==null||
event.getDataMinerWorkArea().getImportedData().getFolder()==null||
event.getDataMinerWorkArea().getImportedData().getFolder().getId()==null
||event.getDataMinerWorkArea().getImportedData().getFolder().getId().isEmpty()){
if(v!=null){
remove(v);
forceLayout();
}
return;
}
wsResourcesExplorerPanel = new WorkspaceResourcesExplorerPanel(
event.getDataMinerWorkArea().getImportedData().getFolder().getId(),
false);
WorskpaceExplorerSelectNotificationListener wsResourceExplorerListener = new WorskpaceExplorerSelectNotificationListener() {
@Override
public void onSelectedItem(Item item) {
Log.debug("Listener Selected Item " + item);
selectedItem = item;
}
@Override
public void onFailed(Throwable throwable) {
Log.error(throwable.getLocalizedMessage());
throwable.printStackTrace();
}
@Override
public void onAborted() {
}
@Override
public void onNotValidSelection() {
selectedItem = null;
}
};
wsResourcesExplorerPanel
.addWorkspaceExplorerSelectNotificationListener(wsResourceExplorerListener);
wsResourcesExplorerPanel.ensureDebugId("wsResourceExplorerPanel");
VerticalLayoutContainer vResourcesExplorerContainer = new VerticalLayoutContainer();
vResourcesExplorerContainer.setScrollMode(ScrollMode.AUTO);
vResourcesExplorerContainer.add(wsResourcesExplorerPanel,
new VerticalLayoutData(1, -1, new Margins(0)));
// DND
dnd = new MultipleDNDUpload();
dnd.setParameters(event.getDataMinerWorkArea().getImportedData().getFolder().getId(), UPLOAD_TYPE.File);
dnd.addUniqueContainer(vResourcesExplorerContainer);
WorskpaceUploadNotificationListener workspaceUploaderListener = new WorskpaceUploadNotificationListener() {
@Override
public void onUploadCompleted(String parentId, String itemId) {
Log.debug("Upload completed: [parentID: " + parentId
+ ", itemId: " + itemId + "]");
wsResourcesExplorerPanel.refreshRootFolderView();
forceLayout();
}
@Override
public void onUploadAborted(String parentId, String itemId) {
Log.debug("Upload Aborted: [parentID: " + parentId
+ ", itemId: " + itemId + "]");
}
@Override
public void onError(String parentId, String itemId,
Throwable throwable) {
Log.debug("Upload Error: [parentID: " + parentId
+ ", itemId: " + itemId + "]");
throwable.printStackTrace();
}
@Override
public void onOverwriteCompleted(String parentId, String itemId) {
Log.debug("Upload Override Completed: [parentID: "
+ parentId + ", itemId: " + itemId + "]");
wsResourcesExplorerPanel.refreshRootFolderView();
forceLayout();
}
};
dnd.addWorkspaceUploadNotificationListener(workspaceUploaderListener);
// ToolBar
btnOpen = new TextButton("Open");
// btnOpen.setIcon(StatAlgoImporterResources.INSTANCE.download16());
btnOpen.setScale(ButtonScale.SMALL);
btnOpen.setIconAlign(IconAlign.LEFT);
btnOpen.setToolTip("Open");
btnOpen.addSelectHandler(new SelectHandler() {
@Override
public void onSelect(SelectEvent event) {
openFile();
}
});
btnDelete = new TextButton("Delete");
// btnDelete.setIcon(StatAlgoImporterResources.INSTANCE.delete16());
btnDelete.setScale(ButtonScale.SMALL);
btnDelete.setIconAlign(IconAlign.LEFT);
btnDelete.setToolTip("Delete");
btnDelete.addSelectHandler(new SelectHandler() {
@Override
public void onSelect(SelectEvent event) {
deleteItem(event);
}
});
btnReload = new TextButton("Reload");
// btnReload.setIcon(StatAlgoImporterResources.INSTANCE.reload16());
btnReload.setScale(ButtonScale.SMALL);
btnReload.setIconAlign(IconAlign.LEFT);
btnReload.setToolTip("Reload");
btnReload.addSelectHandler(new SelectHandler() {
@Override
public void onSelect(SelectEvent event) {
reloadWSResourceExplorerPanel();
}
});
ToolBar toolBar = new ToolBar();
toolBar.add(btnOpen, new BoxLayoutData(new Margins(0)));
toolBar.add(btnDelete, new BoxLayoutData(new Margins(0)));
toolBar.add(btnReload, new BoxLayoutData(new Margins(0)));
v = new VerticalLayoutContainer();
v.add(toolBar, new VerticalLayoutData(1, -1, new Margins(0)));
v.add(dnd, new VerticalLayoutData(1, 1, new Margins(0)));
add(v);
forceLayout();
} catch (Exception e) {
Log.error("Error opening wsResourceExplorerPanel");
e.printStackTrace();
}
}
private void reloadWSResourceExplorerPanel(){
if (wsResourcesExplorerPanel != null) {
wsResourcesExplorerPanel.refreshRootFolderView();
}
}
private void reloadWSResourceExplorerPanel(DataMinerWorkAreaEvent event) {
if(v!=null){
remove(v);
create(event);
} else {
create(event);
}
}
private void deleteItem(SelectEvent event) {
ItemDescription itemDescription = new ItemDescription(
selectedItem.getId(), selectedItem.getName(),
selectedItem.getOwner(), selectedItem.getPath(), selectedItem
.getType().name());
DeleteItemEvent deleteItemEvent = new DeleteItemEvent(itemDescription);
EventBusProvider.INSTANCE.fireEvent(deleteItemEvent);
Log.debug("Fired: " + deleteItemEvent);
}
private void openFile() {
if (selectedItem != null && !selectedItem.isFolder()) {
final ItemDescription itemDescription = new ItemDescription(
selectedItem.getId(), selectedItem.getName(),
selectedItem.getOwner(), selectedItem.getPath(),
selectedItem.getType().name());
DataMinerPortletServiceAsync.INSTANCE.getPublicLink(
itemDescription, new AsyncCallback<String>() {
@Override
public void onFailure(Throwable caught) {
if (caught instanceof ExpiredSessionServiceException) {
EventBusProvider.INSTANCE.fireEvent(new SessionExpiredEvent());
} else {
Log.error("Error open file: "
+ caught.getLocalizedMessage());
UtilsGXT3.alert("Error",
caught.getLocalizedMessage());
}
caught.printStackTrace();
}
@Override
public void onSuccess(String link) {
Log.debug("Retrieved link: " + link);
Window.open(link, itemDescription.getName(), "");
}
});
} else {
UtilsGXT3.info("Attention", "Select a file!");
}
}
}

View File

@ -0,0 +1,77 @@
package org.gcube.portlets.user.dataminermanager.client.events;
import org.gcube.portlets.user.dataminermanager.client.type.DataMinerWorkAreaEventType;
import org.gcube.portlets.user.dataminermanager.shared.workspace.DataMinerWorkArea;
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;
/**
* Data Miner Work Area Event
*
*
* @author "Giancarlo Panichi" <a
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
*
*/
public class DataMinerWorkAreaEvent extends
GwtEvent<DataMinerWorkAreaEvent.DataMinerWorkAreaEventHandler> {
public static Type<DataMinerWorkAreaEventHandler> TYPE = new Type<DataMinerWorkAreaEventHandler>();
private DataMinerWorkAreaEventType dataMinerWorkAreaEventType;
private DataMinerWorkArea dataMinerWorkArea;
public interface DataMinerWorkAreaEventHandler extends EventHandler {
void onChange(DataMinerWorkAreaEvent event);
}
public interface HasDataMinerWorkAreaEventHandler extends HasHandlers {
public HandlerRegistration addDataMinerWorkAreaEventHandler(
DataMinerWorkAreaEventHandler handler);
}
public DataMinerWorkAreaEvent(
DataMinerWorkAreaEventType dataMinerWorkAreaEventType, DataMinerWorkArea dataMinerWorkArea) {
this.dataMinerWorkAreaEventType = dataMinerWorkAreaEventType;
this.dataMinerWorkArea=dataMinerWorkArea;
}
@Override
protected void dispatch(DataMinerWorkAreaEventHandler handler) {
handler.onChange(this);
}
@Override
public Type<DataMinerWorkAreaEventHandler> getAssociatedType() {
return TYPE;
}
public static Type<DataMinerWorkAreaEventHandler> getType() {
return TYPE;
}
public static void fire(HasHandlers source,
DataMinerWorkAreaEvent dataMinerWorkAreaEvent) {
source.fireEvent(dataMinerWorkAreaEvent);
}
public DataMinerWorkAreaEventType getDataMinerWorkAreaEventType() {
return dataMinerWorkAreaEventType;
}
public DataMinerWorkArea getDataMinerWorkArea() {
return dataMinerWorkArea;
}
@Override
public String toString() {
return "DataMinerWorkAreaEvent [dataMinerWorkAreaEventType="
+ dataMinerWorkAreaEventType + ", dataMinerWorkArea="
+ dataMinerWorkArea + "]";
}
}

View File

@ -0,0 +1,68 @@
package org.gcube.portlets.user.dataminermanager.client.events;
import org.gcube.portlets.user.dataminermanager.shared.workspace.ItemDescription;
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;
/**
* Delete Item Event
*
*
* @author "Giancarlo Panichi" <a
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
*
*/
public class DeleteItemEvent extends
GwtEvent<DeleteItemEvent.DeleteItemEventHandler> {
public static Type<DeleteItemEventHandler> TYPE = new Type<DeleteItemEventHandler>();
private ItemDescription itemDescription;
public interface DeleteItemEventHandler extends EventHandler {
void onDelete(DeleteItemEvent event);
}
public interface HasDeleteItemEventHandler extends HasHandlers {
public HandlerRegistration addDeleteItemEventHandler(
DeleteItemEventHandler handler);
}
public DeleteItemEvent(ItemDescription itemDescription) {
this.itemDescription = itemDescription;
}
@Override
protected void dispatch(DeleteItemEventHandler handler) {
handler.onDelete(this);
}
@Override
public Type<DeleteItemEventHandler> getAssociatedType() {
return TYPE;
}
public static Type<DeleteItemEventHandler> getType() {
return TYPE;
}
public static void fire(HasHandlers source, DeleteItemEvent deleteItemEvent) {
source.fireEvent(deleteItemEvent);
}
public ItemDescription getItemDescription() {
return itemDescription;
}
@Override
public String toString() {
return "DeleteItemEvent [itemDescription=" + itemDescription + "]";
}
}

View File

@ -0,0 +1,43 @@
package org.gcube.portlets.user.dataminermanager.client.events;
import com.google.gwt.event.shared.GwtEvent;
import com.google.gwt.event.shared.EventHandler;
import java.lang.String;
import com.google.gwt.event.shared.HasHandlers;
public class ImportCreatedEvent extends
GwtEvent<ImportCreatedEvent.ImportCreatedHandler> {
public static Type<ImportCreatedHandler> TYPE = new Type<ImportCreatedHandler>();
private String importId;
public interface ImportCreatedHandler extends EventHandler {
void onImportCreated(ImportCreatedEvent event);
}
public ImportCreatedEvent(String importId) {
this.importId = importId;
}
public String getImportId() {
return importId;
}
@Override
protected void dispatch(ImportCreatedHandler handler) {
handler.onImportCreated(this);
}
@Override
public Type<ImportCreatedHandler> getAssociatedType() {
return TYPE;
}
public static Type<ImportCreatedHandler> getType() {
return TYPE;
}
public static void fire(HasHandlers source, String importId) {
source.fireEvent(new ImportCreatedEvent(importId));
}
}

View File

@ -0,0 +1,44 @@
package org.gcube.portlets.user.dataminermanager.client.events;
import org.gcube.portlets.user.dataminermanager.client.bean.ImportStatus;
import com.google.gwt.event.shared.EventHandler;
import com.google.gwt.event.shared.GwtEvent;
import com.google.gwt.event.shared.HasHandlers;
public class ImportTerminatedEvent extends
GwtEvent<ImportTerminatedEvent.ImportTerminatedHandler> {
public static Type<ImportTerminatedHandler> TYPE = new Type<ImportTerminatedHandler>();
private ImportStatus importStatus;
public interface ImportTerminatedHandler extends EventHandler {
void onImportTerminated(ImportTerminatedEvent event);
}
public ImportTerminatedEvent(ImportStatus importStatus) {
this.importStatus = importStatus;
}
public ImportStatus getImportStatus() {
return importStatus;
}
@Override
protected void dispatch(ImportTerminatedHandler handler) {
handler.onImportTerminated(this);
}
@Override
public Type<ImportTerminatedHandler> getAssociatedType() {
return TYPE;
}
public static Type<ImportTerminatedHandler> getType() {
return TYPE;
}
public static void fire(HasHandlers source, ImportStatus importStatus) {
source.fireEvent(new ImportTerminatedEvent(importStatus));
}
}

View File

@ -0,0 +1,35 @@
package org.gcube.portlets.user.dataminermanager.client.events;
import com.google.gwt.event.shared.GwtEvent;
import com.google.gwt.event.shared.EventHandler;
import com.google.gwt.event.shared.HasHandlers;
public class JobsGridGotDirtyEvent extends GwtEvent<JobsGridGotDirtyEvent.JobsGridGotDirtyHandler> {
public static Type<JobsGridGotDirtyHandler> TYPE = new Type<JobsGridGotDirtyHandler>();
public interface JobsGridGotDirtyHandler extends EventHandler {
void onJobsGridGotDirty(JobsGridGotDirtyEvent event);
}
public JobsGridGotDirtyEvent() {
}
@Override
protected void dispatch(JobsGridGotDirtyHandler handler) {
handler.onJobsGridGotDirty(this);
}
@Override
public Type<JobsGridGotDirtyHandler> getAssociatedType() {
return TYPE;
}
public static Type<JobsGridGotDirtyHandler> getType() {
return TYPE;
}
public static void fire(HasHandlers source) {
source.fireEvent(new JobsGridGotDirtyEvent());
}
}

View File

@ -0,0 +1,18 @@
/**
*
*/
package org.gcube.portlets.user.dataminermanager.client.events;
import org.gcube.portlets.user.dataminermanager.client.bean.ComputationItem;
/**
* @author ceras
*
*/
public interface JobsGridHandler {
public void jobSelected(ComputationItem jobItem);
public void removeComputation(ComputationItem jobItem);
}

View File

@ -0,0 +1,42 @@
package org.gcube.portlets.user.dataminermanager.client.events;
import com.google.gwt.event.shared.GwtEvent;
import com.google.gwt.event.shared.EventHandler;
import java.lang.String;
import com.google.gwt.event.shared.HasHandlers;
public class MaskEvent extends GwtEvent<MaskEvent.MaskHandler> {
public static Type<MaskHandler> TYPE = new Type<MaskHandler>();
private String message;
public interface MaskHandler extends EventHandler {
void onMask(MaskEvent event);
}
public MaskEvent(String message) {
this.message = message;
}
public String getMessage() {
return message;
}
@Override
protected void dispatch(MaskHandler handler) {
handler.onMask(this);
}
@Override
public Type<MaskHandler> getAssociatedType() {
return TYPE;
}
public static Type<MaskHandler> getType() {
return TYPE;
}
public static void fire(HasHandlers source, String message) {
source.fireEvent(new MaskEvent(message));
}
}

View File

@ -0,0 +1,45 @@
package org.gcube.portlets.user.dataminermanager.client.events;
import com.google.gwt.event.shared.GwtEvent;
import com.google.gwt.event.shared.EventHandler;
import org.gcube.portlets.user.dataminermanager.client.bean.ComputationItem;
import com.google.gwt.event.shared.HasHandlers;
public class ResubmitComputationEvent extends
GwtEvent<ResubmitComputationEvent.ResubmitComputationHandler> {
public static Type<ResubmitComputationHandler> TYPE = new Type<ResubmitComputationHandler>();
private ComputationItem jobItem;
public interface ResubmitComputationHandler extends EventHandler {
void onResubmitComputation(ResubmitComputationEvent event);
}
public ResubmitComputationEvent(ComputationItem jobItem) {
this.jobItem = jobItem;
}
public ComputationItem getJobItem() {
return jobItem;
}
@Override
protected void dispatch(ResubmitComputationHandler handler) {
handler.onResubmitComputation(this);
}
@Override
public Type<ResubmitComputationHandler> getAssociatedType() {
return TYPE;
}
public static Type<ResubmitComputationHandler> getType() {
return TYPE;
}
public static void fire(HasHandlers source, ComputationItem jobItem) {
source.fireEvent(new ResubmitComputationEvent(jobItem));
}
}

View File

@ -0,0 +1,70 @@
package org.gcube.portlets.user.dataminermanager.client.events;
import org.gcube.portlets.user.dataminermanager.client.type.SessionExpiredEventType;
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;
/**
* Session Expired Event
*
*
* @author "Giancarlo Panichi" <a
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
*
*/
public class SessionExpiredEvent extends GwtEvent<SessionExpiredEvent.SessionExpiredEventHandler> {
public static Type<SessionExpiredEventHandler> TYPE = new Type<SessionExpiredEventHandler>();
private SessionExpiredEventType sessionExpiredEventType;
public interface SessionExpiredEventHandler extends EventHandler {
void onChange(SessionExpiredEvent event);
}
public interface HasSessionExpiredEventHandler extends HasHandlers {
public HandlerRegistration addSessionExpiredEventHandler(
SessionExpiredEventHandler handler);
}
public SessionExpiredEvent() {
this.sessionExpiredEventType = SessionExpiredEventType.EXPIREDONSERVER;
}
public SessionExpiredEvent(SessionExpiredEventType sessionExpiredEventType) {
this.sessionExpiredEventType = sessionExpiredEventType;
}
@Override
protected void dispatch(SessionExpiredEventHandler handler) {
handler.onChange(this);
}
@Override
public Type<SessionExpiredEventHandler> getAssociatedType() {
return TYPE;
}
public static Type<SessionExpiredEventHandler> getType() {
return TYPE;
}
public static void fire(HasHandlers source, SessionExpiredEvent sessionExpieredEvent) {
source.fireEvent(sessionExpieredEvent);
}
public SessionExpiredEventType getSessionExpiredEventType() {
return sessionExpiredEventType;
}
@Override
public String toString() {
return "SessionExpiredEvent [sessionExpiredEventType="
+ sessionExpiredEventType + "]";
}
}

View File

@ -0,0 +1,43 @@
package org.gcube.portlets.user.dataminermanager.client.events;
import com.google.gwt.event.shared.GwtEvent;
import com.google.gwt.event.shared.EventHandler;
import java.lang.String;
import com.google.gwt.event.shared.HasHandlers;
public class TablesGridGotDirtyEvent extends
GwtEvent<TablesGridGotDirtyEvent.TablesGridGotDirtyHandler> {
public static Type<TablesGridGotDirtyHandler> TYPE = new Type<TablesGridGotDirtyHandler>();
private String tableId;
public interface TablesGridGotDirtyHandler extends EventHandler {
void onTablesGridGotDirty(TablesGridGotDirtyEvent event);
}
public TablesGridGotDirtyEvent(String tableId) {
this.tableId = tableId;
}
public String getTableId() {
return tableId;
}
@Override
protected void dispatch(TablesGridGotDirtyHandler handler) {
handler.onTablesGridGotDirty(this);
}
@Override
public Type<TablesGridGotDirtyHandler> getAssociatedType() {
return TYPE;
}
public static Type<TablesGridGotDirtyHandler> getType() {
return TYPE;
}
public static void fire(HasHandlers source, String tableId) {
source.fireEvent(new TablesGridGotDirtyEvent(tableId));
}
}

View File

@ -0,0 +1,67 @@
package org.gcube.portlets.user.dataminermanager.client.events;
import org.gcube.portlets.user.dataminermanager.client.type.UIStateEventType;
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;
/**
* User Interface State Event
*
*
* @author "Giancarlo Panichi" <a
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
*
*/
public class UIStateEvent extends GwtEvent<UIStateEvent.UIStateEventHandler> {
public static Type<UIStateEventHandler> TYPE = new Type<UIStateEventHandler>();
private UIStateEventType uiStateType;
public interface UIStateEventHandler extends EventHandler {
void onChange(UIStateEvent event);
}
public interface HasUIStateEventHandler extends HasHandlers {
public HandlerRegistration addUIStateEventHandler(
UIStateEventHandler handler);
}
public UIStateEvent() {
this.uiStateType = UIStateEventType.START;
}
public UIStateEvent(UIStateEventType uiStateType) {
this.uiStateType = uiStateType;
}
@Override
protected void dispatch(UIStateEventHandler handler) {
handler.onChange(this);
}
@Override
public Type<UIStateEventHandler> getAssociatedType() {
return TYPE;
}
public static Type<UIStateEventHandler> getType() {
return TYPE;
}
public static void fire(HasHandlers source, UIStateEvent uiStateEvent) {
source.fireEvent(uiStateEvent);
}
public UIStateEventType getUiStateType() {
return uiStateType;
}
@Override
public String toString() {
return "UIStatusEvent [uiStateType=" + uiStateType + "]";
}
}

View File

@ -0,0 +1,66 @@
package org.gcube.portlets.user.dataminermanager.client.events;
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;
/**
* WPS Menu Event
*
*
* @author "Giancarlo Panichi" <a
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
*
*/
public class WPSMenuEvent extends
GwtEvent<WPSMenuEvent.WPSMenuEventHandler> {
public static Type<WPSMenuEventHandler> TYPE = new Type<WPSMenuEventHandler>();
private WPSMenuType menuType;
public interface WPSMenuEventHandler extends EventHandler {
void onMenu(WPSMenuEvent event);
}
public interface HasWPSMenuEventHandler extends HasHandlers {
public HandlerRegistration addWPSMenuEventHandler(
WPSMenuEventHandler handler);
}
public WPSMenuEvent(WPSMenuType menuType) {
this.menuType = menuType;
}
@Override
protected void dispatch(WPSMenuEventHandler handler) {
handler.onMenu(this);
}
@Override
public Type<WPSMenuEventHandler> getAssociatedType() {
return TYPE;
}
public static Type<WPSMenuEventHandler> getType() {
return TYPE;
}
public static void fire(HasHandlers source, WPSMenuEvent wpsMenuEvent) {
source.fireEvent(wpsMenuEvent);
}
public WPSMenuType getMenuType() {
return menuType;
}
@Override
public String toString() {
return "WPSMenuEvent [menuType=" + menuType + "]";
}
}

View File

@ -0,0 +1,11 @@
package org.gcube.portlets.user.dataminermanager.client.events;
/**
*
* @author Giancarlo Panichi
* email: <a href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
*
*/
public enum WPSMenuType {
MENU, INPUT_SPACE, EXPERIMENT, COMPUTATIONS
}

View File

@ -0,0 +1,200 @@
package org.gcube.portlets.user.dataminermanager.client.experimentArea;
import java.util.ArrayList;
import java.util.List;
import org.gcube.portlets.user.dataminermanager.client.DataMinerManager;
import org.gcube.portlets.user.dataminermanager.client.bean.ComputationItem;
import org.gcube.portlets.user.dataminermanager.client.bean.Operator;
import org.gcube.portlets.user.dataminermanager.client.common.EventBusProvider;
import org.gcube.portlets.user.dataminermanager.client.events.JobsGridGotDirtyEvent;
import org.gcube.portlets.user.dataminermanager.client.events.ResubmitComputationEvent;
import org.gcube.portlets.user.dataminermanager.client.util.UtilsGXT3;
import org.gcube.portlets.user.dataminermanager.shared.data.ComputationId;
import com.allen_sauer.gwt.log.client.Log;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.sencha.gxt.cell.core.client.ButtonCell.ButtonScale;
import com.sencha.gxt.core.client.util.Margins;
import com.sencha.gxt.widget.core.client.ContentPanel;
import com.sencha.gxt.widget.core.client.button.TextButton;
import com.sencha.gxt.widget.core.client.container.MarginData;
import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer;
import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer.VerticalLayoutData;
import com.sencha.gxt.widget.core.client.event.SelectEvent;
import com.sencha.gxt.widget.core.client.event.SelectEvent.SelectHandler;
import com.sencha.gxt.widget.core.client.form.FieldLabel;
import com.sencha.gxt.widget.core.client.toolbar.ToolBar;
/**
*
* @author Giancarlo Panichi email: <a
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
*
*/
public class ComputationPanel extends ContentPanel {
private List<ComputationStatusPanel> computationStatusPanels = new ArrayList<ComputationStatusPanel>();
private static final String DELETE_ALL_BUTTON_TOOLTIP = "Remove Computations Log";
private TextButton removeAllButton;
private VerticalLayoutContainer vert;
/**
*
*/
public ComputationPanel() {
super();
bind();
// this.setHeading(".: Computation Execution");
this.setHeaderVisible(false);
this.addStyleName("computationExcecutionPanel");
setToolsPanel();
vert = new VerticalLayoutContainer();
add(vert, new MarginData(0));
}
public void startNewComputation(final Operator operator,
String computationTitle, String computationDescription) {
Log.debug("Computation Panel: start new computation ");
final ComputationStatusPanel statusPanel = new ComputationStatusPanel(
operator);
computationStatusPanels.add(statusPanel);
Log.debug("Added status bar ");
vert.insert(statusPanel, 0, new VerticalLayoutData(1, -1,
new Margins(0)));
removeAllButton.setEnabled(true);
DataMinerManager.getService().startComputation(operator,
computationTitle, computationDescription,
new AsyncCallback<ComputationId>() {
@Override
public void onSuccess(ComputationId computationId) {
if (computationId == null)
UtilsGXT3
.alert("ERROR",
"Failed to start computation "
+ operator.getName()
+ ", the computation id is null (1)");
else {
statusPanel.computationStarted(computationId);
EventBusProvider.INSTANCE
.fireEvent(new JobsGridGotDirtyEvent());
}
}
@Override
public void onFailure(Throwable caught) {
UtilsGXT3.alert(
"ERROR",
"Failed to start computation "
+ operator.getName()
+ " (2)<br/>Cause:" + caught.getCause()
+ "<br/>Message:" + caught.getMessage());
}
});
forceLayout();
}
private void bind() {
EventBusProvider.INSTANCE.addHandler(
ResubmitComputationEvent.getType(),
new ResubmitComputationEvent.ResubmitComputationHandler() {
@Override
public void onResubmitComputation(
ResubmitComputationEvent event) {
resubmitComputation(event.getJobItem());
}
});
}
public void resubmitComputation(final ComputationItem computationItem) {
final ComputationStatusPanel statusPanel = new ComputationStatusPanel(
computationItem.getOperator());
computationStatusPanels.add(statusPanel);
vert.insert(statusPanel, 0, new VerticalLayoutData(1, -1,
new Margins(0)));
removeAllButton.setEnabled(true);
DataMinerManager.getService().resubmit(
computationItem.getComputationId(),
new AsyncCallback<ComputationId>() {
@Override
public void onSuccess(ComputationId id) {
if (id == null)
UtilsGXT3
.alert("ERROR",
"Failed to resubmit computation "
+ computationItem.getName()
+ ", the computation id is null (1)");
else {
statusPanel.computationStarted(id);
EventBusProvider.INSTANCE
.fireEvent(new JobsGridGotDirtyEvent());
}
}
@Override
public void onFailure(Throwable caught) {
UtilsGXT3.alert("ERROR",
"Failed to start computation "
+ computationItem.getName()
+ " (2)<br/>Cause:" + caught.getCause()
+ "<br/>Message:" + caught.getMessage());
}
});
forceLayout();
}
/**
*
*/
private void emptyPanel() {
// stop timers
for (ComputationStatusPanel statusPanel : computationStatusPanels)
statusPanel.stopTimer();
removeAllButton.setEnabled(false);
computationStatusPanels.clear();
vert.clear();
forceLayout();
}
private void setToolsPanel() {
ToolBar toolBar = new ToolBar();
removeAllButton = new TextButton("Remove All");
removeAllButton.addSelectHandler(new SelectHandler() {
@Override
public void onSelect(SelectEvent event) {
emptyPanel();
}
});
removeAllButton.setIcon(DataMinerManager.resources.removeAll());
removeAllButton.setToolTip(DELETE_ALL_BUTTON_TOOLTIP);
removeAllButton.setScale(ButtonScale.MEDIUM);
removeAllButton.setEnabled(false);
FieldLabel toolsLabel = new FieldLabel(removeAllButton, "Tools");
toolBar.add(toolsLabel);
addTool(toolBar);
}
}

View File

@ -0,0 +1,246 @@
/**
*
*/
package org.gcube.portlets.user.dataminermanager.client.experimentArea;
import java.util.Date;
import org.gcube.portlets.user.dataminermanager.client.DataMinerManager;
import org.gcube.portlets.user.dataminermanager.client.bean.ComputationStatus;
import org.gcube.portlets.user.dataminermanager.client.bean.ComputationStatus.Status;
import org.gcube.portlets.user.dataminermanager.client.bean.Operator;
import org.gcube.portlets.user.dataminermanager.client.common.EventBusProvider;
import org.gcube.portlets.user.dataminermanager.client.events.SessionExpiredEvent;
import org.gcube.portlets.user.dataminermanager.client.util.UtilsGXT3;
import org.gcube.portlets.user.dataminermanager.client.widgets.ComputationOutputPanel;
import org.gcube.portlets.user.dataminermanager.shared.Constants;
import org.gcube.portlets.user.dataminermanager.shared.data.ComputationId;
import org.gcube.portlets.user.dataminermanager.shared.exception.ExpiredSessionServiceException;
import com.allen_sauer.gwt.log.client.Log;
import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.i18n.client.NumberFormat;
import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.HTML;
import com.sencha.gxt.widget.core.client.ProgressBar;
import com.sencha.gxt.widget.core.client.button.TextButton;
import com.sencha.gxt.widget.core.client.container.SimpleContainer;
import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer;
import com.sencha.gxt.widget.core.client.event.SelectEvent;
import com.sencha.gxt.widget.core.client.event.SelectEvent.SelectHandler;
import com.sencha.gxt.widget.core.client.info.Info;
/**
* @author ceras
*
*/
public class ComputationStatusPanel extends SimpleContainer {
private ProgressBar progressBar = new ProgressBar();
private ComputationId computationId;
private Operator operator;
private boolean terminated=false;
private ComputationTimer timer = new ComputationTimer();
private TextButton cancelComputationButton;
private VerticalLayoutContainer vert;
/**
*
*/
public ComputationStatusPanel(Operator operator) {
super();
this.operator=operator;
init();
}
private void init(){
vert=new VerticalLayoutContainer();
HTML title = new HTML("<div class='computationTitle'>Computation of <b>" + operator.getName() + "</b></div>");
HTML date = new HTML("<div class='computationDate'>" + new Date().toString() + "</div>");
vert.add(title);
vert.add(date);
add(vert);
forceLayout();
}
/* (non-Javadoc)
* @see com.extjs.gxt.ui.client.widget.Container#onAttach()
*/
@Override
protected void onAttach() {
super.onAttach();
progressBar.redraw();
}
/**
* @param computationId the computationId to set
*/
public void computationStarted(ComputationId computationId) {
this.computationId = computationId;
vert.add(new HTML("Created, the id is "+computationId.getId()+" [<a href='"+computationId.getUrlId()+"' >link</a>]"));
progressBar.getElement().getStyle().setMargin(20, Unit.PX);
progressBar.updateProgress(0, "Starting...");
vert.add(progressBar);
cancelComputationButton = new TextButton("Cancel");
cancelComputationButton.addSelectHandler(new SelectHandler() {
@Override
public void onSelect(SelectEvent event) {
cancelComputationButton.disable();
cancelComputation();
}
});
vert.add(cancelComputationButton);
forceLayout();
timer.scheduleRepeating(Constants.TIME_UPDATE_COMPUTATION_STATUS_PANEL);
}
private void cancelComputation(){
DataMinerManager.getService().cancelComputation(computationId, new AsyncCallback<String>() {
@Override
public void onFailure(Throwable caught) {
if (caught instanceof ExpiredSessionServiceException) {
UtilsGXT3.alert("Error", "Expired Session");
EventBusProvider.INSTANCE.fireEvent(new SessionExpiredEvent());
} else {
UtilsGXT3.alert(
"Error",
"Error in cancel computation: ComputationId="+computationId.getId()+", Error="
+ caught.getLocalizedMessage());
}
}
@Override
public void onSuccess(String result) {
Log.debug(result);
}
});
}
/**
* @param computationId
* @param operator
*
*/
protected void computationTerminated(ComputationId computationId, Operator operator, ComputationStatus computationStatus) {
Log.debug("Computation Terminated");
Log.debug("Computation Status:"+computationStatus);
if (terminated == false) {
terminated = true;
cancelComputationButton.setVisible(false);
if (computationStatus.isComplete()) {
Log.debug("Computation is Complete");
Info.display("Terminated", "The computation "+computationId.getId()+" of "+operator.getName()+" is terminated correctly.");
progressBar.updateProgress(1, "Computation Complete");
progressBar.addStyleName("progressBar-complete");
showOutput();
} else if (computationStatus.isFailed()) {
Log.debug("Computation is Failed");
// Info.display("Failed", "The computation of "+operator.getName()+" has failed.");
// MessageBox.alert("Failed", "The computation "+computationId+" of "+operator.getName()+" has failed.</br>"
// +"Message: "+computationStatus.getMessage(), null);
String errorMessage;
if(computationStatus.getErrResource()==null||computationStatus.getErrResource().getDescription()==null ){
errorMessage=new String("Computation Failed!");
} else {
errorMessage=computationStatus.getErrResource().getDescription();
}
UtilsGXT3.alert("Failed", "The computation "+computationId.getId()+" of "+operator.getName()+" has failed.</br>"
+"Message: "+errorMessage, null);
progressBar.updateProgress(1, "Computation Fail");
progressBar.addStyleName("progressBar-failed");
//
}
}
forceLayout();
}
/**
*
*/
private void showOutput() {
vert.add(new HTML(" The computation "+operator.getName()+" finished."));
ComputationOutputPanel computationOutputPanel = new ComputationOutputPanel(computationId);
vert.add(computationOutputPanel);
}
/**
* @param computationStatus
*/
protected void updateStatus(ComputationStatus computationStatus) {
Log.debug("Conputation Status Panel ::Update Status ");
if (computationStatus.getStatus() == Status.PENDING)
progressBar.updateText("Pending...");
else {
double percentage = computationStatus.getPercentage();
progressBar.updateProgress(percentage/100,
"Running, " + NumberFormat.getFormat("0.00").format(percentage) + "% Complete");
}
}
private class ComputationTimer extends Timer {
/* (non-Javadoc)
* @see com.google.gwt.user.client.Timer#run()
*/
@Override
public void run() {
Log.debug("Timer run .....");
// final ComputationStatusPanel cp = ComputationStatusPanel.this;
DataMinerManager.getService().getComputationStatus(computationId, new AsyncCallback<ComputationStatus>() {
@Override
public void onFailure(Throwable caught) {
progressBar.updateProgress(1, "Failed to get the status");
progressBar.addStyleName("progressBar-failed");
// MessageBox.alert("Error", ""+caught.getLocalizedMessage()+"\nCause: "+caught.getCause()+"\nStackTrace: "+caught.getStackTrace().toString(), null);
// computationTerminated(computationId, operator, TerminationMode.FAILED2);
// ComputationTimer.this.cancel();
}
@Override
public void onSuccess(ComputationStatus computationStatus) {
if (computationStatus.isTerminated()) {
ComputationTimer.this.cancel();
computationTerminated(computationId, operator, computationStatus);
} else
updateStatus(computationStatus);
}
});
}
}
/**
*
*/
public void stopTimer() {
try {
timer.cancel();
} catch (Exception e) {
}
vert.clear();
}
}

View File

@ -0,0 +1,75 @@
package org.gcube.portlets.user.dataminermanager.client.experimentArea;
import org.gcube.portlets.user.dataminermanager.client.bean.Operator;
import com.sencha.gxt.core.client.util.Margins;
import com.sencha.gxt.widget.core.client.container.BorderLayoutContainer;
import com.sencha.gxt.widget.core.client.container.BorderLayoutContainer.BorderLayoutData;
import com.sencha.gxt.widget.core.client.container.MarginData;
import com.sencha.gxt.widget.core.client.container.SimpleContainer;
/**
*
* @author Giancarlo Panichi email: <a
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
*
*/
public class ExperimentPanel extends SimpleContainer implements
OperatorsPanelHandler {
private WorkflowPanel workflowPanel;
private OperatorsPanel operatorsPanel;
private OperatorPanel lastOperatorSelected = null;
/**
*
*/
public ExperimentPanel() {
super();
operatorsPanel = new OperatorsPanel(this);
workflowPanel = new WorkflowPanel();
//
BorderLayoutContainer experimentPanelLayout = new BorderLayoutContainer();
experimentPanelLayout.setId("experimentPanelLayout");
experimentPanelLayout.setBorders(false);
experimentPanelLayout.setResize(true);
experimentPanelLayout.getElement().getStyle()
.setBackgroundColor("#FFFFFF");
// Center
MarginData mainData = new MarginData(new Margins(2));
experimentPanelLayout.setCenterWidget(workflowPanel, mainData);
// West
BorderLayoutData westData = new BorderLayoutData(300);
westData.setCollapsible(true);
westData.setSplit(true);
westData.setFloatable(true);
westData.setCollapseMini(false);
westData.setMargins(new Margins(0, 5, 0, 0));
westData.setCollapseHidden(true);
experimentPanelLayout.setWestWidget(operatorsPanel, westData);
// filtersPanel.expand();
// filtersPanel.enable();
add(experimentPanelLayout, new MarginData(0));
}
/**
*
*/
@Override
public void addOperator(OperatorPanel operatorPanel, Operator operator) {
if (lastOperatorSelected != null
&& lastOperatorSelected != operatorPanel)
lastOperatorSelected.toggleSelected(false);
if (lastOperatorSelected != operatorPanel)
operatorPanel.toggleSelected(true);
lastOperatorSelected = operatorPanel;
workflowPanel.addOperator(operator);
}
}

View File

@ -0,0 +1,139 @@
/**
*
*/
package org.gcube.portlets.user.dataminermanager.client.experimentArea;
import java.util.ArrayList;
import java.util.List;
import org.gcube.portlets.user.dataminermanager.client.bean.Operator;
import org.gcube.portlets.user.dataminermanager.client.bean.OperatorCategory;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.HTML;
import com.sencha.gxt.core.client.Style.Side;
import com.sencha.gxt.widget.core.client.container.SimpleContainer;
import com.sencha.gxt.widget.core.client.tips.ToolTipConfig;
public class OperatorCategoryPanel extends SimpleContainer {
private List<OperatorPanel> operatorPanelsList = null;
private OperatorsPanelHandler handler;
private static final int TOOLTIP_WIDTH = 300;
private boolean isCollapsed = true;
private OperatorCategory category;
private HTML categoryHtml;
// private LayoutContainer collapsedPanel = new LayoutContainer();
/**
* @param cat
*/
public OperatorCategoryPanel(OperatorsPanelHandler handler, OperatorCategory cat) {
super();
this.handler = handler;
this.category = cat;
init();
}
private void init(){
// set category info
categoryHtml = new HTML(category.getName() + " <span class='counter'>("+category.getOperators().size()+")</span>");
categoryHtml.addStyleName("categoryItem");
categoryHtml.addStyleName("categoryItem-Collapsed");
ToolTipConfig tooltipConfig = createToolTip(category);
setToolTipConfig(tooltipConfig);
addDomHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
switchOpenClose();
}
}, ClickEvent.getType());
add(categoryHtml);
}
/**
* @return
*/
private ToolTipConfig createToolTip(OperatorCategory cat) {
ToolTipConfig tooltipConfig = new ToolTipConfig();
tooltipConfig.setTitleHtml("<br>&nbsp;&nbsp;"+cat.getName());
tooltipConfig.setMouseOffsetX(0);
tooltipConfig.setMouseOffsetY(0);
tooltipConfig.setAnchor(Side.LEFT);
tooltipConfig.setDismissDelay(5000);
tooltipConfig.setBodyHtml(
getTooltipTemplate(GWT.getModuleBaseURL(), cat.getId(), cat.hasImage(), cat.getDescription())
);
// config.setCloseable(true);
tooltipConfig.setMaxWidth(TOOLTIP_WIDTH);
return tooltipConfig;
}
private String getTooltipTemplate(String base, String id, boolean hasImage, String description){
String html =
"<div class='categoryItemTooltip'>"+
"<img src='" + base + "../images/categories/"+(hasImage ? id : "DEFAULT_IMAGE")+".png' >"+
description+
"</div>";
// '<div><ul style="list-style: disc; margin: 0px 0px 5px 15px">',
// '<li>5 bedrooms</li>',
// '<li>2 baths</li>',
// '<li>Large backyard</li>',
// '<li>Close to metro</li>',
// '</ul>',
// '</div>'
return html;
};
public void switchOpenClose() {
if (isCollapsed)
expand();
else
collapse();
}
/**
*
*/
private void collapse() {
categoryHtml.removeStyleName("categoryItem-Expanded");
categoryHtml.addStyleName("categoryItem-Collapsed");
for (OperatorPanel op: this.operatorPanelsList)
this.remove(op);
this.isCollapsed = true;
forceLayout();
}
/**
*
*/
private void expand() {
if (operatorPanelsList==null) {
// init operator panels
operatorPanelsList = new ArrayList<OperatorPanel>();
for (Operator op : category.getOperators()) {
OperatorPanel operatorPanel = new OperatorPanel(op, handler);
operatorPanelsList.add(operatorPanel);
}
}
categoryHtml.removeStyleName("categoryItem-Collapsed");
categoryHtml.addStyleName("categoryItem-Expanded");
for (OperatorPanel op: this.operatorPanelsList)
this.add(op);
this.isCollapsed = false;
forceLayout();
}
}

View File

@ -0,0 +1,121 @@
/**
*
*/
package org.gcube.portlets.user.dataminermanager.client.experimentArea;
import org.gcube.portlets.user.dataminermanager.client.bean.Operator;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.HTML;
import com.sencha.gxt.core.client.Style.Side;
import com.sencha.gxt.core.client.util.Margins;
import com.sencha.gxt.widget.core.client.container.SimpleContainer;
import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer;
import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer.VerticalLayoutData;
import com.sencha.gxt.widget.core.client.tips.ToolTipConfig;
public class OperatorPanel extends SimpleContainer {
private static final int TOOLTIP_WIDTH = 500;
private VerticalLayoutContainer vert;
private Operator operator;
private OperatorsPanelHandler handler;
private HTML titleHtml;
/**
* @param handler
* @param op
*/
public OperatorPanel(Operator operator, OperatorsPanelHandler handler) {
super();
this.operator = operator;
this.handler = handler;
init();
}
private void init() {
addStyleName("operatorPanel");
addStyleName("opePanel");
addDomHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
handler.addOperator(OperatorPanel.this, operator);
}
}, ClickEvent.getType());
titleHtml = new HTML(operator.getName());
titleHtml.addStyleName("operatorPanel-title");
HTML descriptionHtml = new HTML(operator.getBriefDescription());
descriptionHtml.addStyleName("operatorPanel-briefDescription");
vert=new VerticalLayoutContainer();
vert.add(titleHtml, new VerticalLayoutData(1, -1, new Margins(0)));
vert.add(descriptionHtml, new VerticalLayoutData(1, -1, new Margins(0)));
add(vert);
ToolTipConfig tooltipConfig = createToolTip(operator);
setToolTipConfig(tooltipConfig);
}
/**
* @return the operator
*/
public Operator getOperator() {
return operator;
}
/**
* @return
*/
private ToolTipConfig createToolTip(Operator op) {
ToolTipConfig tooltipConfig = new ToolTipConfig();
tooltipConfig.setTitleHtml("<br>&nbsp;&nbsp;" + op.getName());
tooltipConfig.setMouseOffsetX(0);
tooltipConfig.setMouseOffsetY(0);
tooltipConfig.setAnchor(Side.LEFT);
tooltipConfig.setDismissDelay(5000);
tooltipConfig.setBodyHtml(getTooltipTemplate(GWT.getModuleBaseURL(),
op.getId(), op.hasImage(), op.getDescription()));
// config.setCloseable(true);
tooltipConfig.setMaxWidth(TOOLTIP_WIDTH);
return tooltipConfig;
}
/**
*
* @param base
* @param id
* @param hasImage
* @param description
* @return
*/
private String getTooltipTemplate(String base, String id, boolean hasImage,
String description) {
String template = "<div class='categoryItemTooltip'>" + "<img src='"
+ base + "../images/operators/"
+ (hasImage ? id : "DEFAULT_IMAGE") + ".png' >" + description
+ "</div>";
return template;
};
public void toggleSelected(boolean isSelect) {
if (isSelect)
this.addStyleName("operatorPanel-selected");
// titleHtml.addStyleName("operatorPanel-title-selected");
else
this.removeStyleName("operatorPanel-selected");
// titleHtml.removeStyleName("operatorPanel-title-selected");
}
}

View File

@ -0,0 +1,321 @@
/**
*
*/
package org.gcube.portlets.user.dataminermanager.client.experimentArea;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.gcube.portlets.user.dataminermanager.client.DataMinerManager;
import org.gcube.portlets.user.dataminermanager.client.bean.Operator;
import org.gcube.portlets.user.dataminermanager.client.bean.OperatorCategory;
import org.gcube.portlets.user.dataminermanager.client.bean.OperatorsClassification;
import org.gcube.portlets.user.dataminermanager.client.util.UtilsGXT3;
import org.gcube.portlets.user.dataminermanager.shared.Constants;
import com.allen_sauer.gwt.log.client.Log;
import com.google.gwt.event.dom.client.KeyUpEvent;
import com.google.gwt.event.dom.client.KeyUpHandler;
import com.google.gwt.event.logical.shared.SelectionEvent;
import com.google.gwt.event.logical.shared.SelectionHandler;
import com.google.gwt.resources.client.ImageResource;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.HTML;
import com.sencha.gxt.widget.core.client.ContentPanel;
import com.sencha.gxt.widget.core.client.button.TextButton;
import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer;
import com.sencha.gxt.widget.core.client.event.SelectEvent;
import com.sencha.gxt.widget.core.client.form.TextField;
import com.sencha.gxt.widget.core.client.menu.Item;
import com.sencha.gxt.widget.core.client.menu.Menu;
import com.sencha.gxt.widget.core.client.menu.MenuItem;
import com.sencha.gxt.widget.core.client.toolbar.ToolBar;
/**
* @author ceras
*
*/
public class OperatorsPanel extends ContentPanel {
private static final String LOADING_MESSAGE = "Loading Operators...";
private static final String ERROR_GET_OPERATORS = "Operators not loaded.";
private static final String SHOW_ALL_OPERATORS_TOOLTIP = "Show all Operators without category classification.";
private static final String SHOW_CATEGORIES_TOOLTIP = "Show Operators by Categories";
private OperatorsPanelHandler handler;
private ToolBar toolbar;
private VerticalLayoutContainer v;
// private ArrayList<OperatorCategoryPanel> categoryPanels;
private Map<String, List<OperatorCategoryPanel>> mapCategoriesPanels = new HashMap<String, List<OperatorCategoryPanel>>();
private enum View {
CATEGORIES, FILTER, ALL
};
private View view = null;
private String currentClassificationName = Constants.UserClassificationName;
/**
*
*/
public OperatorsPanel(OperatorsPanelHandler handler) {
super();
this.handler = handler;
setHeadingText(".: Operators");
// this.setScrollMode(Scroll.AUTO);
setToolbar();
init();
}
private void init() {
v = new VerticalLayoutContainer();
add(v);
// if the operators classification is not loaded, let's load by an rpc
if (DataMinerManager.getOperatorsClassifications() == null) {
waitMessage(true);
DataMinerManager.getService().getOperatorsClassifications(
new AsyncCallback<List<OperatorsClassification>>() {
@Override
public void onSuccess(
List<OperatorsClassification> result) {
waitMessage(false);
DataMinerManager
.setOperatorsClassifications(result);
showCategoriesList(false);
}
@Override
public void onFailure(Throwable caught) {
waitMessage(false);
UtilsGXT3.alert("Error", ERROR_GET_OPERATORS);
}
});
} else
showCategoriesList(false);
}
/**
*
*/
private void setToolbar() {
toolbar = new ToolBar();
TextButton showAllOperatorsButton = new TextButton("");
showAllOperatorsButton.setIcon(DataMinerManager.resources
.sortAscending());
showAllOperatorsButton
.addSelectHandler(new SelectEvent.SelectHandler() {
@Override
public void onSelect(SelectEvent event) {
showAllOperatorsList();
}
});
showAllOperatorsButton.setToolTip(SHOW_ALL_OPERATORS_TOOLTIP);
TextButton showCategoriesButton = new TextButton("");
showCategoriesButton.setIcon(DataMinerManager.resources.tree());
showCategoriesButton.addSelectHandler(new SelectEvent.SelectHandler() {
@Override
public void onSelect(SelectEvent event) {
showCategoriesList(false);
}
});
showCategoriesButton.setToolTip(SHOW_CATEGORIES_TOOLTIP);
final TextField filterField = new TextField();
filterField.setWidth(100);
filterField.addKeyUpHandler(new KeyUpHandler() {
@Override
public void onKeyUp(KeyUpEvent event) {
String searchText = filterField.getCurrentValue();
if (searchText == null || searchText.isEmpty())
showCategoriesList(false);
if (searchText.length() >= 2)
showFilteredList(searchText);
}
});
final TextButton btnClear = new TextButton();
btnClear.addStyleName("x-form-clear-trigger");
btnClear.setToolTip("Clear");
final TextButton btnMenuPerspective = new TextButton(
currentClassificationName);
btnMenuPerspective
.setIcon(DataMinerManager.resources.userPerspective());
Menu menuPerspective = new Menu();
for (final String perspectiveName : Constants.ClassificationNames) {
final ImageResource img = perspectiveName
.equals(Constants.UserClassificationName) ? DataMinerManager.resources
.userPerspective() : DataMinerManager.resources
.computationPerspective();
MenuItem perspectiveItem = new MenuItem(perspectiveName);
perspectiveItem.addSelectionHandler(new SelectionHandler<Item>() {
@Override
public void onSelection(SelectionEvent<Item> event) {
currentClassificationName = perspectiveName;
btnMenuPerspective.setText(perspectiveName);
btnMenuPerspective.setIcon(img);
showCategoriesList(true);
}
});
perspectiveItem.setIcon(img);
menuPerspective.add(perspectiveItem);
}
btnMenuPerspective.setMenu(menuPerspective);
toolbar.add(showCategoriesButton);
toolbar.add(showAllOperatorsButton);
toolbar.add(filterField);
toolbar.add(btnMenuPerspective);
addTool(toolbar);
}
/**
private ToolTipConfig createToolTip(OperatorCategory cat) {
ToolTipConfig tooltipConfig = new ToolTipConfig();
tooltipConfig.setTitleHtml("<br>&nbsp;&nbsp;" + cat.getName());
tooltipConfig.setMouseOffsetX(0);
toolTipConfig.setMouseOffsetY(0);
tooltipConfig.setAnchor(Side.LEFT);
tooltipConfig.setDismissDelay(0);
tooltipConfig.setBodyHtml(getTooltipTemplate(
GWT.getModuleBaseURL(), cat.getId(), cat.hasImage(),
cat.getDescription()));
// config.setCloseable(true);
tooltipConfig.setMaxWidth(300);
return tooltipConfig;
}
private String getTooltipTemplate(String base, String id,
boolean hasImage, String description) {
String html=
"<div class='categoryItemTooltip'>"+
"<img src='" + base + "../images/categories/"+
(hasImage ? id : "DEFAULT_IMAGE") + ".png' >"+
description+"</div>";
// '<div><ul style="list-style: disc; margin: 0px 0px 5px 15px">',
// '<li>5 bedrooms</li>',
// '<li>2 baths</li>',
// '<li>Large backyard</li>',
// '<li>Close to metro</li>',
// '</ul>',
// '</div>'
return html;
};
*/
private void waitMessage(boolean show) {
if (show)
this.mask(LOADING_MESSAGE);
else
this.unmask();
}
private void showFilteredList(String searchText) {
List<Operator> operators = DataMinerManager
.getOperatorsClassificationByName(currentClassificationName)
.getOperators();
List<Operator> filteredOperators = new ArrayList<Operator>();
List<String> ids = new ArrayList<String>();
for (Operator op : operators)
// check for filtering and prevent duplicates
if (op.getName().toLowerCase().contains(searchText.toLowerCase())
&& !ids.contains(op.getId())) {
filteredOperators.add(op);
ids.add(op.getId());
}
v.clear();
HTML html = new HTML("Filtered results <span class='counter'>("
+ filteredOperators.size() + " item"
+ (filteredOperators.size() == 1 ? "" : "s") + " found)</span>");
html.addStyleName("filterResultText");
this.add(html);
for (Operator op : filteredOperators)
this.add(new OperatorPanel(op, handler));
view = View.FILTER;
forceLayout();
}
private void showCategoriesList(boolean force) {
try {
if (force || view != View.CATEGORIES) {
Log.debug("ShowCategoriesList");
List<OperatorCategoryPanel> categoryPanels = mapCategoriesPanels
.get(currentClassificationName);
if (categoryPanels == null) {
// get category panels from classification
categoryPanels = new ArrayList<OperatorCategoryPanel>();
for (OperatorCategory cat : DataMinerManager
.getOperatorsClassificationByName(
currentClassificationName)
.getOperatorCategories()) {
// Log.debug("OperatorCategoryPanel");
categoryPanels.add(new OperatorCategoryPanel(handler,
cat));
}
mapCategoriesPanels.put(currentClassificationName,
categoryPanels);
}
v.clear();
for (OperatorCategoryPanel panel : categoryPanels)
v.add(panel);
view = View.CATEGORIES;
forceLayout();
}
} catch (Throwable e) {
Log.error(e.getLocalizedMessage());
e.printStackTrace();
}
}
private void showAllOperatorsList() {
if (view != View.ALL) {
List<Operator> operators = DataMinerManager
.getOperatorsClassificationByName(currentClassificationName)
.getOperators();
v.clear();
HTML html = new HTML("All Operators <span class='counter'>("
+ operators.size() + " item"
+ (operators.size() == 1 ? "" : "s") + " found)</span>");
html.addStyleName("filterResultText");
v.add(html);
for (Operator op : operators)
v.add(new OperatorPanel(op, handler));
view = View.ALL;
forceLayout();
}
}
}

View File

@ -0,0 +1,20 @@
/**
*
*/
package org.gcube.portlets.user.dataminermanager.client.experimentArea;
import org.gcube.portlets.user.dataminermanager.client.bean.Operator;
/**
* @author ceras
*
*/
public interface OperatorsPanelHandler {
/**
* @param operatorPanel
* @param operator
*/
void addOperator(OperatorPanel operatorPanel, Operator operator);
}

View File

@ -0,0 +1,252 @@
/**
*
*/
package org.gcube.portlets.user.dataminermanager.client.experimentArea;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.gcube.portlets.user.dataminermanager.client.DataMinerManager;
import org.gcube.portlets.user.dataminermanager.client.bean.Operator;
import org.gcube.portlets.user.dataminermanager.client.bean.parameters.ColumnListParameter;
import org.gcube.portlets.user.dataminermanager.client.bean.parameters.ColumnParameter;
import org.gcube.portlets.user.dataminermanager.client.bean.parameters.Parameter;
import org.gcube.portlets.user.dataminermanager.client.form.AbstractFld;
import org.gcube.portlets.user.dataminermanager.client.form.OperatorFieldWidget;
import org.gcube.portlets.user.dataminermanager.client.form.TabularFld;
import org.gcube.portlets.user.dataminermanager.client.rpc.DataMinerPortletServiceAsync;
import org.gcube.portlets.user.dataminermanager.client.util.UtilsGXT3;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.i18n.client.DateTimeFormat;
import com.google.gwt.i18n.client.DateTimeFormat.PredefinedFormat;
import com.google.gwt.resources.client.ImageResource;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.Image;
import com.sencha.gxt.widget.core.client.button.TextButton;
import com.sencha.gxt.widget.core.client.container.HorizontalLayoutContainer;
import com.sencha.gxt.widget.core.client.container.SimpleContainer;
import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer;
import com.sencha.gxt.widget.core.client.event.SelectEvent;
import com.sencha.gxt.widget.core.client.event.SelectEvent.SelectHandler;
import com.sencha.gxt.widget.core.client.form.FieldLabel;
import com.sencha.gxt.widget.core.client.form.FieldSet;
import com.sencha.gxt.widget.core.client.form.FormPanel;
import com.sencha.gxt.widget.core.client.form.TextField;
/**
* @author ceras
*
*/
public class WorkflowOperatorPanel extends SimpleContainer {
/**
* @author ceras
*
*/
public interface WorkflowOperatorPanelHandler {
public void startComputation(String computationTitle, String computationDescription);
}
private static final String START_BUTTON_TOOLTIP = "Start Computation";
private static final ImageResource PRELOAD_IMAGE = DataMinerManager.resources.loaderBig();
private VerticalLayoutContainer v;
private Operator operator;
private FormPanel parametersPanel;
private FieldSet parametersFieldSet;
private Map<String, OperatorFieldWidget> fieldWidgetsMap = new HashMap<String, OperatorFieldWidget>();
//private Map<Parameter, String> parameterValues = new HashMap<Parameter, String>();
private WorkflowOperatorPanelHandler handler=null;
private TextField titleField;
private String defaultComputationTitle;
public WorkflowOperatorPanel(DataMinerPortletServiceAsync service, Operator operator, WorkflowOperatorPanelHandler handler) {
this(operator);
this.setHandler(handler);
}
/**
*
*/
public WorkflowOperatorPanel(Operator operator) {
super();
v=new VerticalLayoutContainer();
add(v);
this.operator = operator;
this.defaultComputationTitle = getDefaultComputationTitle();
//lc.setLayout(new FitLayout());
addStyleName("workflow");
Image img = new Image(GWT.getModuleBaseURL()+"../images/operators/"+(operator.hasImage() ? operator.getId() : "DEFAULT_IMAGE")+".png");
img.addStyleName("workflow-icon");
v.add(img);
HTML title = new HTML(operator.getName());
title.addStyleName("workflow-title");
v.add(title);
String descr = operator.getDescription();
descr = (descr==null || descr.contentEquals("")) ? "no-description" : operator.getDescription();
HTML description = new HTML(descr);
description.addStyleName("workflow-description");
v.add(description);
addTitleField();
parametersPanel = new FormPanel(){
@Override
public boolean isValid(boolean preventMark) {
boolean flag = super.isValid(preventMark);
if (flag) {
for (Map.Entry<String, OperatorFieldWidget> entry : fieldWidgetsMap.entrySet()) {
OperatorFieldWidget fieldWidget = entry.getValue();
flag = flag && fieldWidget.isValid();
}
}
return flag;
}
};
parametersPanel.setBorders(false);
//parametersPanel.getElement().getStyle().setMargin(20, px);
parametersFieldSet = new FieldSet();
parametersFieldSet.setHeadingText("Parameters");
parametersPanel.add(parametersFieldSet);
v.add(parametersPanel);
loadOperatorParameters();
}
/**
*
*/
private void addTitleField() {
HorizontalLayoutContainer hp = new HorizontalLayoutContainer();
hp.add(new HTML("<div style='margin-left:30px; margin-right:10px; margin-top:5px'>Computation Title: </div>"));
titleField = new TextField();
titleField.setWidth(250);
titleField.setValue(this.defaultComputationTitle);
FieldLabel titleLabel=new FieldLabel(titleField,"Computation Title");
hp.add(titleLabel);
v.add(hp);
}
/**
* @param parametersPanel
*/
private void loadOperatorParameters() {
DataMinerManager.getService().getParameters(operator, new AsyncCallback<List<Parameter>>() {
@Override
public void onSuccess(List<Parameter> result) {
operator.setOperatorParameters(result);
parametersFieldSet.clear();
showForm();
}
@Override
public void onFailure(Throwable caught) {
UtilsGXT3.alert("Error ", "Impossible to retrieve parameters.");
}
});
Image img = new Image(PRELOAD_IMAGE);
img.setStyleName("workflow-parameters-preload");
parametersFieldSet.add(img);
}
/**
*
*/
protected void showForm() {
// field widgets creation
for (Parameter p : operator.getOperatorParameters()) {
OperatorFieldWidget fieldWidget = new OperatorFieldWidget(p);
fieldWidgetsMap.put(p.getName(), fieldWidget);
parametersFieldSet.add(fieldWidget);
}
for (Parameter p: operator.getOperatorParameters()) {
if (p.isColumn() || p.isColumnList()) {
// search for the table parameter which it depends
String tabParamName = (p.isColumn()
? ((ColumnParameter)p).getReferredTabularParameterName()
: ((ColumnListParameter)p).getReferredTabularParameterName());
try {
// get the column field and the tabular field referred
TabularFld tabularField = (TabularFld)fieldWidgetsMap.get(tabParamName).getField();
AbstractFld field = fieldWidgetsMap.get(p.getName()).getField();
tabularField.addChangeListener(field);
} catch (Exception e) {
e.printStackTrace();
UtilsGXT3.alert("Error", "Column parameter \""+p.getName()+" refers to a tabular parameter that doesn't exists ("+tabParamName+")\"", null);
}
}
}
final TextButton submit = new TextButton("Start Computation");
submit.setToolTip(START_BUTTON_TOOLTIP);
submit.setIcon(DataMinerManager.resources.startComputation());
submit.getElement().getStyle().setMarginLeft(20,Unit.PX);
submit.getElement().getStyle().setMarginBottom(20, Unit.PX);
submit.addSelectHandler(new SelectHandler() {
@Override
public void onSelect(SelectEvent event) {
if (handler!=null && parametersPanel.isValid()) {
String value = titleField.getValue();
String title = (value==null || value.contentEquals("")) ? defaultComputationTitle : value;
handler.startComputation(title, title); // TODO insert description
}
}
});
v.add(submit);
forceLayout();
parametersPanel.forceLayout();
}
public void updateOperatorParametersValues() {
for (Map.Entry<String, OperatorFieldWidget> entry : fieldWidgetsMap.entrySet()) {
OperatorFieldWidget fieldWidget = entry.getValue();
fieldWidget.updateOperatorParameterValue();
}
}
/**
* @return the operator
*/
public Operator getOperator() {
return operator;
}
public void setHandler(WorkflowOperatorPanelHandler handler) {
this.handler = handler;
}
public String getDefaultComputationTitle() {
String name = this.operator.getName();
//String date = DateTimeFormat.getShortDateTimeFormat().format(new Date());
String date = DateTimeFormat.getFormat(PredefinedFormat.DATE_TIME_SHORT).format(new Date());
return name+"-"+date;
}
}

View File

@ -0,0 +1,175 @@
/**
*
*/
package org.gcube.portlets.user.dataminermanager.client.experimentArea;
import org.gcube.portlets.user.dataminermanager.client.DataMinerManager;
import org.gcube.portlets.user.dataminermanager.client.bean.Operator;
import org.gcube.portlets.user.dataminermanager.client.common.EventBusProvider;
import org.gcube.portlets.user.dataminermanager.client.events.ResubmitComputationEvent;
import org.gcube.portlets.user.dataminermanager.client.experimentArea.WorkflowOperatorPanel.WorkflowOperatorPanelHandler;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.Image;
import com.sencha.gxt.cell.core.client.ButtonCell.ButtonScale;
import com.sencha.gxt.widget.core.client.ContentPanel;
import com.sencha.gxt.widget.core.client.TabItemConfig;
import com.sencha.gxt.widget.core.client.TabPanel;
import com.sencha.gxt.widget.core.client.button.TextButton;
import com.sencha.gxt.widget.core.client.container.SimpleContainer;
import com.sencha.gxt.widget.core.client.event.SelectEvent;
import com.sencha.gxt.widget.core.client.event.SelectEvent.SelectHandler;
import com.sencha.gxt.widget.core.client.toolbar.LabelToolItem;
import com.sencha.gxt.widget.core.client.toolbar.ToolBar;
/**
* @author ceras
*
*/
public class WorkflowPanel extends TabPanel {
public static final String DEFAULT_OPERATOR = "AQUAMAPS_SUITABLE";
private static final String DELETE_ALL_BUTTON_TOOLTIP = "Remove All Operators";
private static final boolean WORKFLOW_MODE = false;
private WorkflowOperatorPanel workflowOperatorPanel;
private TextButton removeAllButton = new TextButton(DELETE_ALL_BUTTON_TOOLTIP);
private ComputationPanel computationPanel;
private ContentPanel workflowLc;
/**
*
*/
public WorkflowPanel() {
super();
bind();
setBodyBorder(false);
TabItemConfig tabWorkFlowLcItemConf = new TabItemConfig(
".: Computation", false);
tabWorkFlowLcItemConf.setIcon(DataMinerManager.resources.folderExplore());
workflowLc = new ContentPanel();
workflowLc.setHeaderVisible(false);
add(workflowLc, tabWorkFlowLcItemConf);
TabItemConfig tabComputationPanelItemConf = new TabItemConfig(
".: Computations Execution", false);
tabComputationPanelItemConf.setIcon(DataMinerManager.resources.folderExplore());
computationPanel = new ComputationPanel();
add(computationPanel, tabComputationPanelItemConf);
setToolsPanel();
emptyPanel();
setActiveWidget(computationPanel);
}
/**
*
*/
private void bind() {
EventBusProvider.INSTANCE.addHandler(ResubmitComputationEvent.getType(), new ResubmitComputationEvent.ResubmitComputationHandler() {
@Override
public void onResubmitComputation(ResubmitComputationEvent event) {
setActiveWidget(computationPanel);
}
});
}
/**
*
*/
private void emptyPanel() {
workflowOperatorPanel = null;
removeAllButton.setEnabled(false);
workflowLc.clear();
workflowLc.add(new HTML("<br><br><br><br><br><br><br><br><br><br><br><p align='center'>Select an operator.</p>"));
workflowLc.forceLayout();;
}
private void setToolsPanel() {
ToolBar toolBar = new ToolBar();
toolBar.add(new LabelToolItem("Tools"));
removeAllButton.setToolTip(DELETE_ALL_BUTTON_TOOLTIP);
removeAllButton.setIcon(DataMinerManager.resources.removeAll());
removeAllButton.setScale(ButtonScale.MEDIUM);
removeAllButton.setEnabled(false);
removeAllButton.addSelectHandler(new SelectHandler() {
@Override
public void onSelect(SelectEvent event) {
emptyPanel();
}
});
toolBar.add(removeAllButton);
workflowLc.addTool(toolBar);
}
/**
* @param computationTitle
* @param operator
*
*/
private void startComputation(String computationTitle, String computationDescription) {
if (workflowOperatorPanel!=null) {
forceLayout();
workflowOperatorPanel.updateOperatorParametersValues();
Operator op = workflowOperatorPanel.getOperator();
computationPanel.startNewComputation(op, computationTitle, computationDescription);
}
}
public void addOperator(Operator op) {
if (!WORKFLOW_MODE)
workflowOperatorPanel = null;
setActiveWidget(workflowLc);
if (workflowOperatorPanel==null) {
workflowLc.clear();
workflowLc.add(new HTML("&nbsp;"));
workflowLc.forceLayout();
}
workflowOperatorPanel = new WorkflowOperatorPanel(op);
workflowOperatorPanel.setHandler(new WorkflowOperatorPanelHandler() {
@Override
public void startComputation(String computationTitle, String computationDescription) {
WorkflowPanel.this.startComputation(computationTitle, computationDescription);
setActiveWidget(computationPanel);
}
});
addConnector(true);
workflowLc.add(workflowOperatorPanel); // operator
workflowLc.forceLayout();
removeAllButton.setEnabled(true);
}
/**
*
* @param first
*/
private void addConnector(boolean first) {
SimpleContainer lc = new SimpleContainer();
lc.setHeight(first ? 26 : 22);
lc.add(new Image(
first ? DataMinerManager.resources.workflowConnector1() : DataMinerManager.resources.workflowConnector2()
));
workflowLc.add(lc);
}
}

View File

@ -0,0 +1,54 @@
/**
*
*/
package org.gcube.portlets.user.dataminermanager.client.form;
import org.gcube.portlets.user.dataminermanager.client.bean.parameters.Parameter;
import com.google.gwt.user.client.ui.Widget;
/**
* @author ceras
*
*/
public abstract class AbstractFld {
protected Parameter parameter;
public abstract String getValue();
public abstract Widget getWidget();
/**
*
*/
public AbstractFld(Parameter parameter) {
this.parameter = parameter;
}
/**
* @return the operator
*/
public Parameter getParameter() {
return parameter;
}
/**
* @param operator the operator to set
*/
public void setParameter(Parameter parameter) {
this.parameter = parameter;
}
/**
* @return
*/
public boolean isValid() {
// is valid by dafault
// (for string, int, float, double and boolean) the built-in validation is enough
return true;
}
/**
* @param tableItem
*/
public void fireEvent(Object message) {
}
}

View File

@ -0,0 +1,44 @@
/**
*
*/
package org.gcube.portlets.user.dataminermanager.client.form;
import org.gcube.portlets.user.dataminermanager.client.bean.parameters.ObjectParameter;
import org.gcube.portlets.user.dataminermanager.client.bean.parameters.Parameter;
import com.google.gwt.user.client.ui.Widget;
import com.sencha.gxt.widget.core.client.form.CheckBox;
/**
* @author ceras
*
*/
public class BooleanFld extends AbstractFld {
private CheckBox checkBox = new CheckBox();
/**
* @param parameter
*/
public BooleanFld(Parameter parameter) {
super(parameter);
ObjectParameter p = (ObjectParameter)parameter;
checkBox.setValue(!p.getDefaultValue().toUpperCase().equals("FALSE"));
if (p.getDescription()!=null)
checkBox.setTitle(p.getDescription());
checkBox.setBoxLabel(p.getName());
}
@Override
public String getValue() {
return (checkBox.getValue() ? "true" : "false");
}
@Override
public Widget getWidget() {
return checkBox;
}
}

View File

@ -0,0 +1,137 @@
/**
*
*/
package org.gcube.portlets.user.dataminermanager.client.form;
import java.util.ArrayList;
import org.gcube.portlets.user.dataminermanager.client.bean.parameters.ColumnParameter;
import org.gcube.portlets.user.dataminermanager.client.bean.parameters.Parameter;
import org.gcube.portlets.user.dataminermanager.client.properties.ColumnItemPropertiesCombo;
import org.gcube.portlets.user.dataminermanager.shared.data.ColumnItem;
import org.gcube.portlets.user.dataminermanager.shared.data.TableItemSimple;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.Widget;
import com.sencha.gxt.cell.core.client.form.ComboBoxCell.TriggerAction;
import com.sencha.gxt.data.shared.ListStore;
import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer;
import com.sencha.gxt.widget.core.client.form.ComboBox;
/**
*
* @author Giancarlo Panichi email: <a
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
*
*/
public class ColumnFld extends AbstractFld {
private VerticalLayoutContainer vp;
private String defaultColumn;
private ComboBox<ColumnItem> comboBox;
private ListStore<ColumnItem> store;
private String referredTabularParameterName;
/**
* @param parameter
*/
public ColumnFld(Parameter parameter) {
super(parameter);
vp = new VerticalLayoutContainer();
ColumnParameter p = (ColumnParameter) parameter;
this.referredTabularParameterName = p.getReferredTabularParameterName();
this.defaultColumn = p.getDefaultColumn();
ColumnItemPropertiesCombo props = GWT
.create(ColumnItemPropertiesCombo.class);
store = new ListStore<ColumnItem>(props.id());
comboBox = new ComboBox<ColumnItem>(store, props.label());
comboBox.setAllowBlank(false);
comboBox.setForceSelection(true);
comboBox.setEditable(false);
comboBox.setTriggerAction(TriggerAction.ALL);
if (p.getDescription() != null)
comboBox.setTitle(p.getDescription());
comboBox.setEnabled(false);
showNoSelectionField();
}
/**
*
*/
private void showNoSelectionField() {
vp.clear();
;
vp.add(comboBox);
vp.add(new HTML(
"<div class='workflow-parameters-description'>Select table from parameter "
+ referredTabularParameterName + "</div>"));
vp.forceLayout();
}
/**
*
*/
private void showFieldWithSelection(TableItemSimple tableItem) {
vp.clear();
vp.add(comboBox);
vp.add(new HTML(
"<div class='workflow-parameters-description'>Columns of Table "
+ tableItem.getName() + "</div>"));
vp.forceLayout();
}
/**
*
*/
@Override
public String getValue() {
ColumnItem columnItem = comboBox.getCurrentValue();
return columnItem != null ? columnItem.getName() : null;
}
/**
*
*/
@Override
public Widget getWidget() {
return vp;
}
@Override
public void fireEvent(Object message) {
if (message == null) {
store.clear();
store.commitChanges();
comboBox.clear();
comboBox.setEnabled(false);
showNoSelectionField();
} else {
TableItemSimple tableItem = (TableItemSimple) message;
store.clear();
store.commitChanges();
ArrayList<ColumnItem> columns = tableItem.getColumns();
if (columns != null) {
store.addAll(columns);
for (ColumnItem columnItem : columns) {
if (columnItem.getName().compareTo(defaultColumn) == 0) {
comboBox.setValue(columnItem);
break;
}
}
store.commitChanges();
}
comboBox.clear();
comboBox.setEnabled(true);
showFieldWithSelection(tableItem);
}
}
}

View File

@ -0,0 +1,168 @@
/**
*
*/
package org.gcube.portlets.user.dataminermanager.client.form;
import java.util.ArrayList;
import java.util.List;
import org.gcube.portlets.user.dataminermanager.client.bean.parameters.ColumnListParameter;
import org.gcube.portlets.user.dataminermanager.client.bean.parameters.Parameter;
import org.gcube.portlets.user.dataminermanager.client.properties.ColumnItemProperties;
import org.gcube.portlets.user.dataminermanager.shared.data.ColumnItem;
import org.gcube.portlets.user.dataminermanager.shared.data.TableItemSimple;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.Widget;
import com.sencha.gxt.core.client.IdentityValueProvider;
import com.sencha.gxt.core.client.Style.SelectionMode;
import com.sencha.gxt.data.shared.ListStore;
import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer;
import com.sencha.gxt.widget.core.client.grid.CheckBoxSelectionModel;
import com.sencha.gxt.widget.core.client.grid.ColumnConfig;
import com.sencha.gxt.widget.core.client.grid.ColumnModel;
import com.sencha.gxt.widget.core.client.grid.Grid;
/**
*
* @author Giancarlo Panichi email: <a
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
*
*/
public class ColumnListFld extends AbstractFld {
private VerticalLayoutContainer vp;
private ColumnListParameter columnListParameter;
private ListStore<ColumnItem> store;
private Grid<ColumnItem> grid;
private CheckBoxSelectionModel<ColumnItem> sm;
/**
*
* @param parameter
*/
public ColumnListFld(Parameter parameter) {
super(parameter);
this.columnListParameter = (ColumnListParameter) parameter;
vp = new VerticalLayoutContainer();
init();
showNoSelectionField();
}
private void init() {
ColumnItemProperties props = GWT.create(ColumnItemProperties.class);
ColumnConfig<ColumnItem, String> labelCol = new ColumnConfig<ColumnItem, String>(
props.label());
IdentityValueProvider<ColumnItem> identity = new IdentityValueProvider<ColumnItem>();
sm = new CheckBoxSelectionModel<ColumnItem>(identity);
List<ColumnConfig<ColumnItem, ?>> l = new ArrayList<ColumnConfig<ColumnItem, ?>>();
l.add(sm.getColumn());
l.add(labelCol);
ColumnModel<ColumnItem> cm = new ColumnModel<ColumnItem>(l);
store = new ListStore<ColumnItem>(props.id());
grid = new Grid<ColumnItem>(store, cm);
sm.setSelectionMode(SelectionMode.MULTI);
grid.setSelectionModel(sm);
// grid.getView().setAutoExpandColumn(labelCol);
grid.setSize("150px", "150px");
grid.getView().setStripeRows(true);
grid.getView().setColumnLines(true);
grid.getView().setAutoFill(true);
grid.setBorders(false);
grid.setLoadMask(true);
grid.setColumnReordering(true);
grid.setColumnResize(false);
grid.disable();
}
/**
*
*/
private void showNoSelectionField() {
vp.clear();
vp.add(grid);
vp.add(new HTML(
"<div class='workflow-parameters-description'>Select table from parameter "
+ this.columnListParameter
.getReferredTabularParameterName() + "</div>"));
vp.forceLayout();
}
/**
*
*/
private void showFieldWithSelection(TableItemSimple tableItem) {
vp.clear();
vp.add(grid);
vp.add(new HTML(
"<div class='workflow-parameters-description'>Columns of Data Set "
+ tableItem.getName() + "</div>"));
vp.forceLayout();
}
/**
*
*/
@Override
public String getValue() {
String separator = columnListParameter.getSeparator();
String value = "";
boolean first = true;
for (ColumnItem columnItem : sm.getSelection()) {
String columnName = columnItem.getName();
value += (first ? "" : separator) + columnName;
first = false;
}
return value;
}
/**
*
*/
@Override
public Widget getWidget() {
return vp;
}
/**
*
*/
@Override
public void fireEvent(Object message) {
if (message == null) {
store.clear();
store.commitChanges();
grid.disable();
showNoSelectionField();
} else {
TableItemSimple tableItem = (TableItemSimple) message;
store.clear();
store.commitChanges();
store.addAll(tableItem.getColumns());
store.commitChanges();
grid.enable();
showFieldWithSelection(tableItem);
}
}
/**
*
*/
@Override
public boolean isValid() {
return store.size() > 0;
}
}

View File

@ -0,0 +1,53 @@
package org.gcube.portlets.user.dataminermanager.client.form;
import org.gcube.portlets.user.dataminermanager.client.bean.parameters.ObjectParameter;
import org.gcube.portlets.user.dataminermanager.client.bean.parameters.Parameter;
import com.google.gwt.user.client.ui.Widget;
import com.sencha.gxt.widget.core.client.form.DoubleField;
/**
*
* @author Giancarlo Panichi email: <a
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
*
*/
public class DoubleFld extends AbstractFld {
private DoubleField numberField;
/**
* @param operator
*/
public DoubleFld(Parameter parameter) {
super(parameter);
ObjectParameter p = (ObjectParameter) parameter;
numberField = new DoubleField();
if (p.getDefaultValue() != null)
numberField.setValue(Double.parseDouble(p.getDefaultValue()));
if (p.getDescription() != null)
numberField.setTitle(p.getDescription());
}
/**
*
*/
@Override
public String getValue() {
return numberField.getCurrentValue().toString();
}
/**
*
*/
@Override
public Widget getWidget() {
return numberField;
}
}

View File

@ -0,0 +1,61 @@
/**
*
*/
package org.gcube.portlets.user.dataminermanager.client.form;
import org.gcube.portlets.user.dataminermanager.client.bean.parameters.EnumParameter;
import org.gcube.portlets.user.dataminermanager.client.bean.parameters.Parameter;
import com.google.gwt.user.client.ui.Widget;
import com.sencha.gxt.cell.core.client.form.ComboBoxCell.TriggerAction;
import com.sencha.gxt.data.shared.StringLabelProvider;
import com.sencha.gxt.widget.core.client.form.SimpleComboBox;
/**
*
* @author Giancarlo Panichi
* email: <a href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
*
*/
public class EnumFld extends AbstractFld {
private SimpleComboBox<String> listBox;
/**
* @param parameter
*/
public EnumFld(Parameter parameter) {
super(parameter);
EnumParameter p = (EnumParameter) parameter;
listBox = new SimpleComboBox<String>(new StringLabelProvider<>());
listBox.add(p.getValues());
listBox.setAllowBlank(false);
listBox.setForceSelection(true);
listBox.setEditable(false);
listBox.setTriggerAction(TriggerAction.ALL);
if (p.getDescription() != null)
listBox.setTitle(p.getDescription());
if (p.getDefaultValue() != null)
listBox.setValue(p.getDefaultValue());
}
/**
*
*/
@Override
public String getValue() {
return listBox.getCurrentValue();
}
/**
*
*/
@Override
public Widget getWidget() {
return listBox;
}
}

View File

@ -0,0 +1,223 @@
/**
*
*/
package org.gcube.portlets.user.dataminermanager.client.form;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.gcube.portlets.user.dataminermanager.client.DataMinerManager;
import org.gcube.portlets.user.dataminermanager.client.bean.parameters.Parameter;
import org.gcube.portlets.user.dataminermanager.client.rpc.DataMinerPortletServiceAsync;
import org.gcube.portlets.user.dataminermanager.client.util.UtilsGXT3;
import org.gcube.portlets.user.dataminermanager.shared.exception.ExpiredSessionServiceException;
import org.gcube.portlets.user.dataminermanager.shared.workspace.ItemDescription;
import org.gcube.portlets.widgets.wsexplorer.client.notification.WorkspaceExplorerSelectNotification.WorskpaceExplorerSelectNotificationListener;
import org.gcube.portlets.widgets.wsexplorer.client.select.WorkspaceExplorerSelectDialog;
import org.gcube.portlets.widgets.wsexplorer.shared.Item;
import org.gcube.portlets.widgets.wsexplorer.shared.ItemType;
import com.allen_sauer.gwt.log.client.Log;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.Widget;
import com.sencha.gxt.core.client.dom.XDOM;
import com.sencha.gxt.core.client.util.Format;
import com.sencha.gxt.widget.core.client.button.TextButton;
import com.sencha.gxt.widget.core.client.container.HorizontalLayoutContainer;
import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer;
import com.sencha.gxt.widget.core.client.event.SelectEvent;
/**
*
* @author Giancarlo Panichi
* email: <a href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
*
*/
public class FileFld extends AbstractFld {
private VerticalLayoutContainer vp;
// FileSelector fileSelector;
private WorkspaceExplorerSelectDialog wselectDialog;
private TextButton selectButton, selectButton2, cancelButton;
private ItemDescription selectedFileItem = null;
/**
* @param parameter
*/
public FileFld(Parameter parameter) {
super(parameter);
vp=new VerticalLayoutContainer();
/*
* fileSelector = new FileSelector() {
*
* @Override public void fireSelection(TableItemSimple fileItem) {
* super.fireSelection(fileItem); selectedFileItem = fileItem;
* showFieldWithSelection(); } };
*/
List<ItemType> selectableTypes = new ArrayList<ItemType>();
selectableTypes.add(ItemType.EXTERNAL_FILE);
List<ItemType> showableTypes = new ArrayList<ItemType>();
showableTypes.addAll(Arrays.asList(ItemType.values()));
wselectDialog = new WorkspaceExplorerSelectDialog("Select CSV", false);
// filterCriteria, selectableTypes);
WorskpaceExplorerSelectNotificationListener handler = new WorskpaceExplorerSelectNotificationListener() {
@Override
public void onSelectedItem(Item item) {
if (item.isFolder() || item.isRoot()) {
UtilsGXT3.info("Attention", "Select a valid csv!");
} else {
retrieveFileInformation(item);
}
}
@Override
public void onFailed(Throwable throwable) {
Log.error("Error in create project: "
+ throwable.getLocalizedMessage());
UtilsGXT3.alert("Error", throwable.getLocalizedMessage());
throwable.printStackTrace();
}
@Override
public void onAborted() {
}
@Override
public void onNotValidSelection() {
UtilsGXT3.info("Attention", "Select a valid csv!");
}
};
wselectDialog.addWorkspaceExplorerSelectNotificationListener(handler);
wselectDialog.setZIndex(XDOM.getTopZIndex());
selectButton = new TextButton("Select File");
selectButton.setIcon(DataMinerManager.resources.folderExplore());
selectButton.addSelectHandler(new SelectEvent.SelectHandler() {
@Override
public void onSelect(SelectEvent event) {
wselectDialog.show();
}
});
selectButton.setToolTip("Select File");
selectButton2 = new TextButton("");
selectButton2.setIcon(DataMinerManager.resources.folderExplore());
selectButton2.addSelectHandler(new SelectEvent.SelectHandler() {
@Override
public void onSelect(SelectEvent event) {
wselectDialog.show();
}
});
selectButton2.setToolTip("Select Another File");
cancelButton = new TextButton("");
cancelButton.setIcon(DataMinerManager.resources.cancel());
cancelButton.addSelectHandler(new SelectEvent.SelectHandler() {
@Override
public void onSelect(SelectEvent event) {
selectedFileItem = null;
showNoSelectionField();
}
});
showNoSelectionField();
}
private void retrieveFileInformation(final Item item) {
Log.debug("Retrieved: " + item);
final ItemDescription itemDescription = new ItemDescription(item.getId(),
item.getName(), item.getOwner(), item.getPath(), item.getType()
.name());
DataMinerPortletServiceAsync.INSTANCE.getPublicLink(itemDescription,
new AsyncCallback<String>() {
@Override
public void onFailure(Throwable caught) {
Log.error("Error in retrieveFileInformation: "
+ caught.getMessage());
if (caught instanceof ExpiredSessionServiceException) {
UtilsGXT3.alert("Error", "Expired Session");
// sessionExpiredShowDelayed();
} else {
UtilsGXT3.alert(
"Error",
"Error retrieving file informations: "
+ caught.getLocalizedMessage());
}
}
@Override
public void onSuccess(String result) {
itemDescription.setPublicLink(result);
selectedFileItem = itemDescription;
Log.debug("SelectedFileItem: " + selectedFileItem);
showFieldWithSelection();
}
});
}
private void showNoSelectionField() {
vp.clear();
vp.add(selectButton);
vp.forceLayout();
}
private void showFieldWithSelection() {
// final String fileId = selectedFileItem.getId();
final String fileName = selectedFileItem.getName();
vp.clear();
HorizontalLayoutContainer hp = new HorizontalLayoutContainer();
hp.add(new HTML("<div class='workflow-parameters-tableDescription'>"
+ Format.ellipse(fileName, 30) + "</div>"));
hp.add(selectButton2);
hp.add(cancelButton);
vp.add(hp);
vp.forceLayout();
}
/**
*
*/
@Override
public boolean isValid() {
return (selectedFileItem != null);
}
@Override
public Widget getWidget() {
return vp;
}
@Override
public String getValue() {
return (selectedFileItem == null) ? null : selectedFileItem.getPublicLink();
}
}

View File

@ -0,0 +1,53 @@
package org.gcube.portlets.user.dataminermanager.client.form;
import org.gcube.portlets.user.dataminermanager.client.bean.parameters.ObjectParameter;
import org.gcube.portlets.user.dataminermanager.client.bean.parameters.Parameter;
import com.google.gwt.user.client.ui.Widget;
import com.sencha.gxt.widget.core.client.form.FloatField;
/**
*
* @author Giancarlo Panichi
* email: <a href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
*
*/
public class FloatFld extends AbstractFld {
private FloatField numberField;
/**
* @param operator
*/
public FloatFld(Parameter parameter) {
super(parameter);
ObjectParameter p = (ObjectParameter) parameter;
numberField = new FloatField();
if (p.getDefaultValue() != null)
numberField.setValue(Float.parseFloat(p.getDefaultValue()));
if (p.getDescription() != null)
numberField.setTitle(p.getDescription());
}
/**
*
*/
@Override
public String getValue() {
Float f = numberField.getCurrentValue();
return f.toString();
}
/**
*
*/
@Override
public Widget getWidget() {
return numberField;
}
}

View File

@ -0,0 +1,59 @@
package org.gcube.portlets.user.dataminermanager.client.form;
import org.gcube.portlets.user.dataminermanager.client.bean.parameters.ObjectParameter;
import org.gcube.portlets.user.dataminermanager.client.bean.parameters.Parameter;
import com.google.gwt.user.client.ui.Widget;
import com.sencha.gxt.widget.core.client.form.IntegerField;
/**
*
* @author Giancarlo Panichi
* email: <a href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
*
*/
public class IntFld extends AbstractFld {
private IntegerField numberField;
/**
* @param operator
*/
public IntFld(Parameter parameter) {
super(parameter);
ObjectParameter p = (ObjectParameter) parameter;
numberField = new IntegerField();
if (p.getDefaultValue() != null)
numberField.setValue(Integer.parseInt(p.getDefaultValue()));
if (p.getDescription() != null)
numberField.setTitle(p.getDescription());
numberField.setAllowBlank(false);
}
/**
*
*/
@Override
public String getValue() {
Integer i = numberField.getCurrentValue();
return i.toString();
}
/**
*
*/
@Override
public Widget getWidget() {
return numberField;
}
}

View File

@ -0,0 +1,191 @@
/**
*
*/
package org.gcube.portlets.user.dataminermanager.client.form;
import java.util.ArrayList;
import java.util.List;
import org.gcube.portlets.user.dataminermanager.client.DataMinerManager;
import org.gcube.portlets.user.dataminermanager.client.bean.parameters.ListParameter;
import org.gcube.portlets.user.dataminermanager.client.bean.parameters.ObjectParameter;
import org.gcube.portlets.user.dataminermanager.client.bean.parameters.Parameter;
import com.google.gwt.user.client.ui.Widget;
import com.sencha.gxt.widget.core.client.button.TextButton;
import com.sencha.gxt.widget.core.client.container.HorizontalLayoutContainer;
import com.sencha.gxt.widget.core.client.container.SimpleContainer;
import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer;
import com.sencha.gxt.widget.core.client.event.SelectEvent;
/**
* @author ceras
*
*/
public class ListIntFld extends AbstractFld {
private List<Item> items;
private SimpleContainer simpleContainer;
private VerticalLayoutContainer vp;
private ListParameter listParameter;
/**
* @param parameter
*/
public ListIntFld(Parameter parameter) {
super(parameter);
this.listParameter = (ListParameter) parameter;
simpleContainer=new SimpleContainer();
vp = new VerticalLayoutContainer();
simpleContainer.add(vp);
items = new ArrayList<Item>();
addField(null);
}
private void addField(Item upperItem) {
ObjectParameter objPar = new ObjectParameter(listParameter.getName(),
listParameter.getDescription(), listParameter.getType(), null);
if (upperItem == null) {
Item item = new Item(objPar, true);
items.add(item);
vp.add(item);
} else {
// search the position of the upper item
int pos = 0;
for (int i = 0; i < items.size(); i++)
if (items.get(i) == upperItem) {
pos = i;
break;
}
upperItem.showCancelButton();
Item item = new Item(objPar, false);
items.add(pos + 1, item);
vp.insert(item, pos + 1);
}
simpleContainer.forceLayout();
}
/**
* @param item
*/
private void removeField(Item item) {
items.remove(item);
vp.remove(item);
if (items.size() == 1) {
items.get(0).hideCancelButton();
}
simpleContainer.forceLayout();
}
/**
*
*/
@Override
public String getValue() {
String separator = listParameter.getSeparator();
String value = "";
boolean first = true;
for (Item item : items) {
String itemValue = item.getValue();
if (itemValue != null && !itemValue.contentEquals("")) {
value += (first ? "" : separator) + itemValue;
first = false;
}
}
return value;
}
/**
*
*/
@Override
public Widget getWidget() {
return simpleContainer;
}
/**
*
*/
@Override
public boolean isValid() {
boolean valid = false;
for (Item item : items)
if (item.getField().getValue() != null) {
valid = true;
break;
}
return valid;
}
private class Item extends HorizontalLayoutContainer {
private IntFld field;
private TextButton addButton;
private TextButton removeButton;
/**
* @param objPar
*/
public Item(ObjectParameter objectParameter, boolean first) {
super();
this.field = new IntFld(objectParameter);
this.add(field.getWidget());
addButton = new TextButton("");
addButton.setIcon(DataMinerManager.resources.add());
addButton.addSelectHandler(new SelectEvent.SelectHandler() {
@Override
public void onSelect(SelectEvent event) {
addField(Item.this);
}
});
removeButton = new TextButton("");
removeButton.setIcon(DataMinerManager.resources.cancel());
removeButton.addSelectHandler(new SelectEvent.SelectHandler() {
@Override
public void onSelect(SelectEvent event) {
removeField(Item.this);
}
});
removeButton.setVisible(!first);
this.add(addButton);
this.add(removeButton);
}
public void showCancelButton() {
removeButton.setVisible(true);
}
public void hideCancelButton() {
removeButton.setVisible(false);
}
public String getValue() {
return field.getValue();
}
public IntFld getField() {
return field;
}
}
}

View File

@ -0,0 +1,191 @@
/**
*
*/
package org.gcube.portlets.user.dataminermanager.client.form;
import java.util.ArrayList;
import java.util.List;
import org.gcube.portlets.user.dataminermanager.client.DataMinerManager;
import org.gcube.portlets.user.dataminermanager.client.bean.parameters.ListParameter;
import org.gcube.portlets.user.dataminermanager.client.bean.parameters.ObjectParameter;
import org.gcube.portlets.user.dataminermanager.client.bean.parameters.Parameter;
import com.google.gwt.user.client.ui.Widget;
import com.sencha.gxt.widget.core.client.button.TextButton;
import com.sencha.gxt.widget.core.client.container.HorizontalLayoutContainer;
import com.sencha.gxt.widget.core.client.container.SimpleContainer;
import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer;
import com.sencha.gxt.widget.core.client.event.SelectEvent;
/**
* @author ceras
*
*/
public class ListStringFld extends AbstractFld {
private List<Item> items;
private SimpleContainer simpleContainer;
private VerticalLayoutContainer vp;
private ListParameter listParameter;
/**
* @param parameter
*/
public ListStringFld(Parameter parameter) {
super(parameter);
this.listParameter = (ListParameter) parameter;
simpleContainer = new SimpleContainer();
vp = new VerticalLayoutContainer();
simpleContainer.add(vp);
items = new ArrayList<Item>();
addField(null);
}
private void addField(Item upperItem) {
ObjectParameter objPar = new ObjectParameter(listParameter.getName(),
listParameter.getDescription(), listParameter.getType(), null);
if (upperItem == null) {
Item item = new Item(objPar, true);
items.add(item);
vp.add(item);
} else {
// search the position of the upper item
int pos = 0;
for (int i = 0; i < items.size(); i++)
if (items.get(i) == upperItem) {
pos = i;
break;
}
upperItem.showCancelButton();
Item item = new Item(objPar, false);
items.add(pos + 1, item);
vp.insert(item, pos + 1);
}
simpleContainer.forceLayout();
}
/**
* @param item
*/
protected void removeField(Item item) {
items.remove(item);
vp.remove(item);
if (items.size() == 1) {
items.get(0).hideCancelButton();
}
simpleContainer.forceLayout();
}
/**
*
*/
@Override
public String getValue() {
String separator = listParameter.getSeparator();
String value = "";
boolean first = true;
for (Item item : items) {
String itemValue = item.getValue();
if (itemValue != null && !itemValue.contentEquals("")) {
value += (first ? "" : separator) + itemValue;
first = false;
}
}
return value;
}
/**
*
*/
@Override
public Widget getWidget() {
return simpleContainer;
}
/**
*
*/
@Override
public boolean isValid() {
boolean valid = false;
for (Item item : items)
if (item.getField().getValue() != null) {
valid = true;
break;
}
return valid;
}
private class Item extends HorizontalLayoutContainer {
private StringFld field;
private TextButton addButton;
private TextButton removeButton;
/**
* @param objPar
*/
public Item(ObjectParameter objectParameter, boolean first) {
super();
this.field = new StringFld(objectParameter);
this.add(field.getWidget());
addButton = new TextButton("");
addButton.setIcon(DataMinerManager.resources.add());
addButton.addSelectHandler(new SelectEvent.SelectHandler() {
@Override
public void onSelect(SelectEvent event) {
addField(Item.this);
}
});
removeButton = new TextButton("");
removeButton.setIcon(DataMinerManager.resources.cancel());
removeButton.addSelectHandler(new SelectEvent.SelectHandler() {
@Override
public void onSelect(SelectEvent event) {
removeField(Item.this);
}
});
removeButton.setVisible(!first);
this.add(addButton);
this.add(removeButton);
}
public void showCancelButton() {
removeButton.setVisible(true);
}
public void hideCancelButton() {
removeButton.setVisible(false);
}
public String getValue() {
return field.getValue();
}
public StringFld getField() {
return field;
}
}
}

View File

@ -0,0 +1,84 @@
/**
*
*/
package org.gcube.portlets.user.dataminermanager.client.form;
import org.gcube.portlets.user.dataminermanager.client.DataMinerManager;
import org.gcube.portlets.user.dataminermanager.shared.data.TableItemSimple;
import com.sencha.gxt.widget.core.client.Dialog;
import com.sencha.gxt.widget.core.client.button.TextButton;
import com.sencha.gxt.widget.core.client.event.HideEvent;
import com.sencha.gxt.widget.core.client.event.HideEvent.HideHandler;
import com.sencha.gxt.widget.core.client.event.SelectEvent;
/**
* @author ceras
*
*/
public abstract class OpenTableButton extends TextButton {
protected TableItemSimple tableItem=null;
protected boolean added = false;
public abstract void onOpenTable();
public abstract void onHideTable();
public OpenTableButton() {
super("Open Data Set", DataMinerManager.resources.table());
this.addSelectHandler(new SelectEvent.SelectHandler() {
@Override
public void onSelect(SelectEvent event) {
//TabularData tabularData = DataMinerManager.getTabularData();
//TabularDataGridPanel gridPanel = tabularData.getGridPanel();
Dialog dialog = new Dialog();
dialog.setMaximizable(true);
dialog.setBodyBorder(false);
dialog.setExpanded(true);
dialog.setHeadingText("Data Set "+tableItem.getName());
dialog.setWidth(700);
dialog.setHeight(500);
dialog.setHideOnButtonClick(true);
dialog.setModal(true);
//dialog.add(gridPanel);
dialog.show();
dialog.addHideHandler(new HideHandler() {
@Override
public void onHide(HideEvent event) {
onHideTable();
}
});
onOpenTable();
//tabularData.openTable(tableItem.getId());
//gridPanel.setHeaderVisible(false);
}
});
}
public void setTable(TableItemSimple tableItem) {
this.tableItem = tableItem;
}
/**
* @return the added
*/
public boolean isAdded() {
return added;
}
/**
* @param added the added to set
*/
public void setAdded(boolean added) {
this.added = added;
}
}

View File

@ -0,0 +1,155 @@
/**
*
*/
package org.gcube.portlets.user.dataminermanager.client.form;
import org.gcube.portlets.user.dataminermanager.client.bean.parameters.ListParameter;
import org.gcube.portlets.user.dataminermanager.client.bean.parameters.ObjectParameter;
import org.gcube.portlets.user.dataminermanager.client.bean.parameters.Parameter;
import com.allen_sauer.gwt.log.client.Log;
import com.google.gwt.user.client.ui.HTML;
import com.sencha.gxt.core.client.util.Margins;
import com.sencha.gxt.widget.core.client.container.HorizontalLayoutContainer;
import com.sencha.gxt.widget.core.client.container.HorizontalLayoutContainer.HorizontalLayoutData;
import com.sencha.gxt.widget.core.client.container.MarginData;
import com.sencha.gxt.widget.core.client.container.SimpleContainer;
import com.sencha.gxt.widget.core.client.form.FieldLabel;
/**
* @author ceras
*
*/
public class OperatorFieldWidget extends SimpleContainer {
private Parameter parameter;
private AbstractFld field;
private HorizontalLayoutContainer horiz;
// private Field generalParameterField;
// private SimpleComboBox<String> inputDataParameterField;
// private TextField<String> outputDataParameterField;
/**
*
*/
public OperatorFieldWidget(Parameter p) {
super();
this.parameter = p;
horiz = new HorizontalLayoutContainer();
try {
// this.setStyleAttribute("margin", "10px");
if (p.isObject())
field = createObjectField((ObjectParameter) p);
else if (p.isEnum())
field = new EnumFld(p);
else if (p.isTabular())
field = new TabularFld(p);
else if (p.isTabularList())
field = new TabularListFld(p);
else if (p.isColumn())
field = new ColumnFld(p);
else if (p.isColumnList())
field = new ColumnListFld(p);
else if (p.isList())
field = createListField((ListParameter) p);
else if (p.isFile())
field = new FileFld(p);
FieldLabel label = new FieldLabel(field.getWidget(), p.getName());
horiz.add(label, new HorizontalLayoutData(-1, 1, new Margins(0)));
if (p.getDescription() != null) {
HTML descr = new HTML(p.getDescription());
descr.addStyleName("workflow-fieldDescription");
horiz.add(descr);
}
} catch (Throwable e) {
Log.error("Error: " + e.getLocalizedMessage());
e.printStackTrace();
horiz.add(new FieldLabel(new HTML("Error in field retrieving!"),p.getName()));
}
add(horiz, new MarginData(0));
}
/**
* @return the parameter
*/
public Parameter getParameter() {
return parameter;
}
public String getFieldValue() {
return field.getValue();
}
public String getValue() {
return getFieldValue();
}
/**
* @param p
* @return
*/
private AbstractFld createObjectField(ObjectParameter p) {
String type = p.getType();
if (type.contentEquals(Integer.class.getName())) {
return new IntFld(p);
} else if (type.contentEquals(String.class.getName())) {
return new StringFld(p);
} else if (type.contentEquals(Boolean.class.getName())) {
return new BooleanFld(p);
} else if (type.contentEquals(Double.class.getName())) {
return new DoubleFld(p);
} else if (type.contentEquals(Float.class.getName())) {
return new FloatFld(p);
} else
return null;
}
/**
*
*/
private AbstractFld createListField(ListParameter p) {
String type = p.getType();
if (type.contentEquals(String.class.getName())
|| type.contentEquals("STRING")) { // TODO REMOVE "STRING"
return new ListStringFld(p);
} else if (type.contentEquals(Integer.class.getName())
|| type.contentEquals("NUMBER")) {
return new ListIntFld(p);
}
// } else if (type.contentEquals(Boolean.class.getName())) {
// return new ListBooleanField(p);
// } else if (type.contentEquals(Double.class.getName())) {
// return new ListDoubleField(p);
// } else if (type.contentEquals(Float.class.getName())) {
// return new ListFloatField(p);
// }
else
return null;
}
/**
*
*/
public void updateOperatorParameterValue() {
this.parameter.setValue(this.getFieldValue());
}
public AbstractFld getField() {
return field;
}
public boolean isValid() {
if (field != null)
return field.isValid();
else
return false;
}
}

View File

@ -0,0 +1,55 @@
/**
*
*/
package org.gcube.portlets.user.dataminermanager.client.form;
import org.gcube.portlets.user.dataminermanager.client.bean.parameters.ObjectParameter;
import org.gcube.portlets.user.dataminermanager.client.bean.parameters.Parameter;
import com.google.gwt.user.client.ui.Widget;
import com.sencha.gxt.widget.core.client.form.TextField;
/**
*
* @author Giancarlo Panichi
* email: <a href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
*
*/
public class StringFld extends AbstractFld {
private TextField textField;
/**
* @param parameter
*/
public StringFld(Parameter parameter) {
super(parameter);
textField = new TextField();
ObjectParameter p = (ObjectParameter) parameter;
textField.setValue(p.getDefaultValue());
if (p.getDefaultValue() == null)
textField.setAllowBlank(false);
if (p.getDescription() != null)
textField.setToolTip(p.getDescription());
}
/**
*
*/
@Override
public String getValue() {
return textField.getValue();
}
/**
*
*/
@Override
public Widget getWidget() {
return textField;
}
}

View File

@ -0,0 +1,355 @@
/**
*
*/
package org.gcube.portlets.user.dataminermanager.client.form;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.gcube.portlets.user.dataminermanager.client.DataMinerManager;
import org.gcube.portlets.user.dataminermanager.client.bean.parameters.Parameter;
import org.gcube.portlets.user.dataminermanager.client.bean.parameters.TabularParameter;
import org.gcube.portlets.user.dataminermanager.client.rpc.DataMinerPortletServiceAsync;
import org.gcube.portlets.user.dataminermanager.client.util.UtilsGXT3;
import org.gcube.portlets.user.dataminermanager.shared.data.TableItemSimple;
import org.gcube.portlets.user.dataminermanager.shared.exception.ExpiredSessionServiceException;
import org.gcube.portlets.widgets.wsexplorer.client.notification.WorkspaceExplorerSelectNotification.WorskpaceExplorerSelectNotificationListener;
import org.gcube.portlets.widgets.wsexplorer.client.select.WorkspaceExplorerSelectDialog;
import org.gcube.portlets.widgets.wsexplorer.shared.Item;
import org.gcube.portlets.widgets.wsexplorer.shared.ItemType;
import com.allen_sauer.gwt.log.client.Log;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.Widget;
import com.sencha.gxt.core.client.dom.XDOM;
import com.sencha.gxt.core.client.util.Format;
import com.sencha.gxt.widget.core.client.button.TextButton;
import com.sencha.gxt.widget.core.client.container.HorizontalLayoutContainer;
import com.sencha.gxt.widget.core.client.container.MarginData;
import com.sencha.gxt.widget.core.client.container.SimpleContainer;
import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer;
import com.sencha.gxt.widget.core.client.event.SelectEvent;
/**
*
* @author Giancarlo Panichi
* email: <a href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
*
*/
public class TabularFld extends AbstractFld {
private SimpleContainer sc;
private VerticalLayoutContainer vp;
// TableSelector tableSelector;
private WorkspaceExplorerSelectDialog wselectDialog;
private TextButton selectButton, selectButton2, cancelButton;
private HTML templatesList;
private TableItemSimple selectedTableItem = null;
private List<AbstractFld> listeners = new ArrayList<AbstractFld>();
/**
* @param parameter
*/
public TabularFld(Parameter parameter) {
super(parameter);
Log.debug("TabularField");
vp=new VerticalLayoutContainer();
init();
sc=new SimpleContainer();
sc.add(vp, new MarginData(0));
showNoSelectionField();
}
private void init() {
TabularParameter p = (TabularParameter) parameter;
List<String> templates = p.getTemplates();
/*
* tableSelector = new TableSelector(templates) {
*
* @Override public void fireSelection(TableItemSimple tableItem) {
* super.fireSelection(tableItem); selectedTableItem = tableItem;
* showFieldWithSelection();
*
* loadTableMetadata(tableItem); // send change message to all listeners
* // it will be managed by all columnFields and columnListField that
* depends by tabular field } };
*/
List<ItemType> selectableTypes = new ArrayList<ItemType>();
selectableTypes.add(ItemType.EXTERNAL_FILE);
List<ItemType> showableTypes = new ArrayList<ItemType>();
showableTypes.addAll(Arrays.asList(ItemType.values()));
/*
"application/zip", "application/x-zip",
"application/x-zip-compressed", "application/octet-stream",
"application/x-compress", "application/x-compressed",
"multipart/x-zip"
*/
//List<String> allowedMimeTypes = Arrays.asList("text/csv","text/plain","text/plain; charset=ISO-8859-1");
/**
* "zip"
*/
/*List<String> allowedFileExtensions = Arrays.asList("csv");
FilterCriteria filterCriteria = new FilterCriteria(allowedMimeTypes,
allowedFileExtensions, new HashMap<String, String>());
*/
wselectDialog = new WorkspaceExplorerSelectDialog("Select CSV",false);
// filterCriteria, selectableTypes);
WorskpaceExplorerSelectNotificationListener handler = new WorskpaceExplorerSelectNotificationListener() {
@Override
public void onSelectedItem(Item item) {
if (item.isFolder() || item.isRoot()) {
UtilsGXT3.info("Attention", "Select a valid csv!");
} else {
retrieveTableInformation(item);
}
}
@Override
public void onFailed(Throwable throwable) {
Log.error("Error in create project: "
+ throwable.getLocalizedMessage());
UtilsGXT3.alert("Error", throwable.getLocalizedMessage());
throwable.printStackTrace();
}
@Override
public void onAborted() {
}
@Override
public void onNotValidSelection() {
UtilsGXT3.info("Attention", "Select a valid csv!");
}
};
wselectDialog.addWorkspaceExplorerSelectNotificationListener(handler);
wselectDialog.setZIndex(XDOM.getTopZIndex());
selectButton = new TextButton("Select Data Set");
selectButton.addSelectHandler(new SelectEvent.SelectHandler() {
@Override
public void onSelect(SelectEvent event) {
wselectDialog.show();
}
});
selectButton.setIcon(DataMinerManager.resources.folderExplore());
selectButton.setToolTip("Select Data Set");
selectButton2 = new TextButton("");
selectButton2.addSelectHandler(new SelectEvent.SelectHandler() {
@Override
public void onSelect(SelectEvent event) {
wselectDialog.show();
}
});
selectButton2.setIcon(DataMinerManager.resources.folderExplore());
selectButton2.setToolTip("Select Another Data Set");
cancelButton = new TextButton("");
cancelButton.addSelectHandler(new SelectEvent.SelectHandler() {
@Override
public void onSelect(SelectEvent event) {
selectedTableItem = null;
showNoSelectionField();
updateListeners(null);
}
});
cancelButton.setIcon(DataMinerManager.resources.cancel());
String list = "";
boolean first = true;
for (String template : templates) {
list += (first ? "" : ", ") + template;
first = false;
}
templatesList = new HTML("Suitable Data Set Templates: <br>" + list);
templatesList.addStyleName("workflow-templatesList");
}
private void retrieveTableInformation(Item item) {
DataMinerPortletServiceAsync.INSTANCE.retrieveTableInformation(item, new AsyncCallback<TableItemSimple>() {
@Override
public void onFailure(Throwable caught) {
Log.error("Error in retrieveTableInformation " + caught.getMessage());
if (caught instanceof ExpiredSessionServiceException) {
UtilsGXT3.alert("Error", "Expired Session");
//sessionExpiredShowDelayed();
} else {
UtilsGXT3.alert(
"Error",
"Error retrieving table information: "
+ caught.getLocalizedMessage());
}
}
@Override
public void onSuccess(TableItemSimple result) {
Log.debug("Retrieved: "+result);
selectedTableItem=result;
showFieldWithSelection();
//loadTableMetadata(selectedTableItem);
updateListeners(selectedTableItem);
}
});
}
/**
* @param tableItem
protected void loadTableMetadata(final TableItemSimple tableItem) {
//TabularData tabularData = DataMinerManager.getTabularData();
String tableId = tableItem.getId();
tabularData.getTableDefinition(tableId,
new AsyncCallback<TableDefinition>() {
@Override
public void onFailure(Throwable caught) {
vp.unmask();
Info.display("ERROR", "");
}
@Override
public void onSuccess(TableDefinition tableDefinition) {
vp.unmask();
List<ColumnDefinition> columns = tableDefinition
.getColumnsAsList();
Collections.sort(columns, new ColumnPositionComparator(
false));
for (ColumnDefinition column : columns)
tableItem.addColumnName(column.getLabel());
updateListeners(tableItem);
}
});
vp.mask("Load Data Set Metadata...", Constants.maskLoadingStyle);
}*/
/**
* @param id
*/
protected void updateListeners(TableItemSimple tableItem) {
for (AbstractFld abstractField : listeners) {
abstractField.fireEvent(tableItem);
}
}
/**
*
*/
private void showNoSelectionField() {
vp.clear();
vp.add(selectButton);
vp.add(templatesList);
sc.forceLayout();
}
/**
*
*/
private void showFieldWithSelection() {
//final String tableId = selectedTableItem.getId();
final String tableName = selectedTableItem.getName();
vp.clear();
HorizontalLayoutContainer hp = new HorizontalLayoutContainer();
hp.add(new HTML("<div class='workflow-parameters-tableDescription'>"
+ Format.ellipse(tableName, 30) + "</div>"));
hp.add(selectButton2);
hp.add(cancelButton);
TextButton openTableButton = new TextButton("Open Data Set");
openTableButton.addSelectHandler(new SelectEvent.SelectHandler() {
@Override
public void onSelect(SelectEvent event) {
/*TabularData tabularData = DataMinerManager
.getTabularData();
TabularDataGridPanel gridPanel = tabularData
.getGridPanel();
gridPanel.setExpanded(true);
gridPanel.setBorders(true);
Dialog dialog = new Dialog();
dialog.setMaximizable(true);
dialog.setBodyBorder(false);
dialog.setExpanded(true);
dialog.setHeadingText("Data Set " + tableName);
dialog.setWidth(640);
dialog.setHeight(480);
dialog.setHideOnButtonClick(true);
dialog.setModal(true);
dialog.add(gridPanel);
dialog.show();
tabularData.openTable(tableId);
gridPanel.setHeaderVisible(false);*/
}
});
hp.add(openTableButton);
vp.add(hp);
vp.add(templatesList);
sc.forceLayout();
}
/**
*
*/
@Override
public String getValue() {
return (selectedTableItem == null) ? null : selectedTableItem.getId();
}
/**
*
*/
@Override
public Widget getWidget() {
return sc;
}
/**
*
*/
@Override
public boolean isValid() {
return (selectedTableItem != null);
}
public void addChangeListener(AbstractFld abstractField) {
this.listeners.add(abstractField);
}
}

View File

@ -0,0 +1,191 @@
/**
*
*/
package org.gcube.portlets.user.dataminermanager.client.form;
import java.util.ArrayList;
import java.util.List;
import org.gcube.portlets.user.dataminermanager.client.DataMinerManager;
import org.gcube.portlets.user.dataminermanager.client.bean.parameters.Parameter;
import org.gcube.portlets.user.dataminermanager.client.bean.parameters.TabularListParameter;
import org.gcube.portlets.user.dataminermanager.client.bean.parameters.TabularParameter;
import com.allen_sauer.gwt.log.client.Log;
import com.google.gwt.user.client.ui.Widget;
import com.sencha.gxt.widget.core.client.button.TextButton;
import com.sencha.gxt.widget.core.client.container.HorizontalLayoutContainer;
import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer;
import com.sencha.gxt.widget.core.client.event.SelectEvent;
/**
*
* @author Giancarlo Panichi
* email: <a href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
*
*/
public class TabularListFld extends AbstractFld {
private List<Item> items = new ArrayList<Item>();
private VerticalLayoutContainer vp;
private TabularListParameter tabularListParameter;
/**
* @param parameter
*/
public TabularListFld(Parameter parameter) {
super(parameter);
Log.debug("TabularListField");
this.tabularListParameter = (TabularListParameter) parameter;
vp = new VerticalLayoutContainer();
addField(null);
}
private void addField(Item upperItem) {
TabularParameter tabPar = new TabularParameter(
tabularListParameter.getName(),
tabularListParameter.getDescription(),null,
tabularListParameter.getTemplates());
if (upperItem == null) {
Item item = new Item(tabPar, true);
items.add(item);
vp.add(item);
} else {
// search the position of the upper item
int pos = 0;
for (int i = 0; i < items.size(); i++)
if (items.get(i) == upperItem) {
pos = i;
break;
}
upperItem.showCancelButton();
Item item = new Item(tabPar, false);
items.add(pos + 1, item);
vp.insert(item, pos + 1);
}
vp.forceLayout();
}
/**
* @param item
*/
protected void removeField(Item item) {
items.remove(item);
vp.remove(item);
vp.forceLayout();
if (items.size() == 1) {
items.get(0).hideCancelButton();
}
}
/**
*
*/
@Override
public String getValue() {
String separator = tabularListParameter.getSeparator();
String value = "";
boolean first = true;
for (Item item : items) {
String itemValue = item.getValue();
if (itemValue != null && !itemValue.contentEquals("")) {
value += (first ? "" : separator) + itemValue;
first = false;
}
}
return value;
}
/**
*
*/
@Override
public Widget getWidget() {
return vp;
}
/**
*
*/
@Override
public boolean isValid() {
boolean valid = false;
for (Item item : items)
if (item.getField().getValue() != null) {
valid = true;
break;
}
return valid;
}
private class Item extends HorizontalLayoutContainer {
private TabularFld field;
private TextButton addButton;
private TextButton removeButton;
/**
*
* @param tabularParameter
* @param first
*/
public Item(TabularParameter tabularParameter, boolean first) {
super();
this.field = new TabularFld(tabularParameter);
this.add(field.getWidget());
addButton= new TextButton("");
addButton.setIcon(DataMinerManager.resources.add());
addButton.addSelectHandler(new SelectEvent.SelectHandler() {
@Override
public void onSelect(SelectEvent event) {
addField(Item.this);
}
});
removeButton= new TextButton("");
removeButton.setIcon(DataMinerManager.resources.cancel());
removeButton.addSelectHandler(new SelectEvent.SelectHandler() {
@Override
public void onSelect(SelectEvent event) {
removeField(Item.this);
}
});
removeButton.setVisible(!first);
this.add(addButton);
this.add(removeButton);
}
public void showCancelButton() {
removeButton.setVisible(true);
}
public void hideCancelButton() {
removeButton.setVisible(false);
}
public String getValue() {
return field.getValue();
}
public TabularFld getField() {
return field;
}
}
}

View File

@ -0,0 +1,24 @@
package org.gcube.portlets.user.dataminermanager.client.properties;
import org.gcube.portlets.user.dataminermanager.shared.data.ColumnItem;
import com.google.gwt.editor.client.Editor.Path;
import com.sencha.gxt.core.client.ValueProvider;
import com.sencha.gxt.data.shared.ModelKeyProvider;
import com.sencha.gxt.data.shared.PropertyAccess;
/**
*
* @author Giancarlo Panichi
* email: <a href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
*
*/
public interface ColumnItemProperties extends PropertyAccess<ColumnItem> {
@Path("id")
ModelKeyProvider<ColumnItem> id();
ValueProvider<ColumnItem, String> label();
}

View File

@ -0,0 +1,23 @@
package org.gcube.portlets.user.dataminermanager.client.properties;
import org.gcube.portlets.user.dataminermanager.shared.data.ColumnItem;
import com.google.gwt.editor.client.Editor.Path;
import com.sencha.gxt.data.shared.LabelProvider;
import com.sencha.gxt.data.shared.ModelKeyProvider;
import com.sencha.gxt.data.shared.PropertyAccess;
/**
*
* @author Giancarlo Panichi
* email: <a href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
*
*/
public interface ColumnItemPropertiesCombo extends PropertyAccess<ColumnItem> {
@Path("id")
ModelKeyProvider<ColumnItem> id();
LabelProvider<ColumnItem> label();
}

View File

@ -0,0 +1,101 @@
package org.gcube.portlets.user.dataminermanager.client.resources;
import org.gcube.portlets.user.dataminermanager.client.DataMinerManager;
import com.google.gwt.user.client.ui.AbstractImagePrototype;
public class Images {
public static AbstractImagePrototype logo() {
return AbstractImagePrototype.create(DataMinerManager.resources.logo());
}
public static AbstractImagePrototype logoLittle() {
return AbstractImagePrototype.create(DataMinerManager.resources.logoLittle());
}
public static AbstractImagePrototype computationIcon() {
return AbstractImagePrototype.create(DataMinerManager.resources.computationIcon());
}
public static AbstractImagePrototype inputSpaceIcon() {
return AbstractImagePrototype.create(DataMinerManager.resources.inputSpaceIcon());
}
public static AbstractImagePrototype addOperator() {
return AbstractImagePrototype.create(DataMinerManager.resources.addOperator());
}
public static AbstractImagePrototype startComputation() {
return AbstractImagePrototype.create(DataMinerManager.resources.startComputation());
}
public static AbstractImagePrototype removeAll() {
return AbstractImagePrototype.create(DataMinerManager.resources.removeAll());
}
public static AbstractImagePrototype showAllOperators() {
return AbstractImagePrototype.create(DataMinerManager.resources.sortAscending());
}
public static AbstractImagePrototype showCategories() {
return AbstractImagePrototype.create(DataMinerManager.resources.tree());
}
public static AbstractImagePrototype folderExplore() {
return AbstractImagePrototype.create(DataMinerManager.resources.folderExplore());
}
public static AbstractImagePrototype cancel() {
return AbstractImagePrototype.create(DataMinerManager.resources.cancel());
}
public static AbstractImagePrototype addl() {
return AbstractImagePrototype.create(DataMinerManager.resources.add());
}
public static AbstractImagePrototype table() {
return AbstractImagePrototype.create(DataMinerManager.resources.table());
}
public static AbstractImagePrototype refresh() {
return AbstractImagePrototype.create(DataMinerManager.resources.refresh());
}
public static AbstractImagePrototype fileDownload() {
return AbstractImagePrototype.create(DataMinerManager.resources.fileDownload());
}
public static AbstractImagePrototype loader() {
return AbstractImagePrototype.create(DataMinerManager.resources.loader());
}
public static AbstractImagePrototype save() {
return AbstractImagePrototype.create(DataMinerManager.resources.save());
}
public static AbstractImagePrototype expand() {
return AbstractImagePrototype.create(DataMinerManager.resources.expand());
}
public static AbstractImagePrototype collapse() {
return AbstractImagePrototype.create(DataMinerManager.resources.collapse());
}
public static AbstractImagePrototype groupBy() {
return AbstractImagePrototype.create(DataMinerManager.resources.groupBy());
}
public static AbstractImagePrototype map() {
return AbstractImagePrototype.create(DataMinerManager.resources.map());
}
public static AbstractImagePrototype userPerspective() {
return AbstractImagePrototype.create(DataMinerManager.resources.userPerspective());
}
public static AbstractImagePrototype computationPerspective() {
return AbstractImagePrototype.create(DataMinerManager.resources.computationPerspective());
}
}

View File

@ -0,0 +1,123 @@
package org.gcube.portlets.user.dataminermanager.client.resources;
import com.google.gwt.resources.client.ClientBundle;
import com.google.gwt.resources.client.ImageResource;
public interface Resources extends ClientBundle {
@Source("logo.png")
ImageResource logo();
@Source("logoLittle.png")
ImageResource logoLittle();
@Source("goBack.png")
ImageResource goBack();
@Source("computation.png")
ImageResource computationIcon();
@Source("computations.png")
ImageResource jobsIcon();
@Source("inputSpace.png")
ImageResource inputSpaceIcon();
@Source("application_side_expand.png")
ImageResource addOperator();
@Source("connector1.png")
ImageResource workflowConnector1();
@Source("connector2.png")
ImageResource workflowConnector2();
@Source("triangle.png")
ImageResource startComputation();
@Source("delete.png")
ImageResource removeAll();
@Source("sort_asc.gif")
ImageResource sortAscending();
@Source("tree.gif")
ImageResource tree();
@Source("folder_explore.png")
ImageResource folderExplore();
@Source("cancel_icon.png")
ImageResource cancel();
@Source("add.png")
ImageResource add();
@Source("table.png")
ImageResource table();
@Source("refresh.png")
ImageResource refresh();
@Source("details.png")
ImageResource details();
@Source("tableResult.png")
ImageResource tableResult();
@Source("menuItemComputations.png")
ImageResource menuItemComputations();
@Source("menuItemExperiment.png")
ImageResource menuItemExperiment();
@Source("menuItemDataspace.png")
ImageResource menuItemInputspace();
@Source("table.png")
ImageResource fileDownload(); // TODO change
@Source("ajax-loader.gif")
ImageResource loader();
@Source("ajax-loader-big.gif")
ImageResource loaderBig();
@Source("ajax-complete.gif")
ImageResource loadingComplete();
@Source("inputSpaceImporter.png")
ImageResource inputSpaceImporter();
@Source("inputSpaceMonitor.png")
ImageResource inputSpaceMonitor();
@Source("save.png")
ImageResource save();
@Source("alert.png")
ImageResource error();
@Source("arrow_out.png")
ImageResource expand();
@Source("arrow_in.png")
ImageResource collapse();
@Source("application_view_list.png")
ImageResource groupBy();
@Source("map.png")
ImageResource map();
@Source("user_green.png")
ImageResource userPerspective();
@Source("monitor.png")
ImageResource computationPerspective();
@Source("arrow_redo.png")
ImageResource resubmit();
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 733 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 137 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 293 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 723 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 271 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 696 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 581 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 473 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 600 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 594 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 625 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 349 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 587 B

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