commit e3fe1ab78782de85168cc35bae5df79215adfd86 Author: Giancarlo Panichi Date: Thu Jun 11 12:25:52 2020 +0200 First Commit diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..cc04877 --- /dev/null +++ b/.classpath @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..30c3a67 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/target/ +/test.log diff --git a/.project b/.project new file mode 100644 index 0000000..7863095 --- /dev/null +++ b/.project @@ -0,0 +1,64 @@ + + + data-miner-manager-tester + + + + + + org.eclipse.wst.jsdt.core.javascriptValidator + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.wst.common.project.facet.core.builder + + + + + org.eclipse.wst.validation.validationbuilder + + + + + com.google.gdt.eclipse.core.webAppProjectValidator + + + + + com.google.gwt.eclipse.core.gwtProjectValidator + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.m2e.core.maven2Nature + org.eclipse.jem.workbench.JavaEMFNature + org.eclipse.wst.common.modulecore.ModuleCoreNature + org.eclipse.jdt.core.javanature + org.eclipse.wst.common.project.facet.core.nature + com.google.gwt.eclipse.core.gwtNature + org.eclipse.wst.jsdt.core.jsNature + org.eclipse.pde.PluginNature + + diff --git a/.settings/com.google.appengine.eclipse.core.prefs b/.settings/com.google.appengine.eclipse.core.prefs new file mode 100644 index 0000000..bbc4057 --- /dev/null +++ b/.settings/com.google.appengine.eclipse.core.prefs @@ -0,0 +1,3 @@ +eclipse.preferences.version=1 +googleCloudSqlEnabled=false +localDevMySqlEnabled=true diff --git a/.settings/com.google.gdt.eclipse.core.prefs b/.settings/com.google.gdt.eclipse.core.prefs new file mode 100644 index 0000000..691688a --- /dev/null +++ b/.settings/com.google.gdt.eclipse.core.prefs @@ -0,0 +1,4 @@ +eclipse.preferences.version=1 +jarsExcludedFromWebInfLib= +warSrcDir=src/main/webapp +warSrcDirIsOutput=false diff --git a/.settings/com.google.gwt.eclipse.core.prefs b/.settings/com.google.gwt.eclipse.core.prefs new file mode 100644 index 0000000..7d04d42 --- /dev/null +++ b/.settings/com.google.gwt.eclipse.core.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +entryPointModules=org.gcube.portlets.user.dataminermanagertester.dataminermanagertester diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..29abf99 --- /dev/null +++ b/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,6 @@ +eclipse.preferences.version=1 +encoding//src/main/java=UTF-8 +encoding//src/main/resources=UTF-8 +encoding//src/test/java=UTF-8 +encoding//src/test/resources=UTF-8 +encoding/=UTF-8 diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..6e80039 --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,8 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 0000000..f897a7f --- /dev/null +++ b/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,4 @@ +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component new file mode 100644 index 0000000..92cf79a --- /dev/null +++ b/.settings/org.eclipse.wst.common.component @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/.settings/org.eclipse.wst.common.project.facet.core.xml b/.settings/org.eclipse.wst.common.project.facet.core.xml new file mode 100644 index 0000000..376d52f --- /dev/null +++ b/.settings/org.eclipse.wst.common.project.facet.core.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/.settings/org.eclipse.wst.validation.prefs b/.settings/org.eclipse.wst.validation.prefs new file mode 100644 index 0000000..04cad8c --- /dev/null +++ b/.settings/org.eclipse.wst.validation.prefs @@ -0,0 +1,2 @@ +disabled=06target +eclipse.preferences.version=1 diff --git a/distro/LICENSE b/distro/LICENSE new file mode 100644 index 0000000..bc7d7b7 --- /dev/null +++ b/distro/LICENSE @@ -0,0 +1 @@ +${gcube.license***REMOVED*** \ No newline at end of file diff --git a/distro/README b/distro/README new file mode 100644 index 0000000..ea7d7df --- /dev/null +++ b/distro/README @@ -0,0 +1,68 @@ +The gCube System - ${name***REMOVED*** +-------------------------------------------------- + +${description***REMOVED*** + + +${gcube.description***REMOVED*** + +${gcube.funding***REMOVED*** + + +Version +-------------------------------------------------- + +${version***REMOVED*** (${buildDate***REMOVED***) + +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***REMOVED*** + +Binaries can be downloaded from the gCube website: + ${gcube.website***REMOVED*** + + +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***REMOVED*** + + +Licensing +-------------------------------------------------- + +This software is licensed under the terms you may find in the file named "LICENSE" in this directory. diff --git a/distro/changelog.xml b/distro/changelog.xml new file mode 100644 index 0000000..c130050 --- /dev/null +++ b/distro/changelog.xml @@ -0,0 +1,32 @@ + + + Support Java 8 compatibility [ticket #8471] + + + Fixed load balancing [ticket #7576] + + + Updated PortalContext [ticket #6278] + Added encoded parameters in equivalent http request [ticket + #7167] + + + + Updated Output support + Added PortalContext + + + Updated to Auth 2.0 + Added Spatial data support [Ticket #4172] + Added Temporal data support [Ticket #4172] + + + First release + + \ No newline at end of file diff --git a/distro/descriptor.xml b/distro/descriptor.xml new file mode 100644 index 0000000..7e63df3 --- /dev/null +++ b/distro/descriptor.xml @@ -0,0 +1,32 @@ + + servicearchive + + tar.gz + + / + + + ${distroDirectory***REMOVED*** + / + true + + README + LICENSE + changelog.xml + profile.xml + + 755 + true + + + + + target/${build.finalName***REMOVED***.${project.packaging***REMOVED*** + /${artifactId***REMOVED*** + + + + \ No newline at end of file diff --git a/distro/profile.xml b/distro/profile.xml new file mode 100644 index 0000000..36d4884 --- /dev/null +++ b/distro/profile.xml @@ -0,0 +1,29 @@ + + + + Service + + ${project.description***REMOVED*** + PortletsUser + ${project.artifactId***REMOVED*** + 1.0.0 + + + ${project.description***REMOVED*** + ${project.artifactId***REMOVED*** + ${version***REMOVED*** + + ${project.groupId***REMOVED*** + ${project.artifactId***REMOVED*** + ${project.version***REMOVED*** + + webapplication + + ${project.build.finalName***REMOVED***.${project.packaging***REMOVED*** + + + + + + + diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..30ac18b --- /dev/null +++ b/pom.xml @@ -0,0 +1,435 @@ + + 4.0.0 + + + + maven-parent + org.gcube.tools + 1.0.0 + + + + org.gcube.portlets.user + data-miner-manager-tester + 1.0.0-SNAPSHOT + war + + data-miner-manager-tester + data-miner-manager-tester offers test support for dataminer service + + + https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/data-miner-manager-tester + + + + + + Giancarlo Panichi + g.panichi@isti.cnr.it + CNR Pisa, Istituto di Scienza e Tecnologie dell'Informazione "A. Faedo" + + architect + developer + + + + + + ${project.build.directory***REMOVED***/${project.build.finalName***REMOVED*** + distro + config + + + + 1.8 + 1.8 + + + 2.8.2 + 1.6 + 2.1.2 + + + 2.3.0 + 2.3.0 + OBF + + DataMinerManagerTester.html + + org.gcube.portlets.user.dataminermanagertester.dataminermanagertester + + + + 2.6 + 3.3 + + ${env.KEYS***REMOVED*** + + UTF-8 + UTF-8 + + + + + localRun + + + + org.slf4j + slf4j-api + compile + + + org.slf4j + slf4j-log4j12 + runtime + + + + + org.gcube.common + common-authorization + compile + + + + org.gcube.common + authorization-client + compile + + + + + javax.servlet + javax.servlet-api + 3.1.0 + + + + + + + + + + + + com.google.gwt + gwt-servlet + ${gwt.version***REMOVED*** + runtime + + + + com.google.gwt + gwt-user + ${gwt.version***REMOVED*** + provided + + + javax.servlet + javax.servlet-api + + + + + com.google.gwt + gwt-dev + ${gwt.version***REMOVED*** + provided + + + javax.servlet + javax.servlet-api + + + + + + + javax.servlet + javax.servlet-api + 3.1.0 + provided + + + + + + + + com.gwtplatform + gwtp-mvp-client + ${gwtp.version***REMOVED*** + provided + + + + + com.github.gwtmaterialdesign + gwt-material + ${gwt-material.version***REMOVED*** + + + com.github.gwtmaterialdesign + gwt-material-themes + ${gwt-material.version***REMOVED*** + + + com.github.gwtmaterialdesign + gwt-material-addins + ${gwt-material.version***REMOVED*** + + + com.github.gwtmaterialdesign + gwt-material-table + ${gwt-material-table.version***REMOVED*** + + + + com.google.gwt.inject + gin + ${gin.version***REMOVED*** + provided + + + + + + javax.portlet + portlet-api + + + + + com.liferay.portal + portal-service + provided + + + + + org.gcube.core + common-scope-maps + compile + + + + org.gcube.common.portal + portal-manager + provided + + + + org.gcube.dvos + usermanagement-core + provided + + + + org.gcube.portal + client-context-library + [1.0.0-SNAPSHOT,) + compile + + + + + + + org.gcube.common + common-authorization + provided + + + + org.gcube.common + authorization-client + provided + + + + + org.n52.wps + 52n-wps-client-lib + [3.3.1,3.3.3) + + + gt-opengis + org.geotools + + + xerces + xercesImpl + + + + + + + + + org.gcube.data.analysis + data-miner-manager-cl + [1.0.0-SNAPSHOT,2.0.0-SNAPSHOT) + + + + + xml-apis + xml-apis + 1.4.01 + + + + + + org.slf4j + slf4j-api + provided + + + org.slf4j + slf4j-log4j12 + provided + + + + + junit + junit + 4.12 + test + + + + + + + + org.gcube.distribution + maven-portal-bom + LATEST + pom + import + + + + + + + gCubeExternal + gcube-externals + http://maven.research-infrastructures.eu/nexus/content/repositories/gcube-externals/ + + + + n52-releases + 52n Releases + http://52north.org/maven/repo/releases/ + + true + + + true + + + + + + + + + + + + + + ${webappDirectory***REMOVED***/WEB-INF/classes + + + src/main/resources + + + + + + + + + + org.codehaus.mojo + gwt-maven-plugin + ${gwt.version***REMOVED*** + + true + 180 + htmlunit + **/*GwtTest.java + INFO + ${gwt.runTarget***REMOVED*** + ${webappDirectory***REMOVED*** + ${gwt.module.name***REMOVED*** + + + + + compile + test + + + + + + + + org.apache.maven.plugins + maven-war-plugin + 2.1.1 + + + compile + + + + ${webappDirectory***REMOVED*** + ${project.build.finalName***REMOVED*** + + + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version***REMOVED*** + + ${maven.compiler.source***REMOVED*** + ${maven.compiler.target***REMOVED*** + ${project.build.sourceEncoding***REMOVED*** + + + + + org.apache.maven.plugins + maven-assembly-plugin + + + ${distroDirectory***REMOVED***/descriptor.xml + + + + + servicearchive + install + + single + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/ApplicationModule.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/ApplicationModule.java new file mode 100644 index 0000000..9a6c460 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/ApplicationModule.java @@ -0,0 +1,33 @@ +package org.gcube.portlets.user.dataminermanagertester.client.application; + + +import org.gcube.portlets.user.dataminermanagertester.client.application.diff.OperatorsDiffModule; +import org.gcube.portlets.user.dataminermanagertester.client.application.help.HelpModule; +import org.gcube.portlets.user.dataminermanagertester.client.application.home.HomeModule; +import org.gcube.portlets.user.dataminermanagertester.client.application.menu.MenuModule; +import org.gcube.portlets.user.dataminermanagertester.client.application.testbatchconfig.TestBatchConfModule; +import org.gcube.portlets.user.dataminermanagertester.client.application.testconfig.TestConfModule; + +import com.gwtplatform.mvp.client.gin.AbstractPresenterModule; + + + +/** + * + * @author Giancarlo Panichi + * + */ +public class ApplicationModule extends AbstractPresenterModule { + @Override + protected void configure() { + install(new MenuModule()); + install(new HomeModule()); + install(new HelpModule()); + install(new TestConfModule()); + install(new TestBatchConfModule()); + install(new OperatorsDiffModule()); + + bindPresenter(ApplicationPresenter.class, ApplicationPresenter.PresenterView.class, ApplicationView.class, + ApplicationPresenter.PresenterProxy.class); +***REMOVED*** +***REMOVED*** diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/ApplicationPresenter.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/ApplicationPresenter.java new file mode 100644 index 0000000..b470e87 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/ApplicationPresenter.java @@ -0,0 +1,102 @@ +package org.gcube.portlets.user.dataminermanagertester.client.application; + +import org.gcube.portlets.user.dataminermanagertester.client.application.menu.MenuPresenter; +import org.gcube.portlets.user.dataminermanagertester.client.rpc.DataMinerTesterServiceAsync; +***REMOVED*** +import org.gcube.portlets.user.dataminermanagertester.shared.session.UserInfo; + +import com.google.gwt.core.shared.GWT; +import com.google.gwt.user.client.Window; +import com.google.gwt.user.client.rpc.AsyncCallback; +import com.google.inject.Inject; +import com.google.web.bindery.event.shared.EventBus; +import com.gwtplatform.mvp.client.Presenter; +import com.gwtplatform.mvp.client.View; +import com.gwtplatform.mvp.client.annotations.ProxyStandard; +import com.gwtplatform.mvp.client.presenter.slots.NestedSlot; +import com.gwtplatform.mvp.client.presenter.slots.PermanentSlot; +import com.gwtplatform.mvp.client.proxy.NavigationEvent; +import com.gwtplatform.mvp.client.proxy.NavigationHandler; +import com.gwtplatform.mvp.client.proxy.Proxy; + +import gwt.material.design.client.ui.MaterialLoader; + +/** + * + * @author Giancarlo Panichi + * + */ +public class ApplicationPresenter + extends Presenter + implements NavigationHandler { + interface PresenterView extends View { +***REMOVED*** + + @ProxyStandard + interface PresenterProxy extends Proxy { +***REMOVED*** + + public static final PermanentSlot SLOT_MENU = new PermanentSlot<>(); + public static final NestedSlot SLOT_MAIN = new NestedSlot(); + + private MenuPresenter menuPresenter; + private DataMinerTesterServiceAsync service; + + @Inject + ApplicationPresenter(EventBus eventBus, PresenterView view, PresenterProxy proxy, MenuPresenter menuPresenter, + DataMinerTesterServiceAsync service) { + super(eventBus, view, proxy, RevealType.Root); + this.menuPresenter = menuPresenter; + this.service = service; + callHello(); +***REMOVED*** + + @Override + protected void onBind() { + super.onBind(); + + setInSlot(SLOT_MENU, menuPresenter); + addRegisteredHandler(NavigationEvent.getType(), this); + +***REMOVED*** + + @Override + protected void onReveal() { + super.onReveal(); +***REMOVED*** + + @Override + public void onNavigation(NavigationEvent navigationEvent) { + Window.scrollTo(0, 0); + // PlaceRequest placeRequest=navigationEvent.getRequest(); + // placeManager.revealPlace(placeRequest); + +***REMOVED*** + + private void callHello() { + /* String groupId= GCubeClientContext.getCurrentContextId(); */ + + String token = Window.Location.getParameter(Constants.TOKEN); + GWT.log("Token: " + token); + + MaterialLoader.loading(true); + service.hello(token,new AsyncCallback() { + + @Override + public void onFailure(Throwable caught) { + MaterialLoader.loading(false); + GWT.log("Error in Hello: ", caught); + +***REMOVED*** + + @Override + public void onSuccess(UserInfo result) { + GWT.log("Hello: " + result.getUsername()); + MaterialLoader.loading(false); +***REMOVED*** + +***REMOVED***); + +***REMOVED*** + +***REMOVED*** diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/ApplicationView.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/ApplicationView.java new file mode 100644 index 0000000..526256c --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/ApplicationView.java @@ -0,0 +1,34 @@ +package org.gcube.portlets.user.dataminermanagertester.client.application; + + +import javax.inject.Inject; + +import com.google.gwt.uibinder.client.UiBinder; +import com.google.gwt.uibinder.client.UiField; +import com.google.gwt.user.client.ui.HTMLPanel; +import com.google.gwt.user.client.ui.Widget; +import com.gwtplatform.mvp.client.ViewImpl; + +/** + * + * @author Giancarlo Panichi + * + */ +public class ApplicationView extends ViewImpl implements ApplicationPresenter.PresenterView { + interface Binder extends UiBinder { +***REMOVED*** + + @UiField + HTMLPanel menu; + @UiField + HTMLPanel main; + + @Inject + ApplicationView(Binder uiBinder) { + initWidget(uiBinder.createAndBindUi(this)); + bindSlot(ApplicationPresenter.SLOT_MENU, menu); + bindSlot(ApplicationPresenter.SLOT_MAIN, main); +***REMOVED*** + + +***REMOVED*** diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/ApplicationView.ui.xml b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/ApplicationView.ui.xml new file mode 100644 index 0000000..f0017f6 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/ApplicationView.ui.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/custom/SelectableTextCell.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/custom/SelectableTextCell.java new file mode 100644 index 0000000..bdef514 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/custom/SelectableTextCell.java @@ -0,0 +1,21 @@ +package org.gcube.portlets.user.dataminermanagertester.client.application.custom; + +import com.google.gwt.cell.client.AbstractCell; +import com.google.gwt.safehtml.shared.SafeHtmlBuilder; + +/** + * + * @author Giancarlo Panichi + * + * + */ +public class SelectableTextCell extends AbstractCell { + + @Override + public void render(Context context, String value, SafeHtmlBuilder sb) { + if (value != null) { + sb.appendHtmlConstant("
" + value + "
"); +***REMOVED*** +***REMOVED*** + +***REMOVED*** diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/diff/OperatorsDiffModule.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/diff/OperatorsDiffModule.java new file mode 100644 index 0000000..c491e3c --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/diff/OperatorsDiffModule.java @@ -0,0 +1,16 @@ +package org.gcube.portlets.user.dataminermanagertester.client.application.diff; + +import com.gwtplatform.mvp.client.gin.AbstractPresenterModule; + +/** + * + * @author Giancarlo Panichi + * + */ +public class OperatorsDiffModule extends AbstractPresenterModule { + @Override + protected void configure() { + bindPresenter(OperatorsDiffPresenter.class, OperatorsDiffPresenter.PresenterView.class, + OperatorsDiffView.class, OperatorsDiffPresenter.PresenterProxy.class); + ***REMOVED*** +***REMOVED*** \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/diff/OperatorsDiffPresenter.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/diff/OperatorsDiffPresenter.java new file mode 100644 index 0000000..e1dd3e4 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/diff/OperatorsDiffPresenter.java @@ -0,0 +1,88 @@ +package org.gcube.portlets.user.dataminermanagertester.client.application.diff; + +import org.gcube.portlets.user.dataminermanagertester.client.application.ApplicationPresenter; +import org.gcube.portlets.user.dataminermanagertester.client.place.NameTokens; +import org.gcube.portlets.user.dataminermanagertester.client.rpc.DataMinerTesterServiceAsync; +***REMOVED*** +import org.gcube.portlets.user.dataminermanagertester.shared.config.DMDiffConfig; + +import com.google.gwt.core.shared.GWT; +import com.google.gwt.safehtml.shared.SafeHtmlUtils; +import com.google.gwt.user.client.Window; +import com.google.gwt.user.client.rpc.AsyncCallback; +import com.google.inject.Inject; +import com.google.web.bindery.event.shared.EventBus; +import com.gwtplatform.mvp.client.HasUiHandlers; +import com.gwtplatform.mvp.client.Presenter; +import com.gwtplatform.mvp.client.View; +import com.gwtplatform.mvp.client.annotations.NameToken; +import com.gwtplatform.mvp.client.annotations.NoGatekeeper; +import com.gwtplatform.mvp.client.annotations.ProxyStandard; +import com.gwtplatform.mvp.client.proxy.ProxyPlace; + +import gwt.material.design.client.ui.MaterialLoader; + +/** + * + * @author Giancarlo Panichi + * + */ +public class OperatorsDiffPresenter + extends Presenter + implements OperatorsDiffUiHandlers { + interface PresenterView extends View, HasUiHandlers { + void setResult(String result, boolean success); + +***REMOVED*** + + @ProxyStandard + @NameToken(NameTokens.DIFF) + @NoGatekeeper + interface PresenterProxy extends ProxyPlace { +***REMOVED*** + + private DataMinerTesterServiceAsync service; + + @Inject + OperatorsDiffPresenter(EventBus eventBus, PresenterView view, PresenterProxy proxy, + DataMinerTesterServiceAsync service) { + super(eventBus, view, proxy, ApplicationPresenter.SLOT_MAIN); + this.service = service; + getView().setUiHandlers(this); + +***REMOVED*** + + @Override + public void executeDiff(DMDiffConfig operatorsDiffConfig) { + callOperatorsDiff(operatorsDiffConfig); +***REMOVED*** + + private void callOperatorsDiff(DMDiffConfig operatorsDiffConfig) { + MaterialLoader.loading(true); + service.getOperatorsDiff(getToken(), operatorsDiffConfig, new AsyncCallback() { + + @Override + public void onFailure(Throwable caught) { + GWT.log("Error in diff: ", caught); + String result = SafeHtmlUtils.htmlEscape(caught.getLocalizedMessage()); + MaterialLoader.loading(false); + getView().setResult(result, false); +***REMOVED*** + + @Override + public void onSuccess(String result) { + MaterialLoader.loading(false); + getView().setResult(result, true); +***REMOVED*** + +***REMOVED***); + +***REMOVED*** + + private String getToken() { + String token = Window.Location.getParameter(Constants.TOKEN); + GWT.log("Token: " + token); + return token; +***REMOVED*** + +***REMOVED*** \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/diff/OperatorsDiffUiHanlers.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/diff/OperatorsDiffUiHanlers.java new file mode 100644 index 0000000..49c9738 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/diff/OperatorsDiffUiHanlers.java @@ -0,0 +1,16 @@ +package org.gcube.portlets.user.dataminermanagertester.client.application.diff; + + +import org.gcube.portlets.user.dataminermanagertester.shared.config.DMDiffConfig; + +import com.gwtplatform.mvp.client.UiHandlers; + +/** + * + * @author Giancarlo Panichi + * + */ +interface OperatorsDiffUiHandlers extends UiHandlers { + + void executeDiff(DMDiffConfig operatorsDiffConfig); +***REMOVED*** diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/diff/OperatorsDiffView.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/diff/OperatorsDiffView.java new file mode 100644 index 0000000..6ffad4d --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/diff/OperatorsDiffView.java @@ -0,0 +1,118 @@ +package org.gcube.portlets.user.dataminermanagertester.client.application.diff; + +import javax.inject.Inject; + +import org.gcube.portlets.user.dataminermanagertester.shared.config.DMDiffConfig; +import org.gcube.portlets.user.dataminermanagertester.shared.config.ProtocolType; + +import com.google.gwt.dom.client.Style.Unit; +import com.google.gwt.event.dom.client.ClickEvent; +import com.google.gwt.uibinder.client.UiBinder; +import com.google.gwt.uibinder.client.UiField; +import com.google.gwt.uibinder.client.UiHandler; +import com.google.gwt.user.client.ui.Widget; +import com.gwtplatform.mvp.client.ViewWithUiHandlers; + +import gwt.material.design.client.constants.Color; +import gwt.material.design.client.constants.IconType; +import gwt.material.design.client.ui.MaterialButton; +import gwt.material.design.client.ui.MaterialListBox; +import gwt.material.design.client.ui.MaterialTextArea; +import gwt.material.design.client.ui.MaterialTextBox; +import gwt.material.design.client.ui.animate.MaterialAnimation; +import gwt.material.design.client.ui.animate.Transition; + +/** + * + * @author Giancarlo Panichi + * + */ +class OperatorsDiffView extends ViewWithUiHandlers + implements OperatorsDiffPresenter.PresenterView { + interface Binder extends UiBinder { +***REMOVED*** + + @UiField + MaterialTextBox dm1; + + @UiField + MaterialTextBox token1; + + @UiField + MaterialTextBox dm2; + + @UiField + MaterialTextBox token2; + + @UiField + MaterialListBox protocolType; + + @UiField + MaterialTextArea result; + + @UiField + MaterialButton resultIcon; + + @UiField + MaterialButton run; + + @Inject + OperatorsDiffView(Binder uiBinder) { + initWidget(uiBinder.createAndBindUi(this)); + protocolType.clear(); + for (ProtocolType tType : ProtocolType.values()) { + protocolType.add(tType.getLabel()); +***REMOVED*** + + dm1.setAllowBlank(false); + token1.setAllowBlank(false); + dm2.setAllowBlank(false); + token2.setAllowBlank(false); +***REMOVED*** + + @UiHandler("run") + void onClick(ClickEvent e) { + if (!dm1.validate() || !token1.validate() || !dm2.validate() || !token2.validate()) { + return; +***REMOVED*** + + String dm1Value = dm1.getValue(); + String token1Value = token1.getValue(); + String dm2Value = dm2.getValue(); + String token2Value = token2.getValue(); + String protocolValue = protocolType.getValue(); + + resultIcon.setVisible(false); + result.setVisible(false); + + + DMDiffConfig operatorsDiffConfig = new DMDiffConfig(dm1Value, token1Value, dm2Value, + token2Value, protocolValue); + getUiHandlers().executeDiff(operatorsDiffConfig); +***REMOVED*** + + @Override + public void setResult(String resultValue, boolean success) { + resultIcon.setVisible(true); + result.setVisible(true); + if (success) { + resultIcon.setIconType(IconType.CHECK_CIRCLE); + resultIcon.setBackgroundColor(Color.GREEN); + resultIcon.setIconFontSize(4.0, Unit.EM); +***REMOVED*** else { + resultIcon.setIconType(IconType.ERROR); + resultIcon.setBackgroundColor(Color.RED); + resultIcon.setIconFontSize(4.0, Unit.EM); +***REMOVED*** + MaterialAnimation animation = new MaterialAnimation(); + animation.setDelay(0); + animation.setDuration(1000); + animation.transition(Transition.FLIPINX); + animation.animate(resultIcon); + + result.setLength(resultValue.length()); + result.setValue(resultValue); + +***REMOVED*** + +***REMOVED*** \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/diff/OperatorsDiffView.ui.xml b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/diff/OperatorsDiffView.ui.xml new file mode 100644 index 0000000..395d527 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/diff/OperatorsDiffView.ui.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/help/HelpModule.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/help/HelpModule.java new file mode 100644 index 0000000..6676a07 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/help/HelpModule.java @@ -0,0 +1,12 @@ +package org.gcube.portlets.user.dataminermanagertester.client.application.help; + + +import com.gwtplatform.mvp.client.gin.AbstractPresenterModule; + +public class HelpModule extends AbstractPresenterModule { + @Override + protected void configure() { + bindPresenter(HelpPresenter.class, HelpPresenter.PresenterView.class, + HelpView.class, HelpPresenter.PresenterProxy.class); + ***REMOVED*** +***REMOVED*** \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/help/HelpPresenter.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/help/HelpPresenter.java new file mode 100644 index 0000000..e533215 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/help/HelpPresenter.java @@ -0,0 +1,36 @@ +package org.gcube.portlets.user.dataminermanagertester.client.application.help; + + +import org.gcube.portlets.user.dataminermanagertester.client.application.ApplicationPresenter; +import org.gcube.portlets.user.dataminermanagertester.client.place.NameTokens; + +import com.google.inject.Inject; +import com.google.web.bindery.event.shared.EventBus; +import com.gwtplatform.mvp.client.Presenter; +import com.gwtplatform.mvp.client.View; +import com.gwtplatform.mvp.client.annotations.NameToken; +import com.gwtplatform.mvp.client.annotations.ProxyStandard; +import com.gwtplatform.mvp.client.proxy.ProxyPlace; + + + +/** + * + * @author Giancarlo Panichi + * + */ +public class HelpPresenter extends Presenter { + interface PresenterView extends View { +***REMOVED*** + + @ProxyStandard + @NameToken(NameTokens.HELP) + interface PresenterProxy extends ProxyPlace { +***REMOVED*** + + @Inject + HelpPresenter(EventBus eventBus, PresenterView view, PresenterProxy proxy) { + super(eventBus, view, proxy, ApplicationPresenter.SLOT_MAIN); +***REMOVED*** + +***REMOVED*** \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/help/HelpView.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/help/HelpView.java new file mode 100644 index 0000000..5a0d693 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/help/HelpView.java @@ -0,0 +1,24 @@ +package org.gcube.portlets.user.dataminermanagertester.client.application.help; + + +import javax.inject.Inject; + +import com.google.gwt.uibinder.client.UiBinder; +import com.google.gwt.user.client.ui.Widget; +import com.gwtplatform.mvp.client.ViewImpl; + +/** + * + * @author Giancarlo Panichi + * + */ +class HelpView extends ViewImpl implements HelpPresenter.PresenterView { + interface Binder extends UiBinder { +***REMOVED*** + + @Inject + HelpView(Binder uiBinder) { + initWidget(uiBinder.createAndBindUi(this)); +***REMOVED*** + +***REMOVED*** \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/help/HelpView.ui.xml b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/help/HelpView.ui.xml new file mode 100644 index 0000000..71aaf14 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/help/HelpView.ui.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/home/HomeModule.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/home/HomeModule.java new file mode 100644 index 0000000..ace1dca --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/home/HomeModule.java @@ -0,0 +1,16 @@ +package org.gcube.portlets.user.dataminermanagertester.client.application.home; + + +import com.gwtplatform.mvp.client.gin.AbstractPresenterModule; + +/** + * + * @author Giancarlo Panichi + * + */ +public class HomeModule extends AbstractPresenterModule { + @Override + protected void configure() { + bindPresenter(HomePresenter.class, HomePresenter.PresenterView.class, HomeView.class, HomePresenter.PresenterProxy.class); +***REMOVED*** +***REMOVED*** diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/home/HomePresenter.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/home/HomePresenter.java new file mode 100644 index 0000000..9840aa1 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/home/HomePresenter.java @@ -0,0 +1,42 @@ +package org.gcube.portlets.user.dataminermanagertester.client.application.home; + + +import org.gcube.portlets.user.dataminermanagertester.client.application.ApplicationPresenter; +import org.gcube.portlets.user.dataminermanagertester.client.place.NameTokens; + +import com.google.inject.Inject; +import com.google.web.bindery.event.shared.EventBus; +import com.gwtplatform.mvp.client.HasUiHandlers; +import com.gwtplatform.mvp.client.Presenter; +import com.gwtplatform.mvp.client.View; +import com.gwtplatform.mvp.client.annotations.NameToken; +import com.gwtplatform.mvp.client.annotations.NoGatekeeper; +import com.gwtplatform.mvp.client.annotations.ProxyStandard; +import com.gwtplatform.mvp.client.proxy.ProxyPlace; + + + +/** + * + * @author Giancarlo Panichi + * + */ +public class HomePresenter extends Presenter +implements HomeUiHandlers { + interface PresenterView extends View, HasUiHandlers { +***REMOVED*** + + @ProxyStandard + @NameToken(NameTokens.HOME) + @NoGatekeeper + interface PresenterProxy extends ProxyPlace { +***REMOVED*** + + @Inject + HomePresenter(EventBus eventBus, PresenterView view, PresenterProxy proxy) { + super(eventBus, view, proxy, ApplicationPresenter.SLOT_MAIN); + + getView().setUiHandlers(this); +***REMOVED*** + +***REMOVED*** diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/home/HomeUiHandlers.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/home/HomeUiHandlers.java new file mode 100644 index 0000000..b4940b0 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/home/HomeUiHandlers.java @@ -0,0 +1,13 @@ +package org.gcube.portlets.user.dataminermanagertester.client.application.home; + + +import com.gwtplatform.mvp.client.UiHandlers; + +/** + * + * @author Giancarlo Panichi + * + */ +public interface HomeUiHandlers extends UiHandlers{ + +***REMOVED*** diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/home/HomeView.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/home/HomeView.java new file mode 100644 index 0000000..ff7d3bc --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/home/HomeView.java @@ -0,0 +1,23 @@ +package org.gcube.portlets.user.dataminermanagertester.client.application.home; + + +import javax.inject.Inject; + +import com.google.gwt.uibinder.client.UiBinder; +import com.google.gwt.user.client.ui.Widget; +import com.gwtplatform.mvp.client.ViewWithUiHandlers; + +/** + * + * @author Giancarlo Panichi + * + */ +public class HomeView extends ViewWithUiHandlers implements HomePresenter.PresenterView { + interface Binder extends UiBinder { +***REMOVED*** + + @Inject + HomeView(Binder uiBinder) { + initWidget(uiBinder.createAndBindUi(this)); +***REMOVED*** +***REMOVED*** diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/home/HomeView.ui.xml b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/home/HomeView.ui.xml new file mode 100644 index 0000000..5c57e72 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/home/HomeView.ui.xml @@ -0,0 +1,14 @@ + + + + + + + + + + diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/menu/MenuModule.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/menu/MenuModule.java new file mode 100644 index 0000000..bba1a7d --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/menu/MenuModule.java @@ -0,0 +1,16 @@ +package org.gcube.portlets.user.dataminermanagertester.client.application.menu; + + +import com.gwtplatform.mvp.client.gin.AbstractPresenterModule; + +/** + * + * @author Giancarlo Panichi + * + */ +public class MenuModule extends AbstractPresenterModule { + @Override + protected void configure() { + bindSingletonPresenterWidget(MenuPresenter.class, MenuPresenter.PresenterView.class, MenuView.class); +***REMOVED*** +***REMOVED*** \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/menu/MenuPresenter.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/menu/MenuPresenter.java new file mode 100644 index 0000000..53bc00f --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/menu/MenuPresenter.java @@ -0,0 +1,47 @@ +package org.gcube.portlets.user.dataminermanagertester.client.application.menu; + + +import org.gcube.portlets.user.dataminermanagertester.client.event.ContentPushEvent; + +import com.google.inject.Inject; +import com.google.web.bindery.event.shared.EventBus; +import com.gwtplatform.mvp.client.HasUiHandlers; +import com.gwtplatform.mvp.client.PresenterWidget; +import com.gwtplatform.mvp.client.View; +import com.gwtplatform.mvp.client.proxy.NavigationEvent; +import com.gwtplatform.mvp.client.proxy.NavigationHandler; + + +/** + * + * @author Giancarlo Panichi + * + */ +public class MenuPresenter extends PresenterWidget implements MenuUiHandlers, NavigationHandler { + interface PresenterView extends View, HasUiHandlers { + +***REMOVED*** + + @Inject + MenuPresenter(EventBus eventBus, PresenterView view) { + super(eventBus, view); + getView().setUiHandlers(this); +***REMOVED*** + + @Override + protected void onBind() { + super.onBind(); + addRegisteredHandler(NavigationEvent.getType(), this); +***REMOVED*** + + @Override + public void setContentPush() { + ContentPushEvent.fire(this); +***REMOVED*** + + @Override + public void onNavigation(NavigationEvent navigationEvent) { + +***REMOVED*** + +***REMOVED*** \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/menu/MenuUiHanlers.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/menu/MenuUiHanlers.java new file mode 100644 index 0000000..9d32a00 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/menu/MenuUiHanlers.java @@ -0,0 +1,14 @@ +package org.gcube.portlets.user.dataminermanagertester.client.application.menu; + + +import com.gwtplatform.mvp.client.UiHandlers; + +/** + * + * @author Giancarlo Panichi + * + */ +interface MenuUiHandlers extends UiHandlers { + + void setContentPush(); +***REMOVED*** diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/menu/MenuView.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/menu/MenuView.java new file mode 100644 index 0000000..cd95597 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/menu/MenuView.java @@ -0,0 +1,41 @@ +package org.gcube.portlets.user.dataminermanagertester.client.application.menu; + + +import javax.inject.Inject; + +import com.google.gwt.uibinder.client.UiBinder; +import com.google.gwt.uibinder.client.UiField; +import com.google.gwt.user.client.ui.Widget; +import com.gwtplatform.mvp.client.ViewWithUiHandlers; + +import gwt.material.design.client.ui.MaterialHeader; +import gwt.material.design.client.ui.MaterialNavBar; +import gwt.material.design.client.ui.MaterialSideNavPush; + +/** + * + * @author Giancarlo Panichi + * + */ +class MenuView extends ViewWithUiHandlers implements MenuPresenter.PresenterView { + + interface Binder extends UiBinder { +***REMOVED*** + + @UiField + MaterialHeader header; + @UiField + MaterialNavBar navBar; + @UiField + MaterialSideNavPush sideNav; + + @Inject + MenuView(Binder uiBinder) { + initWidget(uiBinder.createAndBindUi(this)); + + sideNav.addOpenedHandler(event -> getUiHandlers().setContentPush()); + sideNav.addClosedHandler(event -> getUiHandlers().setContentPush()); + +***REMOVED*** + +***REMOVED*** \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/menu/MenuView.ui.xml b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/menu/MenuView.ui.xml new file mode 100644 index 0000000..f97f184 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/menu/MenuView.ui.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/monitor/MonitorRequest.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/monitor/MonitorRequest.java new file mode 100644 index 0000000..ee44d57 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/monitor/MonitorRequest.java @@ -0,0 +1,66 @@ +package org.gcube.portlets.user.dataminermanagertester.client.application.monitor; + +import org.gcube.portlets.user.dataminermanagertester.client.application.monitor.MonitorRequestEvent.MonitorRequestEventHandler; +***REMOVED*** + +import com.google.gwt.user.client.Timer; + +/** + * + * @author Giancarlo Panichi + * + * + */ +public class MonitorRequest { + + private Timer monitor = null; + + private MonitorRequestEventHandler handler; + + public MonitorRequest() { + monitor = new Timer() { + public void run() { + executeCommand(); +***REMOVED*** +***REMOVED***; + +***REMOVED*** + + private void stopMonitor() { + if (monitor.isRunning()) { + monitor.cancel(); +***REMOVED*** + +***REMOVED*** + + private void executeCommand() { + MonitorRequestEvent event = new MonitorRequestEvent(); + handler.onMonitor(event); + +***REMOVED*** + + public void addHandler(MonitorRequestEventHandler handler) { + this.handler = handler; +***REMOVED*** + + public void start() { + startSchedule(); +***REMOVED*** + + private void startSchedule() { + // Execute the timer to expire 2 seconds in the future + monitor.schedule(Constants.CLIENT_MONITOR_PERIODMILLIS); + +***REMOVED*** + + public void repeat() { + monitor.schedule(Constants.CLIENT_MONITOR_PERIODMILLIS); +***REMOVED*** + + public void stop() { + stopMonitor(); +***REMOVED*** + + + +***REMOVED*** \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/monitor/MonitorRequestEvent.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/monitor/MonitorRequestEvent.java new file mode 100644 index 0000000..375736b --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/monitor/MonitorRequestEvent.java @@ -0,0 +1,60 @@ +package org.gcube.portlets.user.dataminermanagertester.client.application.monitor; + +import com.google.gwt.event.shared.EventHandler; +import com.google.gwt.event.shared.GwtEvent; +import com.google.gwt.event.shared.HandlerRegistration; +import com.google.gwt.event.shared.HasHandlers; + +/** + * Monitor Request Event + * + * @author Giancarlo Panichi + * + * + */ +public class MonitorRequestEvent extends + GwtEvent { + + public static Type TYPE = new Type(); + + + public interface MonitorRequestEventHandler extends EventHandler { + void onMonitor(MonitorRequestEvent event); +***REMOVED*** + + public interface HasMonitorRequestEventHandler extends HasHandlers { + public HandlerRegistration addMonitorRequestEventHandler( + MonitorRequestEventHandler handler); +***REMOVED*** + + public MonitorRequestEvent() { + +***REMOVED*** + + @Override + protected void dispatch(MonitorRequestEventHandler handler) { + handler.onMonitor(this); +***REMOVED*** + + @Override + public Type getAssociatedType() { + return TYPE; +***REMOVED*** + + public static Type getType() { + return TYPE; +***REMOVED*** + + public static void fire(HasHandlers source, MonitorRequestEvent event) { + source.fireEvent(event); +***REMOVED*** + + @Override + public String toString() { + return "MonitorRequestEvent []"; +***REMOVED*** + + + + +***REMOVED*** \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/testbatchconfig/TestBatchConfModule.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/testbatchconfig/TestBatchConfModule.java new file mode 100644 index 0000000..b7b8d86 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/testbatchconfig/TestBatchConfModule.java @@ -0,0 +1,16 @@ +package org.gcube.portlets.user.dataminermanagertester.client.application.testbatchconfig; + +import com.gwtplatform.mvp.client.gin.AbstractPresenterModule; + +/** + * + * @author Giancarlo Panichi + * + */ +public class TestBatchConfModule extends AbstractPresenterModule { + @Override + protected void configure() { + bindPresenter(TestBatchConfPresenter.class, TestBatchConfPresenter.PresenterView.class, + TestBatchConfView.class, TestBatchConfPresenter.PresenterProxy.class); + ***REMOVED*** +***REMOVED*** \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/testbatchconfig/TestBatchConfPresenter.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/testbatchconfig/TestBatchConfPresenter.java new file mode 100644 index 0000000..2266ebd --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/testbatchconfig/TestBatchConfPresenter.java @@ -0,0 +1,216 @@ +package org.gcube.portlets.user.dataminermanagertester.client.application.testbatchconfig; + +import java.util.ArrayList; +import java.util.LinkedHashMap; + +import org.gcube.data.analysis.dataminermanagercl.shared.process.ComputationStatus.Status; +import org.gcube.portlets.user.dataminermanagertester.client.application.ApplicationPresenter; +import org.gcube.portlets.user.dataminermanagertester.client.application.monitor.MonitorRequest; +import org.gcube.portlets.user.dataminermanagertester.client.application.monitor.MonitorRequestEvent; +import org.gcube.portlets.user.dataminermanagertester.client.application.monitor.MonitorRequestEvent.MonitorRequestEventHandler; +import org.gcube.portlets.user.dataminermanagertester.client.place.NameTokens; +import org.gcube.portlets.user.dataminermanagertester.client.rpc.DataMinerTesterServiceAsync; +***REMOVED*** +import org.gcube.portlets.user.dataminermanagertester.shared.config.DMBatchConfig; +import org.gcube.portlets.user.dataminermanagertester.shared.result.BatchTestResult; +import org.gcube.portlets.user.dataminermanagertester.shared.result.BatchTestRow; +import org.gcube.portlets.user.dataminermanagertester.shared.result.SingleTestResult; +import org.gcube.portlets.user.dataminermanagertester.shared.task.TaskStatus; + +import com.google.gwt.core.shared.GWT; +import com.google.gwt.safehtml.shared.SafeHtmlUtils; +import com.google.gwt.user.client.Window; +import com.google.gwt.user.client.rpc.AsyncCallback; +import com.google.inject.Inject; +import com.google.web.bindery.event.shared.EventBus; +import com.gwtplatform.mvp.client.HasUiHandlers; +import com.gwtplatform.mvp.client.Presenter; +import com.gwtplatform.mvp.client.View; +import com.gwtplatform.mvp.client.annotations.NameToken; +import com.gwtplatform.mvp.client.annotations.NoGatekeeper; +import com.gwtplatform.mvp.client.annotations.ProxyStandard; +import com.gwtplatform.mvp.client.proxy.ProxyPlace; + +import gwt.material.design.client.ui.MaterialLoader; + +/** + * + * @author Giancarlo Panichi + * + */ +public class TestBatchConfPresenter + extends Presenter + implements TestBatchConfUiHandlers { + interface PresenterView extends View, HasUiHandlers { + void setResult(String result, boolean success); + + void setupTable(); + + void setResultTable(ArrayList batchTestRows); + + void setupOptions(); + +***REMOVED*** + + @ProxyStandard + @NameToken(NameTokens.BATCH) + @NoGatekeeper + interface PresenterProxy extends ProxyPlace { +***REMOVED*** + + private DataMinerTesterServiceAsync service; + + @Inject + TestBatchConfPresenter(EventBus eventBus, PresenterView view, PresenterProxy proxy, + DataMinerTesterServiceAsync service) { + super(eventBus, view, proxy, ApplicationPresenter.SLOT_MAIN); + this.service = service; + getView().setUiHandlers(this); + +***REMOVED*** + + @Override + protected void onBind() { + super.onBind(); + getView().setupOptions(); + getView().setupTable(); +***REMOVED*** + + @Override + public void executeBatchTest(DMBatchConfig dmBatchConfig) { + if (dmBatchConfig.getTestType() != null && !dmBatchConfig.getTestType().isEmpty()) { + testBatch(dmBatchConfig); +***REMOVED*** + +***REMOVED*** + + private void testBatch(DMBatchConfig dmBatchConfig) { + MaterialLoader.loading(true); + service.startBatchTest(getToken(), dmBatchConfig, new AsyncCallback() { + + @Override + public void onFailure(Throwable caught) { + GWT.log("Error starting test: " + caught.getLocalizedMessage(), caught); + String result = SafeHtmlUtils.htmlEscape(caught.getLocalizedMessage()); + StackTraceElement[] trace = caught.getStackTrace(); + for (int i = 0; i < trace.length; i++) { + result += SafeHtmlUtils.htmlEscape(trace[i].toString()) + "\n"; +***REMOVED*** + MaterialLoader.loading(false); + getView().setResult(result, false); +***REMOVED*** + + @Override + public void onSuccess(String computationId) { + monitorBatchTest(dmBatchConfig, computationId); + +***REMOVED*** + +***REMOVED***); + +***REMOVED*** + + private void monitorBatchTest(DMBatchConfig dmBatchConfig, String computationId) { + final MonitorRequest monitorRequest = new MonitorRequest(); + MonitorRequestEventHandler handler = new MonitorRequestEventHandler() { + + @Override + public void onMonitor(MonitorRequestEvent event) { + service.monitorBatchTest(getToken(), computationId, new AsyncCallback() { + + @Override + public void onFailure(Throwable caught) { + monitorRequest.stop(); + GWT.log("Error in test: " + caught.getLocalizedMessage(), caught); + String result = SafeHtmlUtils.htmlEscape(caught.getLocalizedMessage()); + StackTraceElement[] trace = caught.getStackTrace(); + for (int i = 0; i < trace.length; i++) { + result += SafeHtmlUtils.htmlEscape(trace[i].toString()) + "\n"; + ***REMOVED*** + MaterialLoader.loading(false); + getView().setResult(result, false); +***REMOVED*** + + @Override + public void onSuccess(TaskStatus taskStatus) { + if (taskStatus != null) { + switch (taskStatus) { + case COMPLETED: + retrieveBatchTestOutput(dmBatchConfig, computationId); +***REMOVED*** + case ERROR: + monitorRequest.stop(); + GWT.log("Error test failed"); + MaterialLoader.loading(false); + getView().setResult("Error test failed", false); +***REMOVED*** + case RUNNING: + case STARTED: + default: + monitorRequest.repeat(); +***REMOVED*** + ***REMOVED*** + ***REMOVED*** else { + monitorRequest.repeat(); + ***REMOVED*** +***REMOVED*** + +***REMOVED***); +***REMOVED*** + +***REMOVED***; + + monitorRequest.addHandler(handler); + monitorRequest.start(); + +***REMOVED*** + + private void retrieveBatchTestOutput(DMBatchConfig dmBatchConfig, String computationId) { + service.retrieveOutputForBatchTest(getToken(), computationId, new AsyncCallback() { + + @Override + public void onFailure(Throwable caught) { + + GWT.log("Error retrieving test output: " + caught.getLocalizedMessage(), caught); + String result = SafeHtmlUtils.htmlEscape(caught.getLocalizedMessage()); + StackTraceElement[] trace = caught.getStackTrace(); + for (int i = 0; i < trace.length; i++) { + result += SafeHtmlUtils.htmlEscape(trace[i].toString()) + "\n"; +***REMOVED*** + MaterialLoader.loading(false); + getView().setResult(result, false); +***REMOVED*** + + @Override + public void onSuccess(BatchTestResult batchTestResult) { + MaterialLoader.loading(false); + ArrayList batchTestRows = new ArrayList<>(); + LinkedHashMap testResultMap = batchTestResult.getTestResultMap(); + for (String url : testResultMap.keySet()) { + SingleTestResult singleTestResult = testResultMap.get(url); + Status status = singleTestResult.getComputationStatus().getStatus(); + BatchTestRow batchTestRow; + if (status.compareTo(Status.COMPLETE) == 0) { + batchTestRow = new BatchTestRow(url, status, singleTestResult.getResponse()); +***REMOVED*** else { + Exception e = singleTestResult.getComputationStatus().getError(); + batchTestRow = new BatchTestRow(url, status, e.getLocalizedMessage()); +***REMOVED*** + batchTestRows.add(batchTestRow); + +***REMOVED*** + getView().setResultTable(batchTestRows); + +***REMOVED*** + +***REMOVED***); + +***REMOVED*** + + private String getToken() { + String token = Window.Location.getParameter(Constants.TOKEN); + GWT.log("Token: " + token); + return token; +***REMOVED*** + +***REMOVED*** \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/testbatchconfig/TestBatchConfUiHanlers.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/testbatchconfig/TestBatchConfUiHanlers.java new file mode 100644 index 0000000..d8088bc --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/testbatchconfig/TestBatchConfUiHanlers.java @@ -0,0 +1,16 @@ +package org.gcube.portlets.user.dataminermanagertester.client.application.testbatchconfig; + + +import org.gcube.portlets.user.dataminermanagertester.shared.config.DMBatchConfig; + +import com.gwtplatform.mvp.client.UiHandlers; + +/** + * + * @author Giancarlo Panichi + * + */ +interface TestBatchConfUiHandlers extends UiHandlers { + + void executeBatchTest(DMBatchConfig dmBatchConfig); +***REMOVED*** diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/testbatchconfig/TestBatchConfView.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/testbatchconfig/TestBatchConfView.java new file mode 100644 index 0000000..6e05c68 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/testbatchconfig/TestBatchConfView.java @@ -0,0 +1,280 @@ +package org.gcube.portlets.user.dataminermanagertester.client.application.testbatchconfig; + +import java.util.ArrayList; +import java.util.Arrays; + +import javax.inject.Inject; + +import org.gcube.data.analysis.dataminermanagercl.shared.process.ComputationStatus.Status; +import org.gcube.portlets.user.dataminermanagertester.client.application.custom.SelectableTextCell; +import org.gcube.portlets.user.dataminermanagertester.shared.config.DMBatchConfig; +import org.gcube.portlets.user.dataminermanagertester.shared.config.ProtocolType; +import org.gcube.portlets.user.dataminermanagertester.shared.config.TestType; +import org.gcube.portlets.user.dataminermanagertester.shared.result.BatchTestRow; + +import com.google.gwt.dom.client.Style.Unit; +import com.google.gwt.event.dom.client.ClickEvent; +import com.google.gwt.safehtml.shared.SafeHtmlBuilder; +import com.google.gwt.uibinder.client.UiBinder; +import com.google.gwt.uibinder.client.UiField; +import com.google.gwt.uibinder.client.UiHandler; +import com.google.gwt.user.client.ui.HTMLPanel; +import com.google.gwt.user.client.ui.Widget; +import com.gwtplatform.mvp.client.ViewWithUiHandlers; + +import gwt.material.design.client.base.constants.StyleName; +import gwt.material.design.client.base.density.DisplayDensity; +import gwt.material.design.client.constants.Color; +import gwt.material.design.client.constants.IconType; +import gwt.material.design.client.constants.TextAlign; +import gwt.material.design.client.data.SelectionType; +import gwt.material.design.client.ui.MaterialButton; +import gwt.material.design.client.ui.MaterialIcon; +import gwt.material.design.client.ui.MaterialListBox; +import gwt.material.design.client.ui.MaterialPanel; +import gwt.material.design.client.ui.MaterialTextArea; +import gwt.material.design.client.ui.MaterialTextBox; +import gwt.material.design.client.ui.animate.MaterialAnimation; +import gwt.material.design.client.ui.animate.Transition; +import gwt.material.design.client.ui.table.MaterialDataTable; +import gwt.material.design.client.ui.table.cell.TextColumn; +import gwt.material.design.client.ui.table.cell.WidgetColumn; + +/** + * + * @author Giancarlo Panichi + * + */ +class TestBatchConfView extends ViewWithUiHandlers + implements TestBatchConfPresenter.PresenterView { + interface Binder extends UiBinder { +***REMOVED*** + + @UiField + MaterialTextArea dms; + + @UiField + MaterialTextBox token; + + @UiField + MaterialListBox protocolType; + + @UiField + MaterialListBox testType; + + @UiField + MaterialTextArea result; + + @UiField + MaterialDataTable resultsTable; + + @UiField + MaterialButton resultIcon; + + @UiField + MaterialButton run; + + @Inject + TestBatchConfView(Binder uiBinder) { + initWidget(uiBinder.createAndBindUi(this)); + testType.clear(); + for (TestType tType : TestType.values()) { + testType.add(tType.getLabel()); +***REMOVED*** + protocolType.clear(); + for (ProtocolType tType : ProtocolType.values()) { + protocolType.add(tType.getLabel()); +***REMOVED*** + dms.setAllowBlank(false); + token.setAllowBlank(false); +***REMOVED*** + + @UiHandler("run") + void onClick(ClickEvent e) { + if (!dms.validate() || !token.validate()) { + return; +***REMOVED*** + + String dmsValue = dms.getValue(); + String tokenValue = token.getValue(); + String protocolValue= protocolType.getValue(); + String testTypeValue = testType.getValue(); + + resultIcon.setVisible(false); + result.setVisible(false); + resultsTable.setVisible(false); + + ArrayList dmList; + if (dmsValue.contains(",")) { + String[] urlsArray = dmsValue.split(","); + dmList = new ArrayList<>(Arrays.asList(urlsArray)); + dmList.removeAll(Arrays.asList("", null)); + +***REMOVED*** else { + dmList = new ArrayList<>(); + dmList.add(dmsValue); +***REMOVED*** + + DMBatchConfig dmBatchConfig = new DMBatchConfig(dmList, tokenValue, protocolValue, testTypeValue); + getUiHandlers().executeBatchTest(dmBatchConfig); +***REMOVED*** + + @Override + public void setResult(String resultValue, boolean success) { + resultIcon.setVisible(true); + result.setVisible(true); + if (success) { + resultIcon.setIconType(IconType.CHECK_CIRCLE); + resultIcon.setBackgroundColor(Color.GREEN); + resultIcon.setIconFontSize(4.0, Unit.EM); +***REMOVED*** else { + resultIcon.setIconType(IconType.ERROR); + resultIcon.setBackgroundColor(Color.RED); + resultIcon.setIconFontSize(4.0, Unit.EM); +***REMOVED*** + MaterialAnimation animation = new MaterialAnimation(); + animation.setDelay(0); + animation.setDuration(1000); + animation.transition(Transition.FLIPINX); + animation.animate(resultIcon); + + result.setLength(resultValue.length()); + result.setValue(resultValue); + // result.reinitialize(); + +***REMOVED*** + + @Override + public void setupTable() { + + TextColumn dataminerColumn = new TextColumn(new SelectableTextCell()) { + @Override + public String getValue(BatchTestRow batchTestRow) { + return batchTestRow.getUrl(); +***REMOVED*** + + @Override + public boolean sortable() { + return true; +***REMOVED*** +***REMOVED***; + dataminerColumn.textAlign(TextAlign.LEFT); + dataminerColumn.styleProperty(StyleName.WHITE_SPACE, "normal"); + + WidgetColumn statusColumn = new WidgetColumn() { + @Override + public MaterialPanel getValue(BatchTestRow batchTestRow) { + MaterialPanel panel = new MaterialPanel(); + panel.setStyle("unselectable='false'"); + MaterialIcon icon = null; + Status status = batchTestRow.getStatus(); + if (status == null) { + icon = new MaterialIcon(IconType.ERROR, Color.RED, Color.WHITE); +***REMOVED*** else { + switch (status) { + case COMPLETE: + icon = new MaterialIcon(IconType.CHECK_CIRCLE, Color.GREEN, Color.WHITE); + + break; + case FAILED: + icon = new MaterialIcon(IconType.ERROR, Color.RED, Color.WHITE); + break; + case ACCEPTED: + case CANCELLED: + case RUNNING: + default: + icon = new MaterialIcon(IconType.REPORT_PROBLEM, Color.YELLOW, Color.WHITE); + break; +***REMOVED*** +***REMOVED*** + panel.add(icon); + return panel; +***REMOVED*** + + @Override + public boolean sortable() { + return true; +***REMOVED*** +***REMOVED***; + statusColumn.textAlign(TextAlign.CENTER); + + WidgetColumn responseColumn = new WidgetColumn() { + @Override + public MaterialPanel getValue(BatchTestRow batchTestRow) { + MaterialPanel panel = new MaterialPanel(); + SafeHtmlBuilder sb = new SafeHtmlBuilder(); + sb.appendHtmlConstant("
"); + sb.appendEscaped(batchTestRow.getResponse()); + sb.appendHtmlConstant("
"); + HTMLPanel hpanel = new HTMLPanel(sb.toSafeHtml()); + panel.add(hpanel); + return panel; +***REMOVED*** + + @Override + public boolean sortable() { + return true; +***REMOVED*** +***REMOVED***; + responseColumn.textAlign(TextAlign.LEFT); + + resultsTable.addColumn("DataMiner", dataminerColumn); + resultsTable.addColumn("Status", statusColumn); + resultsTable.addColumn("Response", responseColumn); + +***REMOVED*** + + @Override + public void setResultTable(ArrayList batchTestRows) { + resultIcon.setVisible(true); + resultsTable.setVisible(true); + boolean success = true; + + for (BatchTestRow batchTestRow : batchTestRows) { + if (batchTestRow.getStatus()==null||batchTestRow.getStatus().compareTo(Status.COMPLETE) != 0) { + success = false; + break; +***REMOVED*** +***REMOVED*** + + if (success) { + resultIcon.setIconType(IconType.CHECK_CIRCLE); + resultIcon.setBackgroundColor(Color.GREEN); + resultIcon.setIconFontSize(4.0, Unit.EM); +***REMOVED*** else { + resultIcon.setIconType(IconType.ERROR); + resultIcon.setBackgroundColor(Color.RED); + resultIcon.setIconFontSize(4.0, Unit.EM); +***REMOVED*** + + MaterialAnimation animation = new MaterialAnimation(); + animation.setDelay(0); + animation.setDuration(1000); + animation.transition(Transition.FLIPINX); + animation.animate(resultIcon); + + resultsTable.clearRows(true); + resultsTable.getTableTitle().setText("Results"); + resultsTable.setRowData(0, batchTestRows); + resultsTable.getView().refresh(); + + reload(); +***REMOVED*** + + @Override + public void setupOptions() { + + // Selection Type + resultsTable.setSelectionType(SelectionType.NONE); + + // Density + resultsTable.setDensity(DisplayDensity.DEFAULT); + +***REMOVED*** + + public void reload() { + resultsTable.getView().setRedraw(true); + resultsTable.getView().refresh(); +***REMOVED*** + +***REMOVED*** \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/testbatchconfig/TestBatchConfView.ui.xml b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/testbatchconfig/TestBatchConfView.ui.xml new file mode 100644 index 0000000..b4773f6 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/testbatchconfig/TestBatchConfView.ui.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/testconfig/TestConfModule.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/testconfig/TestConfModule.java new file mode 100644 index 0000000..923f933 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/testconfig/TestConfModule.java @@ -0,0 +1,16 @@ +package org.gcube.portlets.user.dataminermanagertester.client.application.testconfig; + +import com.gwtplatform.mvp.client.gin.AbstractPresenterModule; + +/** + * + * @author Giancarlo Panichi + * + */ +public class TestConfModule extends AbstractPresenterModule { + @Override + protected void configure() { + bindPresenter(TestConfPresenter.class, TestConfPresenter.PresenterView.class, + TestConfView.class, TestConfPresenter.PresenterProxy.class); + ***REMOVED*** +***REMOVED*** \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/testconfig/TestConfPresenter.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/testconfig/TestConfPresenter.java new file mode 100644 index 0000000..05c318e --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/testconfig/TestConfPresenter.java @@ -0,0 +1,230 @@ +package org.gcube.portlets.user.dataminermanagertester.client.application.testconfig; + +import org.gcube.data.analysis.dataminermanagercl.shared.data.computations.ComputationId; +import org.gcube.data.analysis.dataminermanagercl.shared.process.ComputationStatus.Status; +import org.gcube.portlets.user.dataminermanagertester.client.application.ApplicationPresenter; +import org.gcube.portlets.user.dataminermanagertester.client.application.monitor.MonitorRequest; +import org.gcube.portlets.user.dataminermanagertester.client.application.monitor.MonitorRequestEvent; +import org.gcube.portlets.user.dataminermanagertester.client.application.monitor.MonitorRequestEvent.MonitorRequestEventHandler; +import org.gcube.portlets.user.dataminermanagertester.client.place.NameTokens; +import org.gcube.portlets.user.dataminermanagertester.client.rpc.DataMinerTesterServiceAsync; +***REMOVED*** +import org.gcube.portlets.user.dataminermanagertester.shared.config.DMConfig; +import org.gcube.portlets.user.dataminermanagertester.shared.config.TestType; + +import com.google.gwt.core.shared.GWT; +import com.google.gwt.safehtml.shared.SafeHtmlUtils; +import com.google.gwt.user.client.Window; +import com.google.gwt.user.client.rpc.AsyncCallback; +import com.google.inject.Inject; +import com.google.web.bindery.event.shared.EventBus; +import com.gwtplatform.mvp.client.HasUiHandlers; +import com.gwtplatform.mvp.client.Presenter; +import com.gwtplatform.mvp.client.View; +import com.gwtplatform.mvp.client.annotations.NameToken; +import com.gwtplatform.mvp.client.annotations.NoGatekeeper; +import com.gwtplatform.mvp.client.annotations.ProxyStandard; +import com.gwtplatform.mvp.client.proxy.ProxyPlace; + +import gwt.material.design.client.ui.MaterialLoader; + +/** + * + * @author Giancarlo Panichi + * + */ +public class TestConfPresenter extends Presenter + implements TestConfUiHandlers { + interface PresenterView extends View, HasUiHandlers { + void setResult(String result, boolean success); + +***REMOVED*** + + @ProxyStandard + @NameToken(NameTokens.TEST) + @NoGatekeeper + interface PresenterProxy extends ProxyPlace { +***REMOVED*** + + private DataMinerTesterServiceAsync service; + + @Inject + TestConfPresenter(EventBus eventBus, PresenterView view, PresenterProxy proxy, + DataMinerTesterServiceAsync service) { + super(eventBus, view, proxy, ApplicationPresenter.SLOT_MAIN); + this.service = service; + getView().setUiHandlers(this); + +***REMOVED*** + + @Override + public void executeTest(DMConfig dmConfig) { + if (dmConfig.getTestType() != null && !dmConfig.getTestType().isEmpty()) { + TestType testType = TestType.getTypeFromId(dmConfig.getTestType()); + switch (testType) { + case Capabilities: + callGetCapabilities(dmConfig); + break; + case FeedForwardAnn: + case BionymLocal: + case CMSY2: + case CSquareColumnCreator: + case DBScan: + case ListDBName: + case RasterDataPublisher: + case WebAppPublisher: + case XYExtractor: + case OpenMeshRecostructorGPU: + case GenericCharts: + case PolygonsToMap: + testSimple(dmConfig); + break; + default: + break; + +***REMOVED*** +***REMOVED*** + +***REMOVED*** + + private void callGetCapabilities(DMConfig dmConfig) { + MaterialLoader.loading(true); + service.getCapabilities(getToken(), dmConfig, new AsyncCallback() { + + @Override + public void onFailure(Throwable caught) { + GWT.log("Error get Capabilities: ", caught); + String result = SafeHtmlUtils.htmlEscape(caught.getLocalizedMessage()); + MaterialLoader.loading(false); + getView().setResult(result, false); +***REMOVED*** + + @Override + public void onSuccess(String result) { + MaterialLoader.loading(false); + getView().setResult(result, true); +***REMOVED*** + +***REMOVED***); + +***REMOVED*** + + private void testSimple(DMConfig dmConfig) { + MaterialLoader.loading(true); + service.startSimpleTest(getToken(), dmConfig, new AsyncCallback() { + + @Override + public void onFailure(Throwable caught) { + GWT.log("Error starting test: " + caught.getLocalizedMessage(), caught); + String result = SafeHtmlUtils.htmlEscape(caught.getLocalizedMessage()); + StackTraceElement[] trace = caught.getStackTrace(); + for (int i = 0; i < trace.length; i++) { + result += SafeHtmlUtils.htmlEscape(trace[i].toString()) + "\n"; +***REMOVED*** + MaterialLoader.loading(false); + getView().setResult(result, false); +***REMOVED*** + + @Override + public void onSuccess(ComputationId computationId) { + monitorSimpleTest(dmConfig, computationId); + +***REMOVED*** + +***REMOVED***); + +***REMOVED*** + + private void monitorSimpleTest(DMConfig dmConfig, ComputationId computationId) { + final MonitorRequest monitorRequest = new MonitorRequest(); + MonitorRequestEventHandler handler = new MonitorRequestEventHandler() { + + @Override + public void onMonitor(MonitorRequestEvent event) { + service.monitorSimpleTest(getToken(), dmConfig, computationId, new AsyncCallback() { + + @Override + public void onFailure(Throwable caught) { + monitorRequest.stop(); + GWT.log("Error in test: " + caught.getLocalizedMessage(), caught); + String result = SafeHtmlUtils.htmlEscape(caught.getLocalizedMessage()); + StackTraceElement[] trace = caught.getStackTrace(); + for (int i = 0; i < trace.length; i++) { + result += SafeHtmlUtils.htmlEscape(trace[i].toString()) + "\n"; + ***REMOVED*** + MaterialLoader.loading(false); + getView().setResult(result, false); +***REMOVED*** + + @Override + public void onSuccess(Status status) { + if (status != null) { + switch (status) { + case COMPLETE: + retrieveSimpleTestOutput(dmConfig, computationId); +***REMOVED*** + case CANCELLED: + case FAILED: + monitorRequest.stop(); + GWT.log("Error test failed"); + MaterialLoader.loading(false); + getView().setResult("Error test failed", false); +***REMOVED*** + case RUNNING: + case ACCEPTED: + default: + monitorRequest.repeat(); +***REMOVED*** + + ***REMOVED*** + ***REMOVED*** else { + monitorRequest.repeat(); + + ***REMOVED*** + +***REMOVED*** + +***REMOVED***); +***REMOVED*** + +***REMOVED***; + + monitorRequest.addHandler(handler); + monitorRequest.start(); + +***REMOVED*** + + private void retrieveSimpleTestOutput(DMConfig dmConfig, ComputationId computationId) { + service.retrieveOutputForSimpleTest(getToken(), dmConfig, computationId, new AsyncCallback() { + + @Override + public void onFailure(Throwable caught) { + + GWT.log("Error retrieving test output: " + caught.getLocalizedMessage(), caught); + String result = SafeHtmlUtils.htmlEscape(caught.getLocalizedMessage()); + StackTraceElement[] trace = caught.getStackTrace(); + for (int i = 0; i < trace.length; i++) { + result += SafeHtmlUtils.htmlEscape(trace[i].toString()) + "\n"; +***REMOVED*** + MaterialLoader.loading(false); + getView().setResult(result, false); +***REMOVED*** + + @Override + public void onSuccess(String result) { + MaterialLoader.loading(false); + getView().setResult(result, true); + +***REMOVED*** + +***REMOVED***); + +***REMOVED*** + + private String getToken() { + String token = Window.Location.getParameter(Constants.TOKEN); + GWT.log("Token: " + token); + return token; +***REMOVED*** + +***REMOVED*** \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/testconfig/TestConfUiHanlers.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/testconfig/TestConfUiHanlers.java new file mode 100644 index 0000000..fa3e9a8 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/testconfig/TestConfUiHanlers.java @@ -0,0 +1,16 @@ +package org.gcube.portlets.user.dataminermanagertester.client.application.testconfig; + + +import org.gcube.portlets.user.dataminermanagertester.shared.config.DMConfig; + +import com.gwtplatform.mvp.client.UiHandlers; + +/** + * + * @author Giancarlo Panichi + * + */ +interface TestConfUiHandlers extends UiHandlers { + + void executeTest(DMConfig dmConfig); +***REMOVED*** diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/testconfig/TestConfView.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/testconfig/TestConfView.java new file mode 100644 index 0000000..c76d2d3 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/testconfig/TestConfView.java @@ -0,0 +1,114 @@ +package org.gcube.portlets.user.dataminermanagertester.client.application.testconfig; + +import javax.inject.Inject; + +import org.gcube.portlets.user.dataminermanagertester.shared.config.DMConfig; +import org.gcube.portlets.user.dataminermanagertester.shared.config.ProtocolType; +import org.gcube.portlets.user.dataminermanagertester.shared.config.TestType; + +import com.google.gwt.dom.client.Style.Unit; +import com.google.gwt.event.dom.client.ClickEvent; +import com.google.gwt.uibinder.client.UiBinder; +import com.google.gwt.uibinder.client.UiField; +import com.google.gwt.uibinder.client.UiHandler; +import com.google.gwt.user.client.ui.Widget; +import com.gwtplatform.mvp.client.ViewWithUiHandlers; + +import gwt.material.design.client.constants.Color; +import gwt.material.design.client.constants.IconType; +import gwt.material.design.client.ui.MaterialButton; +import gwt.material.design.client.ui.MaterialListBox; +import gwt.material.design.client.ui.MaterialTextArea; +import gwt.material.design.client.ui.MaterialTextBox; +import gwt.material.design.client.ui.animate.MaterialAnimation; +import gwt.material.design.client.ui.animate.Transition; + +/** + * + * @author Giancarlo Panichi + * + */ +class TestConfView extends ViewWithUiHandlers implements TestConfPresenter.PresenterView { + interface Binder extends UiBinder { +***REMOVED*** + + @UiField + MaterialTextBox dm; + + @UiField + MaterialTextBox token; + + @UiField + MaterialListBox protocolType; + + @UiField + MaterialListBox testType; + + @UiField + MaterialTextArea result; + + @UiField + MaterialButton resultIcon; + + @UiField + MaterialButton run; + + @Inject + TestConfView(Binder uiBinder) { + initWidget(uiBinder.createAndBindUi(this)); + testType.clear(); + for (TestType tType : TestType.values()) { + testType.add(tType.getLabel()); +***REMOVED*** + protocolType.clear(); + for (ProtocolType tType : ProtocolType.values()) { + protocolType.add(tType.getLabel()); +***REMOVED*** + dm.setAllowBlank(false); + token.setAllowBlank(false); +***REMOVED*** + + @UiHandler("run") + void onClick(ClickEvent e) { + if (!dm.validate() || !token.validate()) { + return; +***REMOVED*** + + String dmValue = dm.getValue(); + String tokenValue = token.getValue(); + String protocolValue = protocolType.getValue(); + String testTypeValue = testType.getValue(); + + resultIcon.setVisible(false); + result.setVisible(false); + + DMConfig dmConfig = new DMConfig(dmValue, tokenValue, protocolValue,testTypeValue); + getUiHandlers().executeTest(dmConfig); +***REMOVED*** + + @Override + public void setResult(String resultValue, boolean success) { + resultIcon.setVisible(true); + result.setVisible(true); + if (success) { + resultIcon.setIconType(IconType.CHECK_CIRCLE); + resultIcon.setBackgroundColor(Color.GREEN); + resultIcon.setIconFontSize(4.0, Unit.EM); +***REMOVED*** else { + resultIcon.setIconType(IconType.ERROR); + resultIcon.setBackgroundColor(Color.RED); + resultIcon.setIconFontSize(4.0, Unit.EM); +***REMOVED*** + MaterialAnimation animation = new MaterialAnimation(); + animation.setDelay(0); + animation.setDuration(1000); + animation.transition(Transition.FLIPINX); + animation.animate(resultIcon); + + result.setLength(resultValue.length()); + result.setValue(resultValue); + // result.reinitialize(); + +***REMOVED*** + +***REMOVED*** \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/testconfig/TestConfView.ui.xml b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/testconfig/TestConfView.ui.xml new file mode 100644 index 0000000..cab1cf8 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/application/testconfig/TestConfView.ui.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/event/ContentPushEvent.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/event/ContentPushEvent.java new file mode 100644 index 0000000..e33bb55 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/event/ContentPushEvent.java @@ -0,0 +1,37 @@ +package org.gcube.portlets.user.dataminermanagertester.client.event; + + +import com.google.gwt.event.shared.EventHandler; +import com.google.gwt.event.shared.GwtEvent; +import com.google.gwt.event.shared.HasHandlers; + +/** + * + * @author Giancarlo Panichi + * + */ +public class ContentPushEvent extends GwtEvent { + + public interface ContentPushHandler extends EventHandler { + void onContentPush(ContentPushEvent event); + ***REMOVED*** + + public static final Type TYPE = new Type<>(); + + + public ContentPushEvent() {***REMOVED*** + + public static void fire(HasHandlers source) { + source.fireEvent(new ContentPushEvent()); + ***REMOVED*** + + @Override + public Type getAssociatedType() { + return TYPE; + ***REMOVED*** + + @Override + protected void dispatch(ContentPushHandler handler) { + handler.onContentPush(this); + ***REMOVED*** +***REMOVED*** \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/gin/CustomRootPresenter.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/gin/CustomRootPresenter.java new file mode 100644 index 0000000..2c5beb7 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/gin/CustomRootPresenter.java @@ -0,0 +1,42 @@ +package org.gcube.portlets.user.dataminermanagertester.client.gin; + + +import com.google.gwt.core.client.GWT; +import com.google.gwt.user.client.ui.IsWidget; +import com.google.gwt.user.client.ui.RootPanel; +import com.google.inject.Inject; +import com.google.web.bindery.event.shared.EventBus; +import com.gwtplatform.mvp.client.RootPresenter; + +/** + * + * @author Giancarlo Panichi + * + * + */ +public class CustomRootPresenter extends RootPresenter { + + private static final String SM_DIV = "contentDiv"; + + public static final class CustomRootView extends RootView { + @Override + public void setInSlot(Object slot, IsWidget widget) { + + RootPanel root = RootPanel.get(SM_DIV); + + if (root != null) { + GWT.log("Add Panel in Div " + SM_DIV); + root.add(widget); +***REMOVED*** + GWT.log("Add Panel in Root"); + RootPanel.get().add(widget); +***REMOVED*** + + ***REMOVED*** + ***REMOVED*** + + @Inject + CustomRootPresenter(EventBus eventBus, CustomRootView myRootView) { + super( eventBus, myRootView ); + ***REMOVED*** +***REMOVED*** \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/gin/DataMinerManagerTesterClientModule.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/gin/DataMinerManagerTesterClientModule.java new file mode 100644 index 0000000..a30e453 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/gin/DataMinerManagerTesterClientModule.java @@ -0,0 +1,41 @@ +package org.gcube.portlets.user.dataminermanagertester.client.gin; + +import com.gwtplatform.mvp.client.gin.AbstractPresenterModule; +import com.gwtplatform.mvp.client.gin.DefaultModule; + +import org.gcube.portlets.user.dataminermanagertester.client.application.ApplicationModule; +import org.gcube.portlets.user.dataminermanagertester.client.place.NameTokens; +import org.gcube.portlets.user.dataminermanagertester.client.resources.ResourceLoader; +import org.gcube.portlets.user.dataminermanagertester.client.rpc.DataMinerTesterServiceAsync; + +import com.google.inject.Singleton; +import com.gwtplatform.mvp.client.RootPresenter; +import com.gwtplatform.mvp.client.annotations.DefaultPlace; +import com.gwtplatform.mvp.client.annotations.ErrorPlace; +import com.gwtplatform.mvp.client.annotations.UnauthorizedPlace; + +/** + * + * @author Giancarlo Panichi + * + * + */ +public class DataMinerManagerTesterClientModule extends AbstractPresenterModule { + + @Override + protected void configure() { + bind(ResourceLoader.class).asEagerSingleton(); + bind(DataMinerTesterServiceAsync.class).in(Singleton.class); + bind(RootPresenter.class).to(CustomRootPresenter.class).asEagerSingleton(); + + install(new DefaultModule()); + install(new ApplicationModule()); + + + // DefaultPlaceManager Places + bindConstant().annotatedWith(DefaultPlace.class).to(NameTokens.TEST); + bindConstant().annotatedWith(ErrorPlace.class).to(NameTokens.TEST); + bindConstant().annotatedWith(UnauthorizedPlace.class).to(NameTokens.TEST); +***REMOVED*** + +***REMOVED*** \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/place/NameTokens.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/place/NameTokens.java new file mode 100644 index 0000000..691f387 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/place/NameTokens.java @@ -0,0 +1,36 @@ +package org.gcube.portlets.user.dataminermanagertester.client.place; + + +/** + * + * @author Giancarlo Panichi + * + */ +public class NameTokens { + public static final String HOME = "home"; + public static final String HELP = "help"; + public static final String TEST = "test"; + public static final String BATCH = "batch"; + public static final String DIFF = "diff"; + + public static String getHome() { + return HOME; +***REMOVED*** + + public static String getHelp() { + return HELP; +***REMOVED*** + + public static String getTest() { + return TEST; +***REMOVED*** + + public static String getDiff() { + return DIFF; +***REMOVED*** + + public static String getBatch() { + return BATCH; +***REMOVED*** + +***REMOVED*** diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/place/TokenParameters.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/place/TokenParameters.java new file mode 100644 index 0000000..aab5051 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/place/TokenParameters.java @@ -0,0 +1,15 @@ +package org.gcube.portlets.user.dataminermanagertester.client.place; + + +/** + * + * @author Giancarlo Panichi + * + */ +public class TokenParameters { + public static final String ID = "id"; + + public static String getId() { + return ID; +***REMOVED*** +***REMOVED*** \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/resources/AppResources.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/resources/AppResources.java new file mode 100644 index 0000000..41f0b43 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/resources/AppResources.java @@ -0,0 +1,35 @@ +package org.gcube.portlets.user.dataminermanagertester.client.resources; + +import com.google.gwt.resources.client.ClientBundle; +import com.google.gwt.resources.client.CssResource; + +/** + * + * @author Giancarlo Panichi + * + * + */ +public interface AppResources extends ClientBundle { + interface Normalize extends CssResource { + ***REMOVED*** + + interface Style extends CssResource { + String sideNavPBg(); + ***REMOVED*** + + interface PageTable extends CssResource { + + ***REMOVED*** + + + + @Source("css/normalize.gss") + Normalize normalize(); + + @Source("css/style.gss") + Style style(); + + @Source("css/pageTable.gss") + PageTable pageTable(); + +***REMOVED*** diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/resources/ResourceLoader.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/resources/ResourceLoader.java new file mode 100644 index 0000000..0d27104 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/resources/ResourceLoader.java @@ -0,0 +1,20 @@ +package org.gcube.portlets.user.dataminermanagertester.client.resources; + + +import javax.inject.Inject; + +/** + * + * @author Giancarlo Panichi + * + * + */ +public class ResourceLoader { + @Inject + ResourceLoader(AppResources appResources) { + appResources.normalize().ensureInjected(); + appResources.style().ensureInjected(); + appResources.pageTable().ensureInjected(); + + ***REMOVED*** +***REMOVED*** diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/resources/css/normalize.gss b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/resources/css/normalize.gss new file mode 100644 index 0000000..3a2c7e6 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/resources/css/normalize.gss @@ -0,0 +1,409 @@ +/*! normalize.css v3.0.1 | MIT License | git.io/normalize */ + +/** + * 1. Set default font family to sans-serif. + * 2. Prevent iOS text size adjust after orientation change, without disabling + * user zoom. + */ + +html { + font-family: sans-serif; /* 1 */ + -ms-text-size-adjust: 100%; /* 2 */ + -webkit-text-size-adjust: 100%; /* 2 */ +***REMOVED*** + +/** + * Remove default margin. + */ + +body { + margin: 0; +***REMOVED*** + +/* HTML5 display definitions +========================================================================== */ + +/** + * Correct `block` display not defined for any HTML5 element in IE 8/9. + * Correct `block` display not defined for `details` or `summary` in IE 10/11 and Firefox. + * Correct `block` display not defined for `main` in IE 11. + */ + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +nav, +section, +summary { + display: block; +***REMOVED*** + +/** + * 1. Correct `inline-block` display not defined in IE 8/9. + * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. + */ + +audio, +canvas, +progress, +video { + display: inline-block; /* 1 */ + vertical-align: baseline; /* 2 */ +***REMOVED*** + +/** + * Address `[hidden]` styling not present in IE 8/9/10. + * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. + */ + +[hidden], +template { + display: none; +***REMOVED*** + +/* Links +========================================================================== */ + +/** + * Remove the gray background color from active links in IE 10. + */ + +a { + background: transparent; +***REMOVED*** + +/** + * Improve readability when focused and also mouse hovered in all browsers. + */ + +a:active, +a:hover, +button:active, +button:hover { + outline: 0; +***REMOVED*** + +/* Text-level semantics +========================================================================== */ + +/** + * Address styling not present in IE 8/9/10/11, Safari, and Chrome. + */ + +abbr[title] { + border-bottom: 1px dotted; +***REMOVED*** + +/** + * Address style set to `bolder` in Firefox 4+, Safari, and Chrome. + */ + +b, +strong { + font-weight: bold; +***REMOVED*** + +/** + * Address styling not present in Safari and Chrome. + */ + +dfn { + font-style: italic; +***REMOVED*** + +/** + * Address variable `h1` font-size and margin within `section` and `article` + * contexts in Firefox 4+, Safari, and Chrome. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +***REMOVED*** + +/** + * Address styling not present in IE 8/9. + */ + +mark { + background: #ff0; + color: #000; +***REMOVED*** + +/** + * Address inconsistent and variable font size in all browsers. + */ + +small { + font-size: 80%; +***REMOVED*** + +/** + * Prevent `sub` and `sup` affecting `line-height` in all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +***REMOVED*** + +sup { + top: -0.5em; +***REMOVED*** + +sub { + bottom: -0.25em; +***REMOVED*** + +/* Embedded content +========================================================================== */ + +/** + * Remove border when inside `a` element in IE 8/9/10. + */ + +img { + border: 0; +***REMOVED*** + +/* Grouping content +========================================================================== */ + +/** + * Address margin not present in IE 8/9 and Safari. + */ + +figure { + margin: 1em 40px; +***REMOVED*** + +/** + * Address differences between Firefox and other browsers. + */ + +hr { + -moz-box-sizing: content-box; + box-sizing: content-box; + height: 0; +***REMOVED*** + +/** + * Contain overflow in all browsers. + */ + +pre { + overflow: auto; +***REMOVED*** + +/** + * Address odd `em`-unit font size rendering in all browsers. + */ + +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; +***REMOVED*** + +/* Forms +========================================================================== */ + +/** + * Known limitation: by default, Chrome and Safari on OS X allow very limited + * styling of `select`, unless a `border` property is set. + */ + +/** + * 1. Correct color not being inherited. + * Known issue: affects color of disabled elements. + * 2. Correct font properties not being inherited. + * 3. Address margins set differently in Firefox 4+, Safari, and Chrome. + */ + +button, +input, +optgroup, +select, +textarea { + color: inherit; /* 1 */ + font: inherit; /* 2 */ + margin: 0; /* 3 */ +***REMOVED*** + +/** + * Address `overflow` set to `hidden` in IE 8/9/10/11. + */ + +button { + overflow: visible; +***REMOVED*** + +/** + * Address inconsistent `text-transform` inheritance for `button` and `select`. + * All other form control elements do not inherit `text-transform` values. + * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. + * Correct `select` style inheritance in Firefox. + */ + +button, +select { + text-transform: none; +***REMOVED*** + +/** + * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` + * and `video` controls. + * 2. Correct inability to style clickable `input` types in iOS. + * 3. Improve usability and consistency of cursor style between image-type + * `input` and others. + */ + +button, +html input[type="button"], /* 1 */ +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; /* 2 */ + cursor: pointer; /* 3 */ +***REMOVED*** + +/** + * Re-set default cursor for disabled elements. + */ + +button[disabled], +html input[disabled] { + cursor: default; +***REMOVED*** + +/** + * Remove inner padding and border in Firefox 4+. + */ + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +***REMOVED*** + +/** + * Address Firefox 4+ setting `line-height` on `input` using `!important` in + * the UA stylesheet. + */ + +input { + line-height: normal; +***REMOVED*** + +/** + * It's recommended that you don't attempt to style these elements. + * Firefox's implementation doesn't respect box-sizing, padding, or width. + * + * 1. Address box sizing set to `content-box` in IE 8/9/10. + * 2. Remove excess padding in IE 8/9/10. + */ + +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +***REMOVED*** + +/** + * Fix the cursor style for Chrome's increment/decrement buttons. For certain + * `font-size` values of the `input`, it causes the cursor style of the + * decrement button to change from `default` to `text`. + */ + +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; +***REMOVED*** + +/** + * 1. Address `appearance` set to `searchfield` in Safari and Chrome. + * 2. Address `box-sizing` set to `border-box` in Safari and Chrome + * (include `-moz` to future-proof). + */ + +input[type="search"] { + -webkit-appearance: textfield; /* 1 */ + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; /* 2 */ + box-sizing: content-box; +***REMOVED*** + +/** + * Remove inner padding and search cancel button in Safari and Chrome on OS X. + * Safari (but not Chrome) clips the cancel button when the search input has + * padding (and `textfield` appearance). + */ + +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +***REMOVED*** + +/** + * Define consistent border, margin, and padding. + */ + +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +***REMOVED*** + +/** + * 1. Correct `color` not being inherited in IE 8/9/10/11. + * 2. Remove padding so people aren't caught out if they zero out fieldsets. + */ + +legend { + border: 0; /* 1 */ + padding: 0; /* 2 */ +***REMOVED*** + +/** + * Remove default vertical scrollbar in IE 8/9/10/11. + */ + +textarea { + overflow: auto; +***REMOVED*** + +/** + * Don't inherit the `font-weight` (applied by a rule above). + * NOTE: the default cannot safely be changed in Chrome and Safari on OS X. + */ + +optgroup { + font-weight: bold; +***REMOVED*** + +/* Tables +========================================================================== */ + +/** + * Remove most spacing between table cells. + */ + +table { + border-collapse: collapse; + border-spacing: 0; +***REMOVED*** + +td, +th { + padding: 0; +***REMOVED*** diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/resources/css/pageTable.gss b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/resources/css/pageTable.gss new file mode 100644 index 0000000..e105dda --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/resources/css/pageTable.gss @@ -0,0 +1,28 @@ +/************ Page Table ************/ +@external data-row, tool-panel, top-panel; + + +/** Top Panel **/ + #pTable .top-panel { +  background-color: white; +  color: black; + ***REMOVED*** + /** Tool Panel icons **/ + #pTable .top-panel .tool-panel i { +  color: #e91e63; + ***REMOVED*** + /** Hovering rows **/ + #pTable table tbody tr.data-row:hover { +  background: rgba(33, 150, 243, 0.27); +  color: #3f3f3f; + ***REMOVED*** + /** Columns **/ + #pTable table tbody td:nth-child(3) { +  background: #2196f3 !important; +  color: #fff; +  border-bottom: 2px solid #1976d2; + ***REMOVED*** + /** Table Headers **/ + #pTable table thead tr th { +  color: #1976d2; + ***REMOVED*** \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/resources/css/style.gss b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/resources/css/style.gss new file mode 100644 index 0000000..a5506c2 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/resources/css/style.gss @@ -0,0 +1,5 @@ +.sideNavPBg { + /* + gwt-sprite: 'sideNavProfileBackground'; + background-repeat: repeat; */ +***REMOVED*** diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/rpc/DataMinerTesterService.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/rpc/DataMinerTesterService.java new file mode 100644 index 0000000..b62a677 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/rpc/DataMinerTesterService.java @@ -0,0 +1,40 @@ +package org.gcube.portlets.user.dataminermanagertester.client.rpc; + +import org.gcube.data.analysis.dataminermanagercl.shared.data.computations.ComputationId; +import org.gcube.data.analysis.dataminermanagercl.shared.process.ComputationStatus.Status; +import org.gcube.portlets.user.dataminermanagertester.shared.config.DMBatchConfig; +import org.gcube.portlets.user.dataminermanagertester.shared.config.DMConfig; +import org.gcube.portlets.user.dataminermanagertester.shared.config.DMDiffConfig; +***REMOVED*** +import org.gcube.portlets.user.dataminermanagertester.shared.result.BatchTestResult; +import org.gcube.portlets.user.dataminermanagertester.shared.session.UserInfo; +import org.gcube.portlets.user.dataminermanagertester.shared.task.TaskStatus; + +import com.google.gwt.user.client.rpc.RemoteService; +import com.google.gwt.user.client.rpc.RemoteServiceRelativePath; + +/** + * The client side stub for the RPC service. + */ +@RemoteServiceRelativePath("dmtester") +public interface DataMinerTesterService extends RemoteService { + + public UserInfo hello(String token) throws ServiceException; + + public String getCapabilities(String token,DMConfig dmConfig) throws ServiceException; + + public String getOperatorsDiff(String token, DMDiffConfig operatorsDiffConfig) throws ServiceException; + + public ComputationId startSimpleTest(String token, DMConfig dmConfig) throws ServiceException; + + public String retrieveOutputForSimpleTest(String token, DMConfig dmConfig, ComputationId computationId) throws ServiceException; + + public Status monitorSimpleTest(String token, DMConfig dmConfig, ComputationId computationId) throws ServiceException; + + public String startBatchTest(String token, DMBatchConfig dmBatchConfig) throws ServiceException; + + public TaskStatus monitorBatchTest(String token, String operationId) throws ServiceException; + + public BatchTestResult retrieveOutputForBatchTest(String token, String operationId) throws ServiceException; + +***REMOVED*** diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/rpc/DataMinerTesterServiceAsync.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/rpc/DataMinerTesterServiceAsync.java new file mode 100644 index 0000000..14f3951 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/client/rpc/DataMinerTesterServiceAsync.java @@ -0,0 +1,46 @@ +package org.gcube.portlets.user.dataminermanagertester.client.rpc; + +import org.gcube.data.analysis.dataminermanagercl.shared.data.computations.ComputationId; +import org.gcube.data.analysis.dataminermanagercl.shared.process.ComputationStatus.Status; +import org.gcube.portlets.user.dataminermanagertester.shared.config.DMBatchConfig; +import org.gcube.portlets.user.dataminermanagertester.shared.config.DMConfig; +import org.gcube.portlets.user.dataminermanagertester.shared.config.DMDiffConfig; +import org.gcube.portlets.user.dataminermanagertester.shared.result.BatchTestResult; +import org.gcube.portlets.user.dataminermanagertester.shared.session.UserInfo; +import org.gcube.portlets.user.dataminermanagertester.shared.task.TaskStatus; + +import com.google.gwt.user.client.rpc.AsyncCallback; + +/** + * + * @author Giancarlo Panichi + * + * + */ +public interface DataMinerTesterServiceAsync { + + // public static DataMinerTesterServiceAsync INSTANCE = + // (DataMinerTesterServiceAsync) GWT + // .create(DataMinerTesterService.class); + + void hello(String token, AsyncCallback callback); + + void getCapabilities(String token, DMConfig dmConfig, AsyncCallback callback); + + void getOperatorsDiff(String token, DMDiffConfig operatorsDiffConfig, AsyncCallback callback); + + void startSimpleTest(String token, DMConfig dmConfig, AsyncCallback callback); + + void retrieveOutputForSimpleTest(String token, DMConfig dmConfig, ComputationId computationId, + AsyncCallback callback); + + void monitorSimpleTest(String token, DMConfig dmConfig, ComputationId computationId, + AsyncCallback callback); + + void startBatchTest(String token, DMBatchConfig dmBatchConfig, AsyncCallback callback); + + void monitorBatchTest(String token, String operationId, AsyncCallback callback); + + void retrieveOutputForBatchTest(String token, String operationId, AsyncCallback callback); + +***REMOVED*** diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/dataminermanagertester.gwt.xml b/src/main/java/org/gcube/portlets/user/dataminermanagertester/dataminermanagertester.gwt.xml new file mode 100644 index 0000000..6444323 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/dataminermanagertester.gwt.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/portlet/DataMinerManagerTester.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/portlet/DataMinerManagerTester.java new file mode 100644 index 0000000..7df2596 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/portlet/DataMinerManagerTester.java @@ -0,0 +1,56 @@ +/** + * + */ +package org.gcube.portlets.user.dataminermanagertester.portlet; + +import java.io.IOException; + +import javax.portlet.GenericPortlet; +import javax.portlet.PortletException; +import javax.portlet.PortletRequestDispatcher; +import javax.portlet.RenderRequest; +import javax.portlet.RenderResponse; + +import org.gcube.common.portal.PortalContext; +***REMOVED*** +***REMOVED*** + +/** + * + * @author Giancarlo Panichi + * + * + */ +public class DataMinerManagerTester extends GenericPortlet { + + private final Logger logger= LoggerFactory.getLogger(GenericPortlet.class); + + +***REMOVED*** +***REMOVED***JSP folder name +***REMOVED*** + public static final String JSP_FOLDER = "/WEB-INF/jsp/"; + +***REMOVED*** +***REMOVED*** +***REMOVED*** + public static final String VIEW_JSP = JSP_FOLDER + "DataMinerManagerTester_view.jsp"; + +***REMOVED*** +***REMOVED***@param request . +***REMOVED***@param response . +***REMOVED***@throws IOException . +***REMOVED***@throws PortletException . +***REMOVED*** + public void doView(RenderRequest request, RenderResponse response) throws PortletException, IOException { + + logger.trace("DataMinerManagerTester loading from JSP: "+VIEW_JSP); + logger.trace("Setting user in session using PortalContext"); + PortalContext.setUserInSession(request); + + + logger.trace("passing to the render"); + PortletRequestDispatcher rd = getPortletContext().getRequestDispatcher(VIEW_JSP); + rd.include(request,response); +***REMOVED*** +***REMOVED*** diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/DataMinerTesterBatchDaemon.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/DataMinerTesterBatchDaemon.java new file mode 100644 index 0000000..32f93a0 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/DataMinerTesterBatchDaemon.java @@ -0,0 +1,150 @@ +package org.gcube.portlets.user.dataminermanagertester.server; + +import java.util.ArrayList; +import java.util.GregorianCalendar; +import java.util.Queue; +import java.util.Timer; +import java.util.TimerTask; +import java.util.concurrent.ConcurrentLinkedQueue; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; + +import javax.servlet.ServletContextEvent; + +import org.gcube.portlets.user.dataminermanagertester.server.task.TaskInProgress; +import org.gcube.portlets.user.dataminermanagertester.server.task.TaskRequest; +***REMOVED*** +import org.gcube.portlets.user.dataminermanagertester.shared.task.TaskStatus; +***REMOVED*** +***REMOVED*** + +/** + * + * @author Giancarlo Panichi + * + * + */ +public class DataMinerTesterBatchDaemon implements Runnable { + + private static Logger logger = LoggerFactory.getLogger(DataMinerTesterBatchDaemon.class); + + private long timeout = Constants.SERVICE_CLIENT_TIMEOUT_DEFAULT_MILLIS; + private long timeoutUpdate = Constants.SERVICE_CLIENT_THREAD_POOL_TIME_OUT_UPDATE_MILLIS; + private ServletContextEvent sce; + private volatile boolean running = true; + private ArrayList tasks; + private Timer threadPoolTimeoutUpdateTimer = null; + + public DataMinerTesterBatchDaemon(ServletContextEvent sce) { + this.sce = sce; + tasks = new ArrayList<>(); + initTimeout(); +***REMOVED*** + + private void initTimeout() { + sce.getServletContext().setAttribute(SessionConstants.DATAMINERTESTER_MONITOR_TIME_OUT_PERIODMILLIS, + Long.valueOf(timeout)); + retrieveTimeOut(); + startThreadPoolTimeoutUpdateTimer(); +***REMOVED*** + + public void terminate() { + running = false; + if (threadPoolTimeoutUpdateTimer != null) { + threadPoolTimeoutUpdateTimer.cancel(); +***REMOVED*** +***REMOVED*** + + public void run() { + Queue jobQueue = new ConcurrentLinkedQueue<>(); + sce.getServletContext().setAttribute(SessionConstants.TASK_REQUEST_QUEUE, jobQueue); + + // pool size matching Web services capacity + + ExecutorService executorService = Executors.newFixedThreadPool(20); + + while (running) { + while (!jobQueue.isEmpty()) { + TaskRequest taskRequest = jobQueue.poll(); + + DataMinerTesterCallable accountingClientCallable = new DataMinerTesterCallable(taskRequest); + Future futureResult = executorService.submit(accountingClientCallable); + TaskInProgress taskInProgress = new TaskInProgress(new GregorianCalendar(), futureResult); + tasks.add(taskInProgress); +***REMOVED*** + + if (!tasks.isEmpty()) { + ArrayList dones = new ArrayList<>(); + for (TaskInProgress taskInProgress : tasks) { + Future futureResult = taskInProgress.getFuture(); + if (futureResult.isDone()) { + TaskStatus result = null; + ***REMOVED*** + result = futureResult.get(timeout, TimeUnit.MILLISECONDS); + logger.debug("DataMinerTesterTask: " + result); + + ***REMOVED*** catch (InterruptedException | ExecutionException e) { + logger.error("DataMinerTesterTask: " + e.getLocalizedMessage(), e); + ***REMOVED*** catch (TimeoutException e) { + logger.error("DataMinerTesterTask No response after " + timeout + " milliseconds!"); + futureResult.cancel(true); + ***REMOVED*** + dones.add(taskInProgress); +***REMOVED*** else { + GregorianCalendar now = new GregorianCalendar(); + long diff = now.getTimeInMillis() - taskInProgress.getStartTime().getTimeInMillis(); + if (diff > timeout) { + futureResult.cancel(true); + dones.add(taskInProgress); + ***REMOVED*** +***REMOVED*** +***REMOVED*** + tasks.removeAll(dones); + +***REMOVED*** + ***REMOVED*** + Thread.sleep(Constants.DAEMON_SLEEP_MILLIS); +***REMOVED*** catch (InterruptedException e) { + +***REMOVED*** + +***REMOVED*** +***REMOVED*** + + private void retrieveTimeOut() { + long timeo = 0; + + logger.info("DataMinerTester use default configuration for threadpool"); + timeo = Constants.SERVICE_CLIENT_TIMEOUT_DEFAULT_MILLIS; + + if (timeo > 0) { + timeout = timeo; + sce.getServletContext().setAttribute(SessionConstants.DATAMINERTESTER_MONITOR_TIME_OUT_PERIODMILLIS, + Long.valueOf(timeout)); + +***REMOVED*** + +***REMOVED*** + + private void startThreadPoolTimeoutUpdateTimer() { +***REMOVED*** + + threadPoolTimeoutUpdateTimer = new Timer(); + threadPoolTimeoutUpdateTimer.schedule(new TimerTask() { + @Override + public void run() { + logger.debug("ThreadPool request update of timeout"); + retrieveTimeOut(); +***REMOVED*** +***REMOVED***, timeoutUpdate, timeoutUpdate); +***REMOVED*** + logger.error("Error retrieving thread pool timeout!", e); + return; +***REMOVED*** +***REMOVED*** + +***REMOVED*** \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/DataMinerTesterCallable.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/DataMinerTesterCallable.java new file mode 100644 index 0000000..01ab4f1 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/DataMinerTesterCallable.java @@ -0,0 +1,97 @@ +package org.gcube.portlets.user.dataminermanagertester.server; + +import java.util.HashMap; +import java.util.concurrent.Callable; + +import javax.servlet.http.HttpSession; + +import org.gcube.common.authorization.library.provider.SecurityTokenProvider; +import org.gcube.common.scope.api.ScopeProvider; +import org.gcube.portlets.user.dataminermanagertester.server.task.TaskRequest; +import org.gcube.portlets.user.dataminermanagertester.server.task.TaskWrapper; +import org.gcube.portlets.user.dataminermanagertester.server.testbatch.TesterCaller; +***REMOVED*** +import org.gcube.portlets.user.dataminermanagertester.shared.result.BatchTestResult; +import org.gcube.portlets.user.dataminermanagertester.shared.task.TaskStatus; +***REMOVED*** +***REMOVED*** + +/** + * + * @author Giancarlo Panichi + * + */ +public class DataMinerTesterCallable implements Callable { + + private static Logger logger = LoggerFactory.getLogger(DataMinerTesterCallable.class); + + private TaskRequest taskRequest; + + public DataMinerTesterCallable(TaskRequest taskRequest) { + super(); + this.taskRequest = taskRequest; + logger.debug("DataMinerTesterCallable: " + taskRequest); +***REMOVED*** + + @Override + public TaskStatus call() throws Exception { +***REMOVED*** + + HttpSession httpSession = taskRequest.getHttpSession(); + if (httpSession == null) { + logger.error("Error retrieving HttpSession in DataMinerTesterCallable: is null"); + return TaskStatus.ERROR; +***REMOVED*** + + logger.debug("Set SecurityToken: " + taskRequest.getServiceCredentials().getToken()); + SecurityTokenProvider.instance.set(taskRequest.getServiceCredentials().getToken()); + logger.debug("Set ScopeProvider: " + taskRequest.getServiceCredentials().getScope()); + ScopeProvider.instance.set(taskRequest.getServiceCredentials().getScope()); + TesterCaller testerCaller = new TesterCaller(); + + BatchTestResult result = null; + + ***REMOVED*** + result = testerCaller.runTest(taskRequest); + +***REMOVED*** catch (ServiceException e) { + + TaskWrapper taskWrapper = new TaskWrapper(taskRequest.getOperationId(), TaskStatus.ERROR, + e.getLocalizedMessage()); + + HashMap taskWrapperMap = SessionUtil.getTaskWrapperMap(httpSession, + taskRequest.getServiceCredentials()); + if (taskWrapperMap == null) { + taskWrapperMap = new HashMap<>(); + SessionUtil.setTaskWrapperMap(httpSession, taskRequest.getServiceCredentials(), taskWrapperMap); + +***REMOVED*** + + taskWrapperMap.put(taskWrapper.getOperationId(), taskWrapper); + + return TaskStatus.ERROR; +***REMOVED*** + + + TaskWrapper taskWrapper = new TaskWrapper(taskRequest.getOperationId(), TaskStatus.COMPLETED, + result); + + HashMap taskWrapperMap = SessionUtil.getTaskWrapperMap(httpSession, + taskRequest.getServiceCredentials()); + + if (taskWrapperMap == null) { + taskWrapperMap = new HashMap<>(); + SessionUtil.setTaskWrapperMap(httpSession, taskRequest.getServiceCredentials(), taskWrapperMap); + +***REMOVED*** + + taskWrapperMap.put(taskWrapper.getOperationId(), taskWrapper); + return TaskStatus.COMPLETED; + +***REMOVED*** + logger.error("DataMinerTesterDaemon Execute(): " + e.getLocalizedMessage(), e); + return TaskStatus.ERROR; +***REMOVED*** + +***REMOVED*** +***REMOVED*** \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/DataMinerTesterListener.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/DataMinerTesterListener.java new file mode 100644 index 0000000..43acfb3 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/DataMinerTesterListener.java @@ -0,0 +1,50 @@ +package org.gcube.portlets.user.dataminermanagertester.server; + + +import javax.servlet.ServletContextEvent; +import javax.servlet.ServletContextListener; +import javax.servlet.annotation.WebListener; + +***REMOVED*** +***REMOVED*** + +/** + * + * @author Giancarlo Panichi + * + * + */ +@WebListener +public class DataMinerTesterListener implements ServletContextListener { + + private static Logger logger = LoggerFactory + .getLogger(DataMinerTesterListener.class); + + private DataMinerTesterBatchDaemon dataMinerTesterBatchDaemon = null; + private Thread thread = null; + + @Override + public void contextInitialized(ServletContextEvent sce) { + + dataMinerTesterBatchDaemon = new DataMinerTesterBatchDaemon(sce); + thread = new Thread(dataMinerTesterBatchDaemon); + logger.debug("Starting DataMinerTesterBatchDaemon: " + thread); + thread.start(); + logger.info("DataMinerTesterBatchDaemon process successfully started."); +***REMOVED*** + + @Override + public void contextDestroyed(ServletContextEvent sce) { + logger.debug("Stopping DataMinerTesterBatchDaemon: " + thread); + if (thread != null) { + dataMinerTesterBatchDaemon.terminate(); + ***REMOVED*** + thread.join(); +***REMOVED*** catch (InterruptedException e) { +***REMOVED*** + logger.debug("DataMinerTesterBatchDaemon successfully stopped."); +***REMOVED*** + +***REMOVED*** + +***REMOVED*** \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/DataMinerTesterServiceImpl.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/DataMinerTesterServiceImpl.java new file mode 100644 index 0000000..f0555f7 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/DataMinerTesterServiceImpl.java @@ -0,0 +1,442 @@ +package org.gcube.portlets.user.dataminermanagertester.server; + +import java.util.HashMap; +***REMOVED*** +import java.util.Queue; +import java.util.UUID; + +import javax.servlet.ServletContext; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; + +***REMOVED*** +***REMOVED*** +import org.gcube.data.analysis.dataminermanagercl.server.util.ServiceCredentials; +import org.gcube.data.analysis.dataminermanagercl.shared.data.OutputData; +import org.gcube.data.analysis.dataminermanagercl.shared.data.computations.ComputationId; +import org.gcube.data.analysis.dataminermanagercl.shared.parameters.Parameter; +import org.gcube.data.analysis.dataminermanagercl.shared.process.ComputationStatus; +import org.gcube.data.analysis.dataminermanagercl.shared.process.ComputationStatus.Status; +***REMOVED*** +***REMOVED*** +import org.gcube.portlets.user.dataminermanagertester.client.rpc.DataMinerTesterService; +import org.gcube.portlets.user.dataminermanagertester.server.task.TaskRequest; +import org.gcube.portlets.user.dataminermanagertester.server.task.TaskWrapper; +import org.gcube.portlets.user.dataminermanagertester.server.testbuild.TestBuilder; +import org.gcube.portlets.user.dataminermanagertester.server.testconfig.DMTest; +import org.gcube.portlets.user.dataminermanagertester.shared.config.DMBatchConfig; +import org.gcube.portlets.user.dataminermanagertester.shared.config.DMConfig; +import org.gcube.portlets.user.dataminermanagertester.shared.config.DMDiffConfig; +import org.gcube.portlets.user.dataminermanagertester.shared.config.TestType; +***REMOVED*** +import org.gcube.portlets.user.dataminermanagertester.shared.result.BatchTestResult; +import org.gcube.portlets.user.dataminermanagertester.shared.session.UserInfo; +import org.gcube.portlets.user.dataminermanagertester.shared.task.TaskStatus; +***REMOVED*** +***REMOVED*** + +import com.google.gwt.user.server.rpc.RemoteServiceServlet; + +/** + * + * @author Giancarlo Panichi + * + * + */ +@SuppressWarnings("serial") +public class DataMinerTesterServiceImpl extends RemoteServiceServlet implements DataMinerTesterService { + + private static Logger logger = LoggerFactory.getLogger(DataMinerTesterServiceImpl.class); + +***REMOVED*** +***REMOVED***{@inheritDoc***REMOVED*** +***REMOVED*** + @Override + public void init() throws ServletException { + super.init(); + logger.info("DataMiner Tester Service started!"); + +***REMOVED*** + +***REMOVED*** +***REMOVED*** +***REMOVED***{@inheritDoc***REMOVED*** +***REMOVED*** +***REMOVED*** + @Override + public UserInfo hello(String token) throws ServiceException { +***REMOVED*** + ServiceCredentials serviceCredentials = SessionUtil.getServiceCredentials(this.getThreadLocalRequest(), + token); + logger.debug("hello()"); + UserInfo userInfo = new UserInfo(serviceCredentials.getUserName(), serviceCredentials.getGroupId(), + serviceCredentials.getGroupName(), serviceCredentials.getScope(), serviceCredentials.getEmail(), + serviceCredentials.getFullName()); + logger.debug("UserInfo: " + userInfo); + return userInfo; +***REMOVED*** +***REMOVED*** + throw e; +***REMOVED*** +***REMOVED*** + logger.error("Hello(): " + e.getLocalizedMessage(), e); + throw new ServiceException(e.getLocalizedMessage(), e); +***REMOVED*** + +***REMOVED*** + + @Override + public String getCapabilities(String token, DMConfig dmConfig) throws ServiceException { + +***REMOVED*** + HttpServletRequest httpRequest = this.getThreadLocalRequest(); + @SuppressWarnings("unused") + ServiceCredentials serviceCredentials = SessionUtil.getServiceCredentials(httpRequest, token); + logger.debug("getCapabilities()"); + + SClient sClient = new DataMinerService().getClient(dmConfig.getToken(), dmConfig.getDmUrl()); + + List operatorsClassifications = sClient.getOperatorsClassifications(); + logger.debug("OperatorsClassifications: " + operatorsClassifications); + + StringBuilder result = new StringBuilder(); + + result.append("Success\n"); + + for (OperatorsClassification opClass : operatorsClassifications) { + for (Operator op : opClass.getOperators()) { + result.append("Operator[Name=" + op.getName() + "]"); +***REMOVED*** +***REMOVED*** + + return result.toString(); +***REMOVED*** +***REMOVED*** + throw e; +***REMOVED*** +***REMOVED*** + throw new ServiceException(e.getLocalizedMessage(), e); +***REMOVED*** +***REMOVED*** + + @Override + public String getOperatorsDiff(String token, DMDiffConfig operatorsDiffConfig) throws ServiceException { +***REMOVED*** + logger.debug("getOperatorsDiff: dm1=" + operatorsDiffConfig.getDm1() + ", dm2=" + + operatorsDiffConfig.getDm2()); + HttpServletRequest httpRequest = this.getThreadLocalRequest(); + @SuppressWarnings("unused") + ServiceCredentials serviceCredentials = SessionUtil.getServiceCredentials(httpRequest, token); + + SClient sClient1 = new DataMinerService().getClient(operatorsDiffConfig.getToken1(), + operatorsDiffConfig.getDmUrl1()); + + List operatorsClassifications1 = sClient1.getOperatorsClassifications(); + logger.debug("OperatorsClassifications1: " + operatorsClassifications1); + + SClient sClient2 = new DataMinerService().getClient(operatorsDiffConfig.getToken2(), + operatorsDiffConfig.getDmUrl2()); + List operatorsClassifications2 = sClient2.getOperatorsClassifications(); + logger.debug("OperatorsClassifications2: " + operatorsClassifications2); + + StringBuilder result = new StringBuilder(); + + result.append("Success\n"); + + result.append("----------------------------------\n"); + result.append("Operators in: " + operatorsDiffConfig.getDm1() + " \n"); + result.append("and not in: " + operatorsDiffConfig.getDm2() + " \n"); + for (OperatorsClassification opClass1 : operatorsClassifications1) { + for (Operator op1 : opClass1.getOperators()) { + boolean op1Found = false; + ***REMOVED*** + ***REMOVED*** + if (op1.getId().compareTo(op2.getId()) == 0) { + op1Found = true; +***REMOVED*** + ***REMOVED*** + ***REMOVED*** + if (op1Found) { + break; + ***REMOVED*** + +***REMOVED*** + if (!op1Found) { + result.append("Op: " + op1.getId() + " \n"); +***REMOVED*** +***REMOVED*** + +***REMOVED*** + + result.append("----------------------------------\n"); + result.append("Operators in: " + operatorsDiffConfig.getDm2() + " \n"); + result.append("and not in: " + operatorsDiffConfig.getDm1() + " \n"); + for (OperatorsClassification opClass2 : operatorsClassifications2) { + for (Operator op2 : opClass2.getOperators()) { + boolean op2Found = false; + ***REMOVED*** + ***REMOVED*** + if (op2.getId().compareTo(op1.getId()) == 0) { + op2Found = true; +***REMOVED*** + ***REMOVED*** + ***REMOVED*** + if (op2Found) { + break; + ***REMOVED*** + +***REMOVED*** + if (!op2Found) { + result.append("Op: " + op2.getId() + " \n"); +***REMOVED*** +***REMOVED*** + +***REMOVED*** + + return result.toString(); + +***REMOVED*** +***REMOVED*** + throw e; +***REMOVED*** +***REMOVED*** + throw new ServiceException(e.getLocalizedMessage(), e); +***REMOVED*** + +***REMOVED*** + + @Override + public ComputationId startSimpleTest(String token, DMConfig dmConfig) throws ServiceException { + +***REMOVED*** + HttpServletRequest httpRequest = this.getThreadLocalRequest(); + @SuppressWarnings("unused") + ServiceCredentials serviceCredentials = SessionUtil.getServiceCredentials(httpRequest, token); + logger.debug("startSimpleTest()"); + TestType t = null; + if (dmConfig == null || dmConfig.getTestType() == null || dmConfig.getTestType().isEmpty()) { + throw new ServiceException("Invalid test type: " + dmConfig.getTestType()); +***REMOVED*** + t = TestType.getTypeFromId(dmConfig.getTestType()); +***REMOVED*** + + TestBuilder testBuilder = new TestBuilder(); + DMTest dmTest = testBuilder.build(t); + + SClient sClient = new DataMinerService().getClient(dmConfig.getToken(), dmConfig.getDmUrl()); + + List operatorsClassifications = sClient.getOperatorsClassifications(); + logger.debug("OperatorsClassifications: " + operatorsClassifications); + + Operator operator = sClient.getOperatorById(dmTest.getId()); + + if (operator == null) { + logger.error("Operator not found"); + throw new ServiceException("Operator: " + dmTest.getId() + " not found"); +***REMOVED*** + logger.debug("Operator Name: " + operator.getName() + " (" + operator.getId() + ")"); + logger.debug("Operator: " + operator); + List parameters = sClient.getInputParameters(operator); + logger.debug("Parameters: " + parameters); + for (Parameter parameter : parameters) { + logger.debug( + "Parameter:[Name=" + parameter.getName() + ", Typology=" + parameter.getTypology() + "]"); +***REMOVED*** + + dmTest.createRequest(operator); + logger.debug("Start Computation"); + ComputationId computationId = sClient.startComputation(operator); + logger.debug("Started ComputationId: " + computationId); + return computationId; +***REMOVED*** + +***REMOVED*** +***REMOVED*** + throw e; +***REMOVED*** + logger.error("An error occurred starting simple test: " + e.getLocalizedMessage(), e); +***REMOVED*** + throw new ServiceException(e.getLocalizedMessage(), e); +***REMOVED*** +***REMOVED*** + + @Override + public Status monitorSimpleTest(String token, DMConfig dmConfig, ComputationId computationId) + throws ServiceException { + +***REMOVED*** + HttpServletRequest httpRequest = this.getThreadLocalRequest(); + @SuppressWarnings("unused") + ServiceCredentials serviceCredentials = SessionUtil.getServiceCredentials(httpRequest, token); + + SClient sClient = new DataMinerService().getClient(dmConfig.getToken(), dmConfig.getDmUrl()); + + logger.debug("Requesting operation progress"); + ComputationStatus computationStatus = null; + ***REMOVED*** + computationStatus = sClient.getComputationStatus(computationId); +***REMOVED*** catch (Exception e) { + logger.error("Error retrieving computation Status:" + e.getLocalizedMessage(), e); + throw new ServiceException("Error retrieving computation Status:" + e.getLocalizedMessage(), e); + +***REMOVED*** + logger.debug("ComputationStatus: " + computationStatus); + if (computationStatus == null) { + logger.error("ComputationStatus is null"); + throw new ServiceException("Error retrieving computation Status: ComputationStatus is null"); +***REMOVED*** + + Status status = computationStatus.getStatus(); + if (status == null) { + logger.error("Status is null"); + throw new ServiceException("Error retrieving computation Status: Status is null"); +***REMOVED*** + + return status; + + // monitoringComputation(computationId, sClient); +***REMOVED*** +***REMOVED*** + throw e; +***REMOVED*** + logger.error("An error occurred monitoring simple test: " + e.getLocalizedMessage(), e); +***REMOVED*** + throw new ServiceException(e.getLocalizedMessage(), e); +***REMOVED*** +***REMOVED*** + + @Override + public String retrieveOutputForSimpleTest(String token, DMConfig dmConfig, ComputationId computationId) + throws ServiceException { + +***REMOVED*** + HttpServletRequest httpRequest = this.getThreadLocalRequest(); + @SuppressWarnings("unused") + ServiceCredentials serviceCredentials = SessionUtil.getServiceCredentials(httpRequest, token); + logger.debug("retrieveOutputForSimpleTest()"); + + TestType t = null; + if (dmConfig == null || dmConfig.getTestType() == null || dmConfig.getTestType().isEmpty()) { + throw new ServiceException("Invalid test type: " + dmConfig.getTestType()); +***REMOVED*** + t = TestType.getTypeFromId(dmConfig.getTestType()); +***REMOVED*** + + TestBuilder testBuilder = new TestBuilder(); + DMTest dmTest = testBuilder.build(t); + + SClient sClient = new DataMinerService().getClient(dmConfig.getToken(), dmConfig.getDmUrl()); + + OutputData outputData = sClient.getOutputDataByComputationId(computationId); + + if (dmTest.isValidResult(outputData)) { + return dmTest.getResult(outputData); +***REMOVED*** + throw new ServiceException("Invalid output data for test: " + dmTest.getId()); +***REMOVED*** + +***REMOVED*** +***REMOVED*** + throw e; +***REMOVED*** + logger.error("An error occurred monitoring simple test: " + e.getLocalizedMessage(), e); +***REMOVED*** + throw new ServiceException(e.getLocalizedMessage(), e); +***REMOVED*** +***REMOVED*** + + @Override + public String startBatchTest(String token, DMBatchConfig dmBatchConfig) throws ServiceException { + +***REMOVED*** + HttpServletRequest httpRequest = this.getThreadLocalRequest(); + ServiceCredentials serviceCredentials = SessionUtil.getServiceCredentials(httpRequest, token); + logger.debug("startBatchTest()"); + + String operationId = UUID.randomUUID().toString(); + logger.info("DataMinerBatchTest Task Operation Id: " + operationId); + logger.info("Session Id: " + httpRequest.getSession()); + + TaskRequest taskRequest = new TaskRequest(operationId, httpRequest.getSession(), serviceCredentials, + dmBatchConfig); + + ServletContext appScope = httpRequest.getServletContext(); + + @SuppressWarnings("unchecked") + Queue queue = ((Queue) appScope + .getAttribute(SessionConstants.TASK_REQUEST_QUEUE)); + + queue.add(taskRequest); + logger.debug("operationId: " + operationId); + return operationId; + +***REMOVED*** +***REMOVED*** + throw e; +***REMOVED*** + logger.error("An error occurred starting batch test: " + e.getLocalizedMessage(), e); +***REMOVED*** + throw new ServiceException(e.getLocalizedMessage(), e); +***REMOVED*** +***REMOVED*** + + @Override + public TaskStatus monitorBatchTest(String token, String operationId) throws ServiceException { +***REMOVED*** + HttpServletRequest httpRequest = this.getThreadLocalRequest(); + ServiceCredentials serviceCredentials = SessionUtil.getServiceCredentials(httpRequest, token); + + HashMap taskWrapperMap = SessionUtil.getTaskWrapperMap(httpRequest.getSession(), + serviceCredentials); + if (taskWrapperMap == null) { + return null; +***REMOVED*** + if (taskWrapperMap.containsKey(operationId)) { + TaskWrapper taskWrapper = taskWrapperMap.get(operationId); + return taskWrapper.getTaskStatus(); +***REMOVED*** else { + return null; +***REMOVED*** +***REMOVED*** + +***REMOVED*** +***REMOVED*** + throw e; +***REMOVED*** + logger.error("MonitorBatchTest(): " + e.getLocalizedMessage(), e); + throw new ServiceException(e.getLocalizedMessage()); +***REMOVED*** + +***REMOVED*** + + @Override + public BatchTestResult retrieveOutputForBatchTest(String token, String operationId) throws ServiceException { +***REMOVED*** + HttpServletRequest httpRequest = this.getThreadLocalRequest(); + ServiceCredentials serviceCredentials = SessionUtil.getServiceCredentials(httpRequest, token); + logger.debug("retrieveOutputForBatchTest()"); + + HashMap taskWrapperMap = SessionUtil.getTaskWrapperMap(httpRequest.getSession(), + serviceCredentials); + if (taskWrapperMap == null) { + return null; +***REMOVED*** + if (taskWrapperMap.containsKey(operationId)) { + TaskWrapper taskWrapper = taskWrapperMap.get(operationId); + return taskWrapper.getResult(); +***REMOVED*** else { + return null; +***REMOVED*** +***REMOVED*** + +***REMOVED*** +***REMOVED*** + throw e; +***REMOVED*** + logger.error("RetrieveOutputForBatchTest(): " + e.getLocalizedMessage(), e); + throw new ServiceException(e.getLocalizedMessage()); +***REMOVED*** + +***REMOVED*** + +***REMOVED*** diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/SessionConstants.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/SessionConstants.java new file mode 100644 index 0000000..701bf7a --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/SessionConstants.java @@ -0,0 +1,13 @@ +package org.gcube.portlets.user.dataminermanagertester.server; + +public class SessionConstants { + + //Context + public static final String DATAMINERTESTER_MONITOR_TIME_OUT_PERIODMILLIS = "DATAMINERTESTER_MONITOR_TIME_OUT_PERIODMILLIS"; + + //Session + public static final String TASK_WRAPPER_MAP = "TASK_WRAPPER_MAP"; + public static final String TASK_REQUEST_QUEUE = "TASK_REQUEST_QUEUE"; + + +***REMOVED*** \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/SessionUtil.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/SessionUtil.java new file mode 100644 index 0000000..dec239f --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/SessionUtil.java @@ -0,0 +1,164 @@ +/** + * + */ +package org.gcube.portlets.user.dataminermanagertester.server; + +import static org.gcube.common.authorization.client.Constants.authorizationService; + +import java.util.HashMap; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpSession; + +import org.apache.log4j.Logger; +import org.gcube.common.authorization.library.AuthorizationEntry; +import org.gcube.common.authorization.library.provider.SecurityTokenProvider; +import org.gcube.common.portal.PortalContext; +import org.gcube.common.scope.api.ScopeProvider; +import org.gcube.data.analysis.dataminermanagercl.server.util.ServiceCredentials; +import org.gcube.portlets.user.dataminermanagertester.server.task.TaskWrapper; +***REMOVED*** +***REMOVED*** +import org.gcube.vomanagement.usermanagement.model.GCubeUser; + +/** + * + * @author Giancarlo Panichi + * + * + */ +public class SessionUtil { + + private static final Logger logger = Logger.getLogger(SessionUtil.class); + + public static ServiceCredentials getServiceCredentials(HttpServletRequest httpServletRequest, String token) + throws ServiceException { + + ServiceCredentials sCredentials = null; + String userName = null; + String scope = null; + String groupId = null; + String groupName = null; + + if (Constants.DEBUG_MODE) { + logger.debug("No credential found in session, use test user!"); + /* + ***REMOVED***InfoLocale infoLocale = getInfoLocale(httpServletRequest, null); + ***REMOVED***Locale locale = new Locale(infoLocale.getLanguage()); + ***REMOVED*** + ***REMOVED***ResourceBundle messages = ResourceBundle.getBundle( + ***REMOVED***StatAlgoImporterServiceMessagesConstants.TDGWTServiceMessages, + ***REMOVED***locale); + ***REMOVED*** + userName = Constants.DEFAULT_USER; + scope = Constants.DEFAULT_SCOPE; + token = Constants.DEFAULT_TOKEN; + + logger.debug("Set SecurityToken: " + token); + SecurityTokenProvider.instance.set(token); + logger.debug("Set ScopeProvider: " + scope); + ScopeProvider.instance.set(scope); + + sCredentials = new ServiceCredentials(userName, scope, token); + +***REMOVED*** else { + logger.debug("Retrieving credential in session!"); + PortalContext pContext = PortalContext.getConfiguration(); + + logger.debug("Set SecurityToken: " + token); + SecurityTokenProvider.instance.set(token); + + AuthorizationEntry entry; + ***REMOVED*** + entry = authorizationService().get(token); +***REMOVED*** catch (Exception e) { + throw new ServiceException("AuthorizationEntry not found: " + e.getLocalizedMessage(), e); +***REMOVED*** + + scope = entry.getContext(); + logger.debug("Set ScopeProvider: " + scope); + ScopeProvider.instance.set(scope); + + if (scope == null || scope.isEmpty()) { + String error = "Error retrieving scope: " + scope; + logger.error(error); + throw new ServiceException(error); +***REMOVED*** + + GCubeUser gCubeUser = pContext.getCurrentUser(httpServletRequest); + + if (gCubeUser == null) { + String error = "Error retrieving gCubeUser in scope " + scope + ": " + gCubeUser; + logger.error(error); + throw new ServiceException(error); +***REMOVED*** + + userName = gCubeUser.getUsername(); + + if (userName == null || userName.isEmpty()) { + String error = "Error retrieving username in scope " + scope + ": " + userName; + logger.error(error); + throw new ServiceException(error); +***REMOVED*** + + token = pContext.getCurrentUserToken(scope, userName); + + if (token == null || token.isEmpty()) { + String error = "Error retrieving token for " + userName + " in " + scope + ": " + token; + logger.error(error); + throw new ServiceException(error); +***REMOVED*** + + String name = gCubeUser.getFirstName(); + String lastName = gCubeUser.getLastName(); + String fullName = gCubeUser.getFullname(); + + String userAvatarURL = gCubeUser.getUserAvatarURL(); + + String email = gCubeUser.getEmail(); + + //groupId = String.valueOf(pContext.getCurrentGroupId(httpServletRequest)); + + //groupName = pContext.getCurrentGroupName(httpServletRequest); + + sCredentials = new ServiceCredentials(userName, fullName, name, lastName, email, scope, groupId, groupName, + userAvatarURL, token); +***REMOVED*** + + logger.debug("ServiceCredentials: " + sCredentials); + + return sCredentials; +***REMOVED*** + + + +***REMOVED*** +***REMOVED*** +***REMOVED***@param httpSession http session +***REMOVED***@param serviceCredentials service credentials +***REMOVED***@return hash map of tasks +***REMOVED*** + public static HashMap getTaskWrapperMap( + HttpSession httpSession, + ServiceCredentials serviceCredentials) { + @SuppressWarnings("unchecked") + HashMap taskWrapperMap = (HashMap) httpSession + .getAttribute(SessionConstants.TASK_WRAPPER_MAP); + return taskWrapperMap; +***REMOVED*** + +***REMOVED*** +***REMOVED*** +***REMOVED***@param httpSession session +***REMOVED***@param serviceCredentials service credentials +***REMOVED***@param taskWrapperMap task wrapper map +***REMOVED*** + public static void setTaskWrapperMap(HttpSession httpSession, + ServiceCredentials serviceCredentials, + HashMap taskWrapperMap) { + httpSession.setAttribute(SessionConstants.TASK_WRAPPER_MAP, taskWrapperMap); + return; +***REMOVED*** + + +***REMOVED*** diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/is/InformationSystemUtils.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/is/InformationSystemUtils.java new file mode 100644 index 0000000..996b217 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/is/InformationSystemUtils.java @@ -0,0 +1,55 @@ +package org.gcube.portlets.user.dataminermanagertester.server.is; + +import java.util.ArrayList; +***REMOVED*** + +import org.gcube.common.resources.gcore.ServiceEndpoint; +import org.gcube.common.scope.api.ScopeProvider; +import org.gcube.resources.discovery.client.api.DiscoveryClient; +import org.gcube.resources.discovery.client.queries.api.SimpleQuery; +import org.gcube.resources.discovery.icclient.ICFactory; +***REMOVED*** +***REMOVED*** + +/** + * + * @author Giancarlo Panichi + * + * + */ +public class InformationSystemUtils { + + private static Logger logger = LoggerFactory + .getLogger(InformationSystemUtils.class); + + public static List retrieveServiceAddress(String category, + String name, String scope) throws Exception { +***REMOVED*** + + if (scope == null || scope.length() == 0) + return new ArrayList(); + + ScopeProvider.instance.set(scope); + + SimpleQuery query = ICFactory.queryFor(ServiceEndpoint.class); + query.addCondition( + "$resource/Profile/Category/text() eq '" + category + "'") + .addCondition( + "$resource/Profile/Name/text() eq '" + name + "'") + .setResult( + "$resource/Profile/AccessPoint/Interface/Endpoint/text()"); + DiscoveryClient client = ICFactory.client(); + List addresses = client.submit(query); + + return addresses; + +***REMOVED*** + logger.error("Error in discovery DataMiner Service Endpoint in scope: " + + scope); + logger.error("Error: " + e.getLocalizedMessage()); +***REMOVED*** + throw e; +***REMOVED*** +***REMOVED*** + +***REMOVED*** diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/task/TaskInProgress.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/task/TaskInProgress.java new file mode 100644 index 0000000..ed549aa --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/task/TaskInProgress.java @@ -0,0 +1,48 @@ +package org.gcube.portlets.user.dataminermanagertester.server.task; + +import java.io.Serializable; +import java.util.Calendar; +import java.util.concurrent.Future; + +import org.gcube.portlets.user.dataminermanagertester.shared.task.TaskStatus; + +/** + * + * @author Giancarlo Panichi + * + * + */ +public class TaskInProgress implements Serializable { + + private static final long serialVersionUID = -1957012551318695316L; + private Calendar startTime; + private Future future; + + public TaskInProgress(Calendar startTime, Future future) { + super(); + this.startTime = startTime; + this.future = future; +***REMOVED*** + + public Calendar getStartTime() { + return startTime; +***REMOVED*** + + public void setStartTime(Calendar startTime) { + this.startTime = startTime; +***REMOVED*** + + public Future getFuture() { + return future; +***REMOVED*** + + public void setFuture(Future future) { + this.future = future; +***REMOVED*** + + @Override + public String toString() { + return "TaskInProgress [startTime=" + startTime + ", future=" + future + "]"; +***REMOVED*** + +***REMOVED*** \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/task/TaskRequest.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/task/TaskRequest.java new file mode 100644 index 0000000..b93f224 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/task/TaskRequest.java @@ -0,0 +1,72 @@ +package org.gcube.portlets.user.dataminermanagertester.server.task; + +import java.io.Serializable; + +import javax.servlet.http.HttpSession; + +import org.gcube.data.analysis.dataminermanagercl.server.util.ServiceCredentials; +import org.gcube.portlets.user.dataminermanagertester.shared.config.DMBatchConfig; + +/** + * + * @author Giancarlo Panichi + * + * + */ +public class TaskRequest implements Serializable { + + private static final long serialVersionUID = -4010108343968344171L; + private String operationId; + private HttpSession httpSession; + private ServiceCredentials serviceCredentials; + private DMBatchConfig dmBatchConfig; + + public TaskRequest(String operationId, HttpSession httpSession, ServiceCredentials serviceCredentials, + DMBatchConfig dmBatchConfig) { + super(); + this.operationId = operationId; + this.httpSession = httpSession; + this.serviceCredentials = serviceCredentials; + this.dmBatchConfig = dmBatchConfig; + +***REMOVED*** + + public String getOperationId() { + return operationId; +***REMOVED*** + + public void setOperationId(String operationId) { + this.operationId = operationId; +***REMOVED*** + + public HttpSession getHttpSession() { + return httpSession; +***REMOVED*** + + public void setHttpSession(HttpSession httpSession) { + this.httpSession = httpSession; +***REMOVED*** + + public ServiceCredentials getServiceCredentials() { + return serviceCredentials; +***REMOVED*** + + public void setServiceCredentials(ServiceCredentials serviceCredentials) { + this.serviceCredentials = serviceCredentials; +***REMOVED*** + + public DMBatchConfig getDmBatchConfig() { + return dmBatchConfig; +***REMOVED*** + + public void setDmBatchConfig(DMBatchConfig dmBatchConfig) { + this.dmBatchConfig = dmBatchConfig; +***REMOVED*** + + @Override + public String toString() { + return "TaskRequest [operationId=" + operationId + ", httpSession=" + httpSession + ", serviceCredentials=" + + serviceCredentials + ", dmBatchConfig=" + dmBatchConfig + "]"; +***REMOVED*** + +***REMOVED*** diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/task/TaskWrapper.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/task/TaskWrapper.java new file mode 100644 index 0000000..da53195 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/task/TaskWrapper.java @@ -0,0 +1,76 @@ +package org.gcube.portlets.user.dataminermanagertester.server.task; + +import java.io.Serializable; + +import org.gcube.portlets.user.dataminermanagertester.shared.result.BatchTestResult; +import org.gcube.portlets.user.dataminermanagertester.shared.task.TaskStatus; + +/** + * + * @author Giancarlo Panichi + * + * + */ +public class TaskWrapper implements Serializable { + + private static final long serialVersionUID = -4010108343968344171L; + private String operationId; + private TaskStatus taskStatus; + private String errorMessage; + private BatchTestResult result; + + public TaskWrapper(String operationId, TaskStatus taskStatus, BatchTestResult result) { + super(); + this.operationId = operationId; + this.taskStatus = taskStatus; + this.errorMessage = null; + this.result = result; +***REMOVED*** + + public TaskWrapper(String operationId, TaskStatus taskStatus, String errorMessage) { + super(); + this.operationId = operationId; + this.taskStatus = taskStatus; + this.errorMessage = errorMessage; + this.result = null; +***REMOVED*** + + public String getOperationId() { + return operationId; +***REMOVED*** + + public void setOperationId(String operationId) { + this.operationId = operationId; +***REMOVED*** + + public TaskStatus getTaskStatus() { + return taskStatus; +***REMOVED*** + + public void setTaskStatus(TaskStatus taskStatus) { + this.taskStatus = taskStatus; +***REMOVED*** + + public BatchTestResult getResult() { + return result; +***REMOVED*** + + public void setResult(BatchTestResult result) { + this.result = result; +***REMOVED*** + + public String getErrorMessage() { + return errorMessage; +***REMOVED*** + + public void setErrorMessage(String errorMessage) { + this.errorMessage = errorMessage; +***REMOVED*** + + @Override + public String toString() { + return "TaskWrapper [operationId=" + operationId + ", taskStatus=" + taskStatus + ", errorMessage=" + + errorMessage + ", result=" + result + "]"; +***REMOVED*** + +***REMOVED*** diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/testbatch/TesterCaller.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/testbatch/TesterCaller.java new file mode 100644 index 0000000..74d6c8f --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/testbatch/TesterCaller.java @@ -0,0 +1,258 @@ +package org.gcube.portlets.user.dataminermanagertester.server.testbatch; + +import java.util.ArrayList; +import java.util.LinkedHashMap; +***REMOVED*** + +***REMOVED*** +***REMOVED*** +import org.gcube.data.analysis.dataminermanagercl.shared.data.OutputData; +import org.gcube.data.analysis.dataminermanagercl.shared.data.computations.ComputationId; +import org.gcube.data.analysis.dataminermanagercl.shared.parameters.Parameter; +import org.gcube.data.analysis.dataminermanagercl.shared.process.ComputationStatus; +import org.gcube.data.analysis.dataminermanagercl.shared.process.ComputationStatus.Status; +***REMOVED*** +***REMOVED*** +import org.gcube.portlets.user.dataminermanagertester.server.task.TaskRequest; +import org.gcube.portlets.user.dataminermanagertester.server.testbuild.TestBuilder; +import org.gcube.portlets.user.dataminermanagertester.server.testconfig.DMTest; +***REMOVED*** +import org.gcube.portlets.user.dataminermanagertester.shared.config.DMBatchConfig; +import org.gcube.portlets.user.dataminermanagertester.shared.config.TestType; +***REMOVED*** +import org.gcube.portlets.user.dataminermanagertester.shared.result.BatchTestResult; +import org.gcube.portlets.user.dataminermanagertester.shared.result.SingleTestResult; +***REMOVED*** +***REMOVED*** + +/** + * + * @author Giancarlo Panichi + * + * + */ +public class TesterCaller { + + private static Logger logger = LoggerFactory.getLogger(TesterCaller.class); + + private DMTest dmTest; + private DMBatchConfig dmBatchconfig; + private ArrayList dms; + + public BatchTestResult runTest(TaskRequest taskRequest) throws ServiceException { + + TestType t = null; + if (taskRequest == null || taskRequest.getDmBatchConfig() == null + || taskRequest.getDmBatchConfig().getTestType() == null + || taskRequest.getDmBatchConfig().getTestType().isEmpty()) { + throw new ServiceException("Invalid test type: " + taskRequest.getDmBatchConfig().getTestType()); +***REMOVED*** else { + t = TestType.getTypeFromId(taskRequest.getDmBatchConfig().getTestType()); +***REMOVED*** + + dmBatchconfig = taskRequest.getDmBatchConfig(); + dms = taskRequest.getDmBatchConfig().getDms(); + + if (dms == null || dms.isEmpty()) { + logger.error("Invalid urls list"); + throw new ServiceException("Invalid urls list"); +***REMOVED*** + + BatchTestResult result; + + if (t.compareTo(TestType.Capabilities) == 0) { + result = runGetCapabilities(); +***REMOVED*** else { + result = runAlgorithms(t); +***REMOVED*** + + return result; +***REMOVED*** + + private BatchTestResult runGetCapabilities() { + BatchTestResult result; + LinkedHashMap testResultMap = new LinkedHashMap<>(); + for (String dm : dms) { + ***REMOVED*** + String url = null; + if (dmBatchconfig.getProtocol() != null && dm != null) { + dm = dm.trim(); + url = new String(dmBatchconfig.getProtocol() + "://" + dm + "/wps/"); +***REMOVED*** + + SClient sClient = new DataMinerService().getClient(dmBatchconfig.getToken(), url); + + List operatorsClassifications = sClient.getOperatorsClassifications(); +***REMOVED*** + + String response = new String("Success"); + + ComputationStatus computationStatus = new ComputationStatus(Status.COMPLETE, 100f); + SingleTestResult singleTestResult = new SingleTestResult(computationStatus, response); + testResultMap.put(dm, singleTestResult); +***REMOVED*** catch (Exception e) { + logger.error("Error testing: " + dm); + ComputationStatus computationStatus = new ComputationStatus(e); + SingleTestResult singleTestResult = new SingleTestResult(computationStatus, null); + testResultMap.put(dm, singleTestResult); +***REMOVED*** +***REMOVED*** + result = new BatchTestResult(testResultMap); + return result; +***REMOVED*** + + private BatchTestResult runAlgorithms(TestType t) throws ServiceException { + BatchTestResult result; + TestBuilder testBuilder = new TestBuilder(); + dmTest = testBuilder.build(t); + + LinkedHashMap testResultMap = new LinkedHashMap<>(); + for (String dm : dms) { + ***REMOVED*** + String url = null; + if (dmBatchconfig.getProtocol() != null && dm != null) { + dm = dm.trim(); + url = new String(dmBatchconfig.getProtocol() + "://" + dm + "/wps/"); +***REMOVED*** + + SClient sClient = new DataMinerService().getClient(dmBatchconfig.getToken(), url); + ComputationId computationId = runSingleTest(sClient); + String response = null; + ComputationStatus computationStatus = monitorSingleTest(sClient, computationId); + switch (computationStatus.getStatus()) { + case ACCEPTED: + break; + case CANCELLED: + break; + case COMPLETE: + response = retrieveOutputForSingleTest(sClient, computationId); + break; + case FAILED: + break; + case RUNNING: + break; + default: + break; +***REMOVED*** + + SingleTestResult singleTestResult = new SingleTestResult(computationStatus, response); + testResultMap.put(dm, singleTestResult); +***REMOVED*** catch (Exception e) { + logger.error("Error testing: " + dm); + ComputationStatus computationStatus = new ComputationStatus(e); + SingleTestResult singleTestResult = new SingleTestResult(computationStatus, null); + testResultMap.put(dm, singleTestResult); +***REMOVED*** +***REMOVED*** + + result = new BatchTestResult(testResultMap); + return result; +***REMOVED*** + + private ComputationId runSingleTest(SClient sClient) throws ServiceException { +***REMOVED*** + List operatorsClassifications = sClient.getOperatorsClassifications(); + logger.debug("OperatorsClassifications: " + operatorsClassifications); + + Operator operator = sClient.getOperatorById(dmTest.getId()); + + if (operator == null) { + logger.error("Operator not found"); + throw new ServiceException("Operator: " + dmTest.getId() + " not found"); +***REMOVED*** + logger.debug("Operator Name: " + operator.getName() + " (" + operator.getId() + ")"); + logger.debug("Operator: " + operator); + List parameters = sClient.getInputParameters(operator); + logger.debug("Parameters: " + parameters); + for (Parameter parameter : parameters) { + logger.debug( + "Parameter:[Name=" + parameter.getName() + ", Typology=" + parameter.getTypology() + "]"); +***REMOVED*** + + dmTest.createRequest(operator); + logger.debug("Start Computation"); + ComputationId computationId = sClient.startComputation(operator); + logger.debug("Started ComputationId: " + computationId); + return computationId; +***REMOVED*** +***REMOVED*** + throw e; +***REMOVED*** + throw new ServiceException(e.getLocalizedMessage(), e); +***REMOVED*** + +***REMOVED*** + + private ComputationStatus monitorSingleTest(SClient sClient, ComputationId computationId) throws ServiceException { +***REMOVED*** + logger.debug("Requesting operation progress"); + ComputationStatus computationStatus = null; + Status status = null; + + while (status == null || status.compareTo(Status.ACCEPTED) == 0 || status.compareTo(Status.RUNNING) == 0) { + ***REMOVED*** + computationStatus = sClient.getComputationStatus(computationId); +***REMOVED*** catch (Exception e) { + logger.error("Error retrieving computation Status:" + e.getLocalizedMessage(), e); + throw new ServiceException("Error retrieving computation Status:" + e.getLocalizedMessage(), e); + +***REMOVED*** + logger.debug("ComputationStatus: " + computationStatus); + if (computationStatus == null) { + logger.error("ComputationStatus is null"); + throw new ServiceException("Error retrieving computation Status: ComputationStatus is null"); +***REMOVED*** + + status = computationStatus.getStatus(); + if (status == null) { + logger.error("Status is null"); + throw new ServiceException("Error retrieving computation Status: Status is null"); +***REMOVED*** else { + switch (status) { + case CANCELLED: + case COMPLETE: + case FAILED: + break; + case ACCEPTED: + case RUNNING: + default: + ***REMOVED*** + Thread.sleep(Constants.TEST_MONITOR_PERIODMILLIS); + ***REMOVED*** catch (InterruptedException e) { + + ***REMOVED*** + break; +***REMOVED*** +***REMOVED*** + +***REMOVED*** + return computationStatus; +***REMOVED*** + logger.error(e.getLocalizedMessage(), e); + throw e; +***REMOVED*** + logger.error(e.getLocalizedMessage(), e); + throw new ServiceException(e.getLocalizedMessage(), e); +***REMOVED*** +***REMOVED*** + + private String retrieveOutputForSingleTest(SClient sClient, ComputationId computationId) throws ServiceException { +***REMOVED*** + OutputData outputData = sClient.getOutputDataByComputationId(computationId); + + if (dmTest.isValidResult(outputData)) { + return dmTest.getResult(outputData); +***REMOVED*** + throw new ServiceException("Invalid output data for test: " + dmTest.getId()); +***REMOVED*** + +***REMOVED*** +***REMOVED*** + throw e; +***REMOVED*** + logger.error(e.getLocalizedMessage(), e); + throw new ServiceException(e.getLocalizedMessage(), e); +***REMOVED*** +***REMOVED*** + +***REMOVED*** diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/testbuild/TestBuilder.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/testbuild/TestBuilder.java new file mode 100644 index 0000000..8d6b490 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/testbuild/TestBuilder.java @@ -0,0 +1,61 @@ +package org.gcube.portlets.user.dataminermanagertester.server.testbuild; + +import org.gcube.portlets.user.dataminermanagertester.server.testconfig.BionymLocalTest; +import org.gcube.portlets.user.dataminermanagertester.server.testconfig.CMSY2Test; +import org.gcube.portlets.user.dataminermanagertester.server.testconfig.CSquareColumnCreatorTest; +import org.gcube.portlets.user.dataminermanagertester.server.testconfig.DBScanTest; +import org.gcube.portlets.user.dataminermanagertester.server.testconfig.DMTest; +import org.gcube.portlets.user.dataminermanagertester.server.testconfig.FeedForwardAnnTest; +import org.gcube.portlets.user.dataminermanagertester.server.testconfig.GenericChartsTest; +import org.gcube.portlets.user.dataminermanagertester.server.testconfig.ListDBNameTest; +import org.gcube.portlets.user.dataminermanagertester.server.testconfig.OpenMeshRecostructorGPUTest; +import org.gcube.portlets.user.dataminermanagertester.server.testconfig.PolygonsToMapTest; +import org.gcube.portlets.user.dataminermanagertester.server.testconfig.RasterDataPublisherTest; +import org.gcube.portlets.user.dataminermanagertester.server.testconfig.WebAppPublisherTest; +import org.gcube.portlets.user.dataminermanagertester.server.testconfig.XYExtractorTest; +import org.gcube.portlets.user.dataminermanagertester.shared.config.TestType; +***REMOVED*** + +/** + * + * @author Giancarlo Panichi + * + * + */ +public class TestBuilder { + + public DMTest build(TestType testType) throws ServiceException { + if (testType != null) { + switch (testType) { + case FeedForwardAnn: + return new FeedForwardAnnTest(); + case BionymLocal: + return new BionymLocalTest(); + case CMSY2: + return new CMSY2Test(); + case RasterDataPublisher: + return new RasterDataPublisherTest(); + case WebAppPublisher: + return new WebAppPublisherTest(); + case XYExtractor: + return new XYExtractorTest(); + case CSquareColumnCreator: + return new CSquareColumnCreatorTest(); + case DBScan: + return new DBScanTest(); + case ListDBName: + return new ListDBNameTest(); + case OpenMeshRecostructorGPU: + return new OpenMeshRecostructorGPUTest(); + case GenericCharts: + return new GenericChartsTest(); + case PolygonsToMap: + return new PolygonsToMapTest(); + default: + throw new ServiceException("Test not found"); +***REMOVED*** +***REMOVED*** else { + throw new ServiceException("Test not found"); +***REMOVED*** +***REMOVED*** +***REMOVED*** diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/testconfig/BionymLocalTest.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/testconfig/BionymLocalTest.java new file mode 100644 index 0000000..bb5338a --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/testconfig/BionymLocalTest.java @@ -0,0 +1,184 @@ +package org.gcube.portlets.user.dataminermanagertester.server.testconfig; + +import java.util.ArrayList; +***REMOVED*** + +import org.gcube.data.analysis.dataminermanagercl.shared.data.OutputData; +import org.gcube.data.analysis.dataminermanagercl.shared.data.output.MapResource; +import org.gcube.data.analysis.dataminermanagercl.shared.data.output.Resource; +import org.gcube.data.analysis.dataminermanagercl.shared.parameters.EnumParameter; +import org.gcube.data.analysis.dataminermanagercl.shared.parameters.ObjectParameter; +import org.gcube.data.analysis.dataminermanagercl.shared.parameters.Parameter; +***REMOVED*** +***REMOVED*** +***REMOVED*** + +/** + * + * @author Giancarlo Panichi + * + * + */ +public class BionymLocalTest implements DMTest { + private static Logger logger = LoggerFactory.getLogger(BionymLocalTest.class); + private static final String id = "org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.BIONYM_LOCAL"; + + @Override + public String getId() { + return id; +***REMOVED*** + + @Override + public void createRequest(Operator operator) { + logger.debug("Create Request"); + + ObjectParameter speciesAuthorName = new ObjectParameter(); + speciesAuthorName.setName("SpeciesAuthorName"); + speciesAuthorName.setValue("Gadus morhua (Linnaeus, 1758)"); + + EnumParameter taxaAuthorityFile = new EnumParameter(); + taxaAuthorityFile.setName("Taxa_Authority_File"); + taxaAuthorityFile.setValue("FISHBASE"); + + EnumParameter parserName = new EnumParameter(); + parserName.setName("Parser_Name"); + parserName.setValue("SIMPLE"); + + ObjectParameter activatePreparsingProcessing = new ObjectParameter(); + activatePreparsingProcessing.setName("Activate_Preparsing_Processing"); + activatePreparsingProcessing.setValue("true"); + + ObjectParameter useStemmedGenusAndSpecies = new ObjectParameter(); + useStemmedGenusAndSpecies.setName("Use_Stemmed_Genus_and_Species"); + useStemmedGenusAndSpecies.setValue("false"); + + EnumParameter accuracyVsSpeed = new EnumParameter(); + accuracyVsSpeed.setName("Accuracy_vs_Speed"); + accuracyVsSpeed.setValue("MAX_ACCURACY"); + + EnumParameter matcher1 = new EnumParameter(); + matcher1.setName("Matcher_1"); + matcher1.setValue("GSAy"); + + ObjectParameter threshold1 = new ObjectParameter(); + threshold1.setName("Threshold_1"); + threshold1.setValue("0.6"); + + ObjectParameter maxResults1 = new ObjectParameter(); + maxResults1.setName("MaxResults_1"); + maxResults1.setValue("10"); + + EnumParameter matcher2 = new EnumParameter(); + matcher2.setName("Matcher_2"); + matcher2.setValue("FUZZYMATCH"); + + ObjectParameter threshold2 = new ObjectParameter(); + threshold2.setName("Threshold_2"); + threshold2.setValue("0.6"); + + ObjectParameter maxResults2 = new ObjectParameter(); + maxResults2.setName("MaxResults_2"); + maxResults2.setValue("10"); + + EnumParameter matcher3 = new EnumParameter(); + matcher3.setName("Matcher_3"); + matcher3.setValue("LEVENSHTEIN"); + + ObjectParameter threshold3 = new ObjectParameter(); + threshold3.setName("Threshold_3"); + threshold3.setValue("0.4"); + + ObjectParameter maxResults3 = new ObjectParameter(); + maxResults3.setName("MaxResults_3"); + maxResults3.setValue("5"); + + EnumParameter matcher4 = new EnumParameter(); + matcher4.setName("Matcher_4"); + matcher4.setValue("TRIGRAM"); + + ObjectParameter threshold4 = new ObjectParameter(); + threshold4.setName("Threshold_4"); + threshold4.setValue("0.4"); + + ObjectParameter maxResults4 = new ObjectParameter(); + maxResults4.setName("MaxResults_4"); + maxResults4.setValue("5"); + + EnumParameter matcher5 = new EnumParameter(); + matcher5.setName("Matcher_5"); + matcher5.setValue("NONE"); + + ObjectParameter threshold5 = new ObjectParameter(); + threshold5.setName("Threshold_5"); + threshold5.setValue("0.2"); + + ObjectParameter maxResults5 = new ObjectParameter(); + maxResults5.setName("MaxResults_5"); + maxResults5.setValue("0"); + + List parameters = new ArrayList<>(); + parameters.add(speciesAuthorName); + parameters.add(taxaAuthorityFile); + parameters.add(parserName); + parameters.add(activatePreparsingProcessing); + parameters.add(useStemmedGenusAndSpecies); + parameters.add(accuracyVsSpeed); + parameters.add(matcher1); + parameters.add(threshold1); + parameters.add(maxResults1); + parameters.add(matcher2); + parameters.add(threshold2); + parameters.add(maxResults2); + parameters.add(matcher3); + parameters.add(threshold3); + parameters.add(maxResults3); + parameters.add(matcher4); + parameters.add(threshold4); + parameters.add(maxResults4); + parameters.add(matcher5); + parameters.add(threshold5); + parameters.add(maxResults5); + + logger.debug("Parameters set: " + parameters); + operator.setOperatorParameters(parameters); + +***REMOVED*** + + @Override + public String getResult(OutputData outputData) { + StringBuilder result = new StringBuilder(); + logger.debug("Output: " + outputData); + Resource resource = outputData.getResource(); + if (resource.isMap()) { + MapResource mapResource = (MapResource) resource; + for (String key : mapResource.getMap().keySet()) { + logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key)); + result.append("Entry: " + key + " = " + mapResource.getMap().get(key)); +***REMOVED*** + +***REMOVED*** else { + +***REMOVED*** + return result.toString(); +***REMOVED*** + + @Override + public boolean isValidResult(OutputData outputData) { + boolean valid; + logger.debug("Output: " + outputData); + Resource resource = outputData.getResource(); + if (resource.isMap()) { + MapResource mapResource = (MapResource) resource; + for (String key : mapResource.getMap().keySet()) { + logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key)); +***REMOVED*** + valid = true; + +***REMOVED*** else { + valid = false; +***REMOVED*** + return valid; + +***REMOVED*** + +***REMOVED*** diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/testconfig/CMSY2Test.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/testconfig/CMSY2Test.java new file mode 100644 index 0000000..40a04b2 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/testconfig/CMSY2Test.java @@ -0,0 +1,287 @@ +package org.gcube.portlets.user.dataminermanagertester.server.testconfig; + +import java.util.ArrayList; +***REMOVED*** + +import org.gcube.data.analysis.dataminermanagercl.shared.data.OutputData; +import org.gcube.data.analysis.dataminermanagercl.shared.data.output.MapResource; +import org.gcube.data.analysis.dataminermanagercl.shared.data.output.Resource; +import org.gcube.data.analysis.dataminermanagercl.shared.parameters.EnumParameter; +import org.gcube.data.analysis.dataminermanagercl.shared.parameters.FileParameter; +import org.gcube.data.analysis.dataminermanagercl.shared.parameters.ObjectParameter; +import org.gcube.data.analysis.dataminermanagercl.shared.parameters.Parameter; +***REMOVED*** +***REMOVED*** +***REMOVED*** + +/** + * + * @author Giancarlo Panichi + * + * + */ +public class CMSY2Test implements DMTest { + private static Logger logger = LoggerFactory.getLogger(CMSY2Test.class); + private static final String id = "org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.CMSY_2"; + + + @Override + public String getId() { + return id; +***REMOVED*** + + @Override + public void createRequest(Operator operator) { + logger.debug("Create Request"); + + FileParameter catchFile = new FileParameter(); + catchFile.setName("catch_file"); + catchFile + .setValue("http://data.d4science.org/R3BDYS91WkRBaVlUQ29LNWFERGs5TTA5U3o3Rmp5R2hHbWJQNStIS0N6Yz0"); + + ObjectParameter region = new ObjectParameter(); + region.setName("Region"); + region.setValue("Mediterranean"); + + ObjectParameter subRegion = new ObjectParameter(); + subRegion.setName("Subregion"); + subRegion.setValue("Adriatic Sea"); + + ObjectParameter stock = new ObjectParameter(); + stock.setName("Stock"); + stock.setValue("Athe_boy_AD"); + + ObjectParameter group = new ObjectParameter(); + group.setName("Group"); + group.setValue("Plankton feeders"); + + ObjectParameter name = new ObjectParameter(); + name.setName("Name"); + name.setValue("Sand smelt in Adriatic Sea"); + + ObjectParameter englishName = new ObjectParameter(); + englishName.setName("EnglishName"); + englishName.setValue("Big scale sand smelt"); + + ObjectParameter scientificName = new ObjectParameter(); + scientificName.setName("ScientificName"); + scientificName.setValue("Atherina boyeri"); + + ObjectParameter source = new ObjectParameter(); + source.setName("Source"); + source.setValue("-"); + + ObjectParameter minOfYear = new ObjectParameter(); + minOfYear.setName("MinOfYear"); + minOfYear.setValue("1970"); + + ObjectParameter maxOfYear = new ObjectParameter(); + maxOfYear.setName("MaxOfYear"); + maxOfYear.setValue("2014"); + + ObjectParameter startYear = new ObjectParameter(); + startYear.setName("StartYear"); + startYear.setValue("1970"); + + ObjectParameter endYear = new ObjectParameter(); + endYear.setName("EndYear"); + endYear.setValue("2014"); + + ObjectParameter flim = new ObjectParameter(); + flim.setName("Flim"); + flim.setValue("NA"); + + ObjectParameter fpa = new ObjectParameter(); + fpa.setName("Fpa"); + fpa.setValue("NA"); + + ObjectParameter blim = new ObjectParameter(); + blim.setName("Blim"); + blim.setValue("NA"); + + ObjectParameter bpa = new ObjectParameter(); + bpa.setName("Bpa"); + bpa.setValue("NA"); + + ObjectParameter bmsy = new ObjectParameter(); + bmsy.setName("Bmsy"); + bmsy.setValue("NA"); + + ObjectParameter fmsy = new ObjectParameter(); + fmsy.setName("FMSY"); + fmsy.setValue("NA"); + + ObjectParameter msy = new ObjectParameter(); + msy.setName("MSY"); + msy.setValue("NA"); + + ObjectParameter msybtrigger = new ObjectParameter(); + msybtrigger.setName("MSYBtrigger"); + msybtrigger.setValue("NA"); + + ObjectParameter b40 = new ObjectParameter(); + b40.setName("B40"); + b40.setValue("NA"); + + ObjectParameter m = new ObjectParameter(); + m.setName("M"); + m.setValue("NA"); + + ObjectParameter fofl = new ObjectParameter(); + fofl.setName("Fofl"); + fofl.setValue("NA"); + + ObjectParameter last_F = new ObjectParameter(); + last_F.setName("last_F"); + last_F.setValue("NA"); + + EnumParameter resilience=new EnumParameter(); + resilience.setName("Resilience"); + resilience.setValue("Medium"); + + ObjectParameter rLow = new ObjectParameter(); + rLow.setName("r.low"); + rLow.setValue("NA"); + + ObjectParameter rHi = new ObjectParameter(); + rHi.setName("r.hi"); + rHi.setValue("NA"); + + ObjectParameter stbLow = new ObjectParameter(); + stbLow.setName("stb.low"); + stbLow.setValue("0.2"); + + ObjectParameter stbHi = new ObjectParameter(); + stbHi.setName("stb.hi"); + stbHi.setValue("0.6"); + + ObjectParameter intYr = new ObjectParameter(); + intYr.setName("int.yr"); + intYr.setValue("NA"); + + ObjectParameter intbLow = new ObjectParameter(); + intbLow.setName("intb.low"); + intbLow.setValue("NA"); + + ObjectParameter intbHi = new ObjectParameter(); + intbHi.setName("intb.hi"); + intbHi.setValue("NA"); + + ObjectParameter endbLow = new ObjectParameter(); + endbLow.setName("endb.low"); + endbLow.setValue("0.01"); + + ObjectParameter endbHi = new ObjectParameter(); + endbHi.setName("endb.hi"); + endbHi.setValue("0.4"); + + ObjectParameter qStart = new ObjectParameter(); + qStart.setName("q.start"); + qStart.setValue("NA"); + + ObjectParameter qEnd = new ObjectParameter(); + qEnd.setName("q.end"); + qEnd.setValue("NA"); + + EnumParameter btype=new EnumParameter(); + btype.setName("btype"); + btype.setValue("None"); + + ObjectParameter forceCmsy = new ObjectParameter(); + forceCmsy.setName("force.cmsy"); + forceCmsy.setValue("false"); + + ObjectParameter comment = new ObjectParameter(); + comment.setName("Comment"); + comment.setValue("landings"); + + + List parameters = new ArrayList<>(); + parameters.add(catchFile); + parameters.add(region); + parameters.add(subRegion); + parameters.add(stock); + parameters.add(group); + parameters.add(name); + parameters.add(englishName); + parameters.add(scientificName); + parameters.add(source); + parameters.add(minOfYear); + parameters.add(maxOfYear); + parameters.add(startYear); + parameters.add(endYear); + parameters.add(flim); + parameters.add(fpa); + parameters.add(blim); + parameters.add(bpa); + parameters.add(bmsy); + parameters.add(fmsy); + parameters.add(msy); + parameters.add(msybtrigger); + parameters.add(b40); + parameters.add(m); + parameters.add(fofl); + parameters.add(last_F); + parameters.add(resilience); + parameters.add(rLow); + parameters.add(rHi); + parameters.add(stbLow); + parameters.add(stbHi); + parameters.add(intYr); + parameters.add(intbLow); + parameters.add(intbHi); + parameters.add(endbLow); + parameters.add(endbHi); + parameters.add(qStart); + parameters.add(qEnd); + parameters.add(btype); + parameters.add(forceCmsy); + parameters.add(comment); + + logger.debug("Parameters set: " + parameters); + operator.setOperatorParameters(parameters); + + +***REMOVED*** + + @Override + public String getResult(OutputData outputData) { + StringBuilder result=new StringBuilder(); + logger.debug("Output: " + outputData); + Resource resource = outputData.getResource(); + if (resource.isMap()) { + MapResource mapResource = (MapResource) resource; + for (String key : mapResource.getMap().keySet()) { + logger.debug("Entry: " + key + " = " + + mapResource.getMap().get(key)); + result.append("Entry: " + key + " = " + + mapResource.getMap().get(key)); +***REMOVED*** + +***REMOVED*** else { + +***REMOVED*** + return result.toString(); +***REMOVED*** + + @Override + public boolean isValidResult(OutputData outputData) { + boolean valid; + logger.debug("Output: " + outputData); + Resource resource = outputData.getResource(); + if (resource.isMap()) { + MapResource mapResource = (MapResource) resource; + for (String key : mapResource.getMap().keySet()) { + logger.debug("Entry: " + key + " = " + + mapResource.getMap().get(key)); +***REMOVED*** + valid=true; + +***REMOVED*** else { + valid=false; +***REMOVED*** + return valid; + +***REMOVED*** + +***REMOVED*** diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/testconfig/CSquareColumnCreatorTest.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/testconfig/CSquareColumnCreatorTest.java new file mode 100644 index 0000000..0b48628 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/testconfig/CSquareColumnCreatorTest.java @@ -0,0 +1,107 @@ +package org.gcube.portlets.user.dataminermanagertester.server.testconfig; + +import java.util.ArrayList; +***REMOVED*** + +import org.gcube.data.analysis.dataminermanagercl.shared.data.OutputData; +import org.gcube.data.analysis.dataminermanagercl.shared.data.output.MapResource; +import org.gcube.data.analysis.dataminermanagercl.shared.data.output.Resource; +import org.gcube.data.analysis.dataminermanagercl.shared.parameters.ObjectParameter; +import org.gcube.data.analysis.dataminermanagercl.shared.parameters.Parameter; +import org.gcube.data.analysis.dataminermanagercl.shared.parameters.TabularParameter; +***REMOVED*** +***REMOVED*** +***REMOVED*** + +/** + * + * @author Giancarlo Panichi + * + * + */ +public class CSquareColumnCreatorTest implements DMTest { + private static Logger logger = LoggerFactory.getLogger(CSquareColumnCreatorTest.class); + private static final String id = "org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.CSQUARE_COLUMN_CREATOR"; + + @Override + public String getId() { + return id; +***REMOVED*** + + @Override + public void createRequest(Operator operator) { + logger.debug("Create Request"); + + TabularParameter occurencePointsTable = new TabularParameter(); + occurencePointsTable.setName("InputTable"); + occurencePointsTable + .setValue("http://goo.gl/sdlD5a"); + + ObjectParameter longitude = new ObjectParameter(); + longitude.setName("Longitude_Column"); + longitude.setValue("decimallongitude"); + + ObjectParameter latitude = new ObjectParameter(); + latitude.setName("Latitude_Column"); + latitude.setValue("decimallatitude"); + + ObjectParameter cSquareResolution = new ObjectParameter(); + cSquareResolution.setName("CSquare_Resolution"); + cSquareResolution.setValue("0.1"); + + ObjectParameter outputTableName = new ObjectParameter(); + outputTableName.setName("OutputTableName"); + outputTableName.setValue("wps_csquare_column"); + + + List parameters = new ArrayList<>(); + parameters.add(occurencePointsTable); + parameters.add(longitude); + parameters.add(latitude); + parameters.add(cSquareResolution); + parameters.add(outputTableName); + + + logger.debug("Parameters set: " + parameters); + operator.setOperatorParameters(parameters); + +***REMOVED*** + + @Override + public String getResult(OutputData outputData) { + StringBuilder result = new StringBuilder(); + logger.debug("Output: " + outputData); + Resource resource = outputData.getResource(); + if (resource.isMap()) { + MapResource mapResource = (MapResource) resource; + for (String key : mapResource.getMap().keySet()) { + logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key)); + result.append("Entry: " + key + " = " + mapResource.getMap().get(key)); +***REMOVED*** + +***REMOVED*** else { + +***REMOVED*** + return result.toString(); +***REMOVED*** + + @Override + public boolean isValidResult(OutputData outputData) { + boolean valid; + logger.debug("Output: " + outputData); + Resource resource = outputData.getResource(); + if (resource.isMap()) { + MapResource mapResource = (MapResource) resource; + for (String key : mapResource.getMap().keySet()) { + logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key)); +***REMOVED*** + valid = true; + +***REMOVED*** else { + valid = false; +***REMOVED*** + return valid; + +***REMOVED*** + +***REMOVED*** diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/testconfig/DBScanTest.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/testconfig/DBScanTest.java new file mode 100644 index 0000000..d9cf137 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/testconfig/DBScanTest.java @@ -0,0 +1,176 @@ +package org.gcube.portlets.user.dataminermanagertester.server.testconfig; + +import java.net.HttpURLConnection; +import java.net.URL; +import java.util.ArrayList; +***REMOVED*** +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import org.gcube.data.analysis.dataminermanagercl.shared.data.OutputData; +import org.gcube.data.analysis.dataminermanagercl.shared.data.output.FileResource; +import org.gcube.data.analysis.dataminermanagercl.shared.data.output.ImageResource; +import org.gcube.data.analysis.dataminermanagercl.shared.data.output.MapResource; +import org.gcube.data.analysis.dataminermanagercl.shared.data.output.Resource; +import org.gcube.data.analysis.dataminermanagercl.shared.data.output.TableResource; +import org.gcube.data.analysis.dataminermanagercl.shared.parameters.ColumnListParameter; +import org.gcube.data.analysis.dataminermanagercl.shared.parameters.ObjectParameter; +import org.gcube.data.analysis.dataminermanagercl.shared.parameters.Parameter; +import org.gcube.data.analysis.dataminermanagercl.shared.parameters.TabularParameter; +***REMOVED*** +***REMOVED*** +***REMOVED*** + +/** + * + * @author Giancarlo Panichi + * + * + */ +public class DBScanTest implements DMTest { + private static Logger logger = LoggerFactory.getLogger(DBScanTest.class); + private static final String id = "org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.clusterers.DBSCAN"; + + @Override + public String getId() { + return id; +***REMOVED*** + + @Override + public void createRequest(Operator operator) { + logger.debug("Create Request"); + + TabularParameter occurencePointsTable = new TabularParameter(); + occurencePointsTable.setName("OccurrencePointsTable"); + occurencePointsTable + .setValue("http://data.d4science.org/YmRKWDU4Y0RJT2hSLzcybU4zRmJoTEg2YTBMWlRZVUpHbWJQNStIS0N6Yz0"); + + ColumnListParameter columnListParameter = new ColumnListParameter(); + columnListParameter.setName("FeaturesColumnNames"); + columnListParameter.setValue("depthmean|sstmnmax|salinitymin"); + + ObjectParameter occurencePointsClusterLabel = new ObjectParameter(); + occurencePointsClusterLabel.setName("OccurrencePointsClusterLabel"); + occurencePointsClusterLabel.setValue("Test"); + + ObjectParameter epsilon = new ObjectParameter(); + epsilon.setName("epsilon"); + epsilon.setValue("10"); + + ObjectParameter minPoints = new ObjectParameter(); + minPoints.setName("min_points"); + minPoints.setValue("1"); + + List parameters = new ArrayList<>(); + parameters.add(occurencePointsTable); + parameters.add(columnListParameter); + parameters.add(occurencePointsClusterLabel); + parameters.add(epsilon); + parameters.add(minPoints); + + logger.debug("Parameters set: " + parameters); + operator.setOperatorParameters(parameters); + +***REMOVED*** + + @Override + public String getResult(OutputData outputData) { + StringBuilder result = new StringBuilder(); + logger.debug("Output: " + outputData); + Resource resource = outputData.getResource(); + if (resource.isMap()) { + MapResource mapResource = (MapResource) resource; + for (String key : mapResource.getMap().keySet()) { + Resource res = mapResource.getMap().get(key); + switch (res.getResourceType()) { + case FILE: + FileResource fileResource = (FileResource) res; + String fileName = retrieveFileName(fileResource.getUrl()); + logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key) + ", FileName=" + fileName); + result.append("Entry: " + key + " = " + mapResource.getMap().get(key) + ", FileName=" + fileName); + break; + case IMAGE: + ImageResource imageResource = (ImageResource) res; + String imageName = retrieveFileName(imageResource.getLink()); + logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key) + ", ImageName=" + imageName); + result.append("Entry: " + key + " = " + mapResource.getMap().get(key) + ", ImageName=" + imageName); + break; + case MAP: + logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key)); + result.append("Entry: " + key + " = " + mapResource.getMap().get(key)); + + break; + case OBJECT: + logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key)); + result.append("Entry: " + key + " = " + mapResource.getMap().get(key)); + break; + case TABULAR: + TableResource tableResource = (TableResource) res; + String tableName = retrieveFileName(tableResource.getResourceId()); + logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key) + ", TableName=" + tableName); + result.append("Entry: " + key + " = " + mapResource.getMap().get(key) + ", TableName=" + tableName); + break; + default: + logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key)); + result.append("Entry: " + key + " = " + mapResource.getMap().get(key)); + break; +***REMOVED*** + +***REMOVED*** + +***REMOVED*** else { + +***REMOVED*** + return result.toString(); + +***REMOVED*** + + @Override + public boolean isValidResult(OutputData outputData) { + boolean valid; + logger.debug("Output: " + outputData); + Resource resource = outputData.getResource(); + if (resource.isMap()) { + MapResource mapResource = (MapResource) resource; + for (String key : mapResource.getMap().keySet()) { + logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key)); +***REMOVED*** + valid = true; + +***REMOVED*** else { + valid = false; +***REMOVED*** + return valid; + +***REMOVED*** + + private String retrieveFileName(String url) { + String fileName = "output"; + +***REMOVED*** + + URL urlObj; + urlObj = new URL(url); + + HttpURLConnection connection = (HttpURLConnection) urlObj.openConnection(); + connection.setRequestMethod("GET"); + String contentDisposition = connection.getHeaderField("Content-Disposition"); + Pattern regex = Pattern.compile("(?<=filename=\").*?(?=\")"); + Matcher regexMatcher = regex.matcher(contentDisposition); + if (regexMatcher.find()) { + fileName = regexMatcher.group(); +***REMOVED*** + + if (fileName == null || fileName.isEmpty()) { + fileName = "output"; +***REMOVED*** + + return fileName; +***REMOVED*** + logger.error("Error retrieving file name: " + e.getLocalizedMessage(), e); + return fileName; +***REMOVED*** + +***REMOVED*** + +***REMOVED*** diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/testconfig/DMTest.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/testconfig/DMTest.java new file mode 100644 index 0000000..5948918 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/testconfig/DMTest.java @@ -0,0 +1,22 @@ +package org.gcube.portlets.user.dataminermanagertester.server.testconfig; + +import org.gcube.data.analysis.dataminermanagercl.shared.data.OutputData; +***REMOVED*** + +/** + * + * @author Giancarlo Panichi + * + * + */ +public interface DMTest { + + public String getId(); + + public void createRequest(Operator operator); + + public boolean isValidResult(OutputData outputData); + + public String getResult(OutputData outputData); + +***REMOVED*** diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/testconfig/FeedForwardAnnTest.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/testconfig/FeedForwardAnnTest.java new file mode 100644 index 0000000..b154aaa --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/testconfig/FeedForwardAnnTest.java @@ -0,0 +1,122 @@ +package org.gcube.portlets.user.dataminermanagertester.server.testconfig; + +import java.util.ArrayList; +***REMOVED*** + +import org.gcube.data.analysis.dataminermanagercl.shared.data.OutputData; +import org.gcube.data.analysis.dataminermanagercl.shared.data.output.MapResource; +import org.gcube.data.analysis.dataminermanagercl.shared.data.output.Resource; +import org.gcube.data.analysis.dataminermanagercl.shared.parameters.ColumnListParameter; +import org.gcube.data.analysis.dataminermanagercl.shared.parameters.ColumnParameter; +import org.gcube.data.analysis.dataminermanagercl.shared.parameters.ListParameter; +import org.gcube.data.analysis.dataminermanagercl.shared.parameters.ObjectParameter; +import org.gcube.data.analysis.dataminermanagercl.shared.parameters.Parameter; +import org.gcube.data.analysis.dataminermanagercl.shared.parameters.TabularParameter; +***REMOVED*** +***REMOVED*** +***REMOVED*** + +/** + * + * @author Giancarlo Panichi + * + * + */ +public class FeedForwardAnnTest implements DMTest { + private static Logger logger = LoggerFactory.getLogger(FeedForwardAnnTest.class); + private static final String id = "org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.modellers.FEED_FORWARD_ANN"; + + @Override + public String getId() { + return id; +***REMOVED*** + + @Override + public void createRequest(Operator operator) { + TabularParameter trainingDataSet = new TabularParameter(); + trainingDataSet.setName("TrainingDataSet"); + trainingDataSet.setValue("http://data.d4science.org/K0ZoUlVDNW1hR0hDZWZucS9UQkJmUVRTeWRuRVBGUC9HbWJQNStIS0N6Yz0"); + + ColumnListParameter trainingColumns = new ColumnListParameter(); + trainingColumns.setName("TrainingColumns"); + trainingColumns.setValue("depthmin|depthmax|depthmean|depthsd"); + + ColumnParameter targetColumn = new ColumnParameter(); + targetColumn.setName("TargetColumn"); + targetColumn.setValue("sstanmean"); + + ListParameter layersNeurons = new ListParameter(); + layersNeurons.setName("LayersNeurons"); + layersNeurons.setValue("20"); + + ObjectParameter reference = new ObjectParameter(); + reference.setName("Reference"); + reference.setValue("1"); + + ObjectParameter learningThreshold = new ObjectParameter(); + learningThreshold.setName("LearningThreshold"); + learningThreshold.setValue("0.0001"); + + ObjectParameter maxIterations = new ObjectParameter(); + maxIterations.setName("MaxIterations"); + maxIterations.setValue("10"); + + ObjectParameter modelName = new ObjectParameter(); + modelName.setName("ModelName"); + modelName.setValue("trained_network"); + + List parameters = new ArrayList<>(); + parameters.add(trainingDataSet); + parameters.add(trainingColumns); + parameters.add(targetColumn); + parameters.add(layersNeurons); + parameters.add(reference); + parameters.add(learningThreshold); + parameters.add(maxIterations); + parameters.add(modelName); + + operator.setOperatorParameters(parameters); + +***REMOVED*** + + @Override + public String getResult(OutputData outputData) { + StringBuilder result=new StringBuilder(); + logger.debug("Output: " + outputData); + Resource resource = outputData.getResource(); + if (resource.isMap()) { + MapResource mapResource = (MapResource) resource; + for (String key : mapResource.getMap().keySet()) { + logger.debug("Entry: " + key + " = " + + mapResource.getMap().get(key)); + result.append("Entry: " + key + " = " + + mapResource.getMap().get(key)); +***REMOVED*** + +***REMOVED*** else { + +***REMOVED*** + return result.toString(); +***REMOVED*** + + @Override + public boolean isValidResult(OutputData outputData) { + boolean valid; + logger.debug("Output: " + outputData); + Resource resource = outputData.getResource(); + if (resource.isMap()) { + MapResource mapResource = (MapResource) resource; + for (String key : mapResource.getMap().keySet()) { + logger.debug("Entry: " + key + " = " + + mapResource.getMap().get(key)); +***REMOVED*** + valid=true; + +***REMOVED*** else { + valid=false; +***REMOVED*** + return valid; + +***REMOVED*** + +***REMOVED*** diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/testconfig/GenericChartsTest.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/testconfig/GenericChartsTest.java new file mode 100644 index 0000000..b52f072 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/testconfig/GenericChartsTest.java @@ -0,0 +1,171 @@ +package org.gcube.portlets.user.dataminermanagertester.server.testconfig; + +import java.net.HttpURLConnection; +import java.net.URL; +import java.util.ArrayList; +***REMOVED*** +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import org.gcube.data.analysis.dataminermanagercl.shared.data.OutputData; +import org.gcube.data.analysis.dataminermanagercl.shared.data.output.FileResource; +import org.gcube.data.analysis.dataminermanagercl.shared.data.output.ImageResource; +import org.gcube.data.analysis.dataminermanagercl.shared.data.output.MapResource; +import org.gcube.data.analysis.dataminermanagercl.shared.data.output.Resource; +import org.gcube.data.analysis.dataminermanagercl.shared.data.output.TableResource; +import org.gcube.data.analysis.dataminermanagercl.shared.parameters.ColumnListParameter; +import org.gcube.data.analysis.dataminermanagercl.shared.parameters.ObjectParameter; +import org.gcube.data.analysis.dataminermanagercl.shared.parameters.Parameter; +import org.gcube.data.analysis.dataminermanagercl.shared.parameters.TabularParameter; +***REMOVED*** +***REMOVED*** +***REMOVED*** + +/** + * + * @author Giancarlo Panichi + * + * + */ +public class GenericChartsTest implements DMTest { + private static Logger logger = LoggerFactory.getLogger(GenericChartsTest.class); + private static final String id = "org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.GENERIC_CHARTS"; + + @Override + public String getId() { + return id; +***REMOVED*** + + @Override + public void createRequest(Operator operator) { + logger.debug("Create Request"); + + TabularParameter inputTableParameter = new TabularParameter(); + inputTableParameter.setName("InputTable"); + inputTableParameter.setValue( + "https://data.d4science.org/shub/E_N0VSZmRHUkJQckdPOS9RR1NvajdvbUhMTHlRV2FBdGhzNTBLNEZWa21LbG9oV0hFMDUwTHNtZFhGSmh0SkRneQ=="); + + ObjectParameter topElementsNumberParameter = new ObjectParameter(); + topElementsNumberParameter.setName("TopElementsNumber"); + topElementsNumberParameter.setValue("10"); + + ColumnListParameter attributesParameter = new ColumnListParameter(); + attributesParameter.setName("Attributes"); + attributesParameter.setValue("x|y"); + + ColumnListParameter quantitiesParameter = new ColumnListParameter(); + quantitiesParameter.setName("Quantities"); + quantitiesParameter.setValue("fvalue"); + + List parameters = new ArrayList<>(); + parameters.add(inputTableParameter); + parameters.add(topElementsNumberParameter); + parameters.add(attributesParameter); + parameters.add(quantitiesParameter); + + logger.debug("Parameters set: " + parameters); + operator.setOperatorParameters(parameters); + +***REMOVED*** + + @Override + public String getResult(OutputData outputData) { + StringBuilder result = new StringBuilder(); + logger.debug("Output: " + outputData); + Resource resource = outputData.getResource(); + if (resource.isMap()) { + MapResource mapResource = (MapResource) resource; + for (String key : mapResource.getMap().keySet()) { + Resource res = mapResource.getMap().get(key); + switch (res.getResourceType()) { + case FILE: + FileResource fileResource = (FileResource) res; + String fileName = retrieveFileName(fileResource.getUrl()); + logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key) + ", FileName=" + fileName); + result.append("Entry: " + key + " = " + mapResource.getMap().get(key) + ", FileName=" + fileName); + break; + case IMAGE: + ImageResource imageResource = (ImageResource) res; + String imageName = retrieveFileName(imageResource.getLink()); + logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key) + ", ImageName=" + imageName); + result.append("Entry: " + key + " = " + mapResource.getMap().get(key) + ", ImageName=" + imageName); + break; + case MAP: + logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key)); + result.append("Entry: " + key + " = " + mapResource.getMap().get(key)); + + break; + case OBJECT: + logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key)); + result.append("Entry: " + key + " = " + mapResource.getMap().get(key)); + break; + case TABULAR: + TableResource tableResource = (TableResource) res; + String tableName = retrieveFileName(tableResource.getResourceId()); + logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key) + ", TableName=" + tableName); + result.append("Entry: " + key + " = " + mapResource.getMap().get(key) + ", TableName=" + tableName); + break; + default: + logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key)); + result.append("Entry: " + key + " = " + mapResource.getMap().get(key)); + break; +***REMOVED*** + +***REMOVED*** + +***REMOVED*** else { + +***REMOVED*** + return result.toString(); + +***REMOVED*** + + @Override + public boolean isValidResult(OutputData outputData) { + boolean valid; + logger.debug("Output: " + outputData); + Resource resource = outputData.getResource(); + if (resource.isMap()) { + MapResource mapResource = (MapResource) resource; + for (String key : mapResource.getMap().keySet()) { + logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key)); +***REMOVED*** + valid = true; + +***REMOVED*** else { + valid = false; +***REMOVED*** + return valid; + +***REMOVED*** + + private String retrieveFileName(String url) { + String fileName = "output"; + +***REMOVED*** + + URL urlObj; + urlObj = new URL(url); + + HttpURLConnection connection = (HttpURLConnection) urlObj.openConnection(); + connection.setRequestMethod("GET"); + String contentDisposition = connection.getHeaderField("Content-Disposition"); + Pattern regex = Pattern.compile("(?<=filename=\").*?(?=\")"); + Matcher regexMatcher = regex.matcher(contentDisposition); + if (regexMatcher.find()) { + fileName = regexMatcher.group(); +***REMOVED*** + + if (fileName == null || fileName.isEmpty()) { + fileName = "output"; +***REMOVED*** + + return fileName; +***REMOVED*** + logger.error("Error retrieving file name: " + e.getLocalizedMessage(), e); + return fileName; +***REMOVED*** + +***REMOVED*** + +***REMOVED*** diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/testconfig/ListDBNameTest.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/testconfig/ListDBNameTest.java new file mode 100644 index 0000000..f1e5415 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/testconfig/ListDBNameTest.java @@ -0,0 +1,88 @@ +package org.gcube.portlets.user.dataminermanagertester.server.testconfig; + +import java.util.ArrayList; +***REMOVED*** + +import org.gcube.data.analysis.dataminermanagercl.shared.data.OutputData; +import org.gcube.data.analysis.dataminermanagercl.shared.data.output.MapResource; +import org.gcube.data.analysis.dataminermanagercl.shared.data.output.Resource; +import org.gcube.data.analysis.dataminermanagercl.shared.parameters.ObjectParameter; +import org.gcube.data.analysis.dataminermanagercl.shared.parameters.Parameter; +***REMOVED*** +***REMOVED*** +***REMOVED*** + +/** + * + * @author Giancarlo Panichi + * + * + */ +public class ListDBNameTest implements DMTest { + private static Logger logger = LoggerFactory.getLogger(ListDBNameTest.class); + private static final String id = "org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.LISTDBNAMES"; + + + @Override + public String getId() { + return id; +***REMOVED*** + + @Override + public void createRequest(Operator operator) { + logger.debug("Create Request"); + + ObjectParameter maxNumber = new ObjectParameter(); + maxNumber.setName("MaxNumber"); + maxNumber.setValue("-1"); + + List parameters = new ArrayList<>(); + + parameters.add(maxNumber); + + logger.debug("Parameters set: " + parameters); + operator.setOperatorParameters(parameters); + +***REMOVED*** + + @Override + public String getResult(OutputData outputData) { + StringBuilder result=new StringBuilder(); + logger.debug("Output: " + outputData); + Resource resource = outputData.getResource(); + if (resource.isMap()) { + MapResource mapResource = (MapResource) resource; + for (String key : mapResource.getMap().keySet()) { + logger.debug("Entry: " + key + " = " + + mapResource.getMap().get(key)); + result.append("Entry: " + key + " = " + + mapResource.getMap().get(key)); +***REMOVED*** + +***REMOVED*** else { + +***REMOVED*** + return result.toString(); +***REMOVED*** + + @Override + public boolean isValidResult(OutputData outputData) { + boolean valid; + logger.debug("Output: " + outputData); + Resource resource = outputData.getResource(); + if (resource.isMap()) { + MapResource mapResource = (MapResource) resource; + for (String key : mapResource.getMap().keySet()) { + logger.debug("Entry: " + key + " = " + + mapResource.getMap().get(key)); +***REMOVED*** + valid=true; + +***REMOVED*** else { + valid=false; +***REMOVED*** + return valid; + +***REMOVED*** + +***REMOVED*** diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/testconfig/OpenMeshRecostructorGPUTest.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/testconfig/OpenMeshRecostructorGPUTest.java new file mode 100644 index 0000000..34b95d6 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/testconfig/OpenMeshRecostructorGPUTest.java @@ -0,0 +1,84 @@ +package org.gcube.portlets.user.dataminermanagertester.server.testconfig; + +import java.util.ArrayList; +***REMOVED*** + +import org.gcube.data.analysis.dataminermanagercl.shared.data.OutputData; +import org.gcube.data.analysis.dataminermanagercl.shared.data.output.MapResource; +import org.gcube.data.analysis.dataminermanagercl.shared.data.output.Resource; +import org.gcube.data.analysis.dataminermanagercl.shared.parameters.FileParameter; +import org.gcube.data.analysis.dataminermanagercl.shared.parameters.Parameter; +***REMOVED*** +***REMOVED*** +***REMOVED*** + +/** + * + * @author Giancarlo Panichi + * + * + */ +public class OpenMeshRecostructorGPUTest implements DMTest { + private static Logger logger = LoggerFactory.getLogger(OpenMeshRecostructorGPUTest.class); + private static final String id = "org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.OPEN_MESH_RECONSTRUCTOR_GPU"; + + @Override + public String getId() { + return id; +***REMOVED*** + + @Override + public void createRequest(Operator operator) { + logger.debug("Create Request"); + + FileParameter inputZipFile = new FileParameter(); + inputZipFile.setName("InputZipFile"); + inputZipFile + .setValue("https://data.d4science.org/shub/E_ZWNlZW1VbzI1NGdyRTRrbWtGZXcvdU52cG1RVnd2UDZrdGp1cDFodmZWRzFtQVlydVNHV0NuVis1VVRFT0FWZg=="); + + List parameters = new ArrayList<>(); + parameters.add(inputZipFile); + + logger.debug("Parameters set: " + parameters); + operator.setOperatorParameters(parameters); + +***REMOVED*** + + @Override + public String getResult(OutputData outputData) { + StringBuilder result = new StringBuilder(); + logger.debug("Output: " + outputData); + Resource resource = outputData.getResource(); + if (resource.isMap()) { + MapResource mapResource = (MapResource) resource; + for (String key : mapResource.getMap().keySet()) { + logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key)); + result.append("Entry: " + key + " = " + mapResource.getMap().get(key)); +***REMOVED*** + +***REMOVED*** else { + +***REMOVED*** + return result.toString(); +***REMOVED*** + + @Override + public boolean isValidResult(OutputData outputData) { + boolean valid; + logger.debug("Output: " + outputData); + Resource resource = outputData.getResource(); + if (resource.isMap()) { + MapResource mapResource = (MapResource) resource; + for (String key : mapResource.getMap().keySet()) { + logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key)); +***REMOVED*** + valid = true; + +***REMOVED*** else { + valid = false; +***REMOVED*** + return valid; + +***REMOVED*** + +***REMOVED*** diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/testconfig/PolygonsToMapTest.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/testconfig/PolygonsToMapTest.java new file mode 100644 index 0000000..8f26096 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/testconfig/PolygonsToMapTest.java @@ -0,0 +1,187 @@ +package org.gcube.portlets.user.dataminermanagertester.server.testconfig; + +import java.net.HttpURLConnection; +import java.net.URL; +import java.util.ArrayList; +***REMOVED*** +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import org.gcube.data.analysis.dataminermanagercl.shared.data.OutputData; +import org.gcube.data.analysis.dataminermanagercl.shared.data.output.FileResource; +import org.gcube.data.analysis.dataminermanagercl.shared.data.output.ImageResource; +import org.gcube.data.analysis.dataminermanagercl.shared.data.output.MapResource; +import org.gcube.data.analysis.dataminermanagercl.shared.data.output.Resource; +import org.gcube.data.analysis.dataminermanagercl.shared.data.output.TableResource; +import org.gcube.data.analysis.dataminermanagercl.shared.parameters.ColumnListParameter; +import org.gcube.data.analysis.dataminermanagercl.shared.parameters.EnumParameter; +import org.gcube.data.analysis.dataminermanagercl.shared.parameters.ObjectParameter; +import org.gcube.data.analysis.dataminermanagercl.shared.parameters.Parameter; +import org.gcube.data.analysis.dataminermanagercl.shared.parameters.TabularParameter; +***REMOVED*** +***REMOVED*** +***REMOVED*** + +/** + * + * @author Giancarlo Panichi + * + * + */ +public class PolygonsToMapTest implements DMTest { + private static Logger logger = LoggerFactory.getLogger(PolygonsToMapTest.class); + private static final String id = "org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.POLYGONS_TO_MAP"; + + @Override + public String getId() { + return id; +***REMOVED*** + + @Override + public void createRequest(Operator operator) { + logger.debug("Create Request"); + + EnumParameter publicationLevelParameter = new EnumParameter(); + publicationLevelParameter.setName("PublicationLevel"); + publicationLevelParameter.setValue("PRIVATE"); + + ObjectParameter mapNameParameter = new ObjectParameter(); + mapNameParameter.setName("MapName"); + mapNameParameter.setValue("Example polygon map generated for Test"); + + TabularParameter inputTableParameter = new TabularParameter(); + inputTableParameter.setName("InputTable"); + inputTableParameter.setValue( + "https://data.d4science.org/shub/E_TWZKc3hKejZYREZYSWZlVnBsdzlEbkNhdXIxSHUvYlpNTkxUSGx2cXV3TzVHdGJ0M1RQZEpWUFkyc3haNW04Yw=="); + + ColumnListParameter xDimensionParameter = new ColumnListParameter(); + xDimensionParameter.setName("xDimension"); + xDimensionParameter.setValue("centerlong"); + + ColumnListParameter yDimensionParameter = new ColumnListParameter(); + yDimensionParameter.setName("yDimension"); + yDimensionParameter.setValue("centerlat"); + + ColumnListParameter infoParameter = new ColumnListParameter(); + infoParameter.setName("Info"); + infoParameter.setValue("faoaream"); + + ObjectParameter resolutionParameter=new ObjectParameter(); + resolutionParameter.setName("Resolution"); + resolutionParameter.setValue("0.5"); + + List parameters = new ArrayList<>(); + parameters.add(publicationLevelParameter); + parameters.add(mapNameParameter); + parameters.add(inputTableParameter); + parameters.add(xDimensionParameter); + parameters.add(yDimensionParameter); + parameters.add(infoParameter); + parameters.add(resolutionParameter); + + logger.debug("Parameters set: " + parameters); + operator.setOperatorParameters(parameters); + +***REMOVED*** + + @Override + public String getResult(OutputData outputData) { + StringBuilder result = new StringBuilder(); + logger.debug("Output: " + outputData); + Resource resource = outputData.getResource(); + if (resource.isMap()) { + MapResource mapResource = (MapResource) resource; + for (String key : mapResource.getMap().keySet()) { + Resource res = mapResource.getMap().get(key); + switch (res.getResourceType()) { + case FILE: + FileResource fileResource = (FileResource) res; + String fileName = retrieveFileName(fileResource.getUrl()); + logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key) + ", FileName=" + fileName); + result.append("Entry: " + key + " = " + mapResource.getMap().get(key) + ", FileName=" + fileName); + break; + case IMAGE: + ImageResource imageResource = (ImageResource) res; + String imageName = retrieveFileName(imageResource.getLink()); + logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key) + ", ImageName=" + imageName); + result.append("Entry: " + key + " = " + mapResource.getMap().get(key) + ", ImageName=" + imageName); + break; + case MAP: + logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key)); + result.append("Entry: " + key + " = " + mapResource.getMap().get(key)); + + break; + case OBJECT: + logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key)); + result.append("Entry: " + key + " = " + mapResource.getMap().get(key)); + break; + case TABULAR: + TableResource tableResource = (TableResource) res; + String tableName = retrieveFileName(tableResource.getResourceId()); + logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key) + ", TableName=" + tableName); + result.append("Entry: " + key + " = " + mapResource.getMap().get(key) + ", TableName=" + tableName); + break; + default: + logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key)); + result.append("Entry: " + key + " = " + mapResource.getMap().get(key)); + break; +***REMOVED*** + +***REMOVED*** + +***REMOVED*** else { + +***REMOVED*** + return result.toString(); + +***REMOVED*** + + @Override + public boolean isValidResult(OutputData outputData) { + boolean valid; + logger.debug("Output: " + outputData); + Resource resource = outputData.getResource(); + if (resource.isMap()) { + MapResource mapResource = (MapResource) resource; + for (String key : mapResource.getMap().keySet()) { + logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key)); +***REMOVED*** + valid = true; + +***REMOVED*** else { + valid = false; +***REMOVED*** + return valid; + +***REMOVED*** + + private String retrieveFileName(String url) { + String fileName = "output"; + +***REMOVED*** + + URL urlObj; + urlObj = new URL(url); + + HttpURLConnection connection = (HttpURLConnection) urlObj.openConnection(); + connection.setRequestMethod("GET"); + String contentDisposition = connection.getHeaderField("Content-Disposition"); + Pattern regex = Pattern.compile("(?<=filename=\").*?(?=\")"); + Matcher regexMatcher = regex.matcher(contentDisposition); + if (regexMatcher.find()) { + fileName = regexMatcher.group(); +***REMOVED*** + + if (fileName == null || fileName.isEmpty()) { + fileName = "output"; +***REMOVED*** + + return fileName; +***REMOVED*** + logger.error("Error retrieving file name: " + e.getLocalizedMessage(), e); + return fileName; +***REMOVED*** + +***REMOVED*** + +***REMOVED*** diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/testconfig/RasterDataPublisherTest.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/testconfig/RasterDataPublisherTest.java new file mode 100644 index 0000000..d64a302 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/testconfig/RasterDataPublisherTest.java @@ -0,0 +1,127 @@ +package org.gcube.portlets.user.dataminermanagertester.server.testconfig; + +import java.util.ArrayList; +***REMOVED*** + +import org.gcube.data.analysis.dataminermanagercl.shared.data.OutputData; +import org.gcube.data.analysis.dataminermanagercl.shared.data.output.MapResource; +import org.gcube.data.analysis.dataminermanagercl.shared.data.output.Resource; +import org.gcube.data.analysis.dataminermanagercl.shared.parameters.FileParameter; +import org.gcube.data.analysis.dataminermanagercl.shared.parameters.ObjectParameter; +import org.gcube.data.analysis.dataminermanagercl.shared.parameters.Parameter; +***REMOVED*** +***REMOVED*** +***REMOVED*** + +/** + * + * @author Giancarlo Panichi + * + * + */ +public class RasterDataPublisherTest implements DMTest { + private static Logger logger = LoggerFactory.getLogger(RasterDataPublisherTest.class); + private static final String id = "org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.RASTER_DATA_PUBLISHER"; + + + @Override + public String getId() { + return id; +***REMOVED*** + + + + @Override + public void createRequest(Operator operator) { + logger.debug("Create Request"); + + ObjectParameter publicationLevel = new ObjectParameter(); + publicationLevel.setName("PublicationLevel"); + publicationLevel.setValue("PUBLIC"); + + ObjectParameter datasetAbstract = new ObjectParameter(); + datasetAbstract.setName("DatasetAbstract"); + datasetAbstract.setValue("Abstract"); + + ObjectParameter datasetTitle = new ObjectParameter(); + datasetTitle.setName("DatasetTitle"); + datasetTitle.setValue("Generic Raster Layer Test3"); + + FileParameter rasterFile=new FileParameter(); + rasterFile.setName("RasterFile"); + rasterFile.setValue("http://data.d4science.org/QTVNbXp5cmI0MG52TTE0K2paNzhXZWlCTHhweU8rUCtHbWJQNStIS0N6Yz0"); + + ObjectParameter innerLayerName = new ObjectParameter(); + innerLayerName.setName("InnerLayerName"); + innerLayerName.setValue("analyzed_field"); + + ObjectParameter fileNameOnInfra = new ObjectParameter(); + fileNameOnInfra.setName("FileNameOnInfra"); + fileNameOnInfra.setValue("raster-1465493226242.nc"); + + ObjectParameter topics = new ObjectParameter(); + topics.setName("Topics"); + topics.setValue("analyzed_field"); + + ObjectParameter spatialResolution = new ObjectParameter(); + spatialResolution.setName("SpatialResolution"); + spatialResolution.setValue("-1"); + + + List parameters = new ArrayList<>(); + + parameters.add(publicationLevel); + parameters.add(datasetAbstract); + parameters.add(datasetTitle); + parameters.add(rasterFile); + parameters.add(innerLayerName); + parameters.add(fileNameOnInfra); + parameters.add(topics); + parameters.add(spatialResolution); + + logger.debug("Parameters set: " + parameters); + operator.setOperatorParameters(parameters); + +***REMOVED*** + + @Override + public String getResult(OutputData outputData) { + StringBuilder result=new StringBuilder(); + logger.debug("Output: " + outputData); + Resource resource = outputData.getResource(); + if (resource.isMap()) { + MapResource mapResource = (MapResource) resource; + for (String key : mapResource.getMap().keySet()) { + logger.debug("Entry: " + key + " = " + + mapResource.getMap().get(key)); + result.append("Entry: " + key + " = " + + mapResource.getMap().get(key)); +***REMOVED*** + +***REMOVED*** else { + +***REMOVED*** + return result.toString(); +***REMOVED*** + + @Override + public boolean isValidResult(OutputData outputData) { + boolean valid; + logger.debug("Output: " + outputData); + Resource resource = outputData.getResource(); + if (resource.isMap()) { + MapResource mapResource = (MapResource) resource; + for (String key : mapResource.getMap().keySet()) { + logger.debug("Entry: " + key + " = " + + mapResource.getMap().get(key)); +***REMOVED*** + valid=true; + +***REMOVED*** else { + valid=false; +***REMOVED*** + return valid; + +***REMOVED*** + +***REMOVED*** diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/testconfig/WebAppPublisherTest.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/testconfig/WebAppPublisherTest.java new file mode 100644 index 0000000..0917ecc --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/testconfig/WebAppPublisherTest.java @@ -0,0 +1,84 @@ +package org.gcube.portlets.user.dataminermanagertester.server.testconfig; + +import java.util.ArrayList; +***REMOVED*** + +import org.gcube.data.analysis.dataminermanagercl.shared.data.OutputData; +import org.gcube.data.analysis.dataminermanagercl.shared.data.output.MapResource; +import org.gcube.data.analysis.dataminermanagercl.shared.data.output.Resource; +import org.gcube.data.analysis.dataminermanagercl.shared.parameters.FileParameter; +import org.gcube.data.analysis.dataminermanagercl.shared.parameters.Parameter; +***REMOVED*** +***REMOVED*** +***REMOVED*** + +/** + * + * @author Giancarlo Panichi + * + * + */ +public class WebAppPublisherTest implements DMTest { + private static Logger logger = LoggerFactory.getLogger(WebAppPublisherTest.class); + private static final String id = "org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.WEB_APP_PUBLISHER"; + + @Override + public String getId() { + return id; +***REMOVED*** + + @Override + public void createRequest(Operator operator) { + logger.debug("Create Request"); + + FileParameter zipFile = new FileParameter(); + zipFile.setName("ZipFile"); + zipFile.setValue("http://goo.gl/dYQ089"); + + List parameters = new ArrayList<>(); + + parameters.add(zipFile); + + logger.debug("Parameters set: " + parameters); + operator.setOperatorParameters(parameters); + +***REMOVED*** + + @Override + public String getResult(OutputData outputData) { + StringBuilder result = new StringBuilder(); + logger.debug("Output: " + outputData); + Resource resource = outputData.getResource(); + if (resource.isMap()) { + MapResource mapResource = (MapResource) resource; + for (String key : mapResource.getMap().keySet()) { + logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key)); + result.append("Entry: " + key + " = " + mapResource.getMap().get(key)); +***REMOVED*** + +***REMOVED*** else { + +***REMOVED*** + return result.toString(); +***REMOVED*** + + @Override + public boolean isValidResult(OutputData outputData) { + boolean valid; + logger.debug("Output: " + outputData); + Resource resource = outputData.getResource(); + if (resource.isMap()) { + MapResource mapResource = (MapResource) resource; + for (String key : mapResource.getMap().keySet()) { + logger.debug("Entry: " + key + " = " + mapResource.getMap().get(key)); +***REMOVED*** + valid = true; + +***REMOVED*** else { + valid = false; +***REMOVED*** + return valid; + +***REMOVED*** + +***REMOVED*** diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/testconfig/XYExtractorTest.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/testconfig/XYExtractorTest.java new file mode 100644 index 0000000..2d9cce7 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/server/testconfig/XYExtractorTest.java @@ -0,0 +1,136 @@ +package org.gcube.portlets.user.dataminermanagertester.server.testconfig; + +import java.util.ArrayList; +***REMOVED*** + +import org.gcube.data.analysis.dataminermanagercl.shared.data.OutputData; +import org.gcube.data.analysis.dataminermanagercl.shared.data.output.MapResource; +import org.gcube.data.analysis.dataminermanagercl.shared.data.output.Resource; +import org.gcube.data.analysis.dataminermanagercl.shared.parameters.ObjectParameter; +import org.gcube.data.analysis.dataminermanagercl.shared.parameters.Parameter; +***REMOVED*** +***REMOVED*** +***REMOVED*** + +/** + * + * @author Giancarlo Panichi + * + * + */ +public class XYExtractorTest implements DMTest { + private static Logger logger = LoggerFactory.getLogger(XYExtractorTest.class); + private static final String id = "org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mappedclasses.transducerers.XYEXTRACTOR"; + + + @Override + public String getId() { + return id; +***REMOVED*** + + + @Override + public void createRequest(Operator operator) { + logger.debug("Create Request"); + + ObjectParameter outputTableLabel = new ObjectParameter(); + outputTableLabel.setName("OutputTableLabel"); + outputTableLabel.setValue("wps_xy_extractor"); + + ObjectParameter layer = new ObjectParameter(); + layer.setName("Layer"); + layer.setValue("3fb7fd88-33d4-492d-b241-4e61299c44bb"); + + ObjectParameter yResolution = new ObjectParameter(); + yResolution.setName("YResolution"); + yResolution.setValue("0.5"); + + ObjectParameter xResolution = new ObjectParameter(); + xResolution.setName("XResolution"); + xResolution.setValue("0.5"); + + ObjectParameter bBox_LowerLeftLong = new ObjectParameter(); + bBox_LowerLeftLong.setName("BBox_LowerLeftLong"); + bBox_LowerLeftLong.setValue("-50"); + + ObjectParameter bBox_UpperRightLat = new ObjectParameter(); + bBox_UpperRightLat.setName("BBox_UpperRightLat"); + bBox_UpperRightLat.setValue("60"); + + ObjectParameter bBox_LowerLeftLat = new ObjectParameter(); + bBox_LowerLeftLat.setName("BBox_LowerLeftLat"); + bBox_LowerLeftLat.setValue("-60"); + + ObjectParameter bBox_UpperRightLong = new ObjectParameter(); + bBox_UpperRightLong.setName("BBox_UpperRightLong"); + bBox_UpperRightLong.setValue("50"); + + ObjectParameter z = new ObjectParameter(); + z.setName("Z"); + z.setValue("0"); + + ObjectParameter timeIndex = new ObjectParameter(); + timeIndex.setName("TimeIndex"); + timeIndex.setValue("0"); + + + List parameters = new ArrayList<>(); + + parameters.add(outputTableLabel); + parameters.add(layer); + parameters.add(yResolution); + parameters.add(xResolution); + parameters.add(bBox_LowerLeftLong); + parameters.add(bBox_UpperRightLat); + parameters.add(bBox_LowerLeftLat); + parameters.add(bBox_UpperRightLong); + parameters.add(z); + parameters.add(timeIndex); + + + logger.debug("Parameters set: " + parameters); + operator.setOperatorParameters(parameters); + +***REMOVED*** + + @Override + public String getResult(OutputData outputData) { + StringBuilder result=new StringBuilder(); + logger.debug("Output: " + outputData); + Resource resource = outputData.getResource(); + if (resource.isMap()) { + MapResource mapResource = (MapResource) resource; + for (String key : mapResource.getMap().keySet()) { + logger.debug("Entry: " + key + " = " + + mapResource.getMap().get(key)); + result.append("Entry: " + key + " = " + + mapResource.getMap().get(key)); +***REMOVED*** + +***REMOVED*** else { + +***REMOVED*** + return result.toString(); +***REMOVED*** + + @Override + public boolean isValidResult(OutputData outputData) { + boolean valid; + logger.debug("Output: " + outputData); + Resource resource = outputData.getResource(); + if (resource.isMap()) { + MapResource mapResource = (MapResource) resource; + for (String key : mapResource.getMap().keySet()) { + logger.debug("Entry: " + key + " = " + + mapResource.getMap().get(key)); +***REMOVED*** + valid=true; + +***REMOVED*** else { + valid=false; +***REMOVED*** + return valid; + +***REMOVED*** + +***REMOVED*** diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/shared/Constants.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/shared/Constants.java new file mode 100644 index 0000000..b53db7a --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/shared/Constants.java @@ -0,0 +1,75 @@ +package org.gcube.portlets.user.dataminermanagertester.shared; + +/** + * + * @author Giancarlo Panichi + * + * + */ +public class Constants { + public static final boolean DEBUG_MODE = false; + public static final boolean TEST_ENABLE = false; + + public static final String APPLICATION_ID = "org.gcube.portlets.user.dataminermanagertester.portlet.DataMinerManagerTester"; + public static final String DATA_MINER_MANAGER_ID = "DataMinerManagerTesterId"; + public static final String DATA_MINER_LANG_COOKIE = "DataMinerTesterLangCookie"; + public static final String DATA_MINER_LANG = "DataMinerTesterLang"; + public static final String DATA_MINER_OPERATOR_ID = "OperatorId"; + + public static final String TOKEN = "token"; + + public static final String DEFAULT_USER = "giancarlo.panichi"; + public final static String DEFAULT_SCOPE = "/gcube/devNext"; + public final static String DEFAULT_TOKEN = "ae1208f0-210d-47c9-9b24-d3f2dfcce05f-98187548"; + + public static final String DEFAULT_ROLE = "OrganizationMember"; + // public final static String DEFAULT_SCOPE = "/gcube/devNext"; + // public final static String DEFAULT_SCOPE = "/gcube/devNext/NextNext"; + + public static final String SClientMap = "DataMinerClientMap"; + public static final String DATA_MINER_SERVICE_NAME = "DataMiner"; + public static final String DATAMINER_SERVICE_CATEGORY = "DataAnalysis"; + + public static final String TD_DATASOURCE_FACTORY_ID = "DataMinerManager"; + + public static final int TIME_UPDATE_COMPUTATION_STATUS_PANEL = 5 * 1000;// 7*1000; + + public static final String[] ClassificationNames = { "User Perspective" ***REMOVED***; + // "Computation Perspective"***REMOVED***; + public static final String UserClassificationName = ClassificationNames[0]; + // public final static String computationClassificationName = + // classificationNames[1]; + + // WPS Data Miner + public static final String WPSServiceURL = "http://dataminer-d-d4s.d4science.org:80/wps/"; + public static final String WPSWebProcessingService = "WebProcessingService"; + public static final String WPSCancelComputationServlet = "CancelComputationServlet"; + public static final String WPSToken = "f0666597-4302-49ce-bea2-555b94e569cb"; + public static final String WPSUser = "giancarlo.panichi"; + public static final String WPSLanguage = "en-US"; + /* +***REMOVED***public static final String WPSToken = +***REMOVED***"4ccc2c35-60c9-4c9b-9800-616538d5d48b"; public static final String +***REMOVED***WPSUser = "gianpaolo.coro"; +***REMOVED*** + + // DownloadFolderServlet + public static final String DOWNLOAD_FOLDER_SERVLET = "DownloadFolderServlet"; + public static final String DOWNLOAD_FOLDER_SERVLET_ITEM_ID_PARAMETER = "itemId"; + public static final String DOWNLOAD_FOLDER_SERVLET_FOLDER_NAME_PARAMETER = "folderName"; + + // ClientMonitor + public static final int CLIENT_MONITOR_PERIODMILLIS = 2000; + public static final int CLIENT_MONITOR_TIME_OUT_PERIODMILLIS = 1800000; + + // Session + public static final String CURR_GROUP_ID = "CURR_GROUP_ID"; + public static final String CURR_USER_ID = "CURR_USER_ID"; + + // TimeOut + public static final long SERVICE_CLIENT_THREAD_POOL_TIME_OUT_UPDATE_MILLIS = 86400000; + public static final long SERVICE_CLIENT_TIMEOUT_DEFAULT_MILLIS = 1800000; + public static final int DAEMON_SLEEP_MILLIS = 1000; + public static final int TEST_MONITOR_PERIODMILLIS = 3000; + +***REMOVED*** diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/shared/config/DMBatchConfig.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/shared/config/DMBatchConfig.java new file mode 100644 index 0000000..19d755a --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/shared/config/DMBatchConfig.java @@ -0,0 +1,84 @@ +package org.gcube.portlets.user.dataminermanagertester.shared.config; + +import java.io.Serializable; +import java.util.ArrayList; + +/** + * + * @author Giancarlo Panichi + * + * + */ +public class DMBatchConfig implements Serializable { + + private static final long serialVersionUID = 4251753074961060428L; + private ArrayList dms; + private String token; + private String protocol; + private String testType; + + public DMBatchConfig() { + super(); +***REMOVED*** + + public DMBatchConfig(ArrayList dms, String token, String protocol, String testType) { + super(); + this.dms = dms; + this.token = token; + this.protocol = protocol; + this.testType = testType; +***REMOVED*** + + public ArrayList getDms() { + return dms; +***REMOVED*** + + public void setDms(ArrayList dms) { + this.dms = dms; +***REMOVED*** + + public ArrayList getDmsUrls() { + ArrayList dmsUrls = new ArrayList<>(); + if (protocol != null) { + if (dms != null && !dms.isEmpty()) { + for (int i = 0; i < dms.size(); i++) { + String dmName = dms.get(i); + String url = new String(protocol + "://" + dmName + "/wps/"); + dmsUrls.add(url); +***REMOVED*** +***REMOVED*** +***REMOVED*** + return dmsUrls; +***REMOVED*** + + public String getToken() { + return token; +***REMOVED*** + + public void setToken(String token) { + this.token = token; +***REMOVED*** + + public String getProtocol() { + return protocol; +***REMOVED*** + + public void setProtocol(String protocol) { + this.protocol = protocol; +***REMOVED*** + + public String getTestType() { + return testType; +***REMOVED*** + + public void setTestType(String testType) { + this.testType = testType; +***REMOVED*** + + @Override + public String toString() { + return "DMBatchConfig [dms=" + dms + ", token=" + token + ", protocol=" + protocol + ", testType=" + testType + + "]"; +***REMOVED*** + +***REMOVED*** diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/shared/config/DMConfig.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/shared/config/DMConfig.java new file mode 100644 index 0000000..3f2e946 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/shared/config/DMConfig.java @@ -0,0 +1,76 @@ +package org.gcube.portlets.user.dataminermanagertester.shared.config; + +import java.io.Serializable; + +/** + * + * @author Giancarlo Panichi + * + * + */ +public class DMConfig implements Serializable { + + private static final long serialVersionUID = 4251753074961060428L; + private String dm; + private String token; + private String protocol; + private String testType; + + public DMConfig() { + super(); +***REMOVED*** + + public DMConfig(String dm, String token, String protocol, String testType) { + super(); + this.dm = dm; + this.token = token; + this.protocol = protocol; + this.testType = testType; +***REMOVED*** + + public String getDm() { + return dm; +***REMOVED*** + + public void setDm(String dm) { + this.dm = dm; +***REMOVED*** + + public String getDmUrl() { + String url = null; + if (protocol != null && dm != null) { + url = new String(protocol + "://" + dm + "/wps/"); +***REMOVED*** + return url; +***REMOVED*** + + public String getToken() { + return token; +***REMOVED*** + + public void setToken(String token) { + this.token = token; +***REMOVED*** + + public String getProtocol() { + return protocol; +***REMOVED*** + + public void setProtocol(String protocol) { + this.protocol = protocol; +***REMOVED*** + + public String getTestType() { + return testType; +***REMOVED*** + + public void setTestType(String testType) { + this.testType = testType; +***REMOVED*** + + @Override + public String toString() { + return "DMConfig [dm=" + dm + ", token=" + token + ", protocol=" + protocol + ", testType=" + testType + "]"; +***REMOVED*** + +***REMOVED*** diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/shared/config/DMDiffConfig.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/shared/config/DMDiffConfig.java new file mode 100644 index 0000000..4eeb8fa --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/shared/config/DMDiffConfig.java @@ -0,0 +1,95 @@ +package org.gcube.portlets.user.dataminermanagertester.shared.config; + +import java.io.Serializable; + +/** + * + * @author Giancarlo Panichi + * + * + */ +public class DMDiffConfig implements Serializable { + + private static final long serialVersionUID = -8892345776441085380L; + private String dm1; + private String token1; + private String dm2; + private String token2; + private String protocol; + + public DMDiffConfig() { + super(); +***REMOVED*** + + public DMDiffConfig(String dm1, String token1, String dm2, String token2, String protocol) { + super(); + this.dm1 = dm1; + this.token1 = token1; + this.dm2 = dm2; + this.token2 = token2; + this.protocol = protocol; +***REMOVED*** + + public String getDm1() { + return dm1; +***REMOVED*** + + public void setDm1(String dm1) { + this.dm1 = dm1; +***REMOVED*** + + public String getDmUrl1() { + String url=null; + if (protocol != null && dm1 != null) { + url = new String(protocol + "://" + dm1 + "/wps/"); +***REMOVED*** + return url; +***REMOVED*** + + public String getToken1() { + return token1; +***REMOVED*** + + public void setToken1(String token1) { + this.token1 = token1; +***REMOVED*** + + public String getDm2() { + return dm2; +***REMOVED*** + + public void setDm2(String dm2) { + this.dm2 = dm2; +***REMOVED*** + + public String getDmUrl2() { + String url=null; + if (protocol != null && dm2 != null) { + url = new String(protocol + "://" + dm2 + "/wps/"); +***REMOVED*** + return url; +***REMOVED*** + + public String getToken2() { + return token2; +***REMOVED*** + + public void setToken2(String token2) { + this.token2 = token2; +***REMOVED*** + + public String getProtocol() { + return protocol; +***REMOVED*** + + public void setProtocol(String protocol) { + this.protocol = protocol; +***REMOVED*** + + @Override + public String toString() { + return "DMDiffConfig [dm1=" + dm1 + ", token1=" + token1 + ", dm2=" + dm2 + ", token2=" + token2 + ", protocol=" + + protocol + "]"; +***REMOVED*** + +***REMOVED*** diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/shared/config/ProtocolType.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/shared/config/ProtocolType.java new file mode 100644 index 0000000..4ffa11f --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/shared/config/ProtocolType.java @@ -0,0 +1,44 @@ +package org.gcube.portlets.user.dataminermanagertester.shared.config; + +/** + * + * @author Giancarlo Panichi + * + * + */ +public enum ProtocolType { + Http("http"), https("https"); + + private ProtocolType(final String id) { + this.id = id; +***REMOVED*** + + private final String id; + + @Override + public String toString() { + return id; +***REMOVED*** + + public String getLabel() { + return id; +***REMOVED*** + + public boolean compareId(String identificator) { + if (identificator.compareTo(id) == 0) { + return true; +***REMOVED*** else { + return false; +***REMOVED*** +***REMOVED*** + + public static ProtocolType getTypeFromId(String id) { + for (ProtocolType testType : values()) { + if (testType.id.compareToIgnoreCase(id) == 0) { + return testType; +***REMOVED*** +***REMOVED*** + return null; +***REMOVED*** + +***REMOVED*** \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/shared/config/TestType.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/shared/config/TestType.java new file mode 100644 index 0000000..44eba56 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/shared/config/TestType.java @@ -0,0 +1,48 @@ +package org.gcube.portlets.user.dataminermanagertester.shared.config; + +/** + * + * @author Giancarlo Panichi + * + * + */ +public enum TestType { + Capabilities("Capabilities"), DBScan("DBScan"), BionymLocal("Bionym Local"), CMSY2("CMSY 2"), CSquareColumnCreator( + "CSquare Column Creator"), FeedForwardAnn("Feed Forward ANN"), GenericCharts("Generic Charts"), ListDBName( + "List DB Name"), OpenMeshRecostructorGPU("Open Mesh Recostructor GPU"), PolygonsToMap( + "Polygons To Map"), RasterDataPublisher("Raster Data Publisher"), XYExtractor( + "XYExtractor"), WebAppPublisher("Web App Publisher"); + + private TestType(final String id) { + this.id = id; +***REMOVED*** + + private final String id; + + @Override + public String toString() { + return id; +***REMOVED*** + + public String getLabel() { + return id; +***REMOVED*** + + public boolean compareId(String identificator) { + if (identificator.compareTo(id) == 0) { + return true; +***REMOVED*** else { + return false; +***REMOVED*** +***REMOVED*** + + public static TestType getTypeFromId(String id) { + for (TestType testType : values()) { + if (testType.id.compareToIgnoreCase(id) == 0) { + return testType; +***REMOVED*** +***REMOVED*** + return null; +***REMOVED*** + +***REMOVED*** \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/shared/exception/ServiceException.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/shared/exception/ServiceException.java new file mode 100644 index 0000000..b4d15f9 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/shared/exception/ServiceException.java @@ -0,0 +1,42 @@ +/** + * + */ +package org.gcube.portlets.user.dataminermanagertester.shared.exception; + +/** + * + * @author Giancarlo Panichi + * + * + */ +public class ServiceException extends Exception { + + private static final long serialVersionUID = 2448597554902518518L; + +***REMOVED*** +***REMOVED*** +***REMOVED*** + public ServiceException() { + super(); +***REMOVED*** + +***REMOVED*** +***REMOVED***@param message +***REMOVED*** message +***REMOVED*** + public ServiceException(String message) { + super(message); +***REMOVED*** + +***REMOVED*** +***REMOVED*** +***REMOVED***@param message +***REMOVED*** message +***REMOVED***@param throwable +***REMOVED*** error +***REMOVED*** + public ServiceException(String message, Throwable throwable) { + super(message, throwable); +***REMOVED*** + +***REMOVED*** diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/shared/result/BatchTestResult.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/shared/result/BatchTestResult.java new file mode 100644 index 0000000..93635c4 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/shared/result/BatchTestResult.java @@ -0,0 +1,40 @@ +package org.gcube.portlets.user.dataminermanagertester.shared.result; + +import java.io.Serializable; +import java.util.LinkedHashMap; + +/** + * + * @author Giancarlo Panichi + * + * + */ +public class BatchTestResult implements Serializable { + + private static final long serialVersionUID = -8282297686097887134L; + + private LinkedHashMap testResultMap; + + public BatchTestResult() { + super(); +***REMOVED*** + + public BatchTestResult(LinkedHashMap testResultMap) { + super(); + this.testResultMap = testResultMap; +***REMOVED*** + + public LinkedHashMap getTestResultMap() { + return testResultMap; +***REMOVED*** + + public void setTestResultMap(LinkedHashMap testResultMap) { + this.testResultMap = testResultMap; +***REMOVED*** + + @Override + public String toString() { + return "BatchTestResult [testResultMap=" + testResultMap + "]"; +***REMOVED*** + +***REMOVED*** diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/shared/result/BatchTestRow.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/shared/result/BatchTestRow.java new file mode 100644 index 0000000..e4cc848 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/shared/result/BatchTestRow.java @@ -0,0 +1,60 @@ +package org.gcube.portlets.user.dataminermanagertester.shared.result; + +import java.io.Serializable; + +import org.gcube.data.analysis.dataminermanagercl.shared.process.ComputationStatus.Status; + +/** + * + * @author Giancarlo Panichi + * + * + */ +public class BatchTestRow implements Serializable { + + private static final long serialVersionUID = -8991094616615074608L; + private String url; + private Status status; + private String response; + + public BatchTestRow() { + super(); +***REMOVED*** + + public BatchTestRow(String url, Status status, String response) { + super(); + this.url = url; + this.status = status; + this.response = response; +***REMOVED*** + + public String getUrl() { + return url; +***REMOVED*** + + public void setUrl(String url) { + this.url = url; +***REMOVED*** + + public Status getStatus() { + return status; +***REMOVED*** + + public void setStatus(Status status) { + this.status = status; +***REMOVED*** + + public String getResponse() { + return response; +***REMOVED*** + + public void setResponse(String response) { + this.response = response; +***REMOVED*** + + @Override + public String toString() { + return "BatchTestRow [url=" + url + ", status=" + status + ", response=" + response + "]"; +***REMOVED*** + +***REMOVED*** diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/shared/result/SingleTestResult.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/shared/result/SingleTestResult.java new file mode 100644 index 0000000..caa7a40 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/shared/result/SingleTestResult.java @@ -0,0 +1,53 @@ +package org.gcube.portlets.user.dataminermanagertester.shared.result; + +import java.io.Serializable; + +import org.gcube.data.analysis.dataminermanagercl.shared.process.ComputationStatus; + +/** + * + * @author Giancarlo Panichi + * + * + */ +public class SingleTestResult implements Serializable { + +***REMOVED*** +***REMOVED*** +***REMOVED*** + private static final long serialVersionUID = -4779062510507675602L; + private ComputationStatus computationStatus; + private String response; + + public SingleTestResult() { + super(); +***REMOVED*** + + public SingleTestResult(ComputationStatus computationStatus, String response) { + super(); + this.computationStatus = computationStatus; + this.response = response; +***REMOVED*** + + public ComputationStatus getComputationStatus() { + return computationStatus; +***REMOVED*** + + public void setComputationStatus(ComputationStatus computationStatus) { + this.computationStatus = computationStatus; +***REMOVED*** + + public String getResponse() { + return response; +***REMOVED*** + + public void setResponse(String response) { + this.response = response; +***REMOVED*** + + @Override + public String toString() { + return "SingleTestResult [computationStatus=" + computationStatus + ", response=" + response + "]"; +***REMOVED*** + +***REMOVED*** diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/shared/session/UserInfo.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/shared/session/UserInfo.java new file mode 100644 index 0000000..2ce383b --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/shared/session/UserInfo.java @@ -0,0 +1,95 @@ +package org.gcube.portlets.user.dataminermanagertester.shared.session; + +import java.io.Serializable; + +/** + * + * @author giancarlo + * + * + */ +public class UserInfo implements Serializable { + + private static final long serialVersionUID = -2826549639677017234L; + + private String username; + private String groupId; + private String groupName; + private String scope; + private String userEmailAddress; + private String userFullName; + + public UserInfo() { + super(); +***REMOVED*** + + public UserInfo(String username, String groupId, String groupName, + String scope, String userEmailAddress, String userFullName) { + super(); + this.username = username; + this.groupId = groupId; + this.groupName = groupName; + this.scope = scope; + this.userEmailAddress = userEmailAddress; + this.userFullName = userFullName; +***REMOVED*** + + public String getUsername() { + return username; +***REMOVED*** + + public void setUsername(String username) { + this.username = username; +***REMOVED*** + + public String getGroupId() { + return groupId; +***REMOVED*** + + public void setGroupId(String groupId) { + this.groupId = groupId; +***REMOVED*** + + public String getGroupName() { + return groupName; +***REMOVED*** + + public void setGroupName(String groupName) { + this.groupName = groupName; +***REMOVED*** + + public String getScope() { + return scope; +***REMOVED*** + + public void setScope(String scope) { + this.scope = scope; +***REMOVED*** + + public String getUserEmailAddress() { + return userEmailAddress; +***REMOVED*** + + public void setUserEmailAddress(String userEmailAddress) { + this.userEmailAddress = userEmailAddress; +***REMOVED*** + + public String getUserFullName() { + return userFullName; +***REMOVED*** + + public void setUserFullName(String userFullName) { + this.userFullName = userFullName; +***REMOVED*** + + @Override + public String toString() { + return "UserInfo [username=" + username + ", groupId=" + groupId + + ", groupName=" + groupName + ", scope=" + scope + + ", userEmailAddress=" + userEmailAddress + ", userFullName=" + + userFullName + "]"; +***REMOVED*** + + + +***REMOVED*** diff --git a/src/main/java/org/gcube/portlets/user/dataminermanagertester/shared/task/TaskStatus.java b/src/main/java/org/gcube/portlets/user/dataminermanagertester/shared/task/TaskStatus.java new file mode 100644 index 0000000..92e1f48 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/dataminermanagertester/shared/task/TaskStatus.java @@ -0,0 +1,15 @@ +package org.gcube.portlets.user.dataminermanagertester.shared.task; + + +/** + * + * @author Giancarlo Panichi + * + * + */ +public enum TaskStatus { + STARTED, + RUNNING, + COMPLETED, + ERROR; +***REMOVED*** \ No newline at end of file diff --git a/src/main/resources/org/gcube/portlets/user/dataminermanagertester/client/resources/css/normalize.gss b/src/main/resources/org/gcube/portlets/user/dataminermanagertester/client/resources/css/normalize.gss new file mode 100644 index 0000000..3a2c7e6 --- /dev/null +++ b/src/main/resources/org/gcube/portlets/user/dataminermanagertester/client/resources/css/normalize.gss @@ -0,0 +1,409 @@ +/*! normalize.css v3.0.1 | MIT License | git.io/normalize */ + +/** + * 1. Set default font family to sans-serif. + * 2. Prevent iOS text size adjust after orientation change, without disabling + * user zoom. + */ + +html { + font-family: sans-serif; /* 1 */ + -ms-text-size-adjust: 100%; /* 2 */ + -webkit-text-size-adjust: 100%; /* 2 */ +***REMOVED*** + +/** + * Remove default margin. + */ + +body { + margin: 0; +***REMOVED*** + +/* HTML5 display definitions +========================================================================== */ + +/** + * Correct `block` display not defined for any HTML5 element in IE 8/9. + * Correct `block` display not defined for `details` or `summary` in IE 10/11 and Firefox. + * Correct `block` display not defined for `main` in IE 11. + */ + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +nav, +section, +summary { + display: block; +***REMOVED*** + +/** + * 1. Correct `inline-block` display not defined in IE 8/9. + * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. + */ + +audio, +canvas, +progress, +video { + display: inline-block; /* 1 */ + vertical-align: baseline; /* 2 */ +***REMOVED*** + +/** + * Address `[hidden]` styling not present in IE 8/9/10. + * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. + */ + +[hidden], +template { + display: none; +***REMOVED*** + +/* Links +========================================================================== */ + +/** + * Remove the gray background color from active links in IE 10. + */ + +a { + background: transparent; +***REMOVED*** + +/** + * Improve readability when focused and also mouse hovered in all browsers. + */ + +a:active, +a:hover, +button:active, +button:hover { + outline: 0; +***REMOVED*** + +/* Text-level semantics +========================================================================== */ + +/** + * Address styling not present in IE 8/9/10/11, Safari, and Chrome. + */ + +abbr[title] { + border-bottom: 1px dotted; +***REMOVED*** + +/** + * Address style set to `bolder` in Firefox 4+, Safari, and Chrome. + */ + +b, +strong { + font-weight: bold; +***REMOVED*** + +/** + * Address styling not present in Safari and Chrome. + */ + +dfn { + font-style: italic; +***REMOVED*** + +/** + * Address variable `h1` font-size and margin within `section` and `article` + * contexts in Firefox 4+, Safari, and Chrome. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +***REMOVED*** + +/** + * Address styling not present in IE 8/9. + */ + +mark { + background: #ff0; + color: #000; +***REMOVED*** + +/** + * Address inconsistent and variable font size in all browsers. + */ + +small { + font-size: 80%; +***REMOVED*** + +/** + * Prevent `sub` and `sup` affecting `line-height` in all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +***REMOVED*** + +sup { + top: -0.5em; +***REMOVED*** + +sub { + bottom: -0.25em; +***REMOVED*** + +/* Embedded content +========================================================================== */ + +/** + * Remove border when inside `a` element in IE 8/9/10. + */ + +img { + border: 0; +***REMOVED*** + +/* Grouping content +========================================================================== */ + +/** + * Address margin not present in IE 8/9 and Safari. + */ + +figure { + margin: 1em 40px; +***REMOVED*** + +/** + * Address differences between Firefox and other browsers. + */ + +hr { + -moz-box-sizing: content-box; + box-sizing: content-box; + height: 0; +***REMOVED*** + +/** + * Contain overflow in all browsers. + */ + +pre { + overflow: auto; +***REMOVED*** + +/** + * Address odd `em`-unit font size rendering in all browsers. + */ + +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; +***REMOVED*** + +/* Forms +========================================================================== */ + +/** + * Known limitation: by default, Chrome and Safari on OS X allow very limited + * styling of `select`, unless a `border` property is set. + */ + +/** + * 1. Correct color not being inherited. + * Known issue: affects color of disabled elements. + * 2. Correct font properties not being inherited. + * 3. Address margins set differently in Firefox 4+, Safari, and Chrome. + */ + +button, +input, +optgroup, +select, +textarea { + color: inherit; /* 1 */ + font: inherit; /* 2 */ + margin: 0; /* 3 */ +***REMOVED*** + +/** + * Address `overflow` set to `hidden` in IE 8/9/10/11. + */ + +button { + overflow: visible; +***REMOVED*** + +/** + * Address inconsistent `text-transform` inheritance for `button` and `select`. + * All other form control elements do not inherit `text-transform` values. + * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. + * Correct `select` style inheritance in Firefox. + */ + +button, +select { + text-transform: none; +***REMOVED*** + +/** + * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` + * and `video` controls. + * 2. Correct inability to style clickable `input` types in iOS. + * 3. Improve usability and consistency of cursor style between image-type + * `input` and others. + */ + +button, +html input[type="button"], /* 1 */ +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; /* 2 */ + cursor: pointer; /* 3 */ +***REMOVED*** + +/** + * Re-set default cursor for disabled elements. + */ + +button[disabled], +html input[disabled] { + cursor: default; +***REMOVED*** + +/** + * Remove inner padding and border in Firefox 4+. + */ + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +***REMOVED*** + +/** + * Address Firefox 4+ setting `line-height` on `input` using `!important` in + * the UA stylesheet. + */ + +input { + line-height: normal; +***REMOVED*** + +/** + * It's recommended that you don't attempt to style these elements. + * Firefox's implementation doesn't respect box-sizing, padding, or width. + * + * 1. Address box sizing set to `content-box` in IE 8/9/10. + * 2. Remove excess padding in IE 8/9/10. + */ + +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +***REMOVED*** + +/** + * Fix the cursor style for Chrome's increment/decrement buttons. For certain + * `font-size` values of the `input`, it causes the cursor style of the + * decrement button to change from `default` to `text`. + */ + +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; +***REMOVED*** + +/** + * 1. Address `appearance` set to `searchfield` in Safari and Chrome. + * 2. Address `box-sizing` set to `border-box` in Safari and Chrome + * (include `-moz` to future-proof). + */ + +input[type="search"] { + -webkit-appearance: textfield; /* 1 */ + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; /* 2 */ + box-sizing: content-box; +***REMOVED*** + +/** + * Remove inner padding and search cancel button in Safari and Chrome on OS X. + * Safari (but not Chrome) clips the cancel button when the search input has + * padding (and `textfield` appearance). + */ + +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +***REMOVED*** + +/** + * Define consistent border, margin, and padding. + */ + +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +***REMOVED*** + +/** + * 1. Correct `color` not being inherited in IE 8/9/10/11. + * 2. Remove padding so people aren't caught out if they zero out fieldsets. + */ + +legend { + border: 0; /* 1 */ + padding: 0; /* 2 */ +***REMOVED*** + +/** + * Remove default vertical scrollbar in IE 8/9/10/11. + */ + +textarea { + overflow: auto; +***REMOVED*** + +/** + * Don't inherit the `font-weight` (applied by a rule above). + * NOTE: the default cannot safely be changed in Chrome and Safari on OS X. + */ + +optgroup { + font-weight: bold; +***REMOVED*** + +/* Tables +========================================================================== */ + +/** + * Remove most spacing between table cells. + */ + +table { + border-collapse: collapse; + border-spacing: 0; +***REMOVED*** + +td, +th { + padding: 0; +***REMOVED*** diff --git a/src/main/resources/org/gcube/portlets/user/dataminermanagertester/client/resources/css/pageTable.gss b/src/main/resources/org/gcube/portlets/user/dataminermanagertester/client/resources/css/pageTable.gss new file mode 100644 index 0000000..e105dda --- /dev/null +++ b/src/main/resources/org/gcube/portlets/user/dataminermanagertester/client/resources/css/pageTable.gss @@ -0,0 +1,28 @@ +/************ Page Table ************/ +@external data-row, tool-panel, top-panel; + + +/** Top Panel **/ + #pTable .top-panel { +  background-color: white; +  color: black; + ***REMOVED*** + /** Tool Panel icons **/ + #pTable .top-panel .tool-panel i { +  color: #e91e63; + ***REMOVED*** + /** Hovering rows **/ + #pTable table tbody tr.data-row:hover { +  background: rgba(33, 150, 243, 0.27); +  color: #3f3f3f; + ***REMOVED*** + /** Columns **/ + #pTable table tbody td:nth-child(3) { +  background: #2196f3 !important; +  color: #fff; +  border-bottom: 2px solid #1976d2; + ***REMOVED*** + /** Table Headers **/ + #pTable table thead tr th { +  color: #1976d2; + ***REMOVED*** \ No newline at end of file diff --git a/src/main/resources/org/gcube/portlets/user/dataminermanagertester/client/resources/css/style.gss b/src/main/resources/org/gcube/portlets/user/dataminermanagertester/client/resources/css/style.gss new file mode 100644 index 0000000..a5506c2 --- /dev/null +++ b/src/main/resources/org/gcube/portlets/user/dataminermanagertester/client/resources/css/style.gss @@ -0,0 +1,5 @@ +.sideNavPBg { + /* + gwt-sprite: 'sideNavProfileBackground'; + background-repeat: repeat; */ +***REMOVED*** diff --git a/src/main/webapp/DataMinerManagerTester.css b/src/main/webapp/DataMinerManagerTester.css new file mode 100644 index 0000000..d67414b --- /dev/null +++ b/src/main/webapp/DataMinerManagerTester.css @@ -0,0 +1,10 @@ +/* FIX FOR Portal Theme */ +/* OpenLayer Form fix */ + +@-o-viewport { + width: device-width; + scale: 1.0; + maximum-scale: 1.0; +***REMOVED*** + + diff --git a/src/main/webapp/DataMinerManagerTester.html b/src/main/webapp/DataMinerManagerTester.html new file mode 100644 index 0000000..c980233 --- /dev/null +++ b/src/main/webapp/DataMinerManagerTester.html @@ -0,0 +1,33 @@ + + + + + + + DataMiner Tester + + + + + + + + + + + + + + + + diff --git a/src/main/webapp/WEB-INF/jsp/DataMinerManagerTester_view.jsp b/src/main/webapp/WEB-INF/jsp/DataMinerManagerTester_view.jsp new file mode 100644 index 0000000..e6de824 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/DataMinerManagerTester_view.jsp @@ -0,0 +1,58 @@ +<%@page import="org.gcube.vomanagement.usermanagement.impl.LiferayGroupManager"%> +<%@page import="java.util.Enumeration"%> +<%@page import="org.slf4j.Logger"%> +<%@page import="org.slf4j.LoggerFactory"%> +<%@page import="org.gcube.vomanagement.usermanagement.model.GCubeUser"%> +<%@page import="org.gcube.common.portal.PortalContext"%> +<%@page contentType="text/html"%> +<%@page pageEncoding="UTF-8"%> +<%@ page import="org.gcube.common.scope.api.ScopeProvider"%> + + + + + +<% +Logger logger=LoggerFactory.getLogger(PortalContext.class); +logger.info("Request"+request); +Enumeration names=request.getAttributeNames(); +while(names.hasMoreElements()){ + String name=names.nextElement(); + logger.info("Request Header:"+name+"="+request.getAttribute(name)); +***REMOVED*** + +long groupId = com.liferay.portal.util.PortalUtil.getScopeGroupId(request); +String username = com.liferay.portal.util.PortalUtil.getUser(request).getScreenName(); +String scope = new LiferayGroupManager().getInfrastructureScope(groupId);; +ScopeProvider.instance.set(scope); + +PortalContext pContext = PortalContext.getConfiguration(); + +//GCubeUser user = pContext.getCurrentUser(request); +logger.info("User: "+username); +//String scope = pContext.getCurrentScope(request); +logger.info("Scope: "+scope); + +String userToken = pContext.getCurrentUserToken(scope, username); +logger.info("UserToken: "+userToken); +//Anche questa sotto non va +//String userToken = pContext.getCurrentUserToken(request); + + + %> + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/liferay-display.xml b/src/main/webapp/WEB-INF/liferay-display.xml new file mode 100644 index 0000000..ec8f81b --- /dev/null +++ b/src/main/webapp/WEB-INF/liferay-display.xml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/liferay-plugin-package.properties b/src/main/webapp/WEB-INF/liferay-plugin-package.properties new file mode 100644 index 0000000..9057f19 --- /dev/null +++ b/src/main/webapp/WEB-INF/liferay-plugin-package.properties @@ -0,0 +1,9 @@ +name=DataMinerManagerTester +module-group-id=liferay +module-incremental-version=1 +tags= +short-description= +change-log= +page-url=http://www.d4science.eu +author=D4Science EU +licenses= \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/liferay-portlet.xml b/src/main/webapp/WEB-INF/liferay-portlet.xml new file mode 100644 index 0000000..9a7be25 --- /dev/null +++ b/src/main/webapp/WEB-INF/liferay-portlet.xml @@ -0,0 +1,13 @@ + + + + + + DataMinerManagerTester + false + false + false + DataMinerManagerTesterCSS + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/portlet.xml b/src/main/webapp/WEB-INF/portlet.xml new file mode 100644 index 0000000..cf333bd --- /dev/null +++ b/src/main/webapp/WEB-INF/portlet.xml @@ -0,0 +1,27 @@ + + + + DataMinerManagerTester + DataMinerManagerTester + DataMinerManagerTester + org.gcube.portlets.user.dataminermanagertester.portlet.DataMinerManagerTester + 0 + + text/html + VIEW + + + DataMinerManagerTester + DataMinerManagerTester + + + + portletSetupShowBorders + false + + + + diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000..6ef26f6 --- /dev/null +++ b/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,29 @@ + + + + + DataMinerTesterServlet + org.gcube.portlets.user.dataminermanagertester.server.DataMinerTesterServiceImpl + + + jUnitHostImpl + com.google.gwt.junit.server.JUnitHostImpl + + + + + DataMinerTesterServlet + /dataminermanagertester/dmtester + + + jUnitHostImpl + /dataminermanagertester/junithost/* + + + + DataMinerManagerTester.html + + \ No newline at end of file diff --git a/src/test/resources/FARM.gcubekey b/src/test/resources/FARM.gcubekey new file mode 100644 index 0000000..b113201 --- /dev/null +++ b/src/test/resources/FARM.gcubekey @@ -0,0 +1 @@ +< @QajFgQ \ No newline at end of file diff --git a/src/test/resources/d4science.research-infrastructures.eu.gcubekey b/src/test/resources/d4science.research-infrastructures.eu.gcubekey new file mode 100644 index 0000000..b113201 --- /dev/null +++ b/src/test/resources/d4science.research-infrastructures.eu.gcubekey @@ -0,0 +1 @@ +< @QajFgQ \ No newline at end of file diff --git a/src/test/resources/devNext.gcubekey b/src/test/resources/devNext.gcubekey new file mode 100644 index 0000000..260f269 --- /dev/null +++ b/src/test/resources/devNext.gcubekey @@ -0,0 +1 @@ +6 4Z/U Cߘ \ No newline at end of file diff --git a/src/test/resources/devsec.gcubekey b/src/test/resources/devsec.gcubekey new file mode 100644 index 0000000..260f269 --- /dev/null +++ b/src/test/resources/devsec.gcubekey @@ -0,0 +1 @@ +6 4Z/U Cߘ \ No newline at end of file diff --git a/src/test/resources/gCubeApps.gcubekey b/src/test/resources/gCubeApps.gcubekey new file mode 100644 index 0000000..b113201 --- /dev/null +++ b/src/test/resources/gCubeApps.gcubekey @@ -0,0 +1 @@ +< @QajFgQ \ No newline at end of file diff --git a/src/test/resources/gcube.gcubekey b/src/test/resources/gcube.gcubekey new file mode 100644 index 0000000..260f269 --- /dev/null +++ b/src/test/resources/gcube.gcubekey @@ -0,0 +1 @@ +6 4Z/U Cߘ \ No newline at end of file diff --git a/src/test/resources/howto.txt b/src/test/resources/howto.txt new file mode 100644 index 0000000..85633be --- /dev/null +++ b/src/test/resources/howto.txt @@ -0,0 +1,6 @@ +You should put the infrastructure decrypt keys here. + +the keys must be in named ".gcubekey", e.g. "gcube.gcubekey" or "devsec.gcubekey" + +The content of this folder is automatically loaded in the classpath when tomcat starts up. + diff --git a/src/test/resources/log4j.properties b/src/test/resources/log4j.properties new file mode 100644 index 0000000..79c49c2 --- /dev/null +++ b/src/test/resources/log4j.properties @@ -0,0 +1,20 @@ +# A default log4j configuration for log4j users. +# +# To use this configuration, deploy it into your application's WEB-INF/classes +# directory. You are also encouraged to edit it as you like. + +log4j.rootLogger=DEBUG, stdout, rollingFile + +# Redirect log messages to console +log4j.appender.stdout=org.apache.log4j.ConsoleAppender +log4j.appender.stdout.Target=System.out +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss***REMOVED*** %-5p %c{1***REMOVED***:%L - %m%n + + +log4j.appender.rollingFile=org.apache.log4j.RollingFileAppender +log4j.appender.rollingFile.File=test.log +log4j.appender.rollingFile.MaxFileSize=20MB +log4j.appender.rollingFile.MaxBackupIndex=2 +log4j.appender.rollingFile.layout = org.apache.log4j.PatternLayout +log4j.appender.rollingFile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss***REMOVED*** %-5p %c{1***REMOVED***:%L - %m%n diff --git a/src/test/resources/symm.key b/src/test/resources/symm.key new file mode 100644 index 0000000..260f269 --- /dev/null +++ b/src/test/resources/symm.key @@ -0,0 +1 @@ +6 4Z/U Cߘ \ No newline at end of file