Massimiliano Assante 11 years ago
parent f2ebd8a675
commit d96993d067

@ -0,0 +1,35 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="target/service-endpoint-editor-1.0.0-SNAPSHOT/WEB-INF/classes" path="src/main/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry including="**/*.java" kind="src" output="src/main/webapp/WEB-INF/classes" path="src/main/resources"/>
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry including="**/*.java" kind="src" output="target/test-classes" path="src/test/resources"/>
<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="com.google.gwt.eclipse.core.GWT_CONTAINER/GWT (5)"/>
<classpathentry kind="output" path="target/service-endpoint-editor-1.0.0-SNAPSHOT/WEB-INF/classes"/>
</classpath>

@ -0,0 +1,59 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>service-endpoint-editor</name>
<comment>service-endpoint-editor project</comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.wst.jsdt.core.javascriptValidator</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.wst.common.project.facet.core.builder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.wst.validation.validationbuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.maven.ide.eclipse.maven2Builder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>com.google.gdt.eclipse.core.webAppProjectValidator</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>com.google.gwt.eclipse.core.gwtProjectValidator</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.m2e.core.maven2Builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.m2e.core.maven2Nature</nature>
<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
<nature>org.maven.ide.eclipse.maven2Nature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
<nature>org.eclipse.wst.jsdt.core.jsNature</nature>
<nature>com.google.gwt.eclipse.core.gwtNature</nature>
</natures>
</projectDescription>

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src/main/webapp" />
<classpathentry kind="con"
path="org.eclipse.wst.jsdt.launching.JRE_CONTAINER" />
<classpathentry kind="con"
path="org.eclipse.wst.jsdt.launching.WebProject">
<attributes>
<attribute name="hide" value="true" />
</attributes>
</classpathentry>
<classpathentry kind="con"
path="org.eclipse.wst.jsdt.launching.baseBrowserLibrary" />
<classpathentry kind="output" path="" />
</classpath>

@ -0,0 +1,3 @@
#Thu Jun 16 10:18:26 CEST 2011
eclipse.preferences.version=1
filesCopiedToWebInfLib=

@ -0,0 +1,5 @@
eclipse.preferences.version=1
jarsExcludedFromWebInfLib=
lastWarOutDir=/Users/massi/Documents/workspace/service-endpoint-editor/target/service-endpoint-editor-1.0.0-SNAPSHOT
warSrcDir=src/main/webapp
warSrcDirIsOutput=false

@ -0,0 +1,4 @@
eclipse.preferences.version=1
entryPointModules=org.gcube.portlets.admin.sepeditor.RuntimeResourceCreator
filesCopiedToWebInfLib=gwt-servlet.jar
gwtCompileSettings=PGd3dC1jb21waWxlLXNldHRpbmdzPjxsb2ctbGV2ZWw+SU5GTzwvbG9nLWxldmVsPjxvdXRwdXQtc3R5bGU+T0JGVVNDQVRFRDwvb3V0cHV0LXN0eWxlPjxleHRyYS1hcmdzPjwhW0NEQVRBWy13YXIgc3JjL21haW4vd2ViYXBwXV0+PC9leHRyYS1hcmdzPjx2bS1hcmdzPjwhW0NEQVRBWy1YbXg1MTJtXV0+PC92bS1hcmdzPjxlbnRyeS1wb2ludC1tb2R1bGU+Y29tLmNvbXBhbnkuU29tZU1vZHVsZTwvZW50cnktcG9pbnQtbW9kdWxlPjwvZ3d0LWNvbXBpbGUtc2V0dGluZ3M+

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

@ -0,0 +1,8 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
org.eclipse.jdt.core.compiler.compliance=1.6
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.6

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

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<project-modules id="moduleCoreId" project-version="1.5.0">
<wb-module deploy-name="${module}">
<wb-resource deploy-path="/" source-path="/target/m2e-wtp/web-resources"/>
<wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/target/generated-sources/gwt"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/>
<dependent-module archiveName="rmp-common-library-2.0.0-SNAPSHOT.jar" deploy-path="/WEB-INF/lib" handle="module:/resource/rmp-common-library/rmp-common-library">
<dependency-type>uses</dependency-type>
</dependent-module>
<property name="java-output-path" value="/${module}/target/www/WEB-INF/classes"/>
<property name="context-root" value="service-endpoint-editor"/>
</wb-module>
</project-modules>

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

@ -0,0 +1 @@
org.eclipse.wst.jsdt.launching.baseBrowserLibrary

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

@ -0,0 +1,9 @@
#Thu Sep 02 10:42:12 CEST 2010
activeProfiles=
eclipse.preferences.version=1
fullBuildGoals=process-test-resources
includeModules=false
resolveWorkspaceProjects=true
resourceFilterGoals=process-resources resources\\:testResources
skipCompilerPlugin=true
version=1

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="com.google.gwt.eclipse.core.launch.gwtJUnit">
<stringAttribute key="com.google.gwt.eclipse.core.LOG_LEVEL" value="INFO"/>
<booleanAttribute key="com.google.gwt.eclipse.core.NOT_HEADLESS" value="false"/>
<stringAttribute key="com.google.gwt.eclipse.core.OUT_DIR" value="www-test"/>
<booleanAttribute key="com.google.gwt.eclipse.core.STANDARDS_MODE" value="false"/>
<stringAttribute key="com.google.gwt.eclipse.core.STYLE" value="OBFUSCATED"/>
<stringAttribute key="com.google.gwt.eclipse.core.WEB_MODE" value="false"/>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
<listEntry value="/service-endpoint-editor/src/test/java/org/gcube/portlets/admin/sepeditor/client/GwtTestRuntimeResourceCreator.java"/>
</listAttribute>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
<listEntry value="1"/>
</listAttribute>
<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>
<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/>
<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="com.google.gdt.eclipse.maven.mavenClasspathProvider"/>
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.gcube.portlets.admin.sepeditor.client.GwtTestRuntimeResourceCreator"/>
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="service-endpoint-editor"/>
</launchConfiguration>

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="com.google.gwt.eclipse.core.launch.gwtJUnit">
<stringAttribute key="com.google.gwt.eclipse.core.LOG_LEVEL" value="INFO"/>
<booleanAttribute key="com.google.gwt.eclipse.core.NOT_HEADLESS" value="false"/>
<stringAttribute key="com.google.gwt.eclipse.core.OUT_DIR" value="www-test"/>
<booleanAttribute key="com.google.gwt.eclipse.core.STANDARDS_MODE" value="false"/>
<stringAttribute key="com.google.gwt.eclipse.core.STYLE" value="OBFUSCATED"/>
<stringAttribute key="com.google.gwt.eclipse.core.WEB_MODE" value="true"/>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
<listEntry value="/service-endpoint-editor/src/test/java/org/gcube/portlets/admin/sepeditor/client/GwtTestRuntimeResourceCreator.java"/>
</listAttribute>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
<listEntry value="1"/>
</listAttribute>
<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>
<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/>
<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="com.google.gdt.eclipse.maven.mavenClasspathProvider"/>
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.gcube.portlets.admin.sepeditor.client.GwtTestRuntimeResourceCreator"/>
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="service-endpoint-editor"/>
</launchConfiguration>

@ -0,0 +1 @@
Use the respective war file of this component

@ -0,0 +1,7 @@
gCube System - License
------------------------------------------------------------
The gCube/gCore software is licensed as Free Open Source software conveying to the EUPL (http://ec.europa.eu/idabc/eupl).
The software and documentation is provided by its authors/distributors "as is" and no expressed or
implied warranty is given for its use, quality or fitness for a particular case.

@ -0,0 +1,5 @@
Mantainers
-------
* Massimiliano Assante (massimiliano.assante@isti.cnr.it), CNR Pisa,
Istituto di Scienza e Tecnologie dell'Informazione "A. Faedo".

@ -0,0 +1,51 @@
The gCube System - Portlets - Resource Management Portlet
------------------------------------------------------------
This work has been partially supported by the following European projects:
DILIGENT (FP6-2003-IST-2), D4Science (FP7-INFRA-2007-1.2.2), D4Science-II (FP7-INFRA-2008-1.2.2),
iMarine (FP7-INFRASTRUCTURES-2011-2), and EUBrazilOpenBio (FP7-ICT-2011-EU-Brazil).
Authors
-------
* Massimiliano Assante (massimiliano.assante@isti.cnr.it), CNR Pisa, Istituto di Scienza e Tecnologie dell'Informazione "A. Faedo"
* Daniele Strollo
Version and Release Date
------------------------
v. 2.1.0, September 21st 2012
Description
-----------
EXT-GWT based portlet application to manage resources and their related operations
Download information
--------------------
Source code is available from SVN:
https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/admin/ResourceManagementPortlet
Binaries can be downloaded from:
http://software.d4science.research-infrastructures.eu/
Documentation
-------------
Documentation is available on-line from the Projects Documentation Wiki:
https://gcube.wiki.gcube-system.org/gcube/index.php/Developer%27s_Guide
Licensing
---------
This software is licensed under the terms you may find in the file named "LICENSE" in this directory.
On OSX
---------
If having troubles with xerces:
javax.xml.parsers.FactoryConfigurationError: Provider org.apache.xerces.jaxp.DocumentBuilderFactoryImpl not found
With jdk1.5 use sax.jar provided in the lib dir in behalf of $GLOBUS_LOCATION/lib/xercesImpl.jar
and xml-apis.jar.

@ -0,0 +1,11 @@
<ReleaseNotes>
<Changeset component="org.gcube.portlets-admin.runtime-resource-creator.1-3-0" date="2013-05-29">
<Change>Fix for Encrypted fields Lost #1748</Change>
</Changeset>
<Changeset component="org.gcube.portlets-admin.runtime-resource-creator.1-2-0" date="2013-04-19">
<Change>Removed password re entering feature, see #990</Change>
</Changeset>
<Changeset component="org.gcube.portlets-admin.runtime-resource-creator.1-1-0" date="2012-05-04">
<Change>Edit feature added</Change>
</Changeset>
</ReleaseNotes>

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

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<Resource xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ID></ID>
<Type>Service</Type>
<Profile>
<Description>${description}</Description>
<Class>PortletAdmin</Class>
<Name>${artifactId}</Name>
<Version>${version}</Version>
<Packages>
<Software>
<Name>${artifactId}</Name>
<Version>${version}</Version>
<MavenCoordinates>
<groupId>${groupId}</groupId>
<artifactId>${artifactId}</artifactId>
<version>${version}</version>
</MavenCoordinates>
<Files>
<File>target/${build.finalName}.war</File>
</Files>
</Software>
</Packages>
</Profile>
</Resource>

@ -0,0 +1 @@
${scm.url}

@ -0,0 +1,240 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>maven-parent</artifactId>
<groupId>org.gcube.tools</groupId>
<version>1.0.0</version>
<relativePath />
</parent>
<groupId>org.gcube.portlets.admin</groupId>
<artifactId>service-endpoint-editor</artifactId>
<packaging>war</packaging>
<version>1.0.0-SNAPSHOT</version>
<name>gCube Service End Point Editor Management Portlet</name>
<description>
gCube Service End Point Editor Management Portlet
</description>
<scm>
<connection>scm:svn:http://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/admin/${project.artifactId}</connection>
<developerConnection>scm:https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/admin/${project.artifactId}</developerConnection>
<url>http://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/admin/${project.artifactId}</url>
</scm>
<properties>
<!-- Convenience property to set the GWT version -->
<gwtVersion>2.5.1</gwtVersion>
<distroDirectory>distro</distroDirectory>
<!-- GWT needs at least java 1.6 -->
<maven.compiler.source>1.6</maven.compiler.source>
<maven.compiler.target>1.6</maven.compiler.target>
<webappDirectory>${project.build.directory}/${project.build.finalName}</webappDirectory>
<!-- To make this work on gwt-run you need to set up global env vars. on
MacOSX edit this file /etc/launchd.conf and put "setenv GLOBUS_LOCATION /Users/massi/portal/Portal-Bundle/gCore"
on Linux? -->
<GLOBUS_LOCATION>${env.GLOBUS_LOCATION}</GLOBUS_LOCATION>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
<dependencies>
<!-- This dependency is needed and is need on TOP to use GWT UI BInder
without old Xerces and Xalan version of gCore complaining -->
<dependency>
<groupId>com.google.gwt</groupId>
<artifactId>gwt-user</artifactId>
<version>${gwtVersion}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>xalan</groupId>
<artifactId>xalan</artifactId>
<version>2.7.1</version>
</dependency>
<dependency>
<groupId>com.google.gwt</groupId>
<artifactId>gwt-servlet</artifactId>
<version>${gwtVersion}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.sencha.gxt</groupId>
<artifactId>gxt</artifactId>
<version>2.2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.gcube.portlets.admin</groupId>
<artifactId>rmp-common-library</artifactId>
<version>[2.0.0-SNAPSHOT, 3.0.0-SNAPSHOT)</version>
</dependency>
<dependency>
<groupId>org.gcube.applicationsupportlayer</groupId>
<artifactId>aslcore</artifactId>
<version>[3.2.0-SNAPSHOT, 4.0.0-SNAPSHOT)</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.gcube.portlets.user</groupId>
<artifactId>gcube-widgets</artifactId>
<version>[1.4.0-SNAPSHOT, 2.0.0-SNAPSHOT)</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.gcube.portal</groupId>
<artifactId>custom-portal-handler</artifactId>
<version>[1.2.0-SNAPSHOT, 2.0.0-SNAPSHOT)</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.gcube.core</groupId>
<artifactId>gcf</artifactId>
<version>[1.4.0-SNAPSHOT, 2.0.0-SNAPSHOT)</version>
<scope>provided</scope>
</dependency>
<!-- Liferay, Servlets Etc -->
<dependency>
<groupId>javax.mail</groupId>
<artifactId>javax.mail-api</artifactId>
<version>1.4.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.liferay.portal</groupId>
<artifactId>portal-service</artifactId>
<version>6.0.6</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.portlet</groupId>
<artifactId>portlet-api</artifactId>
<version>2.0</version>
<scope>provided</scope>
</dependency>
<!-- Logging -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.6.4</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.6.4</version>
</dependency>
</dependencies>
<build>
<!-- Generate compiled stuff in the folder used for developing mode -->
<outputDirectory>${webappDirectory}/WEB-INF/classes</outputDirectory>
<plugins>
<!-- GWT Maven Plugin -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>gwt-maven-plugin</artifactId>
<version>${gwtVersion}</version>
<executions>
<execution>
<goals>
<goal>compile</goal>
<!-- <goal>test</goal> -->
</goals>
</execution>
</executions>
<!-- Plugin configuration. There are many available options, see gwt-maven-plugin
documentation at codehaus.org -->
<configuration>
<extraJvmArgs>-Xmx512M -DGLOBUS_LOCATION=${GLOBUS_LOCATION}</extraJvmArgs>
<runTarget>RuntimeResourceCreator.html</runTarget>
<hostedWebapp>${webappDirectory}</hostedWebapp>
<!-- <logLevel>DEBUG</logLevel> -->
</configuration>
</plugin>
<!-- Copy static web files before executing gwt:run -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1.1</version>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>exploded</goal>
</goals>
</execution>
</executions>
<configuration>
<webappDirectory>${webappDirectory}</webappDirectory>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<!-- SA Plugin -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2</version>
<configuration>
<descriptors>
<descriptor>${distroDirectory}/descriptor.xml</descriptor>
</descriptors>
</configuration>
<executions>
<execution>
<id>servicearchive</id>
<phase>install</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.5</version>
<executions>
<execution>
<id>copy-profile</id>
<phase>install</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>target</outputDirectory>
<resources>
<resource>
<directory>${distroDirectory}</directory>
<filtering>true</filtering>
<includes>
<include>profile.xml</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<module rename-to='sepeditor'>
<!-- Inherit the core Web Toolkit stuff. -->
<inherits name='com.google.gwt.user.User' />
<!-- Inherit the default GWT style sheet. You can change -->
<!-- the theme of your GWT application by uncommenting -->
<!-- any one of the following lines. -->
<inherits name='com.google.gwt.user.theme.clean.Clean' />
<!-- <inherits name='com.google.gwt.user.theme.standard.Standard'/> -->
<!-- <inherits name='com.google.gwt.user.theme.chrome.Chrome'/> -->
<!-- <inherits name='com.google.gwt.user.theme.dark.Dark'/> -->
<!-- Other module inherits -->
<inherits name='com.extjs.gxt.ui.GXT' />
<inherits name='com.extjs.gxt.themes.Themes' />
<!-- inherits gCube Widgets Library -->
<inherits name='org.gcube.portlets.user.gcubewidgets.WidgetFactory' />
<!-- Specify the app entry point class. -->
<entry-point
class='org.gcube.portlets.admin.sepeditor.client.RuntimeResourceCreator' />
<!-- Specify the paths for translatable code -->
<source path='client' />
<source path='shared' />
</module>

@ -0,0 +1,82 @@
package org.gcube.portlets.admin.sepeditor.client;
import java.util.ArrayList;
import org.gcube.portlets.admin.sepeditor.client.forms.RuntimeResourceForm;
import org.gcube.portlets.admin.sepeditor.shared.ClientScope;
import org.gcube.portlets.admin.sepeditor.shared.FilledRuntimeResource;
import org.gcube.portlets.admin.sepeditor.shared.InitInfo;
import com.extjs.gxt.ui.client.widget.ContentPanel;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.RootPanel;
/**
* Entry point classes define <code>onModuleLoad()</code>.
*/
public class RuntimeResourceCreator implements EntryPoint {
public static final String CONTAINER_DIV = "RuntimeResourcePortletDIV";
public static RuntimeResourceCreatorServiceAsync runtimeService =
(RuntimeResourceCreatorServiceAsync)GWT.create(RuntimeResourceCreatorService.class);
final ContentPanel mainPanel = new ContentPanel();
ArrayList<String> scopesCache;
/**
*
*/
public void onModuleLoad() {
mainPanel.setSize("100%","600");
mainPanel.mask("Fetching Scopes, please wait","loading-indicator");
String resourceToEdit = com.google.gwt.user.client.Window.Location.getParameter("rid");
String curscope = com.google.gwt.user.client.Window.Location.getParameter("curscope");
runtimeService.getInitialInfo((resourceToEdit != null), resourceToEdit, curscope, new AsyncCallback<InitInfo>() {
@Override
public void onSuccess(InitInfo initialInfo) {
GWT.log("SUCCESS");
mainPanel.unmask();
ArrayList<String> scopes = initialInfo.getScopes();
if (initialInfo.getRr2edit() != null) {
initialize(scopes, initialInfo.getRr2edit());
}
else
initialize(scopes, null);
}
@Override
public void onFailure(Throwable arg0) {
GWT.log("FAILED" + arg0.getMessage());
mainPanel.unmask();
}
});
RootPanel.get(CONTAINER_DIV).add(mainPanel);
}
public void initialize(ArrayList<String> scopes, FilledRuntimeResource toEdit) {
GWT.log("initialize" + scopes.toString());
if (scopesCache == null)
scopesCache = scopes;
ArrayList<ClientScope> scopesToPass = new ArrayList<ClientScope>();
for (String scope : scopesCache) {
scopesToPass.add(new ClientScope(scope));
}
RuntimeResourceForm form = null;
if (toEdit == null) {
form = new RuntimeResourceForm(this, scopesToPass);
}
else {
form = new RuntimeResourceForm(this, scopesToPass, toEdit);
}
RootPanel.get(CONTAINER_DIV).remove(0);
RootPanel.get(CONTAINER_DIV).add(form);
}
}

@ -0,0 +1,22 @@
package org.gcube.portlets.admin.sepeditor.client;
import java.util.ArrayList;
import org.gcube.portlets.admin.sepeditor.shared.Category;
import org.gcube.portlets.admin.sepeditor.shared.FilledRuntimeResource;
import org.gcube.portlets.admin.sepeditor.shared.InitInfo;
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("serviceendpointEditor")
public interface RuntimeResourceCreatorService extends RemoteService {
ArrayList<Category> getCategories();
InitInfo getInitialInfo(boolean isEditMode, String idToEdit, String curscope);
Boolean createRuntimeResource(String scope, FilledRuntimeResource resource, boolean isUpdate);
}

@ -0,0 +1,23 @@
package org.gcube.portlets.admin.sepeditor.client;
import java.util.ArrayList;
import org.gcube.portlets.admin.sepeditor.shared.Category;
import org.gcube.portlets.admin.sepeditor.shared.FilledRuntimeResource;
import org.gcube.portlets.admin.sepeditor.shared.InitInfo;
import com.google.gwt.user.client.rpc.AsyncCallback;
/**
* The async counterpart of <code>RuntimeResourceCreatorService</code>.
*/
public interface RuntimeResourceCreatorServiceAsync {
void getCategories(AsyncCallback<ArrayList<Category>> callback);
void createRuntimeResource(String scope, FilledRuntimeResource resource, boolean isUpdate,
AsyncCallback<Boolean> callback);
void getInitialInfo(boolean isEditMode, String idToEdit,
String curscope, AsyncCallback<InitInfo> callback);
}

@ -0,0 +1,210 @@
package org.gcube.portlets.admin.sepeditor.client.forms;
import java.util.ArrayList;
import org.gcube.portlets.admin.sepeditor.shared.Property;
import org.gcube.portlets.admin.sepeditor.shared.RRAccessPoint;
import com.extjs.gxt.ui.client.event.BaseEvent;
import com.extjs.gxt.ui.client.event.ComponentEvent;
import com.extjs.gxt.ui.client.event.EventType;
import com.extjs.gxt.ui.client.event.Events;
import com.extjs.gxt.ui.client.event.IconButtonEvent;
import com.extjs.gxt.ui.client.event.Listener;
import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.widget.ContentPanel;
import com.extjs.gxt.ui.client.widget.Info;
import com.extjs.gxt.ui.client.widget.Label;
import com.extjs.gxt.ui.client.widget.MessageBox;
import com.extjs.gxt.ui.client.widget.button.Button;
import com.extjs.gxt.ui.client.widget.button.ToolButton;
import com.extjs.gxt.ui.client.widget.form.Field;
import com.extjs.gxt.ui.client.widget.form.FormPanel;
import com.extjs.gxt.ui.client.widget.form.TextField;
import com.extjs.gxt.ui.client.widget.form.Validator;
import com.extjs.gxt.ui.client.widget.layout.FormData;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.BlurEvent;
import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.Window;
public class AccesPointPanel extends ContentPanel {
private ArrayList<PropertyPanel> properties = new ArrayList<PropertyPanel>();
private FormPanel form = null;
private TextField<String> desc = new TextField<String>();
private TextField<String> interfaceEntryNameAttr = new TextField<String>();
private TextField<String> interfaceEndPoint = new TextField<String>();
private TextField<String> username = new TextField<String>();
private TextField<String> password1 = new TextField<String>();
private TextField<String> password2 = new TextField<String>();
private Button addPropertyButton;
private RuntimeResourceForm caller;
public AccesPointPanel(RuntimeResourceForm caller, RRAccessPoint toEdit) {
this(caller, true, toEdit);
desc.setValue(toEdit.getDesc());
interfaceEntryNameAttr.setValue(toEdit.getInterfaceEntryNameAttr());
interfaceEndPoint.setValue(toEdit.getInterfaceEndPoint());
username.setValue(toEdit.getUsername());
password1.setValue(toEdit.getPassword());
password2.setValue(toEdit.getPassword());
}
public AccesPointPanel(RuntimeResourceForm caller, boolean isEditMode, RRAccessPoint toEdit) {
this.caller = caller;
setHeading("Access Point");
form = new FormPanel();
form.setFrame(true);
form.setAutoWidth(true);
form.setLabelWidth(150);
form.setHeaderVisible(false);
form.getHeader().setStyleName("x-hide-panel-header");
desc.setFieldLabel("Description");
desc.setAllowBlank(false);
interfaceEntryNameAttr.setFieldLabel("[Interface] interfaceEntry name ");
interfaceEntryNameAttr.setAllowBlank(false);
interfaceEndPoint.setFieldLabel("[Interface] interfaceEndPoint ");
interfaceEndPoint.setAllowBlank(false);
username.setFieldLabel("Username");
username.setAllowBlank(true);
password1.setFieldLabel("Password");
password1.setAllowBlank(true);
password1.setPassword(true);
//password1.setAutoValidate(true);
password2.setFieldLabel("Repeat Password");
password2.setAllowBlank(true);
password2.setPassword(true);
password2.addListener(Events.Blur, new Listener<BaseEvent>() {
@Override
public void handleEvent(BaseEvent be) {
if (password1.getRawValue().compareTo(password2.getRawValue()) != 0) {
Info.display("Password Mismatch", "Your entered password and password confirm looks different!");
password2.focus();
password1.markInvalid("Password Mismatch");
}
else
password1.validate();
}
});
Timer t = new Timer() {
@Override
public void run() {
password1.setValidator(new Validator() {
public String validate (Field ticketField, String value){
if (password1.getRawValue().compareTo(password2.getRawValue()) != 0)
return "Password Mismatch";
else
return null;
}
});
}
};
t.schedule(500); //need to use a timer to defer the check password wehn editing first time
//
form.add(desc, new FormData("-20"));
form.add(interfaceEntryNameAttr, new FormData("-20"));
form.add(interfaceEndPoint, new FormData("-20"));
form.add(username, new FormData("-20"));
form.add(password1, new FormData("-20"));
form.add(password2, new FormData("-20"));
if (toEdit != null) {
for(Property prop: toEdit.getProperties())
addProperty2Edit(prop);
}
addPropertyButton = getAddPropertyButton();
form.add(addPropertyButton);
form.add(new Label()); //spacer
setBorders(true);
getHeader().addTool(new ToolButton("x-tool-close", new SelectionListener<IconButtonEvent>() {
@Override
public void componentSelected(IconButtonEvent ce) {
remove();
}
}));
add(form);
}
private void addProperty2Edit(Property prop) {
PropertyPanel pp = new PropertyPanel(this, prop);
form.add(pp, new FormData("-20"));
form.add(new Label()); //spacer
properties.add(pp);
form.layout();
}
private Button getAddPropertyButton() {
Button addProperty = new Button("Add New Property"){
@Override
protected void onClick(final ComponentEvent ce) {
PropertyPanel pp = getPropertyPanel();
form.remove(addPropertyButton);
form.add(pp, new FormData("-20"));
form.add(new Label());
form.add(addPropertyButton);
form.layout();
properties.add(pp);
}
};
return addProperty;
}
private PropertyPanel getPropertyPanel() {
return new PropertyPanel(this);
}
protected void removeProperty(PropertyPanel toRemove) {
this.properties.remove(toRemove);
form.remove(toRemove);
}
private void remove() {
caller.removeAccessPoint(this);
}
public TextField<String> getDesc() {
return desc;
}
public TextField<String> getEntryNameAttr() {
return interfaceEntryNameAttr;
}
public TextField<String> getEndPoint() {
return interfaceEndPoint;
}
public TextField<String> getUsername() {
return username;
}
public TextField<String> getPassword() {
return password1;
}
public ArrayList<PropertyPanel> getProperties() {
return properties;
}
}

@ -0,0 +1,74 @@
package org.gcube.portlets.admin.sepeditor.client.forms;
import org.gcube.portlets.admin.sepeditor.shared.Property;
import com.extjs.gxt.ui.client.event.IconButtonEvent;
import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.widget.ContentPanel;
import com.extjs.gxt.ui.client.widget.button.ToolButton;
import com.extjs.gxt.ui.client.widget.form.CheckBox;
import com.extjs.gxt.ui.client.widget.form.FormPanel;
import com.extjs.gxt.ui.client.widget.form.TextField;
import com.extjs.gxt.ui.client.widget.layout.FormData;
public class PropertyPanel extends ContentPanel {
private FormPanel form = null;
private TextField<String> key = new TextField<String>();
private TextField<String> value = new TextField<String>();
private CheckBox crypted = new CheckBox();
AccesPointPanel owner;
public PropertyPanel(AccesPointPanel caller, Property source) {
this(caller);
key.setValue(source.getKey());
crypted.setValue(source.isCrypted());
value.setValue(source.getValue());
}
public PropertyPanel(AccesPointPanel caller) {
owner = caller;
setHeading("Property");
form = new FormPanel();
form.setFrame(true);
form.setAutoWidth(true);
form.setHeaderVisible(false);
form.getHeader().setStyleName("x-hide-panel-header");
crypted.setFieldLabel("Encrypt");
key.setFieldLabel("Key");
key.setAllowBlank(false);
value.setFieldLabel("Value");
value.setAllowBlank(false);
form.add(crypted, new FormData(20, 20));
form.add(key, new FormData("-20"));
form.add(value, new FormData("-20"));
getHeader().addTool(new ToolButton("x-tool-close", new SelectionListener<IconButtonEvent>() {
@Override
public void componentSelected(IconButtonEvent ce) {
remove();
}
}));
add(form);
}
private void remove() {
owner.removeProperty(this);
}
public TextField<String> getKey() {
return key;
}
public TextField<String> getValue() {
return value;
}
public boolean isCrypted() {
return crypted.getValue();
}
}

@ -0,0 +1,447 @@
package org.gcube.portlets.admin.sepeditor.client.forms;
import java.util.ArrayList;
import java.util.List;
import org.gcube.portlets.admin.sepeditor.client.RuntimeResourceCreator;
import org.gcube.portlets.admin.sepeditor.client.RuntimeResourceCreatorService;
import org.gcube.portlets.admin.sepeditor.client.RuntimeResourceCreatorServiceAsync;
import org.gcube.portlets.admin.sepeditor.shared.Category;
import org.gcube.portlets.admin.sepeditor.shared.ClientScope;
import org.gcube.portlets.admin.sepeditor.shared.FilledRuntimeResource;
import org.gcube.portlets.admin.sepeditor.shared.Property;
import org.gcube.portlets.admin.sepeditor.shared.RRAccessPoint;
import com.extjs.gxt.ui.client.Style.HorizontalAlignment;
import com.extjs.gxt.ui.client.Style.Scroll;
import com.extjs.gxt.ui.client.event.ComponentEvent;
import com.extjs.gxt.ui.client.store.ListStore;
import com.extjs.gxt.ui.client.widget.ContentPanel;
import com.extjs.gxt.ui.client.widget.Label;
import com.extjs.gxt.ui.client.widget.MessageBox;
import com.extjs.gxt.ui.client.widget.button.Button;
import com.extjs.gxt.ui.client.widget.form.ComboBox;
import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction;
import com.extjs.gxt.ui.client.widget.form.Field;
import com.extjs.gxt.ui.client.widget.form.FieldSet;
import com.extjs.gxt.ui.client.widget.form.FormButtonBinding;
import com.extjs.gxt.ui.client.widget.form.FormPanel;
import com.extjs.gxt.ui.client.widget.form.NumberField;
import com.extjs.gxt.ui.client.widget.form.TextArea;
import com.extjs.gxt.ui.client.widget.form.TextField;
import com.extjs.gxt.ui.client.widget.layout.FormData;
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.AsyncCallback;
/**
*
* @author Massimiliano Assante - ISTI-CNR
* @version 1.1 Apr 10th 2012
*/
public class RuntimeResourceForm extends ContentPanel {
protected RuntimeResourceCreatorServiceAsync runtimeService = (RuntimeResourceCreatorServiceAsync)GWT.create(RuntimeResourceCreatorService.class);
RuntimeResourceCreator caller;
private ArrayList<AccesPointPanel> accessPoints = new ArrayList<AccesPointPanel>();
private FormData formData = null;
private FormPanel form = null;
private Button addAccessPointButton;
private ArrayList<ClientScope> scopes;
private FilledRuntimeResource toEdit;
private boolean isEditMode = false;
/**
* create mode
* @param caller
* @param scopes
*/
public RuntimeResourceForm(RuntimeResourceCreator caller, ArrayList<ClientScope> scopes) {
this.caller = caller;
this.setHeaderVisible(true);
this.setHeading("Runtime Resource Creation");
//this.setModal(true);
this.setAutoWidth(true);
this.setHeight(650);
//this.setResizable(true);
this.setScrollMode(Scroll.AUTOY);
this.getButtonBar().removeAll();
this.scopes = scopes;
formData = new FormData("-20");
createForm();
}
/**
* edit mode
* @param caller
* @param scopes
* @param toEdit
*/
public RuntimeResourceForm(RuntimeResourceCreator caller, ArrayList<ClientScope> scopes, FilledRuntimeResource toEdit) {
this.isEditMode = true;
this.toEdit = toEdit;
this.caller = caller;
this.setHeaderVisible(true);
this.setHeading("Runtime Resource Creation [EDIT MODE]");
//this.setModal(true);
this.setAutoWidth(true);
this.setHeight(650);
//this.setResizable(true);
this.setScrollMode(Scroll.AUTOY);
this.getButtonBar().removeAll();
this.scopes = scopes;
formData = new FormData("-20");
createForm();
}
public final void closeDialog() {
this.hide();
}
private void createForm() {
form = new FormPanel();
form.setFrame(true);
form.setAutoWidth(true);
form.setHeaderVisible(false);
form.getHeader().setStyleName("x-hide-panel-header");
//listbox scope
ListStore<ClientScope> storeScope = new ListStore<ClientScope>();
storeScope.add(scopes);
ComboBox<ClientScope> comboScope = new ComboBox<ClientScope>();
comboScope.setFieldLabel("Scope");
comboScope.setDisplayField("name");
comboScope.setTriggerAction(TriggerAction.ALL);
comboScope.setStore(storeScope);
comboScope.setEditable(false);
form.add(comboScope, formData);
TextField<String> resID = new TextField<String>();
resID.setFieldLabel("Resource ID");
// resID.setValidator(new StringValidator(120, false));
resID.setAllowBlank(false); // is required
resID.setEmptyText(isEditMode ? toEdit.getResourceId() : "<generated by Resource Manager>");
resID.setEnabled(false);
form.add(resID, formData);
TextField<String> resName = new TextField<String>();
resName.setFieldLabel("Resource Name");
// resName.setValidator(new StringValidator(120, false));
resName.setAllowBlank(false); // is required
form.add(resName, formData);
TextArea description = new TextArea();
description.setFieldLabel("Resource Description");
form.add(description, formData);
TextField<String> resType = new TextField<String>();
resType.setFieldLabel("Type");
resType.setAllowBlank(false); // is required
// If in editing mode
resType.setEmptyText("RuntimeResource");
resType.setEnabled(false);
form.add(resType, formData);
//listbox
List<Category> categories = getCategories();
ListStore<Category> store = new ListStore<Category>();
store.add(categories);
ComboBox<Category> combo = new ComboBox<Category>();
combo.setFieldLabel("Category");
combo.setDisplayField("name");
combo.setTriggerAction(TriggerAction.ALL);
combo.setStore(store);
form.add(combo, formData);
//get the platform
form.add(getPlatform());
//get thr runtime
form.add(getRuntime());
String submitText = "Submit New";
if (isEditMode) {
comboScope.setValue(storeScope.getAt(0));
resName.setValue(toEdit.getResourceName());
description.setValue(toEdit.getDescription());
combo.setValue(new Category(toEdit.getCategory()));
for (RRAccessPoint ap : toEdit.getRRAccessPoints()) {
addAccessPoint2Edit(ap);
}
submitText = "Submit Update";
}
//add access point
addAccessPointButton = getAddAccessPointButton();
form.add(addAccessPointButton);
form.add(new Label()); //spacer
Button submitBtn = new Button(submitText) {
@Override
protected void onClick(final ComponentEvent ce) {
form.mask("sending encrypted info, please wait","loading-indicator");
super.onClick(ce);
if (!form.isValid()) {
return;
}
String[] values = new String[form.getFields().size()];
int i = 0;
for (Field<?> field : form.getFields()) {
values[i] = field.getRawValue();
GWT.log(i+ ": " + field.getRawValue()+"\n");
i++;
}
FilledRuntimeResource rr = new FilledRuntimeResource();
if (isEditMode)
rr.setResourceId(toEdit.getResourceId());
rr.setResourceName(values[2]);
rr.setDescription(values[3]);
rr.setCategory(values[5]);
rr.setPlatformName(values[6]);
rr.setPlatformVersion(values[7]);
rr.setPlatformMinorVersion(values[8]);
rr.setPlatformRevisionVersion(values[9]);
rr.setPlatformBuildVersion(values[10]);
rr.setRuntimeHostedOn(values[11]);
rr.setRuntimeStatus(values[12]);
rr.setRuntimegHNUniqueID(values[13]);
ArrayList<RRAccessPoint> rRAccessPoints = new ArrayList<RRAccessPoint>();
for (AccesPointPanel ap : accessPoints) {
RRAccessPoint rAP = new RRAccessPoint();
rAP.setDesc(ap.getDesc().getRawValue());
rAP.setInterfaceEndPoint(ap.getEndPoint().getRawValue());
rAP.setInterfaceEntryNameAttr(ap.getEntryNameAttr().getRawValue());
rAP.setUsername(ap.getUsername().getRawValue());
rAP.setPassword(ap.getPassword().getRawValue());
ArrayList<Property> properties = new ArrayList<Property>();
for (PropertyPanel pp : ap.getProperties()) {
Property toAdd = new Property();
toAdd.setKey(pp.getKey().getRawValue());
toAdd.setValue(pp.getValue().getRawValue());
toAdd.setCrypted(pp.isCrypted());
properties.add(toAdd);
}
rAP.setProperties(properties);
rRAccessPoints.add(rAP);
}
rr.setRRAccessPoints(rRAccessPoints);
RuntimeResourceCreator.runtimeService.createRuntimeResource(values[0], rr, isEditMode, new AsyncCallback<Boolean>() {
@Override
public void onSuccess(Boolean result) {
form.unmask();
if (result) {
MessageBox.alert("Runtime Resource Creation", "Request for registration successfully sent", null);
}
else {
MessageBox.alert("Runtime Resource Creation", "Request for registration failed, please check server logs", null);
}
caller.initialize(null, null);
}
@Override
public void onFailure(Throwable arg0) {
form.unmask();
MessageBox.alert("Runtime Resource Creation", "Request for registration Failed", null);
caller.initialize(null, null);
}
});
}
};
form.addButton(submitBtn);
form.setButtonAlign(HorizontalAlignment.CENTER);
FormButtonBinding binding = new FormButtonBinding(form);
binding.addButton(submitBtn);
this.add(form);
}
private Button getAddAccessPointButton() {
Button addAccessPoint = new Button("Add Access Point"){
@Override
protected void onClick(final ComponentEvent ce) {
AccesPointPanel toAdd = getNewAccessPoint();
addAccessPoint(toAdd);
form.remove(addAccessPointButton);
form.add(toAdd, formData);
form.add(new Label());
form.add(addAccessPointButton);
form.layout();
}
};
return addAccessPoint;
}
/**
*
* @return .
*/
private AccesPointPanel getNewAccessPoint() {
return new AccesPointPanel(this, false, null);
}
/**
*
* @return .
*/
private void addAccessPoint2Edit(RRAccessPoint source) {
AccesPointPanel toAdd = new AccesPointPanel(this, source);
addAccessPoint(toAdd);
form.add(toAdd, formData);
form.add(new Label());
form.layout();
}
private ArrayList<Category> getCategories() {
final ArrayList<Category> defaultCats = new ArrayList<Category>();
defaultCats.add(new Category("Application"));
defaultCats.add(new Category("BiodiversityRepository"));
defaultCats.add(new Category("Cloud"));
defaultCats.add(new Category("Database"));
defaultCats.add(new Category("DataStorage"));
defaultCats.add(new Category("HostingPlatform"));
defaultCats.add(new Category("FTPServer"));
defaultCats.add(new Category("Gis"));
defaultCats.add(new Category("MavenRepository"));
defaultCats.add(new Category("OnlineService"));
defaultCats.add(new Category("OpenSearchRepository"));
defaultCats.add(new Category("Service"));
return defaultCats;
}
private ArrayList<Category> getStatuses() {
final ArrayList<Category> defaultCats = new ArrayList<Category>();
defaultCats.add(new Category("READY"));
defaultCats.add(new Category("UNAVAILABLE"));
return defaultCats;
}
protected void addAccessPoint(AccesPointPanel toAdd) {
this.accessPoints.add(toAdd);
}
protected void removeAccessPoint(AccesPointPanel toRemove) {
this.accessPoints.remove(toRemove);
form.remove(toRemove);
}
/**
*
* @return .
*/
private FieldSet getPlatform() {
FieldSet fieldSet = new FieldSet();
fieldSet.setHeading("Platform");
fieldSet.setCollapsible(true);
FormLayout layout = new FormLayout();
layout.setLabelWidth(100);
fieldSet.setLayout(layout);
TextField<String> platformName = new TextField<String>();
platformName.setFieldLabel("Name");
platformName.setAllowBlank(false);
fieldSet.add(platformName, formData);
NumberField platformVersion = new NumberField();
platformVersion.setFieldLabel("Version");
platformVersion.setPropertyEditorType(Integer.class);
platformVersion.setAllowNegative(false);
fieldSet.add(platformVersion, formData);
platformVersion.setAllowBlank(false);
NumberField platformMinorVersion = new NumberField();
platformMinorVersion.setFieldLabel("Minor Version");
platformMinorVersion.setPropertyEditorType(Integer.class);
platformMinorVersion.setAllowNegative(false);
fieldSet.add(platformMinorVersion, formData);
platformMinorVersion.setAllowBlank(true);
NumberField platformRevisionVersion = new NumberField();
platformRevisionVersion.setFieldLabel("Revision Version");
platformRevisionVersion.setPropertyEditorType(Integer.class);
platformRevisionVersion.setAllowNegative(false);
fieldSet.add(platformRevisionVersion, formData);
platformRevisionVersion.setAllowBlank(true);
NumberField platformBuildVersion = new NumberField();
platformBuildVersion.setFieldLabel("Build Version");
platformBuildVersion.setPropertyEditorType(Integer.class);
platformBuildVersion.setAllowNegative(false);
fieldSet.add(platformBuildVersion, formData);
platformBuildVersion.setAllowBlank(true);
if (isEditMode) {
platformName.setValue(toEdit.getPlatformName());
platformVersion.setValue((Number) Integer.parseInt(toEdit.getPlatformVersion()));
platformMinorVersion.setValue((Number) Integer.parseInt(toEdit.getPlatformMinorVersion()));
platformRevisionVersion.setValue((Number) Integer.parseInt(toEdit.getPlatformRevisionVersion()));
platformBuildVersion.setValue((Number) Integer.parseInt(toEdit.getPlatformBuildVersion()));
}
return fieldSet;
}
/**
*
* @return .
*/
private FieldSet getRuntime() {
FieldSet fieldSet = new FieldSet();
fieldSet.setHeading("Runtime");
fieldSet.setCollapsible(true);
FormLayout layout = new FormLayout();
layout.setLabelWidth(100);
fieldSet.setLayout(layout);
TextField<String> hostedOn = new TextField<String>();
hostedOn.setFieldLabel("Hosted On");
hostedOn.setAllowBlank(false);
fieldSet.add(hostedOn, formData);
//listbox
List<Category> statuses = getStatuses();
ListStore<Category> store = new ListStore<Category>();
store.add(statuses);
ComboBox<Category> combo = new ComboBox<Category>();
combo.setFieldLabel("Status");
combo.setDisplayField("name");
combo.setTriggerAction(TriggerAction.ALL);
combo.setStore(store);
fieldSet.add(combo, formData);
TextField<String> gHNUniqueID = new TextField<String>();
gHNUniqueID.setFieldLabel("gHN UniqueID");
fieldSet.add(gHNUniqueID, formData);
gHNUniqueID.setAllowBlank(true);
if (isEditMode) {
hostedOn.setValue(toEdit.getRuntimeHostedOn());
combo.setValue(new Category(toEdit.getRuntimeStatus()));
gHNUniqueID.setValue(toEdit.getRuntimegHNUniqueID());
}
return fieldSet;
}
}

@ -0,0 +1,39 @@
/****************************************************************************
* This software is part of the gCube Project.
* Site: http://www.gcube-system.org/
****************************************************************************
* The gCube/gCore software is licensed as Free Open Source software
* conveying to the EUPL (http://ec.europa.eu/idabc/eupl).
* The software and documentation is provided by its authors/distributors
* "as is" and no expressed or
* implied warranty is given for its use, quality or fitness for a
* particular case.
****************************************************************************
* Filename: SelectValidator.java
****************************************************************************
* @author <a href="mailto:daniele.strollo@isti.cnr.it">Daniele Strollo</a>
***************************************************************************/
package org.gcube.portlets.admin.sepeditor.client.forms.validators;
import com.extjs.gxt.ui.client.widget.form.Field;
import com.extjs.gxt.ui.client.widget.form.Validator;
/**
* @author Daniele Strollo (ISTI-CNR)
*
*/
public class SelectValidator implements Validator {
private boolean emptyAllowed = false;
public SelectValidator(final boolean emptyAllowed) {
this.emptyAllowed = emptyAllowed;
}
public final String validate(final Field<?> field, final String value) {
if (!emptyAllowed && (value == null || value.trim().length() == 0)) {
return "The field value is invalid. Empty or null value not allowed.";
}
return null;
}
}

@ -0,0 +1,46 @@
/****************************************************************************
* This software is part of the gCube Project.
* Site: http://www.gcube-system.org/
****************************************************************************
* The gCube/gCore software is licensed as Free Open Source software
* conveying to the EUPL (http://ec.europa.eu/idabc/eupl).
* The software and documentation is provided by its authors/distributors
* "as is" and no expressed or
* implied warranty is given for its use, quality or fitness for a
* particular case.
****************************************************************************
* Filename: XMLValidator.java
****************************************************************************
* @author <a href="mailto:daniele.strollo@isti.cnr.it">Daniele Strollo</a>
***************************************************************************/
package org.gcube.portlets.admin.sepeditor.client.forms.validators;
import com.extjs.gxt.ui.client.widget.form.Field;
import com.extjs.gxt.ui.client.widget.form.Validator;
/**
* @author Daniele Strollo (ISTI-CNR)
*
*/
public class StringValidator implements Validator {
private int maxLenght = 256;
private boolean emptyAllowed = false;
public StringValidator(final int maxLenght, final boolean emptyAllowed) {
this.maxLenght = maxLenght;
this.emptyAllowed = emptyAllowed;
}
public final String validate(final Field<?> field, final String value) {
if (!emptyAllowed && (value == null || value.trim().length() == 0)) {
return "The field value is invalid. Empty or null value not allowed.";
}
if (value != null && value.length() > this.maxLenght) {
return "The value is too long. Limit of " + this.maxLenght + " chars exceeded.";
}
return null;
}
}

@ -0,0 +1,45 @@
/****************************************************************************
* This software is part of the gCube Project.
* Site: http://www.gcube-system.org/
****************************************************************************
* The gCube/gCore software is licensed as Free Open Source software
* conveying to the EUPL (http://ec.europa.eu/idabc/eupl).
* The software and documentation is provided by its authors/distributors
* "as is" and no expressed or
* implied warranty is given for its use, quality or fitness for a
* particular case.
****************************************************************************
* Filename: XMLValidator.java
****************************************************************************
* @author <a href="mailto:daniele.strollo@isti.cnr.it">Daniele Strollo</a>
***************************************************************************/
package org.gcube.portlets.admin.sepeditor.client.forms.validators;
import com.extjs.gxt.ui.client.widget.form.Field;
import com.extjs.gxt.ui.client.widget.form.Validator;
import com.google.gwt.xml.client.XMLParser;
import com.google.gwt.xml.client.impl.DOMParseException;
/**
* @author Daniele Strollo (ISTI-CNR)
*
*/
public class XMLValidator implements Validator {
private String rootNode = "body";
public XMLValidator(final String rootNode) {
this.rootNode = rootNode;
}
public final String validate(final Field<?> field, final String value) {
try {
XMLParser.parse("<" + this.rootNode + ">" + value + "</" + this.rootNode + ">");
} catch (DOMParseException e) {
return "Not a valid XML document";
}
return null;
}
}

@ -0,0 +1,415 @@
package org.gcube.portlets.admin.sepeditor.server;
import static org.gcube.resources.discovery.icclient.ICFactory.clientFor;
import static org.gcube.resources.discovery.icclient.ICFactory.queryFor;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.gcube.application.framework.core.session.ASLSession;
import org.gcube.application.framework.core.session.SessionManager;
import org.gcube.common.core.contexts.GHNContext;
import org.gcube.common.core.informationsystem.ISException;
import org.gcube.common.core.informationsystem.client.AtomicCondition;
import org.gcube.common.core.informationsystem.client.ISClient;
import org.gcube.common.core.informationsystem.client.queries.GCUBERuntimeResourceQuery;
import org.gcube.common.core.informationsystem.publisher.ISPublisher;
import org.gcube.common.core.resources.GCUBERuntimeResource;
import org.gcube.common.core.resources.common.PlatformDescription;
import org.gcube.common.core.resources.runtime.AccessPoint;
import org.gcube.common.core.scope.GCUBEScope;
import org.gcube.common.core.scope.ServiceMap;
import org.gcube.common.core.security.GCUBESecurityManagerImpl;
import org.gcube.common.resources.gcore.GenericResource;
import org.gcube.common.scope.api.ScopeProvider;
import org.gcube.common.scope.impl.ScopeBean;
import org.gcube.portlets.admin.sepeditor.client.RuntimeResourceCreatorService;
import org.gcube.portlets.admin.sepeditor.shared.Category;
import org.gcube.portlets.admin.sepeditor.shared.FilledRuntimeResource;
import org.gcube.portlets.admin.sepeditor.shared.InitInfo;
import org.gcube.portlets.admin.sepeditor.shared.Property;
import org.gcube.portlets.admin.sepeditor.shared.RRAccessPoint;
import org.gcube.resources.discovery.client.api.DiscoveryClient;
import org.gcube.resources.discovery.client.queries.api.SimpleQuery;
import org.apache.log4j.Logger;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
/**
* The server side implementation of the RPC service.
*/
@SuppressWarnings("serial")
public class RuntimeResourceCreatorServiceImpl extends RemoteServiceServlet implements RuntimeResourceCreatorService {
private static final Logger _log = Logger.getLogger(RuntimeResourceCreatorServiceImpl.class);
private boolean withinPortal = false;
private static final String SCOPE = "/gcube/devsec";
private final String EDIT_ID_ATTR = "RMP_EDIT_ID";
String idToTest = "b7fce5e0-b0e5-11e2-9d26-c9dc2c525e1c";
/**
* the current ASLSession
* @return the session
*/
private ASLSession getASLSession() {
String sessionID = this.getThreadLocalRequest().getSession().getId();
String user = (String) this.getThreadLocalRequest().getSession().getAttribute("username");
if (user == null) {
_log.warn("USER IS NULL setting test.user");
user = "test.user";
sessionID = "123";
}
else {
withinPortal = true;
_log.info("LIFERAY PORTAL DETECTED user=" + user);
}
ASLSession toReturn = SessionManager.getInstance().getASLSession(sessionID, user);
if (!withinPortal)
toReturn.setScope(SCOPE);
return toReturn;
}
@Override
public Boolean createRuntimeResource(String scope, FilledRuntimeResource rs, boolean isUpdate) {
GCUBERuntimeResource rt;
boolean result = true;
try {
if (!isUpdate) {
_log.info("Trying creating Runtime Resource: " + rs.getResourceName() + " SCOPE: " + scope);
rt =GHNContext.getImplementation(GCUBERuntimeResource.class);
}
else {
ISClient client = GHNContext.getImplementation(ISClient.class);
GCUBERuntimeResourceQuery query = client.getQuery(GCUBERuntimeResourceQuery.class);
query.addAtomicConditions(new AtomicCondition("//ID", rs.getResourceId()));
_log.info("Trying editing Runtime Resource ID: " + rs.getResourceId());
rt = client.execute(query,GCUBEScope.getScope(scope)).get(0); //only one rr per id
}
rt.setCategory(rs.getCategory());
rt.setDescription(rs.getDescription());
rt.setGHN(rs.getRuntimegHNUniqueID());
rt.setHostedOn(rs.getRuntimeHostedOn());
rt.setName(rs.getResourceName());
rt.setStatus(rs.getRuntimeStatus());
PlatformDescription platform = new PlatformDescription();
platform.setName(rs.getPlatformName());
platform.setVersion((short) Integer.parseInt( (rs.getPlatformVersion().equals("")) ? "0" : rs.getPlatformVersion()) );
platform.setMinorVersion((short) Integer.parseInt( (rs.getPlatformMinorVersion().equals("")) ? "0" : rs.getPlatformMinorVersion()) );
platform.setRevisionVersion((short) Integer.parseInt( (rs.getPlatformRevisionVersion().equals("")) ? "0" : rs.getPlatformRevisionVersion()) );
platform.setBuildVersion((short) Integer.parseInt( (rs.getPlatformBuildVersion().equals("")) ? "0" : rs.getPlatformBuildVersion()) );
rt.setPlatform(platform);
ArrayList<RRAccessPoint> myAccessPoints = rs.getRRAccessPoints();
List<AccessPoint> accessPoints = new ArrayList<AccessPoint>();
for (RRAccessPoint p : myAccessPoints) {
AccessPoint a = new AccessPoint();
a.setEndpoint(p.getInterfaceEndPoint());
a.setEntryname(p.getInterfaceEntryNameAttr());
a.setDescription(p.getDesc());
a.setUsername(p.getUsername());
a.setPassword(p.getPassword());
for (Property prop : p.getProperties()) {
a.addProperty(prop.getKey(), prop.getValue(), prop.isCrypted());
}
accessPoints.add(a);
}
rt.setAccessPoints(accessPoints );
rt.addScope(GCUBEScope.getScope(scope));
ISPublisher publisher = GHNContext.getImplementation(ISPublisher.class);
if (! isUpdate) {
String xmlProfile = publisher.registerGCUBEResource(rt, GCUBEScope.getScope(scope), new GCUBESecurityManagerImpl() {
@Override
public boolean isSecurityEnabled() {
// TODO Auto-generated method stub
return false;
}
});
System.out.println("Created");
_log.trace("Created new RR sent, Got from publisher: \n" + xmlProfile);
} else {
System.out.println("Updating " + rs.getResourceId());
for (String scope2Update: rt.getScopes().keySet()) {
GCUBEScope gScope = GCUBEScope.getScope(scope2Update);
ServiceMap map = loadServiceMap(scope2Update);
gScope.setServiceMap(map);
publisher.updateGCUBEResource(rt, gScope, new GCUBESecurityManagerImpl() {
@Override
public boolean isSecurityEnabled() {
return false;
}
});
System.out.println("Updated " + rs.getResourceId() + " on " + scope2Update);
}
System.out.println("Updated " + rt.getID());
_log.trace("Updated RR sent, id: " + rt.getID());
}
} catch (Throwable e) {
_log.error("ERROR While Creating or Updating RT Resource");
e.printStackTrace();
return false;
}
_log.info("Registration Request successfully Sent");
return result;
}
/**
*
* @param scope
* @return
* @throws Exception
*/
private static ServiceMap loadServiceMap(String scope) throws Exception {
ServiceMap map = new ServiceMap();
if (scope.split("/").length > 3) { //is a VRE SCOPE get its VO Map
int lastSlash = scope.lastIndexOf("/");
scope = scope.substring(0, lastSlash);
}
int lastSlash = scope.lastIndexOf("/");
scope = scope.substring(lastSlash+1, scope.length());
String fileName = "ServiceMap_" + scope + ".xml";
_log.debug("Trying load map " + fileName);
String filePath = System.getenv("GLOBUS_LOCATION") + File.separator + "config" + File.separator + fileName;
map.load(new FileReader(filePath));
return map;
}
@Override
public InitInfo getInitialInfo(boolean isEditMode, String idToEdit, String curscope) {
getASLSession();
ArrayList<String> scopes = getAvailableScopes();
if (! isEditMode) {
_log.info("Editing Mode OFF");
System.out.println("Editing Mode OFF");
for (String scopeFound : scopes) {
System.out.println(scopeFound);
}
return new InitInfo(scopes, null);
}
/*
* else return the bean of the resource to edit
*/
//get the id from the session
String rr2editId = idToEdit;
_log.info("Editing Mode ON for id: " + rr2editId);
FilledRuntimeResource fRR = getResource2EditById(rr2editId);
return new InitInfo(scopes, fRR);
}
private FilledRuntimeResource getResource2EditById(String id) {
GCUBEScope scope = null;
try {
ISClient client = GHNContext.getImplementation(ISClient.class);
GCUBERuntimeResourceQuery query = client.getQuery(GCUBERuntimeResourceQuery.class);
query.addAtomicConditions(new AtomicCondition("//ID", id));
scope = GCUBEScope.getScope(getASLSession().getScopeName());
GCUBERuntimeResource rRes = client.execute(query,scope).get(0); //only one rr per id
ArrayList<RRAccessPoint> acPoints = new ArrayList<RRAccessPoint>();
for (AccessPoint ac : rRes.getAccessPoints()) {
RRAccessPoint rac = new RRAccessPoint();
rac.setInterfaceEndPoint(ac.getEndpoint());
rac.setInterfaceEntryNameAttr(ac.getEntryname());
rac.setDesc(ac.getDescription());
rac.setUsername(ac.getUsername());
rac.setPassword(ac.getPassword());
ArrayList<Property> props = new ArrayList<Property>();
for (String prop : ac.getAllPropertyNames()) {
String propValue = ac.getProperty(prop);
props.add(new Property(prop, propValue, ac.isPropertyEncrypted(prop)));
}
rac.setProperties(props);
acPoints.add(rac);
}
return new FilledRuntimeResource(id, acPoints, rRes.getName(), rRes.getVersion(), rRes.getCategory(), rRes.getDescription(),
rRes.getPlatform().getName(), ""+rRes.getPlatform().getVersion(), ""+rRes.getPlatform().getMinorVersion(), ""+rRes.getPlatform().getRevisionVersion(),
""+rRes.getPlatform().getBuildVersion(), rRes.getHostedOn(), rRes.getStatus(), rRes.getGHN());
}
catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* NOT USED
*/
@Override
public ArrayList<Category> getCategories() {
Set<Category> mySet = new HashSet<Category>();
ArrayList<Category> toReturn = new ArrayList<Category>();
GCUBEScope scope = null;
scope = GCUBEScope.getScope(getASLSession().getScopeName());
ISClient client;
try {
_log.info("Fetching gCube Runtime resource categories into " + scope.getName());
client = GHNContext.getImplementation(ISClient.class);
GCUBERuntimeResourceQuery query = client.getQuery(GCUBERuntimeResourceQuery.class);
for (GCUBERuntimeResource rRes : client.execute(query,scope)) {
toReturn.add(new Category(rRes.getCategory()));
}
for (Category category : mySet) {
toReturn.add(category);
}
return toReturn;
} catch (Exception e) {
_log.error("Generic Exception for " + scope.getName() + " " + e.getMessage());
return null;
}
}
public ArrayList<String> getAvailableScopes() {
ArrayList<String> retval = new ArrayList<String>();
String currentScope = getASLSession().getScopeName();
System.out.println("currentScope: " + currentScope);
try {
Map<String, ScopeBean> scopes = readScopes(this.getScopeDataPath());
for (ScopeBean scope : scopes.values()) {
if (scope.toString().startsWith(currentScope))
retval.add(scope.toString());
}
Collections.sort(retval);
return retval;
} catch (Exception e) {
e.printStackTrace();
retval.add("/gcube");
retval.add("/gcube/devsec");
}
return retval;
}
public static Map<String, ScopeBean> readScopes(String confFile) throws Exception {
if (confFile == null) {
throw new NullPointerException("the scope file has not been defined");
}
Map<String, ScopeBean> toReturn = new HashMap<String, ScopeBean>();
String scopeXML = fileToString(confFile);
Document scopeDocument = getDocumentGivenXML(scopeXML);
NodeList voElements = scopeDocument.getElementsByTagName("vo");
for (int i = 0; i < voElements.getLength(); i++) {
NodeList voDetails = voElements.item(i).getChildNodes();
String voString = voDetails.item(5).getFirstChild().getNodeValue();
// String voName = voDetails.item(1).getFirstChild().getNodeValue();
ScopeBean vo = new ScopeBean(voString);
toReturn.put(vo.toString(), vo);
try {
for (String vre : getVREFromVO(vo)) {
// This operation overrides the vo map
toReturn.put(vre.toString(), new ScopeBean(vo.toString()+"/"+vre));
}
} catch (ISException e) {
_log.error("Exception raised while loading VREs for VO : " + vo, e);
}
}
return toReturn;
}
private String getScopeDataPath() {
String startDirectory = getServletFSPath();
return startDirectory + File.separator + "xml" + File.separator +"scopedata_admin.xml";
}
private String getServletFSPath() {
return this.getServletContext().getRealPath("") + File.separator + "WEB-INF";
}
public static String fileToString(final String path) throws IOException {
BufferedReader filebuf = null;
String nextStr = null;
StringBuilder ret = new StringBuilder();
filebuf = new BufferedReader(new FileReader(path));
nextStr = filebuf.readLine(); // legge una riga dal file
while (nextStr != null) {
ret.append(nextStr);
nextStr = filebuf.readLine(); // legge la prossima riga
}
filebuf.close(); // chiude il file
return ret.toString();
}
public static Document getDocumentGivenXML(final String result) {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setValidating(false);
DocumentBuilder db;
Document document = null;
try {
db = dbf.newDocumentBuilder();
document = db.parse(new ByteArrayInputStream(result.getBytes()));
} catch (ParserConfigurationException e1) {
e1.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return document;
}
protected static List<String> getVREFromVO(final ScopeBean vo) throws Exception {
_log.debug("Starting Retrieving VREs for VO : " + vo);
List<String> toReturn = new ArrayList<String>();
ScopeProvider.instance.set(vo.toString());
SimpleQuery query = queryFor(GenericResource.class);
query.addCondition("$resource/Profile/SecondaryType/text() eq 'VRE'");
DiscoveryClient<GenericResource> client = clientFor(GenericResource.class);
List<GenericResource> gRes = client.submit(query);
for (GenericResource res : gRes) {
_log.debug("Found: " + res.profile().name());
toReturn.add(res.profile().name());
}
return toReturn;
}
}

@ -0,0 +1,41 @@
package org.gcube.portlets.admin.sepeditor.server.portlet;
import java.io.IOException;
import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;
import javax.portlet.GenericPortlet;
import javax.portlet.PortletException;
import javax.portlet.PortletRequestDispatcher;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;
import org.gcube.portal.custom.scopemanager.scopehelper.ScopeHelper;
/**
*
* @author Massimiliano Assante - ISTI-CNR
* @version 1.0 Feb 9th 2012
*/
public class RuntimeResourcePortlet extends GenericPortlet {
public void doView(RenderRequest request, RenderResponse response) throws PortletException, IOException {
try {
ScopeHelper.setContext(request);
}
catch (Exception e) {
System.out.println("Exception while setting portlet context, are you not logged?");
}
PortletRequestDispatcher dispatcher =
getPortletContext().getRequestDispatcher("/WEB-INF/jsp/RuntimePortlet_view.jsp");
dispatcher.include(request, response);
}
/**
*
*/
public void processAction(ActionRequest request, ActionResponse response)
throws PortletException, IOException {
}
}

@ -0,0 +1,19 @@
package org.gcube.portlets.admin.sepeditor.shared;
import com.extjs.gxt.ui.client.data.BaseModel;
public class Category extends BaseModel {
private static final long serialVersionUID = 1L;
public Category() {
}
public Category(String name) {
set("name", name);
}
public String getName() {
return (String) get("name");
}
public String toString() {
return getName();
}
}

@ -0,0 +1,19 @@
package org.gcube.portlets.admin.sepeditor.shared;
import com.extjs.gxt.ui.client.data.BaseModel;
public class ClientScope extends BaseModel {
private static final long serialVersionUID = 1L;
public ClientScope() {
}
public ClientScope(String name) {
set("name", name);
}
public String getName() {
return (String) get("name");
}
public String toString() {
return getName();
}
}

@ -0,0 +1,42 @@
package org.gcube.portlets.admin.sepeditor.shared;
/**
* <p>
* FieldVerifier validates that the name the user enters is valid.
* </p>
* <p>
* This class is in the <code>shared</code> packing because we use it in both
* the client code and on the server. On the client, we verify that the name is
* valid before sending an RPC request so the user doesn't have to wait for a
* network round trip to get feedback. On the server, we verify that the name is
* correct to ensure that the input is correct regardless of where the RPC
* originates.
* </p>
* <p>
* When creating a class that is used on both the client and the server, be sure
* that all code is translatable and does not use native JavaScript. Code that
* is note translatable (such as code that interacts with a database or the file
* system) cannot be compiled into client side JavaScript. Code that uses native
* JavaScript (such as Widgets) cannot be run on the server.
* </p>
*/
public class FieldVerifier {
/**
* Verifies that the specified name is valid for our service.
*
* In this example, we only require that the name is at least four
* characters. In your application, you can use more complex checks to ensure
* that usernames, passwords, email addresses, URLs, and other fields have the
* proper syntax.
*
* @param name the name to validate
* @return true if valid, false if invalid
*/
public static boolean isValidName(String name) {
if (name == null) {
return false;
}
return name.length() > 3;
}
}

@ -0,0 +1,175 @@
package org.gcube.portlets.admin.sepeditor.shared;
import java.io.Serializable;
import java.util.ArrayList;
@SuppressWarnings("serial")
public class FilledRuntimeResource implements Serializable{
private ArrayList<RRAccessPoint> rRAccessPoints;
private String resourceId;
private String resourceName;
private String type = "RuntimeResource";
private String version;
private String category;
private String description;
private String platformName;
private String platformVersion;
private String platformMinorVersion;
private String platformRevisionVersion;
private String platformBuildVersion;
private String runtimeHostedOn;
private String runtimeStatus;
private String runtimegHNUniqueID;
public FilledRuntimeResource() {
super();
}
public FilledRuntimeResource(String resourceId, ArrayList<RRAccessPoint> rRAccessPoints,
String resourceName, String version, String category,
String description, String platformName, String platformVersion,
String platformMinorVersion, String platformRevisionVersion,
String platformBuildVersion, String runtimeHostedOn,
String runtimeStatus, String runtimegHNUniqueID) {
super();
this.resourceId = resourceId;
this.rRAccessPoints = rRAccessPoints;
this.resourceName = resourceName;
this.version = version;
this.category = category;
this.description = description;
this.platformName = platformName;
this.platformVersion = platformVersion;
this.platformMinorVersion = platformMinorVersion;
this.platformRevisionVersion = platformRevisionVersion;
this.platformBuildVersion = platformBuildVersion;
this.runtimeHostedOn = runtimeHostedOn;
this.runtimeStatus = runtimeStatus;
this.runtimegHNUniqueID = runtimegHNUniqueID;
}
public String getResourceId() {
return resourceId;
}
public void setResourceId(String resourceId) {
this.resourceId = resourceId;
}
public ArrayList<RRAccessPoint> getRRAccessPoints() {
return rRAccessPoints;
}
public void setRRAccessPoints(ArrayList<RRAccessPoint> rRAccessPoints) {
this.rRAccessPoints = rRAccessPoints;
}
public String getResourceName() {
return resourceName;
}
public void setResourceName(String resourceName) {
this.resourceName = resourceName;
}
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
public String getCategory() {
return category;
}
public void setCategory(String category) {
this.category = category;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getPlatformName() {
return platformName;
}
public void setPlatformName(String platformName) {
this.platformName = platformName;
}
public String getPlatformVersion() {
return platformVersion;
}
public void setPlatformVersion(String platformVersion) {
this.platformVersion = platformVersion;
}
public String getPlatformMinorVersion() {
return platformMinorVersion;
}
public void setPlatformMinorVersion(String platformMinorVersion) {
this.platformMinorVersion = platformMinorVersion;
}
public String getPlatformRevisionVersion() {
return platformRevisionVersion;
}
public void setPlatformRevisionVersion(String platformRevisionVersion) {
this.platformRevisionVersion = platformRevisionVersion;
}
public String getPlatformBuildVersion() {
return platformBuildVersion;
}
public void setPlatformBuildVersion(String platformBuildVersion) {
this.platformBuildVersion = platformBuildVersion;
}
public String getRuntimeHostedOn() {
return runtimeHostedOn;
}
public void setRuntimeHostedOn(String runtimeHostedOn) {
this.runtimeHostedOn = runtimeHostedOn;
}
public String getRuntimeStatus() {
return runtimeStatus;
}
public void setRuntimeStatus(String runtimeStatus) {
this.runtimeStatus = runtimeStatus;
}
public String getRuntimegHNUniqueID() {
return runtimegHNUniqueID;
}
public void setRuntimegHNUniqueID(String runtimegHNUniqueID) {
this.runtimegHNUniqueID = runtimegHNUniqueID;
}
public String getType() {
return type;
}
}

@ -0,0 +1,33 @@
package org.gcube.portlets.admin.sepeditor.shared;
import java.io.Serializable;
import java.util.ArrayList;
@SuppressWarnings("serial")
public class InitInfo implements Serializable {
private ArrayList<String> scopes;
private FilledRuntimeResource rr2edit;
public InitInfo() {
super();
// TODO Auto-generated constructor stub
}
public InitInfo(ArrayList<String> scopes, FilledRuntimeResource rr2edit) {
super();
this.scopes = scopes;
this.rr2edit = rr2edit;
}
public ArrayList<String> getScopes() {
return scopes;
}
public void setScopes(ArrayList<String> scopes) {
this.scopes = scopes;
}
public FilledRuntimeResource getRr2edit() {
return rr2edit;
}
public void setRr2edit(FilledRuntimeResource rr2edit) {
this.rr2edit = rr2edit;
}
}

@ -0,0 +1,44 @@
/****************************************************************************
* This software is part of the gCube Project.
* Site: http://www.gcube-system.org/
****************************************************************************
* The gCube/gCore software is licensed as Free Open Source software
* conveying to the EUPL (http://ec.europa.eu/idabc/eupl).
* The software and documentation is provided by its authors/distributors
* "as is" and no expressed or
* implied warranty is given for its use, quality or fitness for a
* particular case.
****************************************************************************
* Filename: InvalidParameterException.java
****************************************************************************
* @author <a href="mailto:daniele.strollo@isti.cnr.it">Daniele Strollo</a>
***************************************************************************/
package org.gcube.portlets.admin.sepeditor.shared;
import com.google.gwt.user.client.rpc.IsSerializable;
/**
* @author Daniele Strollo (ISTI-CNR)
*
*/
public class InvalidParameterException extends Exception implements IsSerializable {
private static final long serialVersionUID = 1L;
public InvalidParameterException() {
super();
}
public InvalidParameterException(String message, Throwable cause) {
super(message, cause);
}
public InvalidParameterException(String message) {
super(message);
}
public InvalidParameterException(Throwable cause) {
super(cause);
}
}

@ -0,0 +1,47 @@
package org.gcube.portlets.admin.sepeditor.shared;
import java.io.Serializable;
@SuppressWarnings("serial")
public class Property implements Serializable{
private String key;
private String value;
private boolean isCrypted;
public Property() {
super();
}
public Property(String key, String value, boolean isCrypted) {
super();
this.key = key;
this.value = value;
this.isCrypted = isCrypted;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public boolean isCrypted() {
return isCrypted;
}
public void setCrypted(boolean isCrypted) {
this.isCrypted = isCrypted;
}
}

@ -0,0 +1,82 @@
package org.gcube.portlets.admin.sepeditor.shared;
import java.io.Serializable;
import java.util.ArrayList;
@SuppressWarnings("serial")
public class RRAccessPoint implements Serializable {
private String desc;
private String interfaceEntryNameAttr;
private String interfaceEndPoint;
private String username;
private String password;
private ArrayList<Property> properties;
public RRAccessPoint() {
super();
}
public RRAccessPoint(String desc, String interfaceEntryNameAttr,
String interfaceEndPoint, String username, String password,
ArrayList<Property> properties) {
super();
this.desc = desc;
this.interfaceEntryNameAttr = interfaceEntryNameAttr;
this.interfaceEndPoint = interfaceEndPoint;
this.username = username;
this.password = password;
this.properties = properties;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
public String getInterfaceEntryNameAttr() {
return interfaceEntryNameAttr;
}
public void setInterfaceEntryNameAttr(String interfaceEntryNameAttr) {
this.interfaceEntryNameAttr = interfaceEntryNameAttr;
}
public String getInterfaceEndPoint() {
return interfaceEndPoint;
}
public void setInterfaceEndPoint(String interfaceEndPoint) {
this.interfaceEndPoint = interfaceEndPoint;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public ArrayList<Property> getProperties() {
return properties;
}
public void setProperties(ArrayList<Property> properties) {
this.properties = properties;
}
}

@ -0,0 +1,100 @@
/****************************************************************************
* This software is part of the gCube Project.
* Site: http://www.gcube-system.org/
****************************************************************************
* The gCube/gCore software is licensed as Free Open Source software
* conveying to the EUPL (http://ec.europa.eu/idabc/eupl).
* The software and documentation is provided by its authors/distributors
* "as is" and no expressed or
* implied warranty is given for its use, quality or fitness for a
* particular case.
****************************************************************************
* Filename: AtomicTreeNode.java
****************************************************************************
* @author <a href="mailto:daniele.strollo@isti.cnr.it">Daniele Strollo</a>
***************************************************************************/
package org.gcube.portlets.admin.sepeditor.shared.datamodel;
import com.extjs.gxt.ui.client.data.BaseTreeModel;
/**
* @author Daniele Strollo (ISTI-CNR)
*
*/
public class AtomicTreeNode extends BaseTreeModel {
private static final long serialVersionUID = 5094327834701967591L;
private static int ID = 0;
/**
* @deprecated fr serialization only
*/
public AtomicTreeNode() {
set("id", ID++);
}
public AtomicTreeNode(final String node) {
this(node, null);
}
/**
* The node is used as original node of the element useful to retrieve it from the IS.
* The name is instead used for pretty printing (aliasing).
* @param node the corresponding IS node
* @param name if null the node will be used instead
*/
public AtomicTreeNode(final String node, final String name) {
set("id", ID++);
set("node", node);
if (name == null) {
set("name", node);
} else {
set("name", name);
}
}
public AtomicTreeNode(final String node, final String name, final String icon) {
this(node, name);
set("icon", icon);
}
public AtomicTreeNode(final String node, final String name, final AtomicTreeNode[] children) {
this(node, name);
for (int i = 0; i < children.length; i++) {
add(children[i]);
}
}
public AtomicTreeNode(final String node, final String name, final String icon, final AtomicTreeNode[] children) {
this(node, name, children);
set("icon", icon);
}
public final Integer getId() {
return (Integer) get("id");
}
public final String getName() {
return (String) get("name");
}
public final String getNode() {
return (String) get("node");
}
public final String getLabel() {
return (String) get("label");
}
public final String toString() {
return getName();
}
public final String getSubType() {
if (this.isLeaf() && this.getParent() != null) {
return this.getNode();
}
return null;
}
}

@ -0,0 +1,66 @@
/****************************************************************************
* This software is part of the gCube Project.
* Site: http://www.gcube-system.org/
****************************************************************************
* The gCube/gCore software is licensed as Free Open Source software
* conveying to the EUPL (http://ec.europa.eu/idabc/eupl).
* The software and documentation is provided by its authors/distributors
* "as is" and no expressed or
* implied warranty is given for its use, quality or fitness for a
* particular case.
****************************************************************************
* Filename: Assertion.java
****************************************************************************
* @author <a href="mailto:daniele.strollo@isti.cnr.it">Daniele Strollo</a>
***************************************************************************/
package org.gcube.portlets.admin.sepeditor.shared.util;
import java.io.Serializable;
import com.google.gwt.user.client.rpc.IsSerializable;
/**
* General purpose assertion handler.
* Assertion can be generalized to check a boolean expression and
* to raise an exception in correspondence to a failure happening
* during checking.
* <pre>
* <b>Example:</b>
*
* <b>Assertion</b>&lt;<i>TheExceptionType</i>&gt; assertion = new Assertion&lt;ParamException&gt; ();
* assertion.<b>validate</b> (param != null, new <i>TheExceptionType</i>("invalid parameter null"));
*
* <b>or</b>, in a more compact form:
* <i>// The exception to throw in case of failure
* // during the evaluation of the expected condition</i>
* new <b>Assertion</b>&lt;<i>TheExceptionType</i>&gt;().<b>validate</b>(
* i>5, <i>// The expected boolean <b>condition</b></i>
* new <i>TheExceptionType</i>("Parameter must be greater than 5")); <i>//The <b>error</b> message</i>
*
* </pre>
*
* @author Daniele Strollo (ISTI-CNR)
*/
public class Assertion <T extends Throwable> implements Serializable, IsSerializable {
private static final long serialVersionUID = -2007903339251667541L;
/**
* Makes an assertion and if the expression evaluation fails, throws an
* exception of type T.
* <pre>
* Example:
* new Assertion&lt;MyException&gt;().validate(whatExpected, new MyException("guard failed"));
* </pre>
* @param assertion the boolean expression to evaluate
* @param exc the exception to throw if the condition does not hold
* @throws T the exception extending {@link java.lang.Throwable}
*/
public final void validate(final boolean assertion, final T exc)
throws T {
if (!assertion) {
throw exc;
}
}
}

@ -0,0 +1,57 @@
/****************************************************************************
* This software is part of the gCube Project.
* Site: http://www.gcube-system.org/
****************************************************************************
* The gCube/gCore software is licensed as Free Open Source software
* conveying to the EUPL (http://ec.europa.eu/idabc/eupl).
* The software and documentation is provided by its authors/distributors
* "as is" and no expressed or
* implied warranty is given for its use, quality or fitness for a
* particular case.
****************************************************************************
* Filename: DelayedOperation.java
****************************************************************************
* @author <a href="mailto:daniele.strollo@isti.cnr.it">Daniele Strollo</a>
***************************************************************************/
package org.gcube.portlets.admin.sepeditor.shared.util;
import com.google.gwt.user.client.Timer;
/**
* Performs a delayed action on client side.
* Usage:
* <pre>
* new DelayedOperation() {
* // @Override
* public void doJob() {
* // Here the code...
* }
* }.start(5000); // the operation will start after 5 secs.
* </pre>
* @author Daniele Strollo (ISTI-CNR)
*/
public abstract class DelayedOperation {
public final void start(final int delayMills) {
Timer t = new Timer() {
@Override
public void run() {
doJob();
}
};
t.schedule(delayMills);
}
public final void loop(final int delayMills) {
Timer t = new Timer() {
@Override
public void run() {
doJob();
this.schedule(delayMills);
}
};
t.schedule(delayMills);
}
public abstract void doJob();
}

@ -0,0 +1,183 @@
/****************************************************************************
* This software is part of the gCube Project.
* Site: http://www.gcube-system.org/
****************************************************************************
* The gCube/gCore software is licensed as Free Open Source software
* conveying to the EUPL (http://ec.europa.eu/idabc/eupl).
* The software and documentation is provided by its authors/distributors
* "as is" and no expressed or
* implied warranty is given for its use, quality or fitness for a
* particular case.
****************************************************************************
* Filename: XMLUtil.java
****************************************************************************
* @author <a href="mailto:daniele.strollo@isti.cnr.it">Daniele Strollo</a>
***************************************************************************/
package org.gcube.portlets.admin.sepeditor.shared.util;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.gcube.portlets.admin.sepeditor.shared.datamodel.AtomicTreeNode;
import com.google.gwt.xml.client.Document;
import com.google.gwt.xml.client.Element;
import com.google.gwt.xml.client.NamedNodeMap;
import com.google.gwt.xml.client.Node;
import com.google.gwt.xml.client.NodeList;
import com.google.gwt.xml.client.XMLParser;
/**
* @author Daniele Strollo (ISTI-CNR)
*
*/
public class XMLUtil {
public static AtomicTreeNode XMLToTree(final String xml, final String rootName)
throws Exception {
AtomicTreeNode root = null;
Document doc = XMLParser.parse(xml);
String rootTag = rootName;
root = elementToNode((com.google.gwt.xml.client.Element) doc.getElementsByTagName(rootTag).item(0));
return root;
}
private static AtomicTreeNode elementToNode(final com.google.gwt.xml.client.Element el) throws Exception {
if (el == null) {
throw new Exception("Invalid Profile");
}
StringBuffer value = new StringBuffer(XMLUtil.getTextContent(el).trim());
if (el.hasAttributes()) {
NamedNodeMap attr = el.getAttributes();
String attrName = null;
String attrVal = null;
for (int i = 0; i < attr.getLength(); i++) {
attrName = attr.item(i).getNodeName();
attrVal = attr.getNamedItem(attrName).getNodeValue();
value.append(attrName + " = " + attrVal + "; ");
}
} else {
if (value != null && value.length() != 0) {
value = new StringBuffer("value = " + value);
}
}
String tagName = el.getTagName() + ((value.length() != 0) ? " [" + value + "]" : "");
AtomicTreeNode node = new AtomicTreeNode(tagName);
Iterator<com.google.gwt.xml.client.Element> childrenIterator = XMLUtil.getElementChildren(el).iterator();
while (childrenIterator.hasNext()) {
node.add(elementToNode(childrenIterator.next()));
}
return node;
}
public static Element getFirstElementChild(final Element parent) {
if (parent == null) {
return null;
}
Node current = parent.getFirstChild();
while (current != null) {
if (current.getNodeType() == Node.ELEMENT_NODE) {
Element elem = (Element) current;
return elem;
}
current = current.getNextSibling();
}
return null;
}
public static Element getFirstElementChild(final Element parent, final String tagName) {
if (parent == null || tagName == null) {
return null;
}
Node current = parent.getFirstChild();
while (current != null) {
if (current.getNodeType() == Node.ELEMENT_NODE) {
Element elem = (Element) current;
if (tagName.equals(elem.getTagName())) {
return elem;
}
}
current = current.getNextSibling();
}
return null;
}
public static List<com.google.gwt.xml.client.Element> getElementChildren(final Element parent) {
ArrayList<Element> result = new ArrayList<Element>();
if (parent == null) {
return result;
}
Node current = parent.getFirstChild();
while (current != null) {
if (current.getNodeType() == Node.ELEMENT_NODE) {
Element elem = (Element) current;
result.add(elem);
}
current = current.getNextSibling();
}
return result;
}
public static List<Element> getElementChildren(final Element parent, final String tagName) {
ArrayList<Element> result = new ArrayList<Element>();
if (parent == null || tagName == null) {
return result;
}
Node current = parent.getFirstChild();
while (current != null) {
if (current.getNodeType() == Node.ELEMENT_NODE) {
Element elem = (Element) current;
if (tagName.equals(elem.getTagName())) {
result.add(elem);
}
}
current = current.getNextSibling();
}
return result;
}
public static String getTextContent(final Element parent) {
StringBuffer result = new StringBuffer();
if (parent == null) {
return result.toString();
}
Node current = parent.getFirstChild();
while (current != null) {
if (current.getNodeType() == Node.TEXT_NODE) {
result.append(current.getNodeValue());
}
current = current.getNextSibling();
}
return result.toString();
}
public static String getEntireContent(final Node parent) {
StringBuilder result = new StringBuilder();
if (parent != null) {
NodeList children = parent.getChildNodes();
for (int i = 0; i < children.getLength(); i++) {
Node node = children.item(i);
result.append(node.toString());
//if(node.hasChildNodes()) result.append(getEntireContent(node));
}
}
return result.toString();
}
}

@ -0,0 +1,10 @@
log4j.rootLogger=DEBUG, A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
# Print the date in ISO 8601 format
log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
# Print only messages of level TRACE or above in the package org.gcube
log4j.logger.org.gcube=TRACE
log4j.logger.org.apache.axis=ERROR

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<module rename-to='sepeditor'>
<!-- Inherit the core Web Toolkit stuff. -->
<inherits name='com.google.gwt.user.User' />
<!-- Inherit the default GWT style sheet. You can change -->
<!-- the theme of your GWT application by uncommenting -->
<!-- any one of the following lines. -->
<inherits name='com.google.gwt.user.theme.clean.Clean' />
<!-- <inherits name='com.google.gwt.user.theme.standard.Standard'/> -->
<!-- <inherits name='com.google.gwt.user.theme.chrome.Chrome'/> -->
<!-- <inherits name='com.google.gwt.user.theme.dark.Dark'/> -->
<!-- Other module inherits -->
<inherits name='com.extjs.gxt.ui.GXT' />
<inherits name='com.extjs.gxt.themes.Themes' />
<!-- inherits gCube Widgets Library -->
<inherits name='org.gcube.portlets.user.gcubewidgets.WidgetFactory' />
<!-- Specify the app entry point class. -->
<entry-point
class='org.gcube.portlets.admin.sepeditor.client.RuntimeResourceCreator' />
<!-- Specify the paths for translatable code -->
<source path='client' />
<source path='shared' />
</module>

@ -0,0 +1,37 @@
.wizardTextBox {
background-color: white;
border-color: #999;
border-width: 1px;
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
border-radius: 4px;
letter-spacing: normal;
line-height: 15px;
height: 23px !important;
width: 295px;
font-size: 14px;
}
.wizardTextBox.password {
width: 150px;
font-size: 14px;
}
.wizardTextBox[readonly] {
color: #AAA;
border-color: #AAA;
}
.warning-report {
font-family: 'Lucida Grande', Verdana, 'Bitstream Vera Sans', Arial,
sans-serif;
font-size: 1.2em;
color: #333;
padding: 0.5em;
background-color: #FAFAA0;
border: 1px solid gray;
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
border-radius: 4px;
width: auto;
}

@ -0,0 +1,37 @@
<!doctype html>
<!-- The DOCTYPE declaration above will set the -->
<!-- browser's rendering engine into -->
<!-- "Standards Mode". Replacing this declaration -->
<!-- with a "Quirks Mode" doctype is not supported. -->
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<link rel="shortcut icon" href="favicon.gif" >
<!-- -->
<!-- Consider inlining CSS to reduce the number of requested files -->
<!-- -->
<link type="text/css" rel="stylesheet" href="RuntimeResourceCreator.css">
<link rel="stylesheet" type="text/css" href="gxt/css/gxt-all.css" />
<!-- -->
<!-- Any title is fine -->
<!-- -->
<title>Runtime Resource Editor</title>
<!-- -->
<!-- This script loads your compiled module. -->
<!-- If you add any GWT meta tags, they must -->
<!-- be added before this line. -->
<!-- -->
<script type="text/javascript" language="javascript" src="sepeditor/sepeditor.nocache.js"></script>
</head>
<!-- -->
<!-- The body can have arbitrary html, or -->
<!-- you can leave the body empty if you want -->
<!-- to create a completely dynamic UI. -->
<!-- -->
<body>
<div id="RuntimeResourcePortletDIV" style="width:100%;"></div>
</body>
</html>

@ -0,0 +1,17 @@
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%-- Uncomment below lines to add portlet taglibs to jsp
<%@ page import="javax.portlet.*"%>
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet"%>
<portlet:defineObjects />
--%>
<link rel="stylesheet" type="text/css" href="<%=request.getContextPath()%>/gxt/css/gxt-all.css" />
<script type="text/javascript" language="javascript"
src='<%=request.getContextPath()%>/runtimeresourcecreator/runtimeresourcecreator.nocache.js'>
</script>
<div id="RuntimeResourcePortletDIV">
</div>

@ -0,0 +1,8 @@
<?xml version="1.0"?>
<!DOCTYPE display PUBLIC "-//Liferay//DTD Display 5.2.0//EN" "http://www.liferay.com/dtd/liferay-display_5_2_0.dtd">
<display>
<category name="gCube Applications">
<portlet id="RuntimeResourceCreator" />
</category>
</display>

@ -0,0 +1,9 @@
name=Runtime Resource Creator
module-group-id=liferay
module-incremental-version=1
tags=
short-description=
change-log=
page-url=http://www.gcube-system.org
author=gCube
licenses=EUPL

@ -0,0 +1,17 @@
<?xml version="1.0"?>
<!DOCTYPE liferay-portlet-app PUBLIC "-//Liferay//DTD Portlet Application 5.2.0//EN" "http://www.liferay.com/dtd/liferay-portlet-app_5_2_0.dtd">
<liferay-portlet-app>
<portlet>
<portlet-name>RuntimeResourceCreator</portlet-name>
<layout-cacheable>false</layout-cacheable>
<instanceable>false</instanceable>
<ajaxable>false</ajaxable>
<!-- LOCATION CSS HERE -->
<header-portlet-css>/RuntimeResourceCreator.css</header-portlet-css>
</portlet>
<role-mapper>
<role-name>administrator</role-name>
<role-link>Administrator</role-link>
</role-mapper>
</liferay-portlet-app>

@ -0,0 +1,24 @@
<?xml version="1.0"?>
<portlet-app xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd" version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd">
<portlet>
<portlet-name>RuntimeResourceCreator</portlet-name>
<display-name>Runtime Resource Creator</display-name>
<portlet-class>org.gcube.portlets.admin.sepeditor.server.portlet.RuntimeResourcePortlet</portlet-class>
<init-param>
<name>view-jsp</name>
<value>/WEB-INF/jsp/RuntimePortlet_view.jsp</value>
</init-param>
<expiration-cache>0</expiration-cache>
<supports>
<mime-type>text/html</mime-type>
</supports>
<portlet-info>
<title>Runtime Resource Creator</title>
<short-title>Runtime Resource Creator</short-title>
<keywords>Runtime Resource Creator</keywords>
</portlet-info>
<security-role-ref>
<role-name>administrator</role-name>
</security-role-ref>
</portlet>
</portlet-app>

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<!-- Servlets -->
<servlet>
<servlet-name>serviceendpointEditor</servlet-name>
<servlet-class>org.gcube.portlets.admin.sepeditor.server.RuntimeResourceCreatorServiceImpl</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>serviceendpointEditor</servlet-name>
<url-pattern>/sepeditor/serviceendpointEditor</url-pattern>
</servlet-mapping>
<!-- Default page to serve -->
<welcome-file-list>
<welcome-file>RuntimeResourceCreator.html</welcome-file>
</welcome-file-list>
</web-app>

@ -0,0 +1,51 @@
<?xml version="1.0" encoding="UTF-8"?>
<infrastructures>
<infrastructure>
<name>d4science</name>
<vos>
<vo>
<name>d4science</name>
<src>ServiceMap_d4science.research-infrastructures.eu.xml</src>
<scope>/d4science.research-infrastructures.eu</scope>
</vo>
<vo>
<name>d4science/FARM</name>
<src>ServiceMap_FARM.xml</src>
<scope>/d4science.research-infrastructures.eu/FARM</scope>
</vo>
<vo>
<name>d4science/gCubeApps</name>
<src>ServiceMap_gCubeApps.xml</src>
<scope>/d4science.research-infrastructures.eu/gCubeApps</scope>
</vo>
<vo>
<name>d4science/EUBrazilOpenBio</name>
<src>ServiceMap_EUBrazilOpenBio.xml</src>
<scope>/d4science.research-infrastructures.eu/EUBrazilOpenBio</scope>
</vo>
</vos>
</infrastructure>
<infrastructure>
<name>gcube</name>
<vos>
<vo>
<name>gcube</name>
<src>ServiceMap_gcube.xml</src>
<scope>/gcube</scope>
</vo>
<vo>
<name>gcube/devsec</name>
<src>ServiceMap_devsec.xml</src>
<scope>/gcube/devsec</scope>
</vo>
<vo>
<name>gcube/devNext</name>
<src>ServiceMap_devNext.xml</src>
<scope>/gcube/devNext</scope>
</vo>
</vos>
</infrastructure>
</infrastructures>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

File diff suppressed because it is too large Load Diff

@ -0,0 +1,493 @@
.x-panel {
border-style: solid;
border-color: #d0d0d0;
}
.x-panel-header {
color:#333;
border:1px solid #d0d0d0;
background-image:url(../images/gray/panel/white-top-bottom.gif);
}
.x-panel-body {
border-color:#d0d0d0;
}
.x-panel-bbar .x-toolbar {
border-color:#d0d0d0;
}
.x-panel-tbar .x-toolbar {
border-color:#d0d0d0;
}
.x-panel-tbar-noheader .x-toolbar, .x-panel-mc .x-panel-tbar .x-toolbar {
border-color:#d0d0d0;
}
.x-panel-body-noheader, .x-panel-mc .x-panel-body {
border-color:#d0d0d0;
}
.x-panel-tl .x-panel-header {
color:#333;
}
.x-panel-tc {
background-image:url(../images/gray/panel/top-bottom.gif);
}
.x-panel-tl {
background-image:url(../images/gray/panel/corners-sprite.gif);
border-color:#d0d0d0;
}
.x-panel-tr {
background-image:url(../images/gray/panel/corners-sprite.gif);
}
.x-panel-bc {
background-image:url(../images/gray/panel/top-bottom.gif);
}
.x-panel-bl {
background-image:url(../images/gray/panel/corners-sprite.gif);
}
.x-panel-br {
background-image:url(../images/gray/panel/corners-sprite.gif);
}
.x-panel-mc {
background:#f1f1f1;
}
.x-panel-mc .x-panel-body {
background:transparent;
border: 0 none;
}
.x-panel-ml {
background-image:url(../images/gray/panel/left-right.gif);
}
.x-panel-mr {
background-image:url(../images/gray/panel/left-right.gif);
}
/* Tools */
.x-tool {
background-image:url(../images/gray/panel/tool-sprites.gif);
}
/* Ghosting */
.x-panel-ghost {
background:#e0e0e0;
}
.x-panel-ghost ul {
border-color:#b0b0b0;
}
.x-grid-panel .x-panel-mc .x-panel-body {
border:1px solid #d0d0d0;
}
/* Buttons */
.x-btn-left{
background-image:url(../images/gray/button/btn-sprite.gif);
}
.x-btn-right{
background-image:url(../images/gray/button/btn-sprite.gif);
}
.x-btn-center{
background-image:url(../images/gray/button/btn-sprite.gif);
}
.x-btn-group-header {
color: #333333;
}
.x-btn-group-tc {
background-image: url(../images/gray/button/group-tb.gif);
}
.x-btn-group-tl {
background-image: url(../images/gray/button/group-cs.gif);
}
.x-btn-group-tr {
background-image: url(../images/gray/button/group-cs.gif);
}
.x-btn-group-bc {
background-image: url(../images/gray/button/group-tb.gif);
}
.x-btn-group-bl {
background-image: url(../images/gray/button/group-cs.gif);
}
.x-btn-group-br {
background-image: url(../images/gray/button/group-cs.gif);
}
.x-btn-group-ml {
background-image: url(../images/gray/button/group-lr.gif);
}
.x-btn-group-mr {
background-image: url(../images/gray/button/group-lr.gif);
}
.x-btn-group-notitle .x-btn-group-tc {
background-image: url(../images/gray/button/group-tb.gif);
}
/* Layout classes */
.x-border-layout-ct {
background:#f0f0f0;
}
.x-accordion-hd {
background-image:url(../images/gray/panel/light-hd.gif);
}
.x-layout-collapsed{
background-color:#eee;
border-color:#e0e0e0;
}
.x-layout-collapsed-over{
background-color:#fbfbfb;
}
/* qtips */
.x-tip .x-tip-top {
background-image:url(../images/gray/qtip/tip-sprite.gif);
}
.x-tip .x-tip-top-left {
background-image:url(../images/gray/qtip/tip-sprite.gif);
}
.x-tip .x-tip-top-right {
background-image:url(../images/gray/qtip/tip-sprite.gif);
}
.x-tip .x-tip-ft {
background-image:url(../images/gray/qtip/tip-sprite.gif);
}
.x-tip .x-tip-ft-left {
background-image:url(../images/gray/qtip/tip-sprite.gif);
}
.x-tip .x-tip-ft-right {
background-image:url(../images/gray/qtip/tip-sprite.gif);
}
.x-tip .x-tip-bd-left {
background-image:url(../images/gray/qtip/tip-sprite.gif);
}
.x-tip .x-tip-bd-right {
background-image:url(../images/gray/qtip/tip-sprite.gif);
}
/* Toolbars */
.x-toolbar{
border-color:#d0d0d0;
background:#f0f4f5 url(../images/gray/toolbar/bg.gif) repeat-x top left;
}
.x-toolbar button {
color:#444;
}
.x-toolbar .x-btn-menu-arrow-wrap .x-btn-center button {
background-image:url(../images/gray/toolbar/btn-arrow.gif);
}
.x-toolbar .x-btn-text-icon .x-btn-menu-arrow-wrap .x-btn-center button {
background-image:url(../images/gray/toolbar/btn-arrow.gif);
}
.x-toolbar .x-btn-over .x-btn-left{
background-image:url(../images/gray/toolbar/tb-btn-sprite.gif);
}
.x-toolbar .x-btn-over .x-btn-right{
background-image:url(../images/gray/toolbar/tb-btn-sprite.gif);
}
.x-toolbar .x-btn-over .x-btn-center{
background-image:url(../images/gray/toolbar/tb-btn-sprite.gif);
}
.x-toolbar .x-btn-over button {
color:#111;
}
.x-toolbar .x-btn-click .x-btn-left, .x-toolbar .x-btn-pressed .x-btn-left, .x-toolbar .x-btn-menu-active .x-btn-left{
background-image:url(../images/gray/toolbar/tb-btn-sprite.gif);
}
.x-toolbar .x-btn-click .x-btn-right, .x-toolbar .x-btn-pressed .x-btn-right, .x-toolbar .x-btn-menu-active .x-btn-right{
background-image:url(../images/gray/toolbar/tb-btn-sprite.gif);
}
.x-toolbar .x-btn-click .x-btn-center, .x-toolbar .x-btn-pressed .x-btn-center, .x-toolbar .x-btn-menu-active .x-btn-center{
background-image:url(../images/gray/toolbar/tb-btn-sprite.gif);
}
.x-toolbar .xtb-sep {
background-image: url(../images/gray/grid/grid-split.gif);
}
/* Tabs */
.x-tab-panel-header, .x-tab-panel-footer {
background: #EAEAEA;
border-color:#d0d0d0;
}
.x-tab-panel-header {
border-color:#d0d0d0;
}
.x-tab-panel-footer {
border-color:#d0d0d0;
}
ul.x-tab-strip-top{
background:#dbdbdb url(../images/gray/tabs/tab-strip-bg.gif) repeat-x left top;
border-color:#d0d0d0;
padding-top: 2px;
}
ul.x-tab-strip-bottom{
background-image:url(../images/gray/tabs/tab-strip-btm-bg.gif);
border-color:#d0d0d0;
}
.x-tab-strip span.x-tab-strip-text {
color:#333;
}
.x-tab-strip-over span.x-tab-strip-text {
color:#111;
}
.x-tab-strip-active span.x-tab-strip-text {
color:#333;
}
.x-tab-strip-disabled .x-tabs-text {
color:#aaaaaa;
}
.x-tab-strip-top .x-tab-right {
background-image:url(../images/gray/tabs/tabs-sprite.gif);
}
.x-tab-strip-top .x-tab-left {
background-image:url(../images/gray/tabs/tabs-sprite.gif);
}
.x-tab-strip-top .x-tab-strip-inner {
background-image:url(../images/gray/tabs/tabs-sprite.gif);
}
.x-tab-strip-bottom .x-tab-right {
background-image:url(../images/gray/tabs/tab-btm-inactive-right-bg.gif);
}
.x-tab-strip-bottom .x-tab-left {
background-image:url(../images/gray/tabs/tab-btm-inactive-left-bg.gif);
}
.x-tab-strip-bottom .x-tab-strip-active .x-tab-right {
background-image:url(../images/gray/tabs/tab-btm-right-bg.gif);
}
.x-tab-strip-bottom .x-tab-strip-active .x-tab-left {
background-image:url(../images/gray/tabs/tab-btm-left-bg.gif);
}
.x-tab-strip .x-tab-strip-closable a.x-tab-strip-close {
background-image:url(../images/gray/tabs/tab-close.gif);
}
.x-tab-strip .x-tab-strip-closable a.x-tab-strip-close:hover{
background-image:url(../images/gray/tabs/tab-close.gif);
}
.x-tab-panel-body {
border-color:#d0d0d0;
background:#fff;
}
.x-tab-panel-bbar .x-toolbar {
border-color: #d0d0d0;
}
.x-tab-panel-tbar .x-toolbar {
border-color: #d0d0d0;
}
.x-tab-panel-header-plain .x-tab-strip-spacer {
border-color:#d0d0d0;
background: #eaeaea;
}
.x-tab-scroller-left {
background-image: url(../images/gray/tabs/scroll-left.gif);
border-color:#aeaeae;
}
.x-tab-scroller-right {
background-image: url(../images/gray/tabs/scroll-right.gif);
border-color:#aeaeae;
}
/* Window */
.x-window-proxy {
background:#e0e0e0;
border-color:#b0b0b0;
}
.x-window-tl .x-window-header {
color:#555;
}
.x-window-tc {
background-image:url(../images/gray/window/top-bottom.png);
}
.x-window-tl {
background-image:url(../images/gray/window/left-corners.png);
}
.x-window-tr {
background-image:url(../images/gray/window/right-corners.png);
}
.x-window-bc {
background-image:url(../images/gray/window/top-bottom.png);
}
.x-window-bl {
background-image:url(../images/gray/window/left-corners.png);
}
.x-window-br {
background-image:url(../images/gray/window/right-corners.png);
}
.x-window-mc {
border:1px solid #d0d0d0;
background:#e8e8e8;
}
.ext-ie .x-window-plain .x-window-mc {
background-color: #e3e3e3;
}
.x-window-ml {
background-image:url(../images/gray/window/left-right.png);
}
.x-window-mr {
background-image:url(../images/gray/window/left-right.png);
}
.x-panel-ghost .x-window-tl {
border-color:#d0d0d0;
}
.x-panel-collapsed .x-window-tl {
border-color:#d0d0d0;
}
.x-window-plain .x-window-mc {
background: #e8e8e8;
border-right:1px solid #eee;
border-bottom:1px solid #eee;
border-top:1px solid #d0d0d0;
border-left:1px solid #d0d0d0;
}
.x-window-plain .x-window-body {
border-left:1px solid #eee;
border-top:1px solid #eee;
border-bottom:1px solid #d0d0d0;
border-right:1px solid #d0d0d0;
background:transparent !important;
}
body.x-body-masked .x-window-mc, body.x-body-masked .x-window-plain .x-window-mc {
background-color: #e4e4e4;
}
/* misc */
.x-html-editor-wrap {
border-color:#d0d0d0;
}
/* Borders go last for specificity */
.x-panel-noborder .x-panel-body-noborder {
border-width:0;
}
.x-panel-noborder .x-panel-header-noborder {
border-width:0;
border-bottom:1px solid #d0d0d0;
}
.x-panel-noborder .x-panel-tbar-noborder .x-toolbar {
border-width:0;
border-bottom:1px solid #d0d0d0;
}
.x-panel-noborder .x-panel-bbar-noborder .x-toolbar {
border-width:0;
border-top:1px solid #d0d0d0;
}
.x-window-noborder .x-window-mc {
border-width:0;
}
.x-window-plain .x-window-body-noborder {
border-width:0;
}
.x-tab-panel-noborder .x-tab-panel-body-noborder {
border-width:0;
}
.x-tab-panel-noborder .x-tab-panel-header-noborder {
border-top-width:0;
border-left-width:0;
border-right-width:0;
}
.x-tab-panel-noborder .x-tab-panel-footer-noborder {
border-bottom-width:0;
border-left-width:0;
border-right-width:0;
}
.x-tab-panel-bbar-noborder .x-toolbar {
border-width:0;
border-top:1px solid #d0d0d0;
}
.x-tab-panel-tbar-noborder .x-toolbar {
border-width:0;
border-bottom:1px solid #d0d0d0;
}
.x-spinner-field .x-form-spinner-up {
background-image: url('../images/gray/form/spinner.gif');
}
.x-spinner-field .x-form-spinner-down {
background-image: url('../images/gray/form/spinner.gif');
}.x-accordion-hd {
background-color: #e5e5e5;
}.x-border {
border: 1px solid #D0D0D0;
}
.x-layout-popup {
background-color: #F0F0F0;
border: 1px solid #D0D0D0;
}
.my-list {
border: 1px solid #D0D0D0;
}
.x-view {
border:1px solid #D0D0D0;
}
.x-menubar {
border-color: #D0D0D0;
background-color: #F0F0F0;
background-image: url(../images/gray/toolbar/bg.gif);
}
.x-menubar-item-active {
background-color: #D9E8FB;
}
.x-menubar-item-active {
background-color: #D9E8FB;
}.x-date-right-icon {
background-image: url(../images/default/shared/right-btn.gif);
margin-right: 2px;
text-decoration: none !important;
}
.x-date-left-icon {
background-image: url(../images/default/shared/left-btn.gif);
margin-right: 2px;
text-decoration: none !important;
}.my-tbl {
border: 1px solid #C6C5C5;
}.my-treetbl {
border: 1px solid #C6C5C5;
}

@ -0,0 +1,638 @@
/*
* Ext JS Library 2.1
* Copyright(c) 2006-2008, Ext JS, LLC.
* licensing@extjs.com
*
* http://extjs.com/license
*/
html,body {
background: #3d71b8 url(../wallpapers/desktop.jpg) no-repeat left top;
font: normal 12px tahoma, arial, verdana, sans-serif;
margin: 0;
padding: 0;
border: 0 none;
overflow: hidden;
height: 100%;
}
.start {
background-image: url( ../images/taskbar/black/startbutton-icon.gif ) !important;
}
.bogus {
background-image: url( ../images/bogus.png ) !important;
}
.logout {
background-image: url( ../images/logout.gif ) !important;
}
.settings {
background-image: url( ../images/gears.gif ) !important;
}
#dpanels {
width: 250px;
float: right;
}
#dpanels .x-panel {
margin: 15px;
}
#dpanels .x-date-picker {
border: 0 none;
border-top: 0 none;
background: transparent;
}
#dpanels .x-date-picker td.x-date-active {
background: #ffffff;
}
#dpanels .x-date-picker {
width: 100% !important;
}
#x-desktop {
width: 100%;
height: 100%;
border: 0 none;
position: relative;
overflow: hidden;
zoom: 1;
}
#ux-taskbar .x-btn {
float: left;
margin: 1px 0 0 1px;
position: relative;
}
#ux-taskbar-start .x-btn {
float: left;
margin: 0;
position: relative;
}
#ux-taskbar button { /* width: 150px;
overflow: hidden; */
text-align: left;
color: #ffffff;
}
#title-bar-wrapper {
height: 35px;
}
#title-bar {
color: #225599;
padding: 9px 7px;
font: bold 16px tahoma, arial, verdana, sans-serif;
float: left;
}
#x-logout {
float: right;
padding: 6px 7px;
}
.x-btn-text-icon .x-btn-center .logout {
background-position: 0pt 3px;
background-repeat: no-repeat;
padding: 3px 0pt 3px 18px;
}
#ux-taskbar {
background: transparent none;
height: 30px;
margin: 0;
padding: 0;
position: relative;
z-index: 12001;
}
.x-btn-icon .ux-taskbutton-center .x-btn-text {
background-position: center;
background-repeat: no-repeat;
height: 16px;
width: 16px;
cursor: pointer;
white-space: nowrap;
padding: 0;
}
.x-btn-icon .ux-taskbutton-center {
padding: 1px;
}
.ux-startbutton-center .x-btn-text {
color: #000000 !important;
font-weight: bold;
}
.ux-taskbutton-left,.ux-taskbutton-right {
font-size: 1px;
line-height: 1px;
}
.ux-taskbutton-left {
width: 4px;
height: 28px;
background: url( ../images/taskbar/black/taskbutton.gif ) no-repeat 0 0;
}
.ux-taskbutton-right {
width: 4px;
height: 28px;
background: url( ../images/taskbar/black/taskbutton.gif ) no-repeat 0 -28px;
}
.ux-taskbutton-left i,.ux-taskbutton-right i {
display: block;
width: 4px;
overflow: hidden;
font-size: 1px;
line-height: 1px;
}
.ux-taskbutton-center {
background: url( ../images/taskbar/black/taskbutton.gif ) repeat-x 0 -56px;
vertical-align: middle;
text-align: center;
padding: 0 5px;
cursor: pointer;
white-space: nowrap;
}
#ux-taskbar .ux-taskbutton-left {
background-position: 0 0;
}
#ux-taskbar .ux-taskbutton-right {
background-position: 0 -28px;
}
#ux-taskbar .ux-taskbutton-center {
background-position: 0 -56px;
}
#ux-taskbar .x-btn-over .ux-taskbutton-left {
background-position: 0 -252px;
}
#ux-taskbar .x-btn-over .ux-taskbutton-right {
background-position: 0 -280px;
}
#ux-taskbar .x-btn-over .ux-taskbutton-center {
background-position: 0 -308px;
}
#ux-taskbar .x-btn-click .ux-taskbutton-left {
background-position: 0 -168px;
}
#ux-taskbar .x-btn-click .ux-taskbutton-right {
background-position: 0 -196px;
}
#ux-taskbar .x-btn-click .ux-taskbutton-center {
background-position: 0 -224px;
}
#ux-taskbar .active-win .ux-taskbutton-left {
background-position: 0 -84px;
}
#ux-taskbar .active-win .ux-taskbutton-right {
background: url( ../images/taskbar/black/taskbutton.gif ) no-repeat 0 -112px;
}
#ux-taskbar .active-win .ux-taskbutton-center {
background: url( ../images/taskbar/black/taskbutton.gif ) repeat-x 0 -140px;
}
#ux-taskbar .active-win .ux-taskbutton-center button {
color: #fff;
}
#spacer {
height: 25px;
float: left;
width: 0;
overflow: hidden;
margin-top: 2px;
}
.x-window-body p,.x-panel-body p {
padding: 10px;
margin: 0;
}
.x-window-maximized .x-window-bc {
height: 0;
}
.add {
background-image: url(../../shared/icons/fam/add.gif) !important;
}
.option {
background-image: url(../../shared/icons/fam/plugin.gif) !important;
}
.remove {
background-image: url(../../shared/icons/fam/delete.gif) !important;
}
.tabs {
background-image: url(../images/tabs.gif) !important;
}
.ux-start-menu {
background: transparent none;
border: 0px none;
padding: 0;
}
.ux-start-menu-tl .x-window-header {
color: #f1f1f1;
font: bold 11px tahoma, arial, verdana, sans-serif;
padding: 5px 0 4px 0;
}
.x-panel-tl .x-panel-icon,.ux-start-menu-tl .x-panel-icon {
background-position: 0pt 4px;
background-repeat: no-repeat;
padding-left: 20px !important;
}
.ux-start-menu-tl {
background: transparent url( ../images/taskbar/black/start-menu-left-corners.png ) no-repeat 0 0;
padding-left: 6px;
zoom: 1;
z-index: 1;
position: relative;
}
.ux-start-menu-tr {
background: transparent url( ../images/taskbar/black/start-menu-right-corners.png ) no-repeat right
0;
padding-right: 6px;
}
.ux-start-menu-tc {
background: transparent url( ../images/taskbar/black/start-menu-top-bottom.png ) repeat-x 0 0;
overflow: hidden;
zoom: 1;
}
.ux-start-menu-ml {
background: transparent url( ../images/taskbar/black/start-menu-left-right.png ) repeat-y 0 0;
padding-left: 6px;
zoom: 1;
}
.ux-start-menu-bc {
background: transparent url( ../images/taskbar/black/start-menu-top-bottom.png ) repeat-x 0 bottom;
zoom: 1;
}
.ux-start-menu-bc .x-window-footer {
padding-bottom: 6px;
zoom: 1;
font-size: 0;
line-height: 0;
}
.ux-start-menu-bl {
background: transparent url( ../images/taskbar/black/start-menu-left-corners.png ) no-repeat 0
bottom;
padding-left: 6px;
zoom: 1;
}
.ux-start-menu-br {
background: transparent url( ../images/taskbar/black/start-menu-right-corners.png ) no-repeat right
bottom;
padding-right: 6px;
zoom: 1;
}
.x-panel-nofooter .ux-start-menu-bc {
height: 6px;
}
.ux-start-menu-splitbar-h {
background-color: #d0d0d0;
}
.ux-start-menu-bwrap {
background: transparent none;
border: 0px none;
}
.ux-start-menu-body {
background: transparent none;
border: 0px none;
}
.ux-start-menu-apps-panel {
background: #ffffff none;
border: 1px solid #1e2124;
}
.ux-start-menu-tools-panel {
border: 0px none;
background: transparent url( ../images/taskbar/black/start-menu-right.png ) repeat-y scroll right
0pt;
}
#ux-taskbar-start {
background: #000000 url( ../images/taskbar/black/taskbar-start-panel-bg.gif ) repeat-x left top;
left: 0px;
padding: 0;
position: absolute;
}
#ux-taskbar-start .x-toolbar {
background: none;
padding: 0px;
border: 0px none;
}
#ux-taskbuttons-panel {
background: #000000 url( ../images/taskbar/black/taskbuttons-panel-bg.gif ) repeat-x left top;
padding-top: 0;
position: relative;
}
.ux-taskbuttons-strip-wrap { /* overflow:hidden;
position:relative;
width:100%; */
width: 100%;
overflow: hidden;
position: relative;
zoom: 1;
}
ul.ux-taskbuttons-strip {
display: block;
width: 5000px;
zoom: 1;
}
ul.ux-taskbuttons-strip li {
float: left;
margin-left: 2px;
}
ul.ux-taskbuttons-strip li.ux-taskbuttons-edge {
float: left;
margin: 0 !important;
padding: 0 !important;
border: 0 none !important;
font-size: 1px !important;
line-height: 1px !important;
overflow: hidden;
zoom: 1;
background: transparent !important;
width: 1px;
}
.x-clear {
clear: both;
height: 0;
overflow: hidden;
line-height: 0;
font-size: 0;
}
.x-taskbuttons-scrolling {
position: relative;
}
.x-taskbuttons-scrolling .ux-taskbuttons-strip-wrap {
margin-left: 18px;
margin-right: 18px;
}
td.ux-taskButtons-edge { /*float:left;*/
margin: 0 !important;
padding: 0 !important;
border: 0 none !important;
font-size: 1px !important;
line-height: 1px !important;
overflow: hidden;
zoom: 1;
background: transparent !important;
width: 1px;
}
.ux-taskbuttons-scroller-left {
background: transparent url( ../images/taskbar/black/scroll-left.gif ) no-repeat -18px 0;
width: 18px;
position: absolute;
left: 1px;
top: 0px;
z-index: 10;
cursor: pointer;
}
.ux-taskbuttons-scroller-left-over {
background-position: 0 0;
}
.ux-taskbuttons-scroller-left-disabled {
background-position: -18px 0;
opacity: .5;
-moz-opacity: .5;
filter: alpha(opacity = 50);
cursor: default;
}
.ux-taskbuttons-scroller-right {
background: transparent url( ../images/taskbar/black/scroll-right.gif ) no-repeat 0 0;
width: 18px;
position: absolute;
right: 0;
top: 0px;
z-index: 10;
cursor: pointer;
}
.ux-taskbuttons-scroller-right-over {
background-position: -18px 0;
}
.ux-taskbuttons-scroller-right-disabled {
background-position: 0 0;
opacity: .5;
-moz-opacity: .5;
filter: alpha(opacity = 50);
cursor: default;
}
.ux-toolmenu-sep {
background-color: #18191a;
border-bottom: 1px solid #858789;
display: block;
font-size: 1px;
line-height: 1px;
margin: 2px 3px;
}
.ux-start-menu-tools-panel ul.x-menu-list li.x-menu-list-item a.x-menu-item {
color: #ffffff;
}
.ux-start-menu-tools-panel ul.x-menu-list li.x-menu-list-item .x-menu-item-active a.x-menu-item {
color: #000000;
}
.ux-start-menu-tools-panel .x-menu-item-active {
background: #525456 url( ../images/taskbar/black/item-over.gif ) repeat-x left bottom;
border: 1px solid #000000;
padding: 0;
}
#ux-taskbar .x-splitbar-h {
background: #000000 url( ../images/taskbar/black/taskbar-split-h.gif ) no-repeat 0 0;
width: 8px;
}
.x-window-header-text {
cursor: default;
}
/*
* Begin Start button
*/
.ux-startbutton-left,.ux-startbutton-right {
font-size: 1px;
line-height: 1px;
}
.ux-startbutton-left {
width: 10px;
height: 28px;
background: url( ../images/taskbar/black/startbutton.gif ) no-repeat 0 0;
}
.ux-startbutton-right {
width: 10px;
height: 30px;
background: url( ../images/taskbar/black/startbutton.gif ) no-repeat 0 -28px;
}
.ux-startbutton-left i,.ux-startbutton-right i {
display: block;
width: 10px;
overflow: hidden;
font-size: 1px;
line-height: 1px;
}
.ux-startbutton-center {
background: url( ../images/taskbar/black/startbutton.gif ) repeat-x 0 -56px;
vertical-align: middle;
text-align: center;
padding: 0;
cursor: pointer;
white-space: nowrap;
}
#ux-taskbar .ux-startbutton-left {
background-position: 0 0;
}
#ux-taskbar .ux-startbutton-right {
background-position: 0 -30px;
}
#ux-taskbar .ux-startbutton-center {
background-position: 0 -60px;
}
#ux-taskbar .x-btn-over .ux-startbutton-left {
background-position: 0 -270px;
}
#ux-taskbar .x-btn-over .ux-startbutton-right {
background-position: 0 -300px;
}
#ux-taskbar .x-btn-over .ux-startbutton-center {
background-position: 0 -330px;
}
#ux-taskbar .x-btn-click .ux-startbutton-left {
background-position: 0 -180px;
}
#ux-taskbar .x-btn-click .ux-startbutton-right {
background-position: 0 -210px;
}
#ux-taskbar .x-btn-click .ux-startbutton-center {
background-position: 0 -240px;
}
#ux-taskbar .active-win .ux-startbutton-left {
background-position: 0 -90px;
}
#ux-taskbar .active-win .ux-startbutton-right {
background: url( ../images/taskbar/black/startbutton.gif ) no-repeat 0 -120px;
}
#ux-taskbar .active-win .ux-startbutton-center {
background: url( ../images/taskbar/black/startbutton.gif ) repeat-x 0 -150px;
}
#ux-taskbar .active-win .ux-startbutton-center button {
color: #fff;
}
/*
* End Start button
*/
.x-resizable-proxy {
background: #C7DFFC;
opacity: .5;
-moz-opacity: .5;
filter: alpha(opacity = 50);
border: 1px solid #3b5a82;
}
/* Desktop Shortcuts */
#x-shortcuts dt {
float: left;
margin: 15px 0 0 15px;
clear: left;
width: 64px;
font: normal 10px tahoma, arial, verdana, sans-serif;
text-align: center;
zoom: 1;
display: block;
}
#x-shortcuts dt a {
width: 64px;
display: block;
color: white;
text-decoration: none;
}
#x-shortcuts dt div {
width: 100%;
color: white;
overflow: hidden;
text-overflow: ellipsis;
cursor: pointer;
}
#x-shortcuts dt a:hover {
text-decoration: underline;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 155 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 996 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 967 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 513 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 842 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 992 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 808 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 400 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 191 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 944 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 920 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 505 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 972 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 832 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 206 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 143 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 224 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 748 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 327 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 890 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 195 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 888 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

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

Loading…
Cancel
Save