Compare commits

..

15 Commits

Author SHA1 Message Date
Francesco Mangiacrapa ddc6045607 changed dependency ws-task-executor-widget at version [0.0.1,
1.0.0-SNAPSHOT)
2020-07-28 14:59:33 +02:00
Francesco Mangiacrapa 2e6b3d031f changed the business logic to show the preview on files 2020-07-22 17:35:33 +02:00
Francesco Mangiacrapa aec8ae3332 Implemented improvement #19695#note-4 2020-07-21 15:55:39 +02:00
Francesco Mangiacrapa 2c4b91e835 #19695#note-1 integrated with Google Docs Viewer as first version 2020-07-20 16:39:13 +02:00
Francesco Mangiacrapa 6c1c00c238 integrated the Google Docs viewer 2020-07-17 18:05:47 +02:00
Francesco Mangiacrapa 4721a48c31 Implemented improvements reported at #19600#note-4 2020-07-17 13:02:54 +02:00
Francesco Mangiacrapa ed37efe568 added the method updateDescriptionForItem 2020-07-16 12:01:36 +02:00
Francesco Mangiacrapa b86510ee92 added download facility 2020-07-15 15:01:18 +02:00
Francesco Mangiacrapa ad937c9f13 first release for testing of #19600 2020-07-14 15:43:41 +02:00
Francesco Mangiacrapa 239810f194 working on show preview for image 2020-07-13 18:04:53 +02:00
Francesco Mangiacrapa b9370463b0 working on #19600 2020-07-13 15:35:02 +02:00
Francesco Mangiacrapa 2ff9cbaf35 building the GUI 2020-07-10 18:14:15 +02:00
Francesco Mangiacrapa af8d2525b9 on going on #19600 2020-07-10 15:07:03 +02:00
Francesco Mangiacrapa 98b5ae5fd7 building the Get Info... 2020-07-10 12:55:36 +02:00
Francesco Mangiacrapa 0a1e418d13 just started to work on this task 2020-07-08 18:14:06 +02:00
40 changed files with 1849 additions and 2283 deletions

View File

@ -6,21 +6,26 @@
<attribute name="maven.pomderived" value="true"/> <attribute name="maven.pomderived" value="true"/>
</attributes> </attributes>
</classpathentry> </classpathentry>
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
<attributes>
<attribute name="test" value="true"/>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"> <classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
<attributes> <attributes>
<attribute name="maven.pomderived" value="true"/> <attribute name="maven.pomderived" value="true"/>
</attributes> </attributes>
</classpathentry> </classpathentry>
<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources"> <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes> <attributes>
<attribute name="test" value="true"/>
<attribute name="maven.pomderived" value="true"/> <attribute name="maven.pomderived" value="true"/>
<attribute name="org.eclipse.jst.component.nondependency" value=""/>
</attributes> </attributes>
</classpathentry> </classpathentry>
<classpathentry kind="src" output="target/test-classes" path="src/test/java"> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
<attributes> <attributes>
<attribute name="test" value="true"/>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/> <attribute name="maven.pomderived" value="true"/>
</attributes> </attributes>
</classpathentry> </classpathentry>
@ -35,16 +40,5 @@
<attribute name="optional" value="true"/> <attribute name="optional" value="true"/>
</attributes> </attributes>
</classpathentry> </classpathentry>
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
<attribute name="org.eclipse.jst.component.nondependency" value=""/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="target/classes"/> <classpathentry kind="output" path="target/classes"/>
</classpath> </classpath>

View File

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

View File

@ -1,72 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?><project-modules id="moduleCoreId" project-version="1.5.0"> <?xml version="1.0" encoding="UTF-8"?><project-modules id="moduleCoreId" project-version="1.5.0">
<wb-module deploy-name="workspace-tree-widget"> <wb-module deploy-name="workspace-tree-widget">
<wb-resource deploy-path="/" source-path="/src/main/java"/> <wb-resource deploy-path="/" source-path="/src/main/java"/>
<wb-resource deploy-path="/" source-path="/src/main/resources"/> <wb-resource deploy-path="/" source-path="/src/main/resources"/>
<wb-resource deploy-path="/" source-path="/target/generated-sources/annotations"/> <wb-resource deploy-path="/" source-path="/target/generated-sources/annotations"/>
</wb-module> </wb-module>
</project-modules> </project-modules>

View File

@ -4,90 +4,7 @@
All notable changes to this project will be documented in this file. All notable changes to this project will be documented in this file.
This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [v6.35.3] - 2024-03-19 ## [v6.31.0] [r4.25.0] - 2020-07-16
- Moved to maven parent 1.2.0
- Added lombok 1.18.4 (provided) to avoid `java.lang.ClassNotFoundException: com.sun.tools.javac.code.TypeTags`
- Equipped with the new Catalogue Publishing Widget [#26825]
- image-previewer-widget range at [1.0.0, 1.3.0-SNAPSHOT)
## [v6.35.2] - 2022-09-14
#### Bug fixed
- [#23676] Fixed - Added extension .txt to ASC files when dowloaded
- [#23789] Fixed - Notebook files (.ipynb) are downloaded with .txt attached.
- [#23862] Fixed - Downloading folders containing a "." in the name, the .zip is appended to file name
## [v6.35.1] - 2022-06-27
- [#23523] Updated to maven-portal-bom 3.6.4
## [v6.35.0] - 2022-05-03
#### Enhancements
- [#23225] Updated the method to read the members of (VRE or Simple) shared folders
## [v6.34.3] - 2022-03-24
#### Enhancements
- [#23020] Reinforce the (ApplicationProfile-)Workspace-Explorer-App discovery
- [#22923] Migrate to maven-portal-bom 3.7.0[-SNAPSHOT]
## [v6.34.1] - 2021-12-20
#### Fixes
- [#22578] GetInfo facility invoked by Tree View does not display properly the Owner field
## [v6.34.0] - 2021-11-05
#### Enhancements
- [#22251] Make workspace file size field smart
## [v6.33.1] - 2021-06-11
#### Fixes
[#21575] Fixed icon associated with simple folders in the grid view
Moved to maven-portal-bom 3.6.3
## [v6.33.0] - 2021-05-11
#### Enhancements
[#21388] Integrated with new workflow to interact with ws-thredds 1.x
[#21444] Moved to maven-portal-bom >= 3.6.2-SNAPSHOT
## [v6.32.0] - 2021-04-12
#### Enhancements
[#21153] Upgrade the maven-portal-bom to 3.6.1 version
[#20762] Moved to ckan-metadata-publisher-widget 2.X
## [v6.31.3] - 2021-03-25
#### Bug Fixes
Declared the workspace-uploader range [2.X, 3.X-SNAPSHOT)
## [v6.31.2] - 2021-01-18
#### Bug Fixes
[#20457] Just including patched library
## [v6.31.1] - 2020-10-19
#### Bug Fixes
[#19952] Fixed incident
## [v6.31.0] - 2020-09-29
#### Enhancements #### Enhancements
@ -97,18 +14,15 @@ Declared the workspace-uploader range [2.X, 3.X-SNAPSHOT)
[#19695] Show the file preview via Google Docs Viewer [#19695] Show the file preview via Google Docs Viewer
#### Bug Fixes
[#19759#note-12] Fixed updating the description of a folder ## [v6.30.1] [r4.24.0] - 2020-06-25
## [v6.30.1] - 2020-06-25
#### Fixes #### Fixes
[#19544] update the unsharing messages in the accounting history [#19544] update the unsharing messages in the accounting history
## [v6.30.0] - 2020-05-18 ## [v6.30.0] [r4.23.0] - 2020-05-18
#### New Features #### New Features
@ -121,7 +35,7 @@ Declared the workspace-uploader range [2.X, 3.X-SNAPSHOT)
[#19243] Fixed upload archive facility does not work properly with Windows OS [#19243] Fixed upload archive facility does not work properly with Windows OS
## [v6.29.0] - 2020-03-27 ## [v6.29.0] [r4.21.0] - 2020-03-27
#### New Features #### New Features

111
pom.xml
View File

@ -5,13 +5,13 @@
<parent> <parent>
<artifactId>maven-parent</artifactId> <artifactId>maven-parent</artifactId>
<groupId>org.gcube.tools</groupId> <groupId>org.gcube.tools</groupId>
<version>1.2.0</version> <version>1.1.0</version>
<relativePath /> <relativePath />
</parent> </parent>
<groupId>org.gcube.portlets.user</groupId> <groupId>org.gcube.portlets.user</groupId>
<artifactId>workspace-tree-widget</artifactId> <artifactId>workspace-tree-widget</artifactId>
<version>6.35.3</version> <version>6.31.0-SNAPSHOT</version>
<name>gCube Workspace Tree Widget</name> <name>gCube Workspace Tree Widget</name>
<description> <description>
gCube Workspace Tree Widget is a widget to navigate and interact with gCube Workspace gCube Workspace Tree Widget is a widget to navigate and interact with gCube Workspace
@ -27,7 +27,7 @@
<repositories> <repositories>
<repository> <repository>
<id>eclipselink</id> <id>eclipselink</id>
<url>https://nexus.d4science.org/nexus/content/repositories/eclipselink/</url> <url>http://maven.research-infrastructures.eu:8081/nexus/content/repositories/eclipselink/</url>
</repository> </repository>
</repositories> </repositories>
@ -39,9 +39,6 @@
<maven.compiler.target>1.8</maven.compiler.target> <maven.compiler.target>1.8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<gxt2.2.5-gwt2.X-version>2.7.0</gxt2.2.5-gwt2.X-version>
<gcube-portal-bom-version>3.7.0</gcube-portal-bom-version>
</properties> </properties>
<dependencyManagement> <dependencyManagement>
@ -49,40 +46,31 @@
<dependency> <dependency>
<groupId>org.gcube.distribution</groupId> <groupId>org.gcube.distribution</groupId>
<artifactId>maven-portal-bom</artifactId> <artifactId>maven-portal-bom</artifactId>
<version>${gcube-portal-bom-version}</version> <version>3.6.0</version>
<type>pom</type> <type>pom</type>
<scope>import</scope> <scope>import</scope>
</dependency> </dependency>
</dependencies> </dependencies>
</dependencyManagement> </dependencyManagement>
<!-- <profiles> -->
<!-- <profile> -->
<!-- <id>workspace-tree-release-profile</id> -->
<!-- <activation> -->
<!-- <property> -->
<!-- <name>Release</name> -->
<!-- </property> -->
<!-- </activation> -->
<!-- <properties> -->
<!-- <gcube-portal-bom-version>3.7.0</gcube-portal-bom-version> -->
<!-- </properties> -->
<!-- </profile> -->
<!-- <profile> -->
<!-- <id>workspace-tree-snapshot-profile</id> -->
<!-- <activation> -->
<!-- <property> -->
<!-- <name>!Release</name> -->
<!-- </property> -->
<!-- </activation> -->
<!-- <properties> -->
<!-- <gcube-portal-bom-version>3.8.0-SNAPSHOT</gcube-portal-bom-version> -->
<!-- </properties> -->
<!-- </profile> -->
<!-- </profiles> -->
<dependencies> <dependencies>
<!-- UNCOMMENT THIS TO RUN IN DEVO MODE -->
<!-- <dependency> -->
<!-- <groupId>xerces</groupId> -->
<!-- <artifactId>xerces</artifactId> -->
<!-- <version>2.4.0</version> -->
<!-- </dependency> -->
<!-- This dependency is needed to use GWT UI BInder without old Xerces
version of gCore complaining -->
<!-- <dependency> -->
<!-- <groupId>xerces</groupId> -->
<!-- <artifactId>xercesImpl</artifactId> -->
<!-- <version>2.9.1</version> -->
<!-- <scope>provided</scope> -->
<!-- </dependency> -->
<!-- Google Web Toolkit (GWT) --> <!-- Google Web Toolkit (GWT) -->
<dependency> <dependency>
<groupId>com.google.gwt</groupId> <groupId>com.google.gwt</groupId>
@ -93,12 +81,13 @@
<dependency> <dependency>
<groupId>org.gcube.portal</groupId> <groupId>org.gcube.portal</groupId>
<artifactId>storagehub-icons-library</artifactId> <artifactId>storagehub-icons-library</artifactId>
<version>[1.0.0, 2.0.0-SNAPSHOT)</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.sencha.gxt</groupId> <groupId>com.sencha.gxt</groupId>
<artifactId>gxt2.2.5-gwt2.X</artifactId> <artifactId>gxt2.2.5-gwt2.X</artifactId>
<version>${gxt2.2.5-gwt2.X-version}</version> <version>${gwtVersion}</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
@ -166,7 +155,7 @@
<dependency> <dependency>
<groupId>org.gcube.portlets.widgets</groupId> <groupId>org.gcube.portlets.widgets</groupId>
<artifactId>image-previewer-widget</artifactId> <artifactId>image-previewer-widget</artifactId>
<version>[1.0.0, 1.3.0-SNAPSHOT)</version> <version>[1.0.0,)</version>
<exclusions> <exclusions>
<exclusion> <exclusion>
<groupId>com.google.gwt</groupId> <groupId>com.google.gwt</groupId>
@ -188,24 +177,10 @@
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.4</version>
<scope>provided</scope>
</dependency>
<dependency> <dependency>
<groupId>org.gcube.portlets.widgets</groupId> <groupId>org.gcube.portlets.widgets</groupId>
<artifactId>ws-task-executor-widget</artifactId> <artifactId>ws-task-executor-widget</artifactId>
<version>[1.0.0-SNAPSHOT, 2.0.0-SNAPSHOT)</version> <version>[0.0.1, 1.0.0-SNAPSHOT)</version>
</dependency> </dependency>
<dependency> <dependency>
@ -227,23 +202,23 @@
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<!-- <dependency> --> <dependency>
<!-- <groupId>com.thoughtworks.xstream</groupId> --> <groupId>com.thoughtworks.xstream</groupId>
<!-- <artifactId>xstream</artifactId> --> <artifactId>xstream</artifactId>
<!-- <version>1.4.5</version> --> <!-- <version>1.4.5</version> -->
<!-- </dependency> --> </dependency>
<dependency> <dependency>
<groupId>org.gcube.portlets.widgets</groupId> <groupId>org.gcube.portlets.widgets</groupId>
<artifactId>workspace-uploader</artifactId> <artifactId>workspace-uploader</artifactId>
<version>[2.0.0, 3.0.0-SNAPSHOT)</version> <version>[1.0.0, 3.0.0-SNAPSHOT)</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.gcube.common</groupId> <groupId>org.gcube.common</groupId>
<artifactId>storagehub-client-wrapper</artifactId> <artifactId>storagehub-client-wrapper</artifactId>
<version>[1.0.0, 2.0.0-SNAPSHOT)</version> <version>[1.0.0-SNAPSHOT, 2.0.0-SNAPSHOT)</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
@ -266,7 +241,6 @@
<dependency> <dependency>
<groupId>org.slf4j</groupId> <groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId> <artifactId>slf4j-log4j12</artifactId>
<scope>test</scope>
</dependency> </dependency>
<dependency> <dependency>
@ -276,22 +250,9 @@
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.gcube.portal</groupId> <groupId>org.gcube.portal</groupId>
<artifactId>social-library-stubs</artifactId> <artifactId>social-networking-library</artifactId>
<version>[1.0.0-SNAPSHOT, 2.0.0)</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<dependency>
<groupId>org.gcube.social-networking</groupId>
<artifactId>social-service-client</artifactId>
<version>[2.0.0-SNAPSHOT, 3.0.0)</version>
<scope>provided</scope>
<exclusions>
<exclusion>
<groupId>org.gcube.portal</groupId>
<artifactId>social-networking-library</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency> <dependency>
<groupId>org.gcube.applicationsupportlayer</groupId> <groupId>org.gcube.applicationsupportlayer</groupId>
<artifactId>aslsocial</artifactId> <artifactId>aslsocial</artifactId>
@ -302,14 +263,8 @@
<dependency> <dependency>
<groupId>org.gcube.portlets.widgets</groupId> <groupId>org.gcube.portlets.widgets</groupId>
<artifactId>ckan-metadata-publisher-widget</artifactId> <artifactId>ckan-metadata-publisher-widget</artifactId>
<version>[2.0.0-SNAPSHOT, 3.0.0)</version> <version>[1.0.0,2.0.0-SNAPSHOT)</version>
<scope>compile</scope> <scope>compile</scope>
<exclusions>
<exclusion>
<groupId>com.allen-sauer.gwt.log</groupId>
<artifactId>gwt-log</artifactId>
</exclusion>
</exclusions>
</dependency> </dependency>
<!-- JSON PARSER --> <!-- JSON PARSER -->

View File

@ -174,7 +174,6 @@ import com.github.gwtbootstrap.client.ui.Modal;
import com.github.gwtbootstrap.client.ui.event.HideEvent; import com.github.gwtbootstrap.client.ui.event.HideEvent;
import com.github.gwtbootstrap.client.ui.event.HideHandler; import com.github.gwtbootstrap.client.ui.event.HideHandler;
import com.google.gwt.core.client.GWT; import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.Element;
import com.google.gwt.event.shared.EventHandler; import com.google.gwt.event.shared.EventHandler;
import com.google.gwt.event.shared.HandlerManager; import com.google.gwt.event.shared.HandlerManager;
import com.google.gwt.http.client.RequestBuilder; import com.google.gwt.http.client.RequestBuilder;
@ -312,7 +311,7 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
modal.setTitle("Publish Item"); modal.setTitle("Publish Item");
modal.addStyleName("insert-metadata-modal-style"); modal.addStyleName("insert-metadata-modal-style");
modal.addStyleName("modal-top-custom"); modal.addStyleName("modal-top-custom");
((Element)modal.getElement().getChildNodes().getItem(1)).addClassName("modal-body-ws-tree "); // ((Element)modal.getElement().getChildNodes().getItem(1)).addClassName("modal-body-custom");
modal.add(new CreateDatasetForm(folderId, eventBus)); modal.add(new CreateDatasetForm(folderId, eventBus));
modal.setCloseVisible(true); modal.setCloseVisible(true);
modal.show(); modal.show();

View File

@ -4,6 +4,7 @@ import java.util.HashMap;
import java.util.Map; import java.util.Map;
import com.google.gwt.core.client.GWT; import com.google.gwt.core.client.GWT;
import com.google.gwt.i18n.client.NumberFormat;
//import com.google.gwt.dom.client.Element; //import com.google.gwt.dom.client.Element;
//import com.google.gwt.user.client.Element; //import com.google.gwt.user.client.Element;
@ -216,7 +217,7 @@ public static enum WS_UPLOAD_TYPE {File, Archive};
public static final String ACCOUNTING_HISTORY_OF = "Accounting history of: "; public static final String ACCOUNTING_HISTORY_OF = "Accounting history of: ";
public static final String ACCOUNTING_READERS_OF = "Accounting readers of: "; public static final String ACCOUNTING_READERS_OF = "Accounting readers of: ";
//public static final NumberFormat numberFormatterKB = NumberFormat.getFormat("#,##0 KB;(#,##0 KB)"); public static final NumberFormat numberFormatterKB = NumberFormat.getFormat("#,##0 KB;(#,##0 KB)");
//USED IN HTTP GET AS PARAMETER.. THIS PARAMS ARE REPLICATED IN THE CONSTANTS OF TREE WIDGET //USED IN HTTP GET AS PARAMETER.. THIS PARAMS ARE REPLICATED IN THE CONSTANTS OF TREE WIDGET
public static final String GET_SEARCH_PARAMETER ="search"; public static final String GET_SEARCH_PARAMETER ="search";

View File

@ -3,6 +3,7 @@ package org.gcube.portlets.user.workspace.client.model;
import java.io.Serializable; import java.io.Serializable;
import java.util.List; import java.util.List;
import org.gcube.portal.wssynclibrary.shared.thredds.Sync_Status;
import org.gcube.portlets.user.workspace.client.ConstantsExplorer; import org.gcube.portlets.user.workspace.client.ConstantsExplorer;
import org.gcube.portlets.user.workspace.client.interfaces.GXTCategorySmartFolder; import org.gcube.portlets.user.workspace.client.interfaces.GXTCategorySmartFolder;
import org.gcube.portlets.user.workspace.client.interfaces.GXTFolderItemTypeEnum; import org.gcube.portlets.user.workspace.client.interfaces.GXTFolderItemTypeEnum;
@ -15,12 +16,13 @@ import com.google.gwt.user.client.rpc.IsSerializable;
import com.google.gwt.user.client.ui.AbstractImagePrototype; import com.google.gwt.user.client.ui.AbstractImagePrototype;
import com.google.gwt.user.client.ui.Image; import com.google.gwt.user.client.ui.Image;
// TODO: Auto-generated Javadoc
/** /**
* The Class FileModel. * The Class FileModel.
* *
* @author Francesco Mangiacrapa francesco.mangiacrapa{@literal @}isti.cnr.it * @author Francesco Mangiacrapa francesco.mangiacrapa{@literal @}isti.cnr.it
* Sep 15, 2016 * Sep 15, 2016
*/ */
public class FileModel extends BaseModelData implements Serializable, IsSerializable { public class FileModel extends BaseModelData implements Serializable, IsSerializable {
@ -29,8 +31,8 @@ public class FileModel extends BaseModelData implements Serializable, IsSerializ
*/ */
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
protected GXTFolderItemTypeEnum folderItemType; // It's here to serialization don't remove protected GXTFolderItemTypeEnum folderItemType; //It's here to serialization don't remove
protected GXTCategorySmartFolder smartFolders; // It's here to serialization don't remove protected GXTCategorySmartFolder smartFolders; //It's here to serialization don't remove
protected InfoContactModel infoContacts; protected InfoContactModel infoContacts;
protected boolean isRoot = false; protected boolean isRoot = false;
protected boolean isVreFolder; protected boolean isVreFolder;
@ -53,23 +55,23 @@ public class FileModel extends BaseModelData implements Serializable, IsSerializ
public static final String OWNERFULLNAME = "Owner Name"; public static final String OWNERFULLNAME = "Owner Name";
public static final String HUMAN_REDABLE_CATEGORY = "HR Category"; public static final String HUMAN_REDABLE_CATEGORY = "HR Category";
// Synched with thredds //Thredds Synch status
private Boolean synchedWithWsThredds = null; private Sync_Status synchedThreddsStatus;
/** /**
* Instantiates a new file model. * Instantiates a new file model.
*/ */
protected FileModel() { protected FileModel(){
} }
/** /**
* Instantiates a new file model. * Instantiates a new file model.
* *
* @param identifier the identifier * @param identifier the identifier
* @param name the name * @param name the name
* @param parent the parent * @param parent the parent
* @param isDirectory the is directory * @param isDirectory the is directory
* @param isShared the is shared * @param isShared the is shared
*/ */
public FileModel(String identifier, String name, FileModel parent, boolean isDirectory, boolean isShared) { public FileModel(String identifier, String name, FileModel parent, boolean isDirectory, boolean isShared) {
setIdentifier(identifier); setIdentifier(identifier);
@ -83,8 +85,8 @@ public class FileModel extends BaseModelData implements Serializable, IsSerializ
/** /**
* USED FOR ATTACHMENTS AND FolderBulkCreator. * USED FOR ATTACHMENTS AND FolderBulkCreator.
* *
* @param identifier the identifier * @param identifier the identifier
* @param name the name * @param name the name
* @param isDirectory the is directory * @param isDirectory the is directory
*/ */
public FileModel(String identifier, String name, boolean isDirectory) { public FileModel(String identifier, String name, boolean isDirectory) {
@ -97,7 +99,7 @@ public class FileModel extends BaseModelData implements Serializable, IsSerializ
/** /**
* Inits the default properties. * Inits the default properties.
*/ */
protected void initDefaultProperties() { protected void initDefaultProperties(){
setShortcutCategory(GXTCategorySmartFolder.SMF_UNKNOWN); setShortcutCategory(GXTCategorySmartFolder.SMF_UNKNOWN);
setShareable(true); setShareable(true);
} }
@ -108,7 +110,7 @@ public class FileModel extends BaseModelData implements Serializable, IsSerializ
* @param bool the new shareable * @param bool the new shareable
*/ */
public void setShareable(boolean bool) { public void setShareable(boolean bool) {
set(ConstantsExplorer.ISSHAREABLE, bool); set(ConstantsExplorer.ISSHAREABLE,bool);
} }
@ -117,7 +119,7 @@ public class FileModel extends BaseModelData implements Serializable, IsSerializ
* *
* @param description the new description * @param description the new description
*/ */
public void setDescription(String description) { public void setDescription(String description){
set(ConstantsExplorer.DIRECTORYDESCRIPTION, description); set(ConstantsExplorer.DIRECTORYDESCRIPTION, description);
} }
@ -126,7 +128,7 @@ public class FileModel extends BaseModelData implements Serializable, IsSerializ
* *
* @return the description * @return the description
*/ */
public String getDescription() { public String getDescription(){
return get(ConstantsExplorer.DIRECTORYDESCRIPTION); return get(ConstantsExplorer.DIRECTORYDESCRIPTION);
} }
@ -137,7 +139,7 @@ public class FileModel extends BaseModelData implements Serializable, IsSerializ
*/ */
public boolean isShareable() { public boolean isShareable() {
Object sharable = get(ConstantsExplorer.ISSHAREABLE); Object sharable = get(ConstantsExplorer.ISSHAREABLE);
if (sharable != null) if(sharable!=null)
return (Boolean) sharable; return (Boolean) sharable;
return false; return false;
} }
@ -145,15 +147,14 @@ public class FileModel extends BaseModelData implements Serializable, IsSerializ
/** /**
* Instantiates a new file model. * Instantiates a new file model.
* *
* @param identifier the identifier * @param identifier the identifier
* @param name the name * @param name the name
* @param type the type * @param type the type
* @param folderItemTypeEnum the folder item type enum * @param folderItemTypeEnum the folder item type enum
* @param isDirectory the is directory * @param isDirectory the is directory
* @param isShared the is shared * @param isShared the is shared
*/ */
public FileModel(String identifier, String name, String type, GXTFolderItemTypeEnum folderItemTypeEnum, public FileModel(String identifier, String name, String type, GXTFolderItemTypeEnum folderItemTypeEnum, boolean isDirectory, boolean isShared) {
boolean isDirectory, boolean isShared) {
setIdentifier(identifier); setIdentifier(identifier);
setName(name); setName(name);
setType(type); setType(type);
@ -169,12 +170,14 @@ public class FileModel extends BaseModelData implements Serializable, IsSerializ
* @param parent the new parent file model * @param parent the new parent file model
*/ */
public void setParentFileModel(FileModel parent) { public void setParentFileModel(FileModel parent) {
set(PARENT, parent); set(PARENT,parent);
} }
/** /**
* Status values ConstantsExplorer.FOLDERNOTLOAD = "notload"; * Status values
* ConstantsExplorer.FOLDERLOADED = "loaded"; * ConstantsExplorer.FOLDERNOTLOAD = "notload";
* ConstantsExplorer.FOLDERLOADED = "loaded";
* *
* @param status the new status * @param status the new status
*/ */
@ -189,9 +192,9 @@ public class FileModel extends BaseModelData implements Serializable, IsSerializ
Image icon = (Image) get(ICON); Image icon = (Image) get(ICON);
AbstractImagePrototype iconAbs; AbstractImagePrototype iconAbs;
if (icon == null) { if(icon==null){
iconAbs = getAbstractPrototypeIcon(); iconAbs = getAbstractPrototypeIcon();
} else }else
return; return;
set(ICON, iconAbs.createImage()); set(ICON, iconAbs.createImage());
@ -203,7 +206,7 @@ public class FileModel extends BaseModelData implements Serializable, IsSerializ
* *
* @param fullName the new owner full name * @param fullName the new owner full name
*/ */
public void setOwnerFullName(String fullName) { public void setOwnerFullName(String fullName){
set(FileModel.OWNERFULLNAME, fullName); set(FileModel.OWNERFULLNAME, fullName);
} }
@ -212,17 +215,17 @@ public class FileModel extends BaseModelData implements Serializable, IsSerializ
* *
* @return the owner full name * @return the owner full name
*/ */
public String getOwnerFullName() { public String getOwnerFullName(){
return get(FileModel.OWNERFULLNAME); return get(FileModel.OWNERFULLNAME);
} }
/** /**
* Sets the sharing value. * Sets the sharing value.
* *
* @param isShared the is shared * @param isShared the is shared
* @param listShareUsers the list share users * @param listShareUsers the list share users
*/ */
public void setSharingValue(boolean isShared, List<InfoContactModel> listShareUsers) { public void setSharingValue(boolean isShared, List<InfoContactModel> listShareUsers){
set(ISSHARED, isShared); set(ISSHARED, isShared);
set(SHAREUSERS, listShareUsers); set(SHAREUSERS, listShareUsers);
} }
@ -233,7 +236,7 @@ public class FileModel extends BaseModelData implements Serializable, IsSerializ
* @return the list user sharing * @return the list user sharing
*/ */
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public List<InfoContactModel> getListUserSharing() { public List<InfoContactModel> getListUserSharing(){
return (List<InfoContactModel>) get(SHAREUSERS); return (List<InfoContactModel>) get(SHAREUSERS);
} }
@ -242,7 +245,7 @@ public class FileModel extends BaseModelData implements Serializable, IsSerializ
* *
* @param listShareUsers the new list share user * @param listShareUsers the new list share user
*/ */
public void setListShareUser(List<InfoContactModel> listShareUsers) { public void setListShareUser(List<InfoContactModel> listShareUsers){
set(SHAREUSERS, listShareUsers); set(SHAREUSERS, listShareUsers);
} }
@ -251,9 +254,9 @@ public class FileModel extends BaseModelData implements Serializable, IsSerializ
* *
* @return true, if is shared * @return true, if is shared
*/ */
public boolean isShared() { public boolean isShared(){
Object shared = get(ISSHARED); Object shared = get(ISSHARED);
if (shared != null) if(shared!=null)
return (Boolean) shared; return (Boolean) shared;
return false; return false;
} }
@ -263,7 +266,7 @@ public class FileModel extends BaseModelData implements Serializable, IsSerializ
* *
* @return true, if is root * @return true, if is root
*/ */
public boolean isRoot() { public boolean isRoot(){
return isRoot; return isRoot;
} }
@ -272,10 +275,11 @@ public class FileModel extends BaseModelData implements Serializable, IsSerializ
* *
* @param isRoot the new checks if is root * @param isRoot the new checks if is root
*/ */
public void setIsRoot(boolean isRoot) { public void setIsRoot(boolean isRoot){
this.isRoot = isRoot; this.isRoot = isRoot;
} }
/** /**
* Gets the icon. * Gets the icon.
* *
@ -292,56 +296,61 @@ public class FileModel extends BaseModelData implements Serializable, IsSerializ
*/ */
public AbstractImagePrototype getAbstractPrototypeIcon() { public AbstractImagePrototype getAbstractPrototypeIcon() {
GWT.log("My prop: " + this.toString()); GWT.log("My prop: "+this.toString());
AbstractImagePrototype absImgPr = Resources.getIconTable(); AbstractImagePrototype absImgPr = Resources.getIconTable();
if (!this.isDirectory()) { // IS FILE if (!this.isDirectory()) { //IS FILE
if (this.getType() != null) if(this.getType()!=null)
absImgPr = Resources.getIconByType(this.getName(), this.getType()); absImgPr = Resources.getIconByType(this.getName(), this.getType());
else else
absImgPr = Resources.getIconByFolderItemType(this.getGXTFolderItemType()); absImgPr = Resources.getIconByFolderItemType(this.getGXTFolderItemType());
} else if (this.isShared()) { // IS A SHARED FOLDER? }else if(this.isShared()){ //IS A SHARED FOLDER?
// GWT.log("setting icon "+this.getName()+" is shared: "+this.isShared() + ", //GWT.log("setting icon "+this.getName()+" is shared: "+this.isShared() + ", this.isVreFolder() "+this.isVreFolder() +", this.isShareable() "+this.isShareable());
// this.isVreFolder() "+this.isVreFolder() +", this.isShareable()
// "+this.isShareable());
if (this.isVreFolder()) if(this.isVreFolder())
absImgPr = Resources.getIconVREFolder(); absImgPr = Resources.getIconVREFolder();
else { else{
if (this.isShareable()) { // IS ROOT SHARED FOLDER if(this.isShareable()){ //IS ROOT SHARED FOLDER
if (this.isPublic()) // IS PLUBIC if(this.isPublic()) //IS PLUBIC
absImgPr = Resources.getIconFolderSharedPublic(); absImgPr = Resources.getIconFolderSharedPublic();
else else
absImgPr = Resources.getIconSharedFolder(); absImgPr = Resources.getIconSharedFolder();
} else { // IS A DESCENDANT }else{ //IS A DESCENDANT
if (this.isPublic()) // IS PLUBIC if(this.isPublic()) //IS PLUBIC
absImgPr = Resources.getIconFolderPublic(); absImgPr = Resources.getIconFolderPublic();
else else
absImgPr = Resources.getIconSharedFolder(); // IS A SHARED FOLDER DESCENDANT OF ROOT SHARED absImgPr = Resources.getIconSharedFolder(); //IS A SHARED FOLDER DESCENDANT OF ROOT SHARED FOLDER
// FOLDER
} }
} }
} else if (this.getStatus() == ConstantsExplorer.FOLDERNOTLOAD) { // IS A FOLDER IN LOADING }else if(this.getStatus() == ConstantsExplorer.FOLDERNOTLOAD){ //IS A FOLDER IN LOADING
absImgPr = Resources.getIconLoading2(); absImgPr = Resources.getIconLoading2();
} else { }else{
// SPECIAL FOLDER? //SPECIAL FOLDER?
if (this.isSpecialFolder()) { if(this.isSpecialFolder())
absImgPr = Resources.getIconSpecialFolder(); absImgPr = Resources.getIconSpecialFolder();
} else { // SIMPLE FOLDER else{ //SIMPLE FOLDER
if (this.isPublic()) { // IS PLUBIC if(this.isPublic()) //IS PLUBIC
absImgPr = Resources.getIconFolderPublic(); absImgPr = Resources.getIconFolderPublic();
} else { else {
Boolean isSynched = this.getSynchedWithWsThredds(); if(this.getSynchedThreddsStatus()!=null) {
if (isSynched != null && isSynched) { switch(this.getSynchedThreddsStatus()) {
absImgPr = Resources.getIconSynchedFolder(); case OUTDATED_REMOTE:
} else { absImgPr = Resources.getIconSyncTo();
absImgPr = Resources.getIconFolder(); break;
} case OUTDATED_WS:
absImgPr = Resources.getIconSyncFrom();
break;
case UP_TO_DATE:
absImgPr = Resources.getIconSynched();
break;
}
}else
absImgPr = Resources.getIconFolder();
} }
} }
} }
@ -349,6 +358,7 @@ public class FileModel extends BaseModelData implements Serializable, IsSerializ
return absImgPr; return absImgPr;
} }
/** /**
* Gets the status. * Gets the status.
* *
@ -358,12 +368,13 @@ public class FileModel extends BaseModelData implements Serializable, IsSerializ
return get("status"); return get("status");
} }
/** /**
* Sets the checks if is directory. * Sets the checks if is directory.
* *
* @param flag the new checks if is directory * @param flag the new checks if is directory
*/ */
public void setIsDirectory(boolean flag) { public void setIsDirectory(boolean flag){
set(ISDIRECTORY, flag); set(ISDIRECTORY, flag);
} }
@ -381,7 +392,7 @@ public class FileModel extends BaseModelData implements Serializable, IsSerializ
* *
* @return the identifier * @return the identifier
*/ */
public String getIdentifier() { public String getIdentifier(){
return get(IDENTIFIER); return get(IDENTIFIER);
} }
@ -392,19 +403,21 @@ public class FileModel extends BaseModelData implements Serializable, IsSerializ
*/ */
public void setShortcutCategory(GXTCategorySmartFolder smfDocuments) { public void setShortcutCategory(GXTCategorySmartFolder smfDocuments) {
set(SHORTCUTCATEGORY, smfDocuments); set(SHORTCUTCATEGORY, smfDocuments);
if (smfDocuments != null) if(smfDocuments!=null)
set(HUMAN_REDABLE_CATEGORY, smfDocuments.getValue()); set(HUMAN_REDABLE_CATEGORY, smfDocuments.getValue());
} }
/** /**
* Gets the shortcut category. * Gets the shortcut category.
* *
* @return the shortcut category * @return the shortcut category
*/ */
public GXTCategorySmartFolder getShortcutCategory() { public GXTCategorySmartFolder getShortcutCategory(){
return (GXTCategorySmartFolder) get(SHORTCUTCATEGORY); return (GXTCategorySmartFolder) get(SHORTCUTCATEGORY);
} }
/** /**
* Sets the name. * Sets the name.
* *
@ -428,7 +441,7 @@ public class FileModel extends BaseModelData implements Serializable, IsSerializ
* *
* @return the parent file model * @return the parent file model
*/ */
public FileModel getParentFileModel() { public FileModel getParentFileModel(){
return (FileModel) get(PARENT); return (FileModel) get(PARENT);
} }
@ -437,16 +450,14 @@ public class FileModel extends BaseModelData implements Serializable, IsSerializ
* *
* @return true, if is directory * @return true, if is directory
*/ */
public boolean isDirectory() { public boolean isDirectory(){
Object directory = get(ISDIRECTORY); Object directory = get(ISDIRECTORY);
if (directory != null) if(directory!=null)
return (Boolean) directory; return (Boolean) directory;
return false; return false;
} }
/* /* (non-Javadoc)
* (non-Javadoc)
*
* @see java.lang.Object#equals(java.lang.Object) * @see java.lang.Object#equals(java.lang.Object)
*/ */
/** /**
@ -478,7 +489,7 @@ public class FileModel extends BaseModelData implements Serializable, IsSerializ
* *
* @param type the new type * @param type the new type
*/ */
public void setType(String type) { public void setType(String type){
set(TYPE, type); set(TYPE, type);
} }
@ -487,7 +498,7 @@ public class FileModel extends BaseModelData implements Serializable, IsSerializ
* *
* @return the type * @return the type
*/ */
public String getType() { public String getType(){
return get(TYPE); return get(TYPE);
} }
@ -496,7 +507,7 @@ public class FileModel extends BaseModelData implements Serializable, IsSerializ
* *
* @param folderItemTypeEnum the new folder item type * @param folderItemTypeEnum the new folder item type
*/ */
public void setFolderItemType(GXTFolderItemTypeEnum folderItemTypeEnum) { public void setFolderItemType(GXTFolderItemTypeEnum folderItemTypeEnum){
set(FOLDERITEMTYPE, folderItemTypeEnum); set(FOLDERITEMTYPE, folderItemTypeEnum);
} }
@ -505,7 +516,7 @@ public class FileModel extends BaseModelData implements Serializable, IsSerializ
* *
* @return the GXT folder item type * @return the GXT folder item type
*/ */
public GXTFolderItemTypeEnum getGXTFolderItemType() { public GXTFolderItemTypeEnum getGXTFolderItemType(){
return (GXTFolderItemTypeEnum) get(FOLDERITEMTYPE); return (GXTFolderItemTypeEnum) get(FOLDERITEMTYPE);
} }
@ -560,31 +571,21 @@ public class FileModel extends BaseModelData implements Serializable, IsSerializ
* *
* @return true, if is public * @return true, if is public
*/ */
public boolean isPublic() { public boolean isPublic(){
return isPublic; return isPublic;
} }
/** public void setSyncThreddsStatus(Sync_Status status) {
* Sets the synched with ws thredds. this.synchedThreddsStatus = status;
*
* @param bool the new synched with ws thredds
*/
public void setSynchedWithWsThredds(Boolean bool) {
this.synchedWithWsThredds = bool;
} }
/** public Sync_Status getSynchedThreddsStatus() {
* Gets the synched with ws thredds. return synchedThreddsStatus;
*
* @return the synched with ws thredds
*/
public Boolean getSynchedWithWsThredds() {
return synchedWithWsThredds;
} }
/*
* (non-Javadoc)
* /* (non-Javadoc)
* @see java.lang.Object#toString() * @see java.lang.Object#toString()
*/ */
/** /**
@ -619,4 +620,5 @@ public class FileModel extends BaseModelData implements Serializable, IsSerializ
return builder.toString(); return builder.toString();
} }
} }

View File

@ -411,24 +411,15 @@ public interface Icons extends ClientBundle {
@Source("icons/sync-icon-to.png") @Source("icons/sync-icon-to.png")
ImageResource syncIconTo(); ImageResource syncIconTo();
@Source("icons/folder_sync.png")
ImageResource synchedFolder();
// @Source("icons/sync-icon-from.png") @Source("icons/sync-icon-from.png")
// ImageResource syncIconFrom(); ImageResource syncIconFrom();
//
// @Source("icons/sync-icon-synched.png") @Source("icons/sync-icon-synched.png")
// ImageResource syncIconSynched(); ImageResource syncIconSynched();
@Source("icons/no-preview-available.png") @Source("icons/no-preview-available.png")
ImageResource previewNotAvailable(); ImageResource previewNotAvailable();
@Source("icons/no-preview-available-no-border.png")
ImageResource previewNotAvailableNoBorder();
@Source("icons/spinner2.gif")
ImageResource spinner();
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 667 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 625 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 660 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -1,42 +0,0 @@
package org.gcube.portlets.user.workspace.client.util;
import com.google.gwt.core.client.GWT;
import com.google.gwt.i18n.client.NumberFormat;
/**
* The Class SizeUtil.
*
* @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
*
* Nov 5, 2021
*/
public class SizeUtil {
public static final NumberFormat numberFormat = NumberFormat.getFormat("#,##0.#");
/**
* Readable file size.
*
* @param size the size
* @return the string
*/
public static String readableFileSize(long size) {
GWT.log("Converting size: "+size);
// -1 should be the size of a folder
if (size == -1)
return "";
// in some cases the size returned by SHUB is negative,
// so reporting as 1B to user
if (size < 0)
return "1 byte";
if (size == 0)
return "0 byte";
final String[] units = new String[] { "bytes", "kB", "MB", "GB", "TB" };
int digitGroups = (int) (Math.log10(size) / Math.log10(1024));
return numberFormat.format(size / Math.pow(1024, digitGroups)) +" " +units[digitGroups];
}
}

View File

@ -4,10 +4,10 @@ import java.util.Date;
import java.util.List; import java.util.List;
import org.gcube.portlets.user.workspace.client.AppControllerExplorer; import org.gcube.portlets.user.workspace.client.AppControllerExplorer;
import org.gcube.portlets.user.workspace.client.ConstantsExplorer;
import org.gcube.portlets.user.workspace.client.model.FileGridModel; import org.gcube.portlets.user.workspace.client.model.FileGridModel;
import org.gcube.portlets.user.workspace.client.model.FileModel; import org.gcube.portlets.user.workspace.client.model.FileModel;
import org.gcube.portlets.user.workspace.client.resources.Resources; import org.gcube.portlets.user.workspace.client.resources.Resources;
import org.gcube.portlets.user.workspace.client.util.SizeUtil;
import org.gcube.portlets.widgets.workspacesharingwidget.client.rpc.WorkspaceSharingServiceAsync; import org.gcube.portlets.widgets.workspacesharingwidget.client.rpc.WorkspaceSharingServiceAsync;
import org.gcube.portlets.widgets.workspacesharingwidget.shared.InfoContactModel; import org.gcube.portlets.widgets.workspacesharingwidget.shared.InfoContactModel;
@ -26,6 +26,7 @@ import com.extjs.gxt.ui.client.widget.layout.FormLayout;
import com.google.gwt.core.client.GWT; import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.i18n.client.NumberFormat;
import com.google.gwt.user.client.Command; import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Image; import com.google.gwt.user.client.ui.Image;
@ -59,7 +60,7 @@ public class DialogGetInfo extends Dialog {
// private TextArea textAreaSharedWith = new TextArea(); // private TextArea textAreaSharedWith = new TextArea();
private Html htmlUsersWidget = new Html(); private Html htmlUsersWidget = new Html();
private Html htmlPropertiesWidget = new Html(); private Html htmlPropertiesWidget = new Html();
//private final NumberFormat number = ConstantsExplorer.numberFormatterKB; private final NumberFormat number = ConstantsExplorer.numberFormatterKB;
// private TextField<String> txtGcubeItemProperties; // private TextField<String> txtGcubeItemProperties;
private HorizontalPanel hpGcubeProperties; private HorizontalPanel hpGcubeProperties;
private DialogEditProperties editProperties = null; private DialogEditProperties editProperties = null;
@ -113,11 +114,11 @@ public class DialogGetInfo extends Dialog {
txtIsPublic.setValue(fileModel.isPublic() + ""); txtIsPublic.setValue(fileModel.isPublic() + "");
add(txtIsPublic); add(txtIsPublic);
if (fileModel.getSynchedWithWsThredds() != null) { if (fileModel.getSynchedThreddsStatus() != null) {
txtThreddsSynched = new TextField<String>(); txtThreddsSynched = new TextField<String>();
txtThreddsSynched.setFieldLabel("Synched with Thredds"); txtThreddsSynched.setFieldLabel("Thredds Sync");
txtThreddsSynched.setReadOnly(true); txtThreddsSynched.setReadOnly(true);
txtThreddsSynched.setValue(fileModel.getSynchedWithWsThredds() + ""); txtThreddsSynched.setValue(fileModel.getSynchedThreddsStatus() + "");
add(txtThreddsSynched); add(txtThreddsSynched);
} }
@ -447,7 +448,10 @@ public class DialogGetInfo extends Dialog {
private String getFormattedSize(long value) { private String getFormattedSize(long value) {
if (value > 0) { if (value > 0) {
return SizeUtil.readableFileSize(value); double kb = value / 1024;
if (kb < 1)
kb = 1;
return number.format(kb);
} else if (value == 0) { } else if (value == 0) {
return EMPTY; return EMPTY;
} else } else

View File

@ -5,6 +5,7 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import org.gcube.portlets.user.workspace.client.AppControllerExplorer; import org.gcube.portlets.user.workspace.client.AppControllerExplorer;
import org.gcube.portlets.user.workspace.client.ConstantsExplorer;
import org.gcube.portlets.user.workspace.client.event.CreateSharedFolderEvent; import org.gcube.portlets.user.workspace.client.event.CreateSharedFolderEvent;
import org.gcube.portlets.user.workspace.client.event.FileDownloadEvent; import org.gcube.portlets.user.workspace.client.event.FileDownloadEvent;
import org.gcube.portlets.user.workspace.client.event.FileDownloadEvent.DownloadType; import org.gcube.portlets.user.workspace.client.event.FileDownloadEvent.DownloadType;
@ -12,7 +13,6 @@ import org.gcube.portlets.user.workspace.client.interfaces.GXTFolderItemTypeEnum
import org.gcube.portlets.user.workspace.client.model.FileGridModel; import org.gcube.portlets.user.workspace.client.model.FileGridModel;
import org.gcube.portlets.user.workspace.client.model.FileModel; import org.gcube.portlets.user.workspace.client.model.FileModel;
import org.gcube.portlets.user.workspace.client.resources.Resources; import org.gcube.portlets.user.workspace.client.resources.Resources;
import org.gcube.portlets.user.workspace.client.util.SizeUtil;
import org.gcube.portlets.user.workspace.client.workspace.GWTWorkspaceItem; import org.gcube.portlets.user.workspace.client.workspace.GWTWorkspaceItem;
import org.gcube.portlets.user.workspace.client.workspace.folder.item.GWTExternalImage; import org.gcube.portlets.user.workspace.client.workspace.folder.item.GWTExternalImage;
import org.gcube.portlets.user.workspace.client.workspace.folder.item.gcube.GWTImageDocument; import org.gcube.portlets.user.workspace.client.workspace.folder.item.gcube.GWTImageDocument;
@ -37,6 +37,7 @@ import com.google.gwt.event.dom.client.LoadEvent;
import com.google.gwt.event.dom.client.LoadHandler; import com.google.gwt.event.dom.client.LoadHandler;
import com.google.gwt.http.client.URL; import com.google.gwt.http.client.URL;
import com.google.gwt.i18n.client.DateTimeFormat; import com.google.gwt.i18n.client.DateTimeFormat;
import com.google.gwt.i18n.client.NumberFormat;
import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField; import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.Command; import com.google.gwt.user.client.Command;
@ -50,6 +51,7 @@ import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Image; import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.NamedFrame; import com.google.gwt.user.client.ui.NamedFrame;
import com.google.gwt.user.client.ui.Widget; import com.google.gwt.user.client.ui.Widget;
import com.google.gwt.user.server.Base64Utils;
// TODO: Auto-generated Javadoc // TODO: Auto-generated Javadoc
/** /**
@ -61,9 +63,6 @@ import com.google.gwt.user.client.ui.Widget;
public class DialogGetInfoBootstrap extends Composite { public class DialogGetInfoBootstrap extends Composite {
private static final int PREVIEW_WAITING_TIME = 9000; //9 sec private static final int PREVIEW_WAITING_TIME = 9000; //9 sec
private static final int PREVIEW_MAX_RETRIES = 3;
private int showPreviewAttempt = 0;
private long loaderPreviewStartTime = 0;
private static DialogGetInfoBootstrapUiBinder uiBinder = GWT.create(DialogGetInfoBootstrapUiBinder.class); private static DialogGetInfoBootstrapUiBinder uiBinder = GWT.create(DialogGetInfoBootstrapUiBinder.class);
@ -78,7 +77,7 @@ public class DialogGetInfoBootstrap extends Composite {
public static final String EMPTY = "empty"; public static final String EMPTY = "empty";
//private final NumberFormat number = ConstantsExplorer.numberFormatterKB; private final NumberFormat number = ConstantsExplorer.numberFormatterKB;
/** /**
* Instantiates a new dialog get info bootstrap. * Instantiates a new dialog get info bootstrap.
@ -194,9 +193,9 @@ public class DialogGetInfoBootstrap extends Composite {
private Map<String, List<String>> mapAllowedMimeTypesForPreview; private Map<String, List<String>> mapAllowedMimeTypesForPreview;
private Image spinnerImage = Resources.getSpinner().createImage(); private Image spinnerImage = Resources.getIconLoading().createImage();
private Image noPreviewAvailable = new Image(Resources.getPreviewNotAvailableNoBorder()); private Image noPreviewAvailable = new Image(Resources.getPreviewNotAvailable());
private Frame iFrameGDV = null; private Frame iFrameGDV = null;
@ -293,16 +292,11 @@ public class DialogGetInfoBootstrap extends Composite {
if (fileModel.isDirectory()) { if (fileModel.isDirectory()) {
cgTxtIsPublic.setVisible(true); cgTxtIsPublic.setVisible(true);
htmlSetValue(txtIsPublic, fileModel.isPublic() + ""); htmlSetValue(txtIsPublic, fileModel.isPublic() + "");
GWT.log("Is synched? "+fileModel.getSynchedWithWsThredds());
if (fileModel.getSynchedWithWsThredds() != null) { if (fileModel.getSynchedThreddsStatus() != null) {
if (fileModel.getSynchedWithWsThredds()) { txtThreddsSynched.setVisible(true);
cgThreddsSynched.setVisible(true); htmlSetValue(txtThreddsSynched, fileModel.getSynchedThreddsStatus() + "");
//txtThreddsSynched.setVisible(true); txtThreddsSynched.setHTML(fileModel.getSynchedThreddsStatus() + "");
htmlSetValue(txtThreddsSynched, fileModel.getSynchedWithWsThredds() + "");
txtThreddsSynched.setHTML(fileModel.getSynchedWithWsThredds() + "");
}
} }
} }
@ -311,8 +305,13 @@ public class DialogGetInfoBootstrap extends Composite {
htmlSetValue(txtMimeType, fileModel.getType()); htmlSetValue(txtMimeType, fileModel.getType());
txtAreaDescription.setResize(ResizeType.VERTICAL); txtAreaDescription.setResize(ResizeType.VERTICAL);
//load description
loadDescription(fileModel.getIdentifier()); if (fileModel.isDirectory()) {
txtAreaDescription.setValue(fileModel.getDescription());
// add(txtAreaDescription);
} else
loadDescription(fileModel.getIdentifier());
//owner //owner
htmlSetValue(txtOwner, fileModel.getOwnerFullName()); htmlSetValue(txtOwner, fileModel.getOwnerFullName());
//creation date //creation date
@ -328,12 +327,14 @@ public class DialogGetInfoBootstrap extends Composite {
}else { }else {
loadLastModificationDate(fileModel.getIdentifier()); loadLastModificationDate(fileModel.getIdentifier());
loadSize(fileModel.getIdentifier()); loadSize(fileModel.getIdentifier());
} }
htmlSetValue(txtShared, fileModel.isShared()+""); htmlSetValue(txtShared, fileModel.isShared()+"");
// USERS SHARED // USERS SHARED
if (fileModel.isShared()) { if (fileModel.isShared()) {
cgSharedWith.setVisible(true); cgSharedWith.setVisible(true);
loadACLsDescriptionForSharedFolder(fileModel.getIdentifier()); loadACLsDescriptionForSharedFolder(fileModel.getIdentifier());
} }
@ -396,14 +397,12 @@ public class DialogGetInfoBootstrap extends Composite {
return; return;
} }
final String googleDocViewerURL = "https://docs.google.com/viewer?url=" String googleDocViewerURL = "https://docs.google.com/viewer?url="
+ URL.encode(result.getCompleteURL()) + "&embedded=true"; + URL.encode(result.getCompleteURL()) + "&embedded=true";
iFrameGDV = instanceFrame(googleDocViewerURL, loadingPreviewHTML); iFrameGDV = instanceFrame(googleDocViewerURL, loadingPreviewHTML);
loaderPreviewStartTime = new Date().getTime(); final long startTime = new Date().getTime();
showPreviewAttempt = 1;
timerGDV = new Timer() { timerGDV = new Timer() {
@Override @Override
@ -416,42 +415,22 @@ public class DialogGetInfoBootstrap extends Composite {
return; return;
} }
long checkTime = new Date().getTime(); long checkTime = new Date().getTime();
long diff = checkTime - loaderPreviewStartTime; long diff = checkTime - startTime;
if (diff > PREVIEW_WAITING_TIME) { // is greater than PREVIEW_WAITING_TIME, performs a new attempt or terminate if (diff > PREVIEW_WAITING_TIME) {// is greater than 10 sec
if(showPreviewAttempt >= PREVIEW_MAX_RETRIES) { try {
try { GWT.log("iFrameGoogleDocViewer not loaded within "+PREVIEW_WAITING_TIME+" sec, cancelling timer, removing iframe");
GWT.log("iFrameGoogleDocViewer not loaded within "+PREVIEW_WAITING_TIME+" sec and max retries "+PREVIEW_MAX_RETRIES+", cancelling timer, removing iframe"); cancel();
cancel(); removePlaceHolder(loadingPreviewHTML);
removePlaceHolder(loadingPreviewHTML); htmlPanelFilePreview.add(noPreviewAvailable);
htmlPanelFilePreview.add(noPreviewAvailable); iFrameGDV.setVisible(false);
iFrameGDV.setVisible(false); htmlPanelFilePreview.remove(iFrameGDV);
htmlPanelFilePreview.remove(iFrameGDV); } catch (Exception e) {
} catch (Exception e) { // Silent
// Silent
}
}else {
GWT.log("iFrameGoogleDocViewer not loaded on attempt "+showPreviewAttempt+", instancing new iFrame");
//new retry by instancing the iFrame again...
iFrameGDV = instanceFrame(googleDocViewerURL, loadingPreviewHTML);
try {
//removing old iFrame
htmlPanelFilePreview.remove(iFrameGDV);
}catch (Exception e) {
//silent
}
//adding the new one
htmlPanelFilePreview.add(iFrameGDV);
//new attempt so incrementing it
showPreviewAttempt++;
GWT.log("Retry, go to attempt "+showPreviewAttempt);
//resetting start time for new attempt
loaderPreviewStartTime = new Date().getTime();
} }
} }
} }
}; };
int attemptRepeater = PREVIEW_WAITING_TIME / 3; timerGDV.scheduleRepeating(PREVIEW_WAITING_TIME/3);
timerGDV.scheduleRepeating(attemptRepeater);
htmlPanelFilePreview.add(iFrameGDV); htmlPanelFilePreview.add(iFrameGDV);
} }
@ -467,9 +446,6 @@ public class DialogGetInfoBootstrap extends Composite {
addHandlers(); addHandlers();
} }
/**
* On detach.
*/
@Override @Override
protected void onDetach() { protected void onDetach() {
super.onDetach(); super.onDetach();
@ -484,13 +460,6 @@ public class DialogGetInfoBootstrap extends Composite {
} }
} }
/**
* Instance frame.
*
* @param fileURL the file URL
* @param thePreviewPlaceholder the the preview placeholder
* @return the frame
*/
public Frame instanceFrame(String fileURL, final HTML thePreviewPlaceholder) { public Frame instanceFrame(String fileURL, final HTML thePreviewPlaceholder) {
//addLoading(); //addLoading();
String urlEncoded = URL.encode(fileURL); String urlEncoded = URL.encode(fileURL);
@ -552,7 +521,6 @@ public class DialogGetInfoBootstrap extends Composite {
@Override @Override
public void onFailure(Throwable caught) { public void onFailure(Throwable caught) {
loadDescription(fileModel.getIdentifier());
new MessageBoxAlert("Error on updating description...", caught.getMessage(), null); new MessageBoxAlert("Error on updating description...", caught.getMessage(), null);
} }
@ -627,7 +595,10 @@ public class DialogGetInfoBootstrap extends Composite {
private String getFormattedSize(long value) { private String getFormattedSize(long value) {
if (value > 0) { if (value > 0) {
return SizeUtil.readableFileSize(value); double kb = value / 1024;
if (kb < 1)
kb = 1;
return number.format(kb);
} else if (value == 0) { } else if (value == 0) {
return EMPTY; return EMPTY;
} else } else
@ -900,7 +871,6 @@ public class DialogGetInfoBootstrap extends Composite {
* Sets the placeholder. * Sets the placeholder.
* *
* @param html the html * @param html the html
* @param spinner the spinner
* @param placeholder the placeholder * @param placeholder the placeholder
*/ */
private void setPlaceholder(HTML html, boolean spinner, String placeholder) { private void setPlaceholder(HTML html, boolean spinner, String placeholder) {
@ -923,13 +893,6 @@ public class DialogGetInfoBootstrap extends Composite {
} }
/**
* Show PDF preview.
*
* @param pdfURL the pdf URL
* @param divId the div id
* @return the string
*/
public static native String showPDFPreview(String pdfURL, String divId)/*-{ public static native String showPDFPreview(String pdfURL, String divId)/*-{
var theDivContainer = "#"+divId; var theDivContainer = "#"+divId;
$wnd.PDFObject.embed(pdfURL, theDivContainer); $wnd.PDFObject.embed(pdfURL, theDivContainer);

View File

@ -73,7 +73,7 @@
<b:ControlGroup <b:ControlGroup
addStyleNames="my-control-group-get-info" addStyleNames="my-control-group-get-info"
ui:field="cgThreddsSynched" visible="false"> ui:field="cgThreddsSynched" visible="false">
<b:ControlLabel title="Synched with THREDDS">Synched</b:ControlLabel> <b:ControlLabel>Thredds Sync</b:ControlLabel>
<b:Controls> <b:Controls>
<g:HTML ui:field="txtThreddsSynched"> <g:HTML ui:field="txtThreddsSynched">
</g:HTML> </g:HTML>

View File

@ -264,8 +264,9 @@ table.userssuggest th {
margin-left: -600px !important; margin-left: -600px !important;
} }
.modal-body-ws-tree { .modal-body-custom {
max-height: 700px !important; height: 550px !important;
max-height: none !important;
} }
.modal-top-custom { .modal-top-custom {
@ -412,12 +413,6 @@ IN THE 'DETAILS' PANEL*/
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
margin-left: 10px;
border: 1px solid #e6e6e6;
padding-top: 5px;
padding-bottom: 5px;
border-left: none;
border-right: none;
} }
.preview-image-style img { .preview-image-style img {
@ -429,12 +424,6 @@ IN THE 'DETAILS' PANEL*/
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
margin-left: 10px;
border: 1px solid #e6e6e6;
padding-top: 5px;
padding-bottom: 5px;
border-left: none;
border-right: none;
} }
.my-preview-doc { .my-preview-doc {

View File

@ -153,7 +153,7 @@ public class DownloadServlet extends HttpServlet{
ByteArrayInputStream is = new ByteArrayInputStream(fileContent.getBytes()); ByteArrayInputStream is = new ByteArrayInputStream(fileContent.getBytes());
String contentDisposition = viewContent?"inline":"attachment"; String contentDisposition = viewContent?"inline":"attachment";
String urlMimeType = "text/uri-list"; String urlMimeType = "text/uri-list";
String itemName = MimeTypeUtility.getNameWithExtension(item.getName(), urlMimeType, false); String itemName = MimeTypeUtility.getNameWithExtension(item.getName(), urlMimeType);
resp.setHeader("Content-Disposition", contentDisposition+"; filename=\"" + itemName + "\"" ); resp.setHeader("Content-Disposition", contentDisposition+"; filename=\"" + itemName + "\"" );
resp.setContentType(urlMimeType); resp.setContentType(urlMimeType);
@ -190,7 +190,7 @@ public class DownloadServlet extends HttpServlet{
logger.info("Downloading the folder: "+workspaceFolder); logger.info("Downloading the folder: "+workspaceFolder);
String contentDisposition = viewContent?"inline":"attachment"; String contentDisposition = viewContent?"inline":"attachment";
String mimeType = "application/zip"; String mimeType = "application/zip";
String itemName = MimeTypeUtility.getNameWithExtension(item.getName(), mimeType,true); String itemName = MimeTypeUtility.getNameWithExtension(item.getName(), mimeType);
resp.setHeader("Content-Disposition", contentDisposition+"; filename=\"" + itemName + "\"" ); resp.setHeader("Content-Disposition", contentDisposition+"; filename=\"" + itemName + "\"" );
resp.setContentType(mimeType); resp.setContentType(mimeType);
@ -233,7 +233,7 @@ public class DownloadServlet extends HttpServlet{
String mimeType = pdfFile.getMimeType(); String mimeType = pdfFile.getMimeType();
logger.trace("EXTERNAL_FILE DOWNLOAD FOR "+pdfFile.getId()); logger.trace("EXTERNAL_FILE DOWNLOAD FOR "+pdfFile.getId());
String contentDisposition = viewContent?"inline":"attachment"; String contentDisposition = viewContent?"inline":"attachment";
String itemName = MimeTypeUtility.getNameWithExtension(descr.getItemName(), mimeType,false); String itemName = MimeTypeUtility.getNameWithExtension(descr.getItemName(), mimeType);
resp.setHeader("Content-Disposition", contentDisposition+"; filename=\"" + itemName + "\"" ); resp.setHeader("Content-Disposition", contentDisposition+"; filename=\"" + itemName + "\"" );
resp.setContentType(mimeType); resp.setContentType(mimeType);
@ -267,7 +267,7 @@ public class DownloadServlet extends HttpServlet{
ImageFileItem imageFile = (ImageFileItem) workspaceFileItem; ImageFileItem imageFile = (ImageFileItem) workspaceFileItem;
logger.info("Downloading: "+imageFile); logger.info("Downloading: "+imageFile);
String mimeType = imageFile.getMimeType(); String mimeType = imageFile.getMimeType();
String itemName = MimeTypeUtility.getNameWithExtension(descr.getItemName(), mimeType,false); String itemName = MimeTypeUtility.getNameWithExtension(descr.getItemName(), mimeType);
String contentDisposition = viewContent?"inline":"attachment"; String contentDisposition = viewContent?"inline":"attachment";
resp.setHeader("Content-Disposition", contentDisposition+"; filename=\"" + itemName + "\"" ); resp.setHeader("Content-Disposition", contentDisposition+"; filename=\"" + itemName + "\"" );
resp.setContentType(mimeType); resp.setContentType(mimeType);
@ -298,7 +298,7 @@ public class DownloadServlet extends HttpServlet{
URLFileItem externalUrl = (URLFileItem) workspaceFileItem; URLFileItem externalUrl = (URLFileItem) workspaceFileItem;
logger.info("Downloading: "+externalUrl); logger.info("Downloading: "+externalUrl);
String urlMimeType = "text/uri-list"; String urlMimeType = "text/uri-list";
String itemName = MimeTypeUtility.getNameWithExtension(descr.getItemName(), urlMimeType,false); String itemName = MimeTypeUtility.getNameWithExtension(descr.getItemName(), urlMimeType);
String contentDisposition = viewContent?"inline":"attachment"; String contentDisposition = viewContent?"inline":"attachment";
resp.setHeader("Content-Disposition", contentDisposition+"; filename=\"" + itemName + "\"" ); resp.setHeader("Content-Disposition", contentDisposition+"; filename=\"" + itemName + "\"" );
resp.setContentType(urlMimeType); resp.setContentType(urlMimeType);
@ -347,7 +347,7 @@ public class DownloadServlet extends HttpServlet{
try{ try{
String itemName = MimeTypeUtility.getNameWithExtension(descr.getItemName(), workspaceFileItem.getMimeType(),false); String itemName = MimeTypeUtility.getNameWithExtension(descr.getItemName(), workspaceFileItem.getMimeType());
logger.info("Downloading default item: "+workspaceFileItem); logger.info("Downloading default item: "+workspaceFileItem);
//String contentDisposition = viewContent?"inline":"attachment"; //String contentDisposition = viewContent?"inline":"attachment";

View File

@ -9,7 +9,6 @@ import java.util.List;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import org.gcube.common.storagehub.model.types.WorkspaceItemType; import org.gcube.common.storagehub.model.types.WorkspaceItemType;
import org.gcube.common.storagehubwrapper.shared.Member;
import org.gcube.common.storagehubwrapper.shared.tohl.WorkspaceFolder; import org.gcube.common.storagehubwrapper.shared.tohl.WorkspaceFolder;
import org.gcube.common.storagehubwrapper.shared.tohl.WorkspaceItem; import org.gcube.common.storagehubwrapper.shared.tohl.WorkspaceItem;
import org.gcube.common.storagehubwrapper.shared.tohl.WorkspaceSharedFolder; import org.gcube.common.storagehubwrapper.shared.tohl.WorkspaceSharedFolder;
@ -161,13 +160,18 @@ public class NotificationStorageHubUtil {
if(isFolderAndShared(rootSharedFolder)){ //JUST TO BE SURE if(isFolderAndShared(rootSharedFolder)){ //JUST TO BE SURE
List<Member> listMembers = workspace.getSharedFolderMembers(rootSharedFolder.getId()); List<String> listPortalLogin = workspace.getSharedFolderMembers(rootSharedFolder.getId());
logger.debug("StorageHub returned "+ listMembers.size() + " user/s"); logger.debug("StorageHub returned "+ listPortalLogin.size() + " user/s");
if(!WsUtil.isWithinPortal()) if(!WsUtil.isWithinPortal())
return StorageHubToWorkpaceConverter.buildGxtInfoContactFromPortalLoginTestMode(listMembers); return StorageHubToWorkpaceConverter.buildGxtInfoContactFromPortalLoginTestMode(listPortalLogin);
List<InfoContactModel> listContacts = new ArrayList<InfoContactModel>(listPortalLogin.size());
for (String login : listPortalLogin) {
listContacts.add(StorageHubToWorkpaceConverter.buildGxtInfoContactFromPortalLogin(login));
}
return StorageHubToWorkpaceConverter.listMembersToListContact(listMembers); return listContacts;
} }
else else
logger.debug("the item with id: "+rootSharedFolder.getId()+ " is not "+WorkspaceItemType.SHARED_FOLDER); logger.debug("the item with id: "+rootSharedFolder.getId()+ " is not "+WorkspaceItemType.SHARED_FOLDER);

View File

@ -10,8 +10,7 @@ import javax.xml.parsers.DocumentBuilderFactory;
import org.gcube.common.resources.gcore.utils.XPathHelper; import org.gcube.common.resources.gcore.utils.XPathHelper;
import org.gcube.common.scope.api.ScopeProvider; import org.gcube.common.scope.api.ScopeProvider;
import org.gcube.common.scope.impl.ScopeBean; import org.gcube.portlets.user.workspace.server.util.WsUtil;
import org.gcube.common.scope.impl.ScopeBean.Type;
import org.gcube.resources.discovery.client.api.DiscoveryClient; import org.gcube.resources.discovery.client.api.DiscoveryClient;
import org.gcube.resources.discovery.client.queries.api.Query; import org.gcube.resources.discovery.client.queries.api.Query;
import org.gcube.resources.discovery.client.queries.impl.QueryBox; import org.gcube.resources.discovery.client.queries.impl.QueryBox;
@ -20,11 +19,12 @@ import org.slf4j.LoggerFactory;
import org.w3c.dom.Node; import org.w3c.dom.Node;
import org.xml.sax.InputSource; import org.xml.sax.InputSource;
/** /**
* The Class ApplicationProfileReader. * The Class ApplicationProfileReader.
* *
* @author Francesco Mangiacrapa francesco.mangiacrapa{@literal @}isti.cnr.it * @author Francesco Mangiacrapa francesco.mangiacrapa{@literal @}isti.cnr.it
* Sep 14, 2016 * Sep 14, 2016
*/ */
public class ApplicationProfileReader { public class ApplicationProfileReader {
@ -48,26 +48,12 @@ public class ApplicationProfileReader {
private String resourceName; private String resourceName;
private String appID; private String appID;
public enum APPLICATION_PROFILE_ITEM {
SCOPE("/Scope/text()"), URL("/URL/text()");
private String xPath;
APPLICATION_PROFILE_ITEM(String xpath) {
this.xPath = xpath;
}
public String getXPath() {
return xPath;
}
}
/** /**
* Instantiates a new application profile reader. * Instantiates a new application profile reader.
* *
* @param resourceName the resource name * @param resourceName the resource name
* @param appID the app id * @param appID the app id
* @throws Exception the exception * @throws Exception the exception
*/ */
public ApplicationProfileReader(String resourceName, String appID) throws Exception { public ApplicationProfileReader(String resourceName, String appID) throws Exception {
@ -78,167 +64,150 @@ public class ApplicationProfileReader {
this.scope = ScopeProvider.instance.get(); this.scope = ScopeProvider.instance.get();
} }
/** /**
* this method looks up the generic resource among the ones available in the * this method looks up the generic resource among the ones available in the infrastructure using scope provider {@link ScopeProvider.instance.get()}
* infrastructure using scope provider {@link ScopeProvider.instance.get()} * resource name {@value #WORKSPACE_EXPLORER_APP_NAME} and secondaryType {@value #SECONDARY_TYPE}
* resource name {@value #WORKSPACE_EXPLORER_APP_NAME} and secondaryType
* {@value #SECONDARY_TYPE}
* *
* @return the applicationProfile profile * @return the applicationProfile profile
*/ */
/** /**
* this method looks up the applicationProfile profile among the ones available * this method looks up the applicationProfile profile among the ones available in the infrastructure.
* in the infrastructure.
* *
* @return the applicationProfile profile * @return the applicationProfile profile
*/ */
public ApplicationProfile readProfileFromInfrastrucure() { public ApplicationProfile readProfileFromInfrastrucure() {
ApplicationProfile appProf = new ApplicationProfile(); ApplicationProfile appProf = new ApplicationProfile();
String queryString = getGcubeGenericQueryString(secondaryType, appID); String queryString = getGcubeGenericQueryString(secondaryType, appID);
try { try {
if (scope == null) if(scope==null)
throw new Exception("Scope is null, set scope into ScopeProvider"); throw new Exception("Scope is null, set scope into ScopeProvider");
logger.info("Trying to fetch " + SECONDARY_TYPE + " in the scope: " + scope + ", SecondaryType: " logger.info("Trying to fetch ApplicationProfile in the scope: "+scope+", SecondaryType: " + secondaryType + ", AppId: " + appID);
+ secondaryType + ", AppId: " + appID); Query q = new QueryBox(queryString);
Query q = new QueryBox(queryString); DiscoveryClient<String> client = client();
DiscoveryClient<String> client = client(); List<String> appProfile = client.submit(q);
List<String> appProfile = client.submit(q);
if (appProfile == null || appProfile.size() == 0) if (appProfile == null || appProfile.size() == 0)
throw new ApplicationProfileNotFoundException("Generic Resource with SecondaryType: " + secondaryType throw new ApplicationProfileNotFoundException("ApplicationProfile with SecondaryType: " + secondaryType + ", AppId: " + appID +" is not registered in the scope: "+scope);
+ ", AppId: " + appID + " is not registered in the scope: " + scope); else {
else { String elem = appProfile.get(0);
String elem = appProfile.get(0); DocumentBuilder docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
DocumentBuilder docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); Node node = docBuilder.parse(new InputSource(new StringReader(elem))).getDocumentElement();
Node node = docBuilder.parse(new InputSource(new StringReader(elem))).getDocumentElement(); XPathHelper helper = new XPathHelper(node);
XPathHelper helper = new XPathHelper(node);
List<String> currValue = null; List<String> currValue = null;
currValue = helper.evaluate(RESOURCE_PROFILE_NAME_TEXT); currValue = helper.evaluate(RESOURCE_PROFILE_NAME_TEXT);
if (currValue != null && currValue.size() > 0) { if (currValue != null && currValue.size() > 0) {
appProf.setName(currValue.get(0)); appProf.setName(currValue.get(0));
} else }
throw new ApplicationProfileNotFoundException( else throw new ApplicationProfileNotFoundException("Your applicationProfile NAME was not found in the profile");
"Your " + SECONDARY_TYPE + " NAME was not found in the generic resource");
currValue = helper.evaluate(RESOURCE_PROFILE_DESCRIPTION_TEXT); currValue = helper.evaluate(RESOURCE_PROFILE_DESCRIPTION_TEXT);
if (currValue != null && currValue.size() > 0) { if (currValue != null && currValue.size() > 0) {
appProf.setDescription(currValue.get(0)); appProf.setDescription(currValue.get(0));
} else }
logger.warn("No Description exists for " + appProf.getName()); else logger.warn("No Description exists for " + appProf.getName());
currValue = helper.evaluate(RESOURCE_PROFILE_BODY_APP_ID_TEXT); currValue = helper.evaluate(RESOURCE_PROFILE_BODY_APP_ID_TEXT);
if (currValue != null && currValue.size() > 0) { if (currValue != null && currValue.size() > 0) {
appProf.setKey(currValue.get(0)); appProf.setKey(currValue.get(0));
} else }
throw new ApplicationProfileNotFoundException("Your " + SECONDARY_TYPE else throw new ApplicationProfileNotFoundException("Your applicationProfile ID n was not found in the profile, consider adding <AppId> element in <Body>");
+ " ID was not found in the generic resource, consider adding <AppId> element in <Body>");
currValue = helper.evaluate(RESOURCE_PROFILE_BODY_THUMBNAIL_URL_TEXT); currValue = helper.evaluate(RESOURCE_PROFILE_BODY_THUMBNAIL_URL_TEXT);
if (currValue != null && currValue.size() > 0) { if (currValue != null && currValue.size() > 0) {
appProf.setImageUrl(currValue.get(0)); appProf.setImageUrl(currValue.get(0));
} else { }
logger.warn("Null or empty <ThumbnailURL> element in <Body> of " + appProf.getName()); else{
} logger.warn("Null or empty <ThumbnailURL> element in <Body>" + appProf.getName());
}
currValue = helper currValue = helper.evaluate("/Resource/Profile/Body/EndPoint[Scope='"+scope.toString()+"']/Scope/text()");
.evaluate("/Resource/Profile/Body/EndPoint[Scope='" + scope.toString() + "']/Scope/text()");
appProf = readEndPointForScopeWithRetry(helper, scope, APPLICATION_PROFILE_ITEM.SCOPE, appProf); if (currValue != null && currValue.size() > 0) {
List<String> scopes = currValue;
String currentScope = scopes.get(0);
appProf = readEndPointForScopeWithRetry(helper, scope, APPLICATION_PROFILE_ITEM.URL, appProf); //int slashCount = StringUtils.countMatches(currentScope, "/");
boolean isVRE = WsUtil.isVRE(currentScope);
logger.debug("returning: " + appProf); //if(slashCount < 3){//CASE not VRE - set session scope
if(!isVRE){//CASE not VRE - set session scope
logger.info("Scope "+ scope.toString() + " is not a VRE");
List<String> listSessionScope = helper.evaluate("/Resource/Profile/Body/EndPoint[Scope='"+scope.toString()+"']/Sessionscope/text()"); //get session scope of i+1-mo scope
logger.debug("ListSessionScope is: "+ listSessionScope.toString());
if(listSessionScope!=null && listSessionScope.size()>0){ //If sessions scope exists
logger.debug("setting session scope "+ listSessionScope.get(0));
appProf.setScope(listSessionScope.get(0));
}
else{
logger.trace("session scope not exists setting scope "+ scope.toString());
appProf.setScope(scope.toString());
}
}
else{ //CASE IS A VRE
logger.info("Scope "+ scope.toString() + " is a VRE");
appProf.setScope(scope.toString());
}
//RETRIEVE URL
currValue = helper.evaluate("/Resource/Profile/Body/EndPoint[Scope='"+scope.toString()+"']/URL/text()");
if (currValue != null && currValue.size() > 0) {
String url = currValue.get(0);
// System.out.println("URL "+url);
if(url!=null)
appProf.setUrl(url);
else
throw new ApplicationProfileNotFoundException("Your applicationProfile URL was not found in the profile for Scope: " + scope.toString());
}
else throw new ApplicationProfileNotFoundException("Your applicationProfile URL was not found in the profile for Scope: " + scope.toString());
}
else throw new ApplicationProfileNotFoundException("Your applicationProfile with scope "+scope.toString()+" was not found in the profile, consider adding <EndPoint><Scope> element in <Body>");
logger.debug("returning: "+appProf);
return appProf; return appProf;
} }
} catch (Exception e) { } catch (Exception e) {
logger.error("Error while trying to fetch applicationProfile profile from the infrastructure", e); logger.error("Error while trying to fetch applicationProfile profile from the infrastructure", e);
return null; return null;
} finally { }finally{
/* /*
* if(originalScope!=null && !originalScope.isEmpty()){ if(originalScope!=null && !originalScope.isEmpty()){
* ScopeProvider.instance.set(originalScope); ScopeProvider.instance.set(originalScope);
* logger.info("scope provider setted to orginal scope: "+originalScope); }else{ logger.info("scope provider setted to orginal scope: "+originalScope);
* ScopeProvider.instance.reset(); logger.info("scope provider reset"); } }else{
*/ ScopeProvider.instance.reset();
logger.info("scope provider reset");
}*/
} }
} }
private ApplicationProfile readEndPointForScopeWithRetry(XPathHelper helper, String scope,
APPLICATION_PROFILE_ITEM searchItem, ApplicationProfile appProf)
throws ApplicationProfileNotFoundException {
String xPathToQuery = "/Resource/Profile/Body/EndPoint[Scope='" + scope + "']" + searchItem.getXPath();
logger.debug("Identifying path with current scope: " + xPathToQuery);
List<String> currValue = helper.evaluate(xPathToQuery);
String queryResult = null;
if (currValue == null || currValue.isEmpty()) {
logger.warn("In the " + SECONDARY_TYPE + " with name " + appProf.getName() + " the xPath " + xPathToQuery
+ " returned with no results");
ScopeBean scopeBean = new ScopeBean(scope);
if (scopeBean.is(Type.VRE) || scopeBean.is(Type.VO)) {
String pathSeparator = "/";
String[] components = scope.split(pathSeparator);
scope = pathSeparator + components[1];
logger.info("The scope "+scopeBean.toString()+" is of kind " + Type.VRE + " or " + Type.VO
+ ". Retry in action - going to search the default <EndPoint> with the root scope: " + scope);
xPathToQuery = "/Resource/Profile/Body/EndPoint[Scope='" + scope + "']" + searchItem.getXPath();
logger.debug("Identifying path with root scope: " + xPathToQuery);
currValue = helper.evaluate(xPathToQuery);
if (currValue == null || currValue.isEmpty()) {
logger.warn("In the " + SECONDARY_TYPE + " with name " + appProf.getName() + " the xPath " + xPathToQuery
+ " returned with no results");
}
}
}
if (currValue == null || currValue.isEmpty()) {
throw new ApplicationProfileNotFoundException("Your ApplicationProfile in the scope " + scope
+ " have not an <EndPoint> accessible, consider adding <EndPoint><Scope></Scope> element in <Body>");
}
queryResult = currValue.get(0);
logger.info("The xPath: " + xPathToQuery + " returned with the result: " + queryResult);
switch (searchItem) {
case SCOPE:
appProf.setScope(currValue.get(0));
break;
case URL:
appProf.setUrl(currValue.get(0));
break;
default:
break;
}
return appProf;
}
/** /**
* Gets the gcube generic xPath string. * Gets the gcube generic query string.
* *
* @param secondaryType the secondary type * @param secondaryType the secondary type
* @param appId the app id * @param appId the app id
* @return the gcube generic xPath string * @return the gcube generic query string
*/ */
public static String getGcubeGenericQueryString(String secondaryType, String appId) { public static String getGcubeGenericQueryString(String secondaryType, String appId){
return "for $profile in collection('/db/Profiles/GenericResource')//Resource " return "for $profile in collection('/db/Profiles/GenericResource')//Resource " +
+ "where $profile/Profile/SecondaryType/string() eq '" + secondaryType "where $profile/Profile/SecondaryType/string() eq '"+secondaryType+"' and $profile/Profile/Body/AppId/string() " +
+ "' and $profile/Profile/Body/AppId/string() " + " eq '" + appId + "'" + "return $profile"; " eq '" + appId + "'" +
"return $profile";
} }
/** /**
@ -250,6 +219,7 @@ public class ApplicationProfileReader {
return secondaryType; return secondaryType;
} }
/** /**
* Gets the scope. * Gets the scope.
* *
@ -268,9 +238,8 @@ public class ApplicationProfileReader {
return resourceName; return resourceName;
} }
/*
* (non-Javadoc) /* (non-Javadoc)
*
* @see java.lang.Object#toString() * @see java.lang.Object#toString()
*/ */
@Override @Override
@ -289,4 +258,20 @@ public class ApplicationProfileReader {
return builder.toString(); return builder.toString();
} }
// public static void main(String[] args) {
//
// try {
// ScopeProvider.instance.set("/gcube");
// ApplicationProfileReader ap = new ApplicationProfileReader("Workspace-Explorer-App", "org.gcube.portlets.user.workspaceexplorerapp.server.WorkspaceExplorerAppServiceImpl");
// System.out.println(ap.readProfileFromInfrastrucure());
// }
// catch (Exception e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
//
//
// }
} }

View File

@ -63,6 +63,9 @@ public class ObjectStorageHubToWorkpaceMapper {
isVreFolder = sharedFolder.isVreFolder(); isVreFolder = sharedFolder.isVreFolder();
} }
// FolderModel root = new FolderModel(workspaceRoot.getId(),workspaceRoot.getName(),null, true, workspaceRoot.isShared(), false, workspaceRoot.isPublic());
// root.setIsRoot(true);
FolderModel theFolder = new FolderModel(folder.getId(), folder.getName(), null, folder.isFolder(), folder.isShared(), isVreFolder, isPublicFolder); FolderModel theFolder = new FolderModel(folder.getId(), folder.getName(), null, folder.isFolder(), folder.isShared(), isVreFolder, isPublicFolder);
theFolder.setIsRoot(folder.isRoot()); theFolder.setIsRoot(folder.isRoot());
return theFolder; return theFolder;
@ -79,7 +82,7 @@ public class ObjectStorageHubToWorkpaceMapper {
* @return the file model * @return the file model
* @throws InternalErrorException the internal error exception * @throws InternalErrorException the internal error exception
*/ */
public static FileModel toTreeFileModelItem(org.gcube.common.storagehubwrapper.shared.tohl.WorkspaceItem wrappedItem, FileModel parentFolderModel, boolean isParentShared, GCubeUser loggedUser) throws InternalErrorException{ public static FileModel toTreeFileModelItem(org.gcube.common.storagehubwrapper.shared.tohl.WorkspaceItem wrappedItem, FileModel parentFolderModel, boolean isParentShared) throws InternalErrorException{
FileModel fileModel = null; FileModel fileModel = null;
//boolean isPublic = false; //boolean isPublic = false;
@ -144,8 +147,6 @@ public class ObjectStorageHubToWorkpaceMapper {
if(wrappedItem.getParentId()!=null && isParentShared) if(wrappedItem.getParentId()!=null && isParentShared)
fileModel.setShareable(false); fileModel.setShareable(false);
} }
setFullNameOwner(wrappedItem, fileModel, loggedUser);
//setSynchedThreddsStateFor(fileModel); //setSynchedThreddsStateFor(fileModel);
fileModel.setIsRoot(wrappedItem.isRoot()); fileModel.setIsRoot(wrappedItem.isRoot());
@ -249,32 +250,27 @@ public class ObjectStorageHubToWorkpaceMapper {
fileGridModel.setShareable(false); //UPDATED TO CHANGE PERMISSIONS TO SHARED SUBFOLDERS fileGridModel.setShareable(false); //UPDATED TO CHANGE PERMISSIONS TO SHARED SUBFOLDERS
} }
setFullNameOwner(wrappedItem, fileGridModel, loggedUser);
logger.trace("Returning converted grid item: "+fileGridModel);
return fileGridModel;
}
private static void setFullNameOwner(org.gcube.common.storagehubwrapper.shared.tohl.WorkspaceItem wrappedItem, FileModel fileModel, GCubeUser loggedUser) {
//OWNER //OWNER
if(wrappedItem.isShared()){ //IT IS READ FROM SHUB ONLY IF THE ITEM IS SHARED if(wrappedItem.isShared()){ //IT IS READ FROM SHUB ONLY IF THE ITEM IS SHARED
fileModel.setShared(true); //NOT REMOVE IT IS IMPORTANT, SEE #1459 fileGridModel.setShared(true); //NOT REMOVE IT IS IMPORTANT, SEE #1459
String ownerUsername = wrappedItem.getOwner(); String ownerUsername = wrappedItem.getOwner();
if(ownerUsername!=null){ if(ownerUsername!=null){
// System.out.println("++++reading owner"); // System.out.println("++++reading owner");
//String portalLogin = owner.getPortalLogin(); //String portalLogin = owner.getPortalLogin();
fileModel.setOwnerFullName(UserUtil.getUserFullName(ownerUsername)); fileGridModel.setOwnerFullName(UserUtil.getUserFullName(ownerUsername));
} }
} }
else{ else{
String ownerUsername = wrappedItem.getOwner(); String ownerUsername = wrappedItem.getOwner();
//Task #12911 I'm calling getUserFullName for any user other than logged user //Task #12911 I'm calling getUserFullName for any user other than logged user
if(ownerUsername!=null && ownerUsername.compareToIgnoreCase(loggedUser.getUsername())!=0){ if(ownerUsername!=null && ownerUsername.compareToIgnoreCase(loggedUser.getUsername())!=0){
fileModel.setOwnerFullName(UserUtil.getUserFullName(ownerUsername)); fileGridModel.setOwnerFullName(UserUtil.getUserFullName(ownerUsername));
}else }else
fileModel.setOwnerFullName(loggedUser.getFullname()); fileGridModel.setOwnerFullName(loggedUser.getFullname());
} }
logger.trace("Returning converted grid item: "+fileGridModel);
return fileGridModel;
} }

View File

@ -119,6 +119,7 @@ public class MimeTypeUtility {
} }
br.close(); br.close();
} }
/** /**
* Load preview mime types. * Load preview mime types.
@ -163,12 +164,12 @@ public class MimeTypeUtility {
* *
* @param name the file name. * @param name the file name.
* @param mimeType the mime type. * @param mimeType the mime type.
* @param isFolder the is folder
* @return the right name. * @return the right name.
* @throws IOException Signals that an I/O exception has occurred. * @throws IOException Signals that an I/O exception has occurred.
*/ */
public static String getNameWithExtension(String name, String mimeType, boolean isFolder) throws IOException { public static String getNameWithExtension(String name, String mimeType) throws IOException {
logger.debug("Deriving the file extension for file name: " + name + ", with mimeType: " + mimeType+", isFolder: "+isFolder);
logger.debug("Deriving the file extension for file name: " + name + ", with mimeType: " + mimeType);
if (mimeType == null || mimeType.isEmpty()) { if (mimeType == null || mimeType.isEmpty()) {
logger.debug("Input mime type is null or empty returning passed name: " + name); logger.debug("Input mime type is null or empty returning passed name: " + name);
@ -176,30 +177,52 @@ public class MimeTypeUtility {
} }
String declaredExtension = FilenameUtils.getExtension(name); String declaredExtension = FilenameUtils.getExtension(name);
logger.info("The name " + name + " contains the extension: " + declaredExtension); logger.debug("The name " + name + " contains the extension: " + declaredExtension);
//If the filename contains the extension returning the name like it is (skipping the folder) if (declaredExtension.equals("exe"))
if (declaredExtension != null && !declaredExtension.isEmpty() && !isFolder) {
logger.debug(
"The filename contains a not empty extension: " + declaredExtension + ", so returning the name like it is");
return name; return name;
}
logger.debug("Either the name does not contains the extension or it is a folder, deriving extension from mimeType");
List<String> extensions = MimeTypeUtility.getExtension(mimeType); List<String> extensions = MimeTypeUtility.getExtension(mimeType);
logger.debug("Extension/s available for input mimetype: " + mimeType + " into map is/are: " + extensions); logger.trace("Extension/s available for input mimetype: " + mimeType + " into map is/are: " + extensions);
String toMimeTypeExtension = ""; String toMimeTypeExtension = "";
String fullName = name; if (extensions != null) {
if (extensions != null && extensions.size() > 0) { toMimeTypeExtension = extensions.get(extensions.size() - 1); // I'm reading the last extension in the map
// I'm reading the last extension in the map (myme type - list of extensions) // (myme type - list of extensions)
toMimeTypeExtension = extensions.get(extensions.size() - 1); logger.debug("Using the last extension read into list of available extensions: " + toMimeTypeExtension);
logger.info("Using the last extension read into list of available extensions: " + toMimeTypeExtension);
fullName = String.format("%s%s%s", name, DOT_STRING, toMimeTypeExtension);
} }
logger.info("returning full name:" + fullName); // MANAGING ALREADY DECLARED EXTENSION IN THE FILE NAME
return fullName; if (!declaredExtension.isEmpty() && !toMimeTypeExtension.isEmpty()) {
String dEextL = declaredExtension.toLowerCase();
String mtExtL = toMimeTypeExtension.toLowerCase();
// The extension writes in the file name is matching the mime type extension
// declared in the map
if (dEextL.equals(mtExtL)) {
logger.trace("The Extension declared in the name " + name
+ " is matching derived mime type extension so returning the input name: " + name);
return name;
}
// if(!dEextL.trim().contains(" ")) {
// logger.trace("The Extension declared in the name "+name+" seems a valid suffix (without other spaces) so returning the input name: "+name);
// return name;
// }
logger.debug("No logic seems to match the extension declared in the name " + declaredExtension
+ " as a valid extension so I'm adding the extension derived from mime type map: "
+ toMimeTypeExtension);
}
// CHECKING THE FOLLOWING IN ORDER TO AVOID THE DOT AS LAST CHAR OF FILENAME
if (toMimeTypeExtension.isEmpty()) {
return name;
}
String fullname = String.format("%s%s%s", name, DOT_STRING, toMimeTypeExtension);
logger.trace("returning full name:" + fullname);
return fullname;
} }
@ -290,10 +313,11 @@ public class MimeTypeUtility {
public static Map<String, String> getExtensionToMimeTypeMap() { public static Map<String, String> getExtensionToMimeTypeMap() {
return extension_mimetype_map; return extension_mimetype_map;
} }
/** /**
* Gets the preview mimetype extension map with the mime types allowed for * Gets the preview mimetype extension map with the
* preview displaying * mime types allowed for preview displaying
* *
* @return the preview mimetype extension map * @return the preview mimetype extension map
*/ */

View File

@ -181,7 +181,6 @@ text/iuls=uls
text/plain=bas text/plain=bas
text/plain=c text/plain=c
text/plain=h text/plain=h
text/plain=asc
text/plain=txt text/plain=txt
text/richtext=rtx text/richtext=rtx
text/scriptlet=sct text/scriptlet=sct

View File

@ -149,7 +149,6 @@ text/iuls=uls
text/plain=bas text/plain=bas
text/plain=c text/plain=c
text/plain=h text/plain=h
text/plain=asc
text/plain=txt text/plain=txt
text/richtext=rtx text/richtext=rtx
text/scriptlet=sct text/scriptlet=sct

1
src/test/.gitignore vendored
View File

@ -1 +0,0 @@
/resources/

View File

@ -175,5 +175,5 @@ public class HttpCallerUtil {
public void setPassword(String password) { public void setPassword(String password) {
this.password = password; this.password = password;
} }
} }

View File

@ -1,71 +0,0 @@
package org.gcube.portlets.user.workspace;
import org.gcube.common.storagehubwrapper.server.StorageHubClientService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class MappingGroupNameToScopeName {
private static Logger logger = LoggerFactory.getLogger(MappingGroupNameToScopeName.class);
public static void main(String[] args) {
// VRE
String context = "d4science.research-infrastructures.eu-D4OS-FAO-Tuna_Atlas";
String rootName = "/d4science.research-infrastructures.eu";
String vreName = "FAO-Tuna_Atlas";
//
// //VO
// String context = "d4science.research-infrastructures.eu-D4OS";
// String rootName = "/d4science.research-infrastructures.eu";
// String vreName = null;
// ROOT
// String context = "d4science.research-infrastructures.eu";
// String rootName = "/d4science.research-infrastructures.eu";
// String vreName = null;
System.out.println(getScopeFromVREGroupName(context, rootName, vreName));
}
/**
* Gets the scope from VRE group name.
*
* @param context the context
* @return the scope from VRE group name. Eg. with the input
* 'gcube-devNext-NextNext' returns '/gcube/devNext/NextNext'
*/
public static String getScopeFromVREGroupName(String context, String infrastructurName, String vreName) {
// String entireScopeName = context.replaceAll("^/(.*)/?$", "$1").replaceAll("-", "/");
// return entireScopeName;
if (vreName == null)
vreName = "";
logger.debug("vreName: " + vreName);
if (infrastructurName.startsWith("/"))
infrastructurName = infrastructurName.substring(1, infrastructurName.length());
logger.debug("infrastructurName: " + infrastructurName);
String voGroup = context.replaceAll(infrastructurName, "");
if (vreName != null) {
voGroup = voGroup.replaceAll(vreName, "").replaceAll("-", "");
}
String voName = voGroup.replaceAll("-", "");
logger.debug("voName: " + voName);
StringBuilder theScopeBuilder = new StringBuilder();
theScopeBuilder.append("/" + infrastructurName);
if (voName != null && !voName.isEmpty()) {
theScopeBuilder.append("/" + voName);
}
if (vreName != null && !vreName.isEmpty()) {
theScopeBuilder.append("/" + vreName);
}
String theScope = theScopeBuilder.toString();
logger.info("Built scope: " + theScope);
return theScope;
}
}

View File

@ -38,7 +38,7 @@ public class MimeTypeUtilityTest {
for (String keyFileName : fileNamesToMimeTypes.keySet()) { for (String keyFileName : fileNamesToMimeTypes.keySet()) {
try { try {
System.out.println("\nResolving file name with extension for name: "+keyFileName); System.out.println("\nResolving file name with extension for name: "+keyFileName);
String toFileName = MimeTypeUtility.getNameWithExtension(keyFileName, fileNamesToMimeTypes.get(keyFileName), false); String toFileName = MimeTypeUtility.getNameWithExtension(keyFileName, fileNamesToMimeTypes.get(keyFileName));
System.out.println("Assigned the file name: "+toFileName); System.out.println("Assigned the file name: "+toFileName);
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();

View File

@ -3,7 +3,10 @@
*/ */
package org.gcube.portlets.user.workspace; package org.gcube.portlets.user.workspace;
import java.util.Iterator;
import org.gcube.common.encryption.StringEncrypter; import org.gcube.common.encryption.StringEncrypter;
import org.gcube.common.scope.api.ScopeProvider;
import org.gcube.portlets.user.workspace.server.util.StringUtil; import org.gcube.portlets.user.workspace.server.util.StringUtil;

View File

@ -1,25 +1,29 @@
package org.gcube.portlets.user.workspace; package org.gcube.portlets.user.workspace;
import java.io.IOException;
import java.util.Properties;
import org.gcube.portlets.user.workspace.server.GWTWorkspaceServiceImpl;
public class TestProperties { public class TestProperties {
// public static void main(String[] args) { public static void main(String[] args) {
//
// Properties prop = new Properties();
//
// try {
// // load a properties file from class path, inside static method
// prop.load(GWTWorkspaceServiceImpl.class.getClassLoader().getResourceAsStream("portletClassName.properties"));
//
// // get the property value and print it out
// System.out.println(prop.getProperty("idreport"));
// System.out.println(prop.getProperty("idtemplate"));
//
//
// } catch (IOException ex) {
// ex.printStackTrace();
// }
//
// }
Properties prop = new Properties();
try {
// load a properties file from class path, inside static method
prop.load(GWTWorkspaceServiceImpl.class.getClassLoader().getResourceAsStream("portletClassName.properties"));
// get the property value and print it out
System.out.println(prop.getProperty("idreport"));
System.out.println(prop.getProperty("idtemplate"));
} catch (IOException ex) {
ex.printStackTrace();
}
}
} }

View File

@ -1,26 +0,0 @@
package org.gcube.portlets.user.workspace.junit;
import org.gcube.common.scope.api.ScopeProvider;
import org.gcube.portlets.user.workspace.server.reader.ApplicationProfileReader;
public class WEA_AP_Reader {
public static String SCOPE = "/d4science.research-infrastructures.eu";
public static String resourceName = "Workspace-Explorer-App";
public static String appID = "org.gcube.portlets.user.workspaceexplorerapp.server.WorkspaceExplorerAppServiceImpl";
// @Test
public void readAP() {
try {
// ScopeProvider.instance.set("/d4science.research-infrastructures.eu/D4Research/Limnodata");
ScopeProvider.instance.set(SCOPE);
ApplicationProfileReader ap = new ApplicationProfileReader(resourceName, appID);
System.out.println("ApplicationProfile found: " + ap.readProfileFromInfrastrucure());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}