diff --git a/.classpath b/.classpath
index 96169d0..d8d819f 100644
--- a/.classpath
+++ b/.classpath
@@ -1,12 +1,12 @@
-
+
-
+
@@ -15,11 +15,13 @@
+
+
@@ -39,5 +41,5 @@
-
+
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..b83d222
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+/target/
diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs
index 4d17cd3..6d747a2 100644
--- a/.settings/org.eclipse.jdt.core.prefs
+++ b/.settings/org.eclipse.jdt.core.prefs
@@ -7,6 +7,9 @@ org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore
+org.eclipse.jdt.core.compiler.release=disabled
org.eclipse.jdt.core.compiler.source=1.7
diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component
index 5ff4b1e..c4a83dc 100644
--- a/.settings/org.eclipse.wst.common.component
+++ b/.settings/org.eclipse.wst.common.component
@@ -1,17 +1,31 @@
-
+
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
-
- uses
-
-
- uses
-
-
+
+
+
+
+
-
+
+
+
+
+
diff --git a/.tern-project b/.tern-project
index a185ba0..61348cc 100644
--- a/.tern-project
+++ b/.tern-project
@@ -1 +1,17 @@
-{"ide":{"scriptPaths":[]},"plugins":{"aui":{},"liferay":{},"yui":{}},"libs":["ecma5","browser"]}
\ No newline at end of file
+{
+ "plugins": {
+ "aui": {
+
+ },
+ "liferay": {
+
+ },
+ "yui": {
+
+ }
+ },
+ "libs": [
+ "ecma5",
+ "browser"
+ ]
+}
\ No newline at end of file
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 0000000..0c2f630
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,42 @@
+
+# Changelog for VRE Manager Portlet
+
+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).
+
+## [v6.2.1-SNAPSHOT] - 2021-10-13
+
+- Ported to git
+- Removed HomeLibrary dependency
+
+
+## [v5-1-0] - 2015-12-11
+
+- Fix for Incident #1511 - deactivating window.alert deactivates commit facility - Need for internal dialog
+
+- Fix for Incident #1828 - Reports Manager of production contacting the dev RSG Webservice
+
+- Added info alert shpwing to which Reports Store Gateway is connected in case of VME-DB
+
+## [v4-8-0] - 2014-02-10
+
+- Implemented Support for FAO Vulnerable Marine Ecosystem (VME) Update Scenario
+
+- Implemented Support for FAO Vulnerable Marine Ecosystem (VME) Delete Scenario
+
+- Added possibility of Deletion of content of the first entry
+
+- Close report on commit when in FAO Vulnerable Marine Ecosystem (VME) Mode
+
+## [v4-7-0] - 2013-12-19
+
+- Added Support for FAO Vulnerable Marine Ecosystem (VME) Scenario
+
+## [v4-2-0] - 2013-04-19
+
+- Lots of improvements in the UI
+- Embedded images in reports
+
+## [v3-4-0] - 2012-05-04
+
+- adapted to new Workspace Tree and home Library
diff --git a/FUNDING.md b/FUNDING.md
new file mode 100644
index 0000000..6fa9eac
--- /dev/null
+++ b/FUNDING.md
@@ -0,0 +1,26 @@
+# Acknowledgments
+
+The projects leading to this software have received funding from a series of European Union programmes including:
+
+- the Sixth Framework Programme for Research and Technological Development
+ - [DILIGENT](https://cordis.europa.eu/project/id/004260) (grant no. 004260).
+- the Seventh Framework Programme for research, technological development and demonstration
+ - [D4Science](https://cordis.europa.eu/project/id/212488) (grant no. 212488);
+ - [D4Science-II](https://cordis.europa.eu/project/id/239019) (grant no.239019);
+ - [ENVRI](https://cordis.europa.eu/project/id/283465) (grant no. 283465);
+ - [iMarine](https://cordis.europa.eu/project/id/283644) (grant no. 283644);
+ - [EUBrazilOpenBio](https://cordis.europa.eu/project/id/288754) (grant no. 288754).
+- the H2020 research and innovation programme
+ - [SoBigData](https://cordis.europa.eu/project/id/654024) (grant no. 654024);
+ - [PARTHENOS](https://cordis.europa.eu/project/id/654119) (grant no. 654119);
+ - [EGI-Engage](https://cordis.europa.eu/project/id/654142) (grant no. 654142);
+ - [ENVRI PLUS](https://cordis.europa.eu/project/id/654182) (grant no. 654182);
+ - [BlueBRIDGE](https://cordis.europa.eu/project/id/675680) (grant no. 675680);
+ - [PerformFISH](https://cordis.europa.eu/project/id/727610) (grant no. 727610);
+ - [AGINFRA PLUS](https://cordis.europa.eu/project/id/731001) (grant no. 731001);
+ - [DESIRA](https://cordis.europa.eu/project/id/818194) (grant no. 818194);
+ - [ARIADNEplus](https://cordis.europa.eu/project/id/823914) (grant no. 823914);
+ - [RISIS 2](https://cordis.europa.eu/project/id/824091) (grant no. 824091);
+ - [EOSC-Pillar](https://cordis.europa.eu/project/id/857650) (grant no. 857650);
+ - [Blue Cloud](https://cordis.europa.eu/project/id/862409) (grant no. 862409);
+ - [SoBigData-PlusPlus](https://cordis.europa.eu/project/id/871042) (grant no. 871042);
\ No newline at end of file
diff --git a/LICENSE.md b/LICENSE.md
new file mode 100644
index 0000000..c25566d
--- /dev/null
+++ b/LICENSE.md
@@ -0,0 +1,311 @@
+#European Union Public Licence V.1.1
+
+##*EUPL © the European Community 2007*
+
+
+This **European Union Public Licence** (the **“EUPL”**) applies to the Work or Software
+(as defined below) which is provided under the terms of this Licence. Any use of
+the Work, other than as authorised under this Licence is prohibited (to the
+extent such use is covered by a right of the copyright holder of the Work).
+
+The Original Work is provided under the terms of this Licence when the Licensor
+(as defined below) has placed the following notice immediately following the
+copyright notice for the Original Work:
+
+**Licensed under the EUPL V.1.1**
+
+or has expressed by any other mean his willingness to license under the EUPL.
+
+
+
+##1. Definitions
+
+In this Licence, the following terms have the following meaning:
+
+- The Licence: this Licence.
+
+- The Original Work or the Software: the software distributed and/or
+ communicated by the Licensor under this Licence, available as Source Code and
+ also as Executable Code as the case may be.
+
+- Derivative Works: the works or software that could be created by the Licensee,
+ based upon the Original Work or modifications thereof. This Licence does not
+ define the extent of modification or dependence on the Original Work required
+ in order to classify a work as a Derivative Work; this extent is determined by
+ copyright law applicable in the country mentioned in Article 15.
+
+- The Work: the Original Work and/or its Derivative Works.
+
+- The Source Code: the human-readable form of the Work which is the most
+ convenient for people to study and modify.
+
+- The Executable Code: any code which has generally been compiled and which is
+ meant to be interpreted by a computer as a program.
+
+- The Licensor: the natural or legal person that distributes and/or communicates
+ the Work under the Licence.
+
+- Contributor(s): any natural or legal person who modifies the Work under the
+ Licence, or otherwise contributes to the creation of a Derivative Work.
+
+- The Licensee or “You”: any natural or legal person who makes any usage of the
+ Software under the terms of the Licence.
+
+- Distribution and/or Communication: any act of selling, giving, lending,
+ renting, distributing, communicating, transmitting, or otherwise making
+ available, on-line or off-line, copies of the Work or providing access to its
+ essential functionalities at the disposal of any other natural or legal
+ person.
+
+
+
+##2. Scope of the rights granted by the Licence
+
+The Licensor hereby grants You a world-wide, royalty-free, non-exclusive,
+sub-licensable licence to do the following, for the duration of copyright vested
+in the Original Work:
+
+- use the Work in any circumstance and for all usage, reproduce the Work, modify
+- the Original Work, and make Derivative Works based upon the Work, communicate
+- to the public, including the right to make available or display the Work or
+- copies thereof to the public and perform publicly, as the case may be, the
+- Work, distribute the Work or copies thereof, lend and rent the Work or copies
+- thereof, sub-license rights in the Work or copies thereof.
+
+Those rights can be exercised on any media, supports and formats, whether now
+known or later invented, as far as the applicable law permits so.
+
+In the countries where moral rights apply, the Licensor waives his right to
+exercise his moral right to the extent allowed by law in order to make effective
+the licence of the economic rights here above listed.
+
+The Licensor grants to the Licensee royalty-free, non exclusive usage rights to
+any patents held by the Licensor, to the extent necessary to make use of the
+rights granted on the Work under this Licence.
+
+
+
+##3. Communication of the Source Code
+
+The Licensor may provide the Work either in its Source Code form, or as
+Executable Code. If the Work is provided as Executable Code, the Licensor
+provides in addition a machine-readable copy of the Source Code of the Work
+along with each copy of the Work that the Licensor distributes or indicates, in
+a notice following the copyright notice attached to the Work, a repository where
+the Source Code is easily and freely accessible for as long as the Licensor
+continues to distribute and/or communicate the Work.
+
+
+
+##4. Limitations on copyright
+
+Nothing in this Licence is intended to deprive the Licensee of the benefits from
+any exception or limitation to the exclusive rights of the rights owners in the
+Original Work or Software, of the exhaustion of those rights or of other
+applicable limitations thereto.
+
+
+
+##5. Obligations of the Licensee
+
+The grant of the rights mentioned above is subject to some restrictions and
+obligations imposed on the Licensee. Those obligations are the following:
+
+Attribution right: the Licensee shall keep intact all copyright, patent or
+trademarks notices and all notices that refer to the Licence and to the
+disclaimer of warranties. The Licensee must include a copy of such notices and a
+copy of the Licence with every copy of the Work he/she distributes and/or
+communicates. The Licensee must cause any Derivative Work to carry prominent
+notices stating that the Work has been modified and the date of modification.
+
+Copyleft clause: If the Licensee distributes and/or communicates copies of the
+Original Works or Derivative Works based upon the Original Work, this
+Distribution and/or Communication will be done under the terms of this Licence
+or of a later version of this Licence unless the Original Work is expressly
+distributed only under this version of the Licence. The Licensee (becoming
+Licensor) cannot offer or impose any additional terms or conditions on the Work
+or Derivative Work that alter or restrict the terms of the Licence.
+
+Compatibility clause: If the Licensee Distributes and/or Communicates Derivative
+Works or copies thereof based upon both the Original Work and another work
+licensed under a Compatible Licence, this Distribution and/or Communication can
+be done under the terms of this Compatible Licence. For the sake of this clause,
+“Compatible Licence” refers to the licences listed in the appendix attached to
+this Licence. Should the Licensee’s obligations under the Compatible Licence
+conflict with his/her obligations under this Licence, the obligations of the
+Compatible Licence shall prevail.
+
+Provision of Source Code: When distributing and/or communicating copies of the
+Work, the Licensee will provide a machine-readable copy of the Source Code or
+indicate a repository where this Source will be easily and freely available for
+as long as the Licensee continues to distribute and/or communicate the Work.
+
+Legal Protection: This Licence does not grant permission to use the trade names,
+trademarks, service marks, or names of the Licensor, except as required for
+reasonable and customary use in describing the origin of the Work and
+reproducing the content of the copyright notice.
+
+
+
+##6. Chain of Authorship
+
+The original Licensor warrants that the copyright in the Original Work granted
+hereunder is owned by him/her or licensed to him/her and that he/she has the
+power and authority to grant the Licence.
+
+Each Contributor warrants that the copyright in the modifications he/she brings
+to the Work are owned by him/her or licensed to him/her and that he/she has the
+power and authority to grant the Licence.
+
+Each time You accept the Licence, the original Licensor and subsequent
+Contributors grant You a licence to their contributions to the Work, under the
+terms of this Licence.
+
+
+
+##7. Disclaimer of Warranty
+
+The Work is a work in progress, which is continuously improved by numerous
+contributors. It is not a finished work and may therefore contain defects or
+“bugs” inherent to this type of software development.
+
+For the above reason, the Work is provided under the Licence on an “as is” basis
+and without warranties of any kind concerning the Work, including without
+limitation merchantability, fitness for a particular purpose, absence of defects
+or errors, accuracy, non-infringement of intellectual property rights other than
+copyright as stated in Article 6 of this Licence.
+
+This disclaimer of warranty is an essential part of the Licence and a condition
+for the grant of any rights to the Work.
+
+
+
+##8. Disclaimer of Liability
+
+Except in the cases of wilful misconduct or damages directly caused to natural
+persons, the Licensor will in no event be liable for any direct or indirect,
+material or moral, damages of any kind, arising out of the Licence or of the use
+of the Work, including without limitation, damages for loss of goodwill, work
+stoppage, computer failure or malfunction, loss of data or any commercial
+damage, even if the Licensor has been advised of the possibility of such
+damage. However, the Licensor will be liable under statutory product liability
+laws as far such laws apply to the Work.
+
+
+
+##9. Additional agreements
+
+While distributing the Original Work or Derivative Works, You may choose to
+conclude an additional agreement to offer, and charge a fee for, acceptance of
+support, warranty, indemnity, or other liability obligations and/or services
+consistent with this Licence. However, in accepting such obligations, You may
+act only on your own behalf and on your sole responsibility, not on behalf of
+the original Licensor or any other Contributor, and only if You agree to
+indemnify, defend, and hold each Contributor harmless for any liability incurred
+by, or claims asserted against such Contributor by the fact You have accepted
+any such warranty or additional liability.
+
+
+
+##10. Acceptance of the Licence
+
+The provisions of this Licence can be accepted by clicking on an icon “I agree”
+placed under the bottom of a window displaying the text of this Licence or by
+affirming consent in any other similar way, in accordance with the rules of
+applicable law. Clicking on that icon indicates your clear and irrevocable
+acceptance of this Licence and all of its terms and conditions.
+
+Similarly, you irrevocably accept this Licence and all of its terms and
+conditions by exercising any rights granted to You by Article 2 of this Licence,
+such as the use of the Work, the creation by You of a Derivative Work or the
+Distribution and/or Communication by You of the Work or copies thereof.
+
+
+
+##11. Information to the public
+
+In case of any Distribution and/or Communication of the Work by means of
+electronic communication by You (for example, by offering to download the Work
+from a remote location) the distribution channel or media (for example, a
+website) must at least provide to the public the information requested by the
+applicable law regarding the Licensor, the Licence and the way it may be
+accessible, concluded, stored and reproduced by the Licensee.
+
+
+
+##12. Termination of the Licence
+
+The Licence and the rights granted hereunder will terminate automatically upon
+any breach by the Licensee of the terms of the Licence.
+
+Such a termination will not terminate the licences of any person who has
+received the Work from the Licensee under the Licence, provided such persons
+remain in full compliance with the Licence.
+
+
+
+##13. Miscellaneous
+
+Without prejudice of Article 9 above, the Licence represents the complete
+agreement between the Parties as to the Work licensed hereunder.
+
+If any provision of the Licence is invalid or unenforceable under applicable
+law, this will not affect the validity or enforceability of the Licence as a
+whole. Such provision will be construed and/or reformed so as necessary to make
+it valid and enforceable.
+
+The European Commission may publish other linguistic versions and/or new
+versions of this Licence, so far this is required and reasonable, without
+reducing the scope of the rights granted by the Licence. New versions of the
+Licence will be published with a unique version number.
+
+All linguistic versions of this Licence, approved by the European Commission,
+have identical value. Parties can take advantage of the linguistic version of
+their choice.
+
+
+
+##14. Jurisdiction
+
+Any litigation resulting from the interpretation of this License, arising
+between the European Commission, as a Licensor, and any Licensee, will be
+subject to the jurisdiction of the Court of Justice of the European Communities,
+as laid down in article 238 of the Treaty establishing the European Community.
+
+Any litigation arising between Parties, other than the European Commission, and
+resulting from the interpretation of this License, will be subject to the
+exclusive jurisdiction of the competent court where the Licensor resides or
+conducts its primary business.
+
+
+
+##15. Applicable Law
+
+This Licence shall be governed by the law of the European Union country where
+the Licensor resides or has his registered office.
+
+This licence shall be governed by the Belgian law if:
+
+- a litigation arises between the European Commission, as a Licensor, and any
+- Licensee; the Licensor, other than the European Commission, has no residence
+- or registered office inside a European Union country.
+
+
+---
+
+
+##Appendix
+
+
+**“Compatible Licences”** according to article 5 EUPL are:
+
+
+- GNU General Public License (GNU GPL) v. 2
+
+- Open Software License (OSL) v. 2.1, v. 3.0
+
+- Common Public License v. 1.0
+
+- Eclipse Public License v. 1.0
+
+- Cecill v. 2.0
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..d0a4580
--- /dev/null
+++ b/README.md
@@ -0,0 +1,42 @@
+# gCube System - VRE Manager Portlet
+
+This component is a Liferay 6.2.6 CE Porlet which iinteracts with the VRE Modeler service to manager VRE Deployments and Undeployments
+## Structure of the project
+
+* The source code is present in the src folder.
+
+## Built With
+
+* [OpenJDK](https://openjdk.java.net/) - The JDK used
+* [Maven](https://maven.apache.org/) - Dependency Management
+
+## Documentation
+
+* No Documentation is provided
+
+## Change log
+
+See [Releases](https://code-repo.d4science.org/gCubeSystem/vre-manager-portlet/releases).
+
+## Authors
+
+* **Massimiliano Assante** - [ISTI-CNR Infrascience Group](http://nemis.isti.cnr.it/groups/infrascience)
+
+## Maintainers
+
+* **Massimiliano Assante** - [ISTI-CNR Infrascience Group](http://nemis.isti.cnr.it/groups/infrascience)
+
+## License
+
+This project is licensed under the EUPL V.1.1 License - see the [LICENSE.md](LICENSE.md) file for details.
+
+
+## About the gCube Framework
+This software is part of the [gCubeFramework](https://www.gcube-system.org/ "gCubeFramework"): an
+open-source software toolkit used for building and operating Hybrid Data
+Infrastructures enabling the dynamic deployment of Virtual Research Environments
+by favouring the realisation of reuse oriented policies.
+
+The projects leading to this software have received funding from a series of European Union programmes see [FUNDING.md](FUNDING.md)
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 4a5c19e..4440f43 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,36 +1,32 @@
-
4.0.0
maven-parent
org.gcube.tools
- 1.0.0
+ 1.1.0
org.gcube.portlets.user
reports-manager-portlet
war
- 6.2.0-SNAPSHOT
+ 6.2.1-SNAPSHOT
gCube Reports Manager
gCube Reports Portlet.
- scm:svn:http://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/${project.artifactId}
- scm:https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/${project.artifactId}
- http://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/${project.artifactId}
+ scm:git:https://code-repo.d4science.org/gCubeSystem/${project.artifactId}.git
+ scm:git:https://code-repo.d4science.org/gCubeSystem/${project.artifactId}.git
+ https://code-repo.d4science.org/gCubeSystem/${project.artifactId}
2.7.0
distro
-
- provided
- online
-
1.7
1.8
${project.build.directory}/${project.build.finalName}
@@ -43,7 +39,7 @@
org.gcube.distribution
maven-portal-bom
- LATEST
+ 3.6.3-SNAPSHOT
pom
import
@@ -171,18 +167,15 @@
org.gcube.common
- home-library
- provided
+ storagehub-client-library
- org.gcube.common
- home-library-jcr
- provided
+ org.apache.tika
+ tika-core
- org.gcube.common
- home-library-model
- provided
+ org.gcube.core
+ common-encryption
org.apache.derby
@@ -250,12 +243,10 @@
${webappDirectory}
-
org.apache.maven.plugins
maven-war-plugin
- 2.1.1
compile
@@ -271,55 +262,26 @@
org.apache.maven.plugins
maven-compiler-plugin
- 2.3.2
-
- 1.8
+
+ ${maven.compiler.target}
-
-
- org.apache.maven.plugins
- maven-assembly-plugin
- 2.2
-
-
- ${distroDirectory}/descriptor.xml
-
-
-
-
- servicearchive
- install
-
- single
-
-
-
-
org.apache.maven.plugins
- maven-resources-plugin
- 2.5
+ maven-javadoc-plugin
+
+ -Xdoclint:none
+ -Xdoclint:none
+
+ 3.1.0
- copy-profile
+ generate-doc
install
- copy-resources
+ jar
-
- target
-
-
- ${distroDirectory}
- true
-
- profile.xml
-
-
-
-
diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/client/Headerbar.java b/src/main/java/org/gcube/portlets/user/reportgenerator/client/Headerbar.java
index e54e277..3baa8a0 100644
--- a/src/main/java/org/gcube/portlets/user/reportgenerator/client/Headerbar.java
+++ b/src/main/java/org/gcube/portlets/user/reportgenerator/client/Headerbar.java
@@ -10,7 +10,6 @@ import org.gcube.portlets.user.reportgenerator.client.Presenter.CommonCommands;
import org.gcube.portlets.user.reportgenerator.client.Presenter.Presenter;
import org.gcube.portlets.user.reportgenerator.client.dialog.ImporterDialog;
import org.gcube.portlets.user.reportgenerator.client.dialog.PagePropertiesDialog;
-import org.gcube.portlets.user.reportgenerator.client.model.ExportManifestationType;
import org.gcube.portlets.user.reportgenerator.client.model.TemplateModel;
import org.gcube.portlets.user.reportgenerator.shared.VMETypeIdentifier;
import org.gcube.portlets.widgets.wsexplorer.client.notification.WorkspaceExplorerSelectNotification.WorskpaceExplorerSelectNotificationListener;
@@ -105,7 +104,6 @@ public class Headerbar extends Composite{
MenuBar menuBar = new MenuBar();
- MenuItem fileMenu;
MenuItem viewMenu;
MenuItem sectionsMenu;
MenuItem biblioMenu;
@@ -127,8 +125,6 @@ public class Headerbar extends Composite{
menuBar.setAutoOpen(false);
// menuBar.setWidth("100px");
menuBar.setAnimationEnabled(true);
- fileMenu = getFileMenu();
- menuBar.addItem(fileMenu);
separator1 = menuBar.addSeparator();
viewMenu = getViewMenu();
menuBar.addItem(viewMenu);
@@ -190,7 +186,6 @@ public class Headerbar extends Composite{
public void setMenuForWorkflowDocument(boolean canUpdate) {
presenter.setMenuForWorkflowDocument(true);
- menuBar.removeItem(fileMenu);
menuBar.removeItem(viewMenu);
menuBar.removeItem(sectionsMenu);
menuBar.removeItem(biblioMenu);
diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/server/servlet/DownloadEncryptedReport.java b/src/main/java/org/gcube/portlets/user/reportgenerator/server/servlet/DownloadEncryptedReport.java
index bf5f845..795a417 100644
--- a/src/main/java/org/gcube/portlets/user/reportgenerator/server/servlet/DownloadEncryptedReport.java
+++ b/src/main/java/org/gcube/portlets/user/reportgenerator/server/servlet/DownloadEncryptedReport.java
@@ -1,29 +1,12 @@
package org.gcube.portlets.user.reportgenerator.server.servlet;
-import java.io.DataInputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
import java.io.IOException;
-import java.io.InputStream;
import javax.servlet.ServletException;
-import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import org.gcube.application.framework.core.session.ASLSession;
-import org.gcube.application.framework.core.session.SessionManager;
-import org.gcube.common.homelibary.model.items.type.FolderItemType;
-import org.gcube.common.homelibrary.home.HomeLibrary;
-import org.gcube.common.homelibrary.home.workspace.Workspace;
-import org.gcube.common.homelibrary.home.workspace.folder.FolderItem;
-import org.gcube.common.homelibrary.home.workspace.folder.items.Report;
-import org.gcube.common.homelibrary.home.workspace.folder.items.ReportTemplate;
-import org.gcube.common.homelibrary.util.encryption.EncryptionUtil;
-import org.gcube.portal.custom.scopemanager.scopehelper.ScopeHelper;
-
@SuppressWarnings("serial")
public class DownloadEncryptedReport extends HttpServlet {
@@ -32,71 +15,7 @@ public class DownloadEncryptedReport extends HttpServlet {
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
- FolderItem item = null;
- File tmpFile = File.createTempFile("report", "texz");
- String fileName = null;
- InputStream data = null;
- try {
- Workspace workspace = HomeLibrary.getUserWorkspace(getASLSession(request).getUsername());
- item = (FolderItem)workspace.getItem(request.getParameter("itemId"));
-
- if (item.getFolderItemType() == FolderItemType.REPORT) {
- Report report = (Report)item;
- data = report.getData();
- } else {
- ReportTemplate template = (ReportTemplate)item;
- data = template.getData();
- }
-
- fileName = item.getName() + ".texz";
-
- EncryptionUtil util = new EncryptionUtil();
- FileOutputStream out = new FileOutputStream(tmpFile);
- util.encrypt(data, out);
-
- } catch (Exception e) {
- throw new ServletException(e);
- }
-
- int length = 0;
- ServletOutputStream outStream = response.getOutputStream();
- String mimetype = "application/octet-stream";
-
- response.setContentType(mimetype);
- response.setContentLength((int)tmpFile.length());
-
- // sets HTTP header
- response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
-
- byte[] byteBuffer = new byte[1024];
- DataInputStream in = new DataInputStream(new FileInputStream(tmpFile));
-
- // reads the file's bytes and writes them to the response stream
- while ((in != null) && ((length = in.read(byteBuffer)) != -1))
- {
- outStream.write(byteBuffer,0,length);
- }
-
- in.close();
- outStream.close();
+ response.getWriter().write("Not supported");
}
-
- /**
- * the current ASLSession
- * @return .
- */
- private ASLSession getASLSession(HttpServletRequest request) {
-
-
- String sessionID = request.getSession().getId();
- String user = (String) request.getSession().getAttribute(ScopeHelper.USERNAME_ATTRIBUTE);
- if (user == null) {
- user = "massimiliano.assante";
- request.getSession().setAttribute(ScopeHelper.USERNAME_ATTRIBUTE, user);
- SessionManager.getInstance().getASLSession(sessionID, user).setScope("/gcube/devsec");
- }
- return SessionManager.getInstance().getASLSession(sessionID, user);
-
- }
}
diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/server/servlet/DownloadImageServlet.java b/src/main/java/org/gcube/portlets/user/reportgenerator/server/servlet/DownloadImageServlet.java
index 9154903..b714b5a 100644
--- a/src/main/java/org/gcube/portlets/user/reportgenerator/server/servlet/DownloadImageServlet.java
+++ b/src/main/java/org/gcube/portlets/user/reportgenerator/server/servlet/DownloadImageServlet.java
@@ -1,30 +1,15 @@
package org.gcube.portlets.user.reportgenerator.server.servlet;
import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
import java.io.StringReader;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
import org.apache.commons.io.IOUtils;
import org.apache.log4j.Logger;
-import org.gcube.application.framework.core.session.SessionManager;
-import org.gcube.common.homelibrary.home.HomeLibrary;
-import org.gcube.common.homelibrary.home.exceptions.HomeNotFoundException;
-import org.gcube.common.homelibrary.home.exceptions.InternalErrorException;
-import org.gcube.common.homelibrary.home.workspace.Workspace;
-import org.gcube.common.homelibrary.home.workspace.WorkspaceItem;
-import org.gcube.common.homelibrary.home.workspace.exceptions.WorkspaceFolderNotFoundException;
-import org.gcube.common.homelibrary.home.workspace.folder.items.ExternalImage;
-import org.gcube.common.homelibrary.util.MimeTypeUtil;
-import org.gcube.common.portal.PortalContext;
-import org.gcube.common.scope.api.ScopeProvider;
-import org.gcube.portal.custom.scopemanager.scopehelper.ScopeHelper;
/**
* Servlet implementation class DownloadImageServlet
@@ -44,67 +29,15 @@ public class DownloadImageServlet extends HttpServlet {
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- String itemId = req.getParameter("id");
- if(itemId==null || itemId.isEmpty()){
- sendError(resp,HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Item id is null");
- return;
- }
- Workspace wa;
- WorkspaceItem item;
- try{
- wa = getWorkspaceArea(req.getSession());
- item = wa.getItem(itemId);
- ExternalImage externalImage = (ExternalImage) item;
- String mimeType = externalImage.getMimeType();
- String itemName = MimeTypeUtil.getNameWithExtension(item.getName(), mimeType);
+ resp.getWriter().write("Not supported");
+ return;
- resp.setHeader( "Content-Disposition", "inline; filename=\"" + itemName + "\"" );
- resp.setContentType(externalImage.getMimeType());
-
- resp.setContentLength((int) externalImage.getLength());
-
- OutputStream out = resp.getOutputStream();
- InputStream is = externalImage.getData();
-
- IOUtils.copy(is, out);
- is.close();
-
- out.close();
- return;
- } catch (Exception e) {
- _log.error("Error during item retrieving "+itemId,e);
- sendError(resp,HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during image retrieving: "+e.getMessage());
- return;
- }
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { }
- /**
- *
- * @return
- * @throws WorkspaceFolderNotFoundException
- * @throws InternalErrorException
- * @throws HomeNotFoundException
- */
- protected Workspace getWorkspaceArea(HttpSession session) throws WorkspaceFolderNotFoundException, InternalErrorException, HomeNotFoundException {
- String user = (String) session.getAttribute(ScopeHelper.USERNAME_ATTRIBUTE);
- String currScope = ScopeProvider.instance.get();
- if (currScope == null) {
- String scope2Set = "/"+PortalContext.getConfiguration().getInfrastructureName();
- ScopeProvider.instance.set(scope2Set);
- _log.warn("Found scope null, setting infrastructure scope="+scope2Set);
- }
- if (user == null) {
- user = ReportServiceImpl.TEST_USER;
- ScopeProvider.instance.set(ReportServiceImpl.TEST_SCOPE);
- _log.warn("User is null in session, setting dev user = " + user);
- }
- Workspace toReturn = HomeLibrary.getUserWorkspace(user);
-
- return toReturn;
- }
+
protected void sendError(HttpServletResponse response, String resultMessage) throws IOException {
diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/server/servlet/ImagesUtil.java b/src/main/java/org/gcube/portlets/user/reportgenerator/server/servlet/ImagesUtil.java
index 75af60c..ad82d26 100644
--- a/src/main/java/org/gcube/portlets/user/reportgenerator/server/servlet/ImagesUtil.java
+++ b/src/main/java/org/gcube/portlets/user/reportgenerator/server/servlet/ImagesUtil.java
@@ -1,10 +1,5 @@
package org.gcube.portlets.user.reportgenerator.server.servlet;
-import org.gcube.common.homelibary.model.items.type.FolderItemType;
-import org.gcube.common.homelibrary.home.exceptions.InternalErrorException;
-import org.gcube.common.homelibrary.home.workspace.folder.FolderItem;
-import org.gcube.common.homelibrary.home.workspace.folder.items.ExternalImage;
-import org.gcube.common.homelibrary.home.workspace.folder.items.GCubeItem;
public class ImagesUtil {
public static final String GIF = "image/gif";
@@ -19,22 +14,10 @@ public class ImagesUtil {
* @param bi the basketItem
* @return a string for the file extension given a mimetype
*/
- public static String getImageExtension(FolderItem bi) {
+ public static String getImageExtension() {
String mimetype = "";
- if (bi.getFolderItemType()==FolderItemType.EXTERNAL_IMAGE){
- ExternalImage image = (ExternalImage) bi;
- mimetype = image.getMimeType();
- }
-
- if (bi.getFolderItemType()==FolderItemType.IMAGE_DOCUMENT){
- GCubeItem image = (GCubeItem) bi;
- try {
- mimetype = image.getMimeType();
- } catch (InternalErrorException e) {
- e.printStackTrace();
- }
- }
+
if (mimetype.equals(GIF))
return "gif";
diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/server/servlet/ReportServiceImpl.java b/src/main/java/org/gcube/portlets/user/reportgenerator/server/servlet/ReportServiceImpl.java
index 143dcc1..2c9ab06 100644
--- a/src/main/java/org/gcube/portlets/user/reportgenerator/server/servlet/ReportServiceImpl.java
+++ b/src/main/java/org/gcube/portlets/user/reportgenerator/server/servlet/ReportServiceImpl.java
@@ -3,26 +3,20 @@ package org.gcube.portlets.user.reportgenerator.server.servlet;
import static org.gcube.resources.discovery.icclient.ICFactory.clientFor;
import static org.gcube.resources.discovery.icclient.ICFactory.queryFor;
-import java.io.BufferedInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
-import java.io.OutputStream;
import java.net.MalformedURLException;
import java.util.ArrayList;
-import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Vector;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
-import javax.xml.bind.DatatypeConverter;
import org.apache.commons.io.IOUtils;
import org.apache.tika.config.TikaConfig;
@@ -43,23 +37,7 @@ import org.gcube.application.rsg.service.dto.response.ServiceResponseMessage;
import org.gcube.application.rsg.support.builder.exceptions.ReportBuilderException;
import org.gcube.application.rsg.support.builder.impl.ReportManagerReportBuilder;
import org.gcube.application.rsg.support.model.components.impl.CompiledReport;
-import org.gcube.common.encryption.StringEncrypter;
-import org.gcube.common.homelibary.model.items.type.FolderItemType;
-import org.gcube.common.homelibary.model.items.type.WorkspaceItemType;
-import org.gcube.common.homelibrary.home.HomeLibrary;
-import org.gcube.common.homelibrary.home.exceptions.HomeNotFoundException;
-import org.gcube.common.homelibrary.home.exceptions.InternalErrorException;
-import org.gcube.common.homelibrary.home.workspace.Workspace;
-import org.gcube.common.homelibrary.home.workspace.WorkspaceFolder;
-import org.gcube.common.homelibrary.home.workspace.WorkspaceItem;
-import org.gcube.common.homelibrary.home.workspace.exceptions.ItemNotFoundException;
-import org.gcube.common.homelibrary.home.workspace.exceptions.WorkspaceFolderNotFoundException;
-import org.gcube.common.homelibrary.home.workspace.folder.FolderItem;
-import org.gcube.common.homelibrary.home.workspace.folder.items.ExternalImage;
-import org.gcube.common.homelibrary.home.workspace.folder.items.GCubeItem;
-import org.gcube.common.homelibrary.home.workspace.folder.items.Report;
-import org.gcube.common.homelibrary.home.workspace.folder.items.ReportTemplate;
-import org.gcube.common.homelibrary.home.workspace.folder.items.ts.TimeSeries;
+import org.gcube.common.encryption.encrypter.StringEncrypter;
import org.gcube.common.portal.PortalContext;
import org.gcube.common.resources.gcore.ServiceEndpoint;
import org.gcube.common.resources.gcore.ServiceEndpoint.AccessPoint;
@@ -67,12 +45,8 @@ import org.gcube.common.resources.gcore.ServiceEndpoint.Property;
import org.gcube.common.scope.api.ScopeProvider;
import org.gcube.portal.custom.scopemanager.scopehelper.ScopeHelper;
import org.gcube.portlets.d4sreporting.common.server.ServiceUtil;
-import org.gcube.portlets.d4sreporting.common.shared.BasicComponent;
-import org.gcube.portlets.d4sreporting.common.shared.BasicSection;
-import org.gcube.portlets.d4sreporting.common.shared.ComponentType;
import org.gcube.portlets.d4sreporting.common.shared.Model;
import org.gcube.portlets.d4sreporting.common.shared.RepTimeSeries;
-import org.gcube.portlets.d4sreporting.common.shared.RepeatableSequence;
import org.gcube.portlets.d4sreporting.common.shared.Table;
import org.gcube.portlets.d4sreporting.common.shared.TableCell;
import org.gcube.portlets.user.reportgenerator.client.ReportConstants;
@@ -174,7 +148,6 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe
}
public String getDevelopmentUser() {
String user = TEST_USER;
- // user = "andrea.rossi";
return user;
}
/**
@@ -258,147 +231,7 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe
*
*/
public Model readModel(String templateName, String templateObjectID, boolean isTemplate, boolean isImporting) {
- ServiceUtil myUtil = new ServiceUtil(getASLSession());
- _log.debug("Reading " + templateName);
-
- Workspace root = null;
- WorkspaceItem item = null;
- try {
- root = getWorkspaceArea();
- item = root.getItem(templateObjectID);
- if (! isImporting)
- storeReportItemIDInSession(templateObjectID);
-
- _log.debug("** -> getItem, id: " + templateObjectID + " Name: " + item.getName());
-
- } catch (Exception e) {
- e.printStackTrace();
- }
-
- String zipToExtract = "";
- if (item.getType() == WorkspaceItemType.FOLDER_ITEM) {
- _log.debug("Item is a FolderItem - OK... next step check if is a templet or a report");
-
- FolderItem bi = (FolderItem) item;
- boolean fromBasket = false;
-
- if (isTemplate) {
- if (bi.getFolderItemType() == FolderItemType.REPORT_TEMPLATE) {
- ReportTemplate zippedTemplate = (ReportTemplate) bi;
- String zipFilename = "";
- if (! isTemplate) {//then is a report
- zipFilename = templateName + "-report.zip"; //gCube report
- _log.debug("********************** Reading template -----------------");
- }
- else
- zipFilename = templateName + ".zip"; //gCube template
-
- String zipPath = myUtil.getTemplatePath(templateName, getVreName(), getUsername());
- fromBasket = getTemplateFromBasket(zippedTemplate, zipPath, zipFilename);
- zipToExtract = zipPath + zipFilename;
- }
- }
-
- if (bi.getFolderItemType() == FolderItemType.REPORT) {
-
- _log.debug("Item is a REPORT");
- Report zippedTemplate = (Report) bi;
-
- String zipFilename = "";
- if (! isTemplate) {//then is a report
- zipFilename = templateName + "-report.zip"; //gCube report
- _log.debug(" Reading report -----------------");
- }
- else
- zipFilename = templateName + ".zip"; //d4science template
-
- File toDelete = new File(zipFilename);
- toDelete.delete();
-
- String zipPath = myUtil.getTemplatePath(templateName, getVreName(), getUsername());
- fromBasket = getReportFromBasket(zippedTemplate, zipPath, zipFilename);
- zipToExtract = zipPath + zipFilename;
- }
-
- _log.info("\n\n** zipToExtract: " + zipToExtract);
-
- if (bi.getFolderItemType() == FolderItemType.REPORT || bi.getFolderItemType() == FolderItemType.REPORT_TEMPLATE) {
-
- if (fromBasket) {
- File toExtract = new File(zipToExtract);
- File outputDir = new File( myUtil.getTemplatePath(templateName, getVreName(), getUsername()) );
- ZipUtil.unzipArchive(toExtract, outputDir);
-
- String templatePath = myUtil.getTemplatePath(templateName, getVreName(), getUsername());
-
- String modelFilename = "";
- try {
- modelFilename = seekModel(templatePath, templateName);
- } catch (FileNotFoundException e) { e.printStackTrace(); }
-
- String fileToRead = templatePath + modelFilename + ".d4st" ;
-
- _log.debug("Loading fileToRead from Disk -> " + fileToRead);
-
- Model toReturn = null;
- Model toConvert = null;
-
- FileInputStream fis = null;
- ObjectInputStream in = null;
- try {
- fis = new FileInputStream(fileToRead);
- in = new ObjectInputStream(fis);
- toConvert = (Model) in.readObject();
- in.close();
- } catch (IOException ex) {
- ex.printStackTrace();
- } catch (ClassNotFoundException ex) {
- ex.printStackTrace();
- }
- _log.debug("Converting fileToRead to Serializable object");
- toReturn = (toConvert);
-
- // changes the template name model
- toReturn.setTemplateName(templateName);
-
- File toDelete = new File(fileToRead); //to delete the file extracted from the workspace
-
- File toDelete1 = new File( myUtil.getTemplatePath(templateName, getVreName(), getUsername()));
- boolean deleted1 = toDelete1.delete();
-
-
- File toDelete2 = new File(zipToExtract);
- boolean deleted2 = toDelete2.delete();
-
- boolean deleted = toDelete.delete();
- _log.debug("deleting extracted file: " + fileToRead + " result: " + deleted);
- _log.debug("dirToDelete: " + toDelete1 + " result: " + deleted1);
- _log.debug("dirToDelete: " + toDelete2 + " result: " + deleted2);
-
- //**** IMPORTANT ****
- if (! isImporting) {
- storeTemplateInSession(toReturn);
- _log.debug("storeTemplateInSession DONE");
- }
-
- if (! isTemplate) {
- try {
- ModelReader reader = new ModelReader(toReturn);
- System.out.println(reader);
- } catch (Exception e) {
- _log.warn("ModelReader fails to read this report, continue...");
- }
- }
-
- return toReturn;
- }
- }
- _log.error("FAILED TO READ RETURING EMPTY Serializable Template");
- return new Model();
- }
- _log.error("FAILED TO READ FROM BASKET RETURING EMPTY Serializable Template");
return new Model();
-
}
@@ -407,51 +240,9 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe
*/
@Override
public ReportImage getUploadedImageUrlById(String fileName, String absolutePathOnServer) {
- if (absolutePathOnServer == null)
- return null;
- try {
- _log.trace("trying read: "+absolutePathOnServer);
- WorkspaceFolder imagesFolder = getImagesFolder();
- // Read from an input stream
- InputStream imageData = new BufferedInputStream(new FileInputStream(absolutePathOnServer));
- String itemName = fileName;
- int i = 1;
- while (imagesFolder.exists(itemName)) {
- String[] splitted = fileName.split("\\.");
- itemName = splitted[0]+"_"+i+"."+splitted[splitted.length-1];
- i++;
- }
- ExternalImage image = imagesFolder.createExternalImageItem(itemName, "automatically uploaded by Reports Manager", getMimeType(imageData, fileName), imageData);
- _log.trace("Created external image with name " + image.getName());
- //delete the temp file
- File toDelete = new File(absolutePathOnServer);
- toDelete.delete();
- return new ReportImage(image.getId(), buildImageServiceUrl(image.getId()), image.getWidth(), image.getHeight());
- } catch (Exception e) {
- _log.error("Error in server get image by id", e);
- e.printStackTrace();
- }
return null;
}
- /**
- * @return the images folder of the workspace, create it if not exist.
- */
- private WorkspaceFolder getImagesFolder() {
- Workspace ws = null;
- WorkspaceFolder reportFolder = null;
- try {
- ws = getWorkspaceArea();
- if (! ws.getRoot().exists(REPORT_IMAGES_FOLDER)) {
- reportFolder = ws.getRoot().createFolder(REPORT_IMAGES_FOLDER, "This folder hosts the images uploaded by the Reports Manager");
- } else {
- reportFolder = (WorkspaceFolder) ws.getRoot().find(REPORT_IMAGES_FOLDER);
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- return reportFolder;
- }
/**
*
* @param is
@@ -475,25 +266,6 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe
*/
@Override
public ReportImage getImageUrlById(String identifier) {
- if (identifier == null)
- return null;
- try {
- Workspace workspace = getWorkspaceArea();
- _log.trace("get image URL by id: "+identifier);
-
- WorkspaceItem item = workspace.getItem(identifier); //get item from workspace
-
- //ACCOUNTING READ
- item.markAsRead(true);
-
- _log.trace("item name " + item.getName());
- ExternalImage image = (ExternalImage) item; //Cast External Document
- return new ReportImage(image.getId(), buildImageServiceUrl(image.getId()), image.getWidth(), image.getHeight());
-
- } catch (Exception e) {
- _log.error("Error in server get image by id", e);
- e.printStackTrace();
- }
return null;
}
@@ -511,118 +283,11 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe
}
- /**
- * handles the case that the user has changed the template name in the basket
- * @param templatePath
- * @param templateName
- * @return
- * @throws FileNotFoundException
- */
- private String seekModel(String templatePath, String templateName) throws FileNotFoundException {
- _log.debug("seekModel: tPath=" + templatePath);
- String fileToSeek = templatePath + templateName + ".d4st";
-
- File toSeek = new File(fileToSeek);
- if (toSeek.exists()) {
- _log.debug("seekModel: modelName is the SAME returning");
- return templateName;
- }
- else {
- _log.debug("seekModel: modelName DIFFERENT upgrading");
- File dirToLookIn = new File(templatePath);
- File[] innerFiles = dirToLookIn.listFiles();
- for (int i = 0; i < innerFiles.length; i++) {
- _log.debug("scanning files in extracted folder: " + innerFiles[i].getName());
- if (innerFiles[i].getName().endsWith(".d4st")) {
- String toReturn = innerFiles[i].getName();
- toReturn = toReturn.substring(0, toReturn.length()-5);
- _log.debug("seekModel: returning.. =" + toReturn);
- return toReturn;
- }
- }
- }
- throw new FileNotFoundException();
- }
+
- /**
- * get the template instance from the Basket
- * @param repTmp
- * @return
- */
- private boolean getTemplateFromBasket(ReportTemplate repTmp, String pathToFile, String filename) {
- try {
- File dir = new File(pathToFile);
- _log.debug("DIR: " + pathToFile);
- if (! dir.exists() )
- dir.mkdirs();
-
- File f = new File(pathToFile+filename);
- InputStream inputStream = null;
- try {
- inputStream = repTmp.getData();
- } catch (InternalErrorException e) {
- e.printStackTrace();
- return false;
- }
-
- OutputStream out = new FileOutputStream(f);
-
- byte buf[] = new byte[1024];
- int len;
- while((len = inputStream.read(buf))>0)
- out.write(buf,0,len);
- out.close();
- inputStream.close();
- _log.info("Successfully got ReportTemplate from Basket: " + pathToFile);
- return true;
- }
- catch (IOException e){
- e.printStackTrace();
- return false;
- }
- }
- /**
- * get the report instance from the Basket
- * @param repTmp .
- * @param pathToFile the directory where to save the file
- * @param filename the filename to give to the newly created file
- * @return
- */
- private boolean getReportFromBasket(Report repTmp, String pathToFile, String filename) {
- try {
- File dir = new File(pathToFile);
- _log.debug("DIR: " + pathToFile);
- if (! dir.exists() )
- dir.mkdirs();
-
- File f = new File(pathToFile+filename);
- InputStream inputStream = null;
- try {
- inputStream = repTmp.getData();
- } catch (InternalErrorException e) {
- e.printStackTrace();
- return false;
- }
-
- OutputStream out = new FileOutputStream(f);
-
- byte buf[] = new byte[1024];
- int len;
- while((len = inputStream.read(buf))>0)
- out.write(buf,0,len);
- out.close();
- inputStream.close();
- _log.info("Successfully got ReportTemplate from HL: " + pathToFile);
- return true;
- }
- catch (IOException e){
- e.printStackTrace();
- return false;
- }
- }
/**
*
@@ -688,82 +353,14 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe
if (rsgAp != null)
_log.trace("setting RSG WS address to " + rsgAp.getRestUrl());
}
- /**
- *
- * @return
- * @throws WorkspaceFolderNotFoundException
- * @throws InternalErrorException
- * @throws HomeNotFoundException
- */
- protected Workspace getWorkspaceArea() throws WorkspaceFolderNotFoundException, InternalErrorException, HomeNotFoundException {
- return HomeLibrary.getUserWorkspace(getASLSession().getUsername());
- }
- /**
- * reads from the file system and returns the user workspace as TreeNode object
- *
- * @return the Default folder if if there is no basket in session, else the folder in session id
- */
- public String getRootFolder() {
- try {
- Workspace workspaceArea = getWorkspaceArea();
- WorkspaceFolder basket = workspaceArea.getRoot();
- return basket.getId();
- } catch (Exception e) { e.printStackTrace();
- }
- return "Coud not open default folder";
- }
/**
*
* @return the model previously stored in the session
*/
public Model readTemplateFromSession() {
- ASLSession d4Session = getASLSession();
-
- String templateid = (String) d4Session.getAttribute("idreport");
-
- String templateName = "";
- _log.debug("TEMPLATE ID==NULL " + (templateid == null));
- if (templateid != null) {
- if (! templateid.equals("")) {
- _log.debug("READING SESSION VARIABLE FOR REPORT ID... " + templateid);
- //reset the value
- d4Session.setAttribute("idreport", "");
- Workspace root = null;
- WorkspaceItem item = null;
- try {
- root = getWorkspaceArea();
-
- item = root.getItem(templateid);
- _log.info("READ REPORT FROM WP... " + item.getName());
- templateName = item.getName();
- } catch (WorkspaceFolderNotFoundException e) {e.printStackTrace();
- } catch (InternalErrorException e) { e.printStackTrace();
- } catch (HomeNotFoundException e) { e.printStackTrace();
- } catch (ItemNotFoundException e) { e.printStackTrace();}
-
- Model toReturn = readModel(templateName, templateid, false, false);
- return toReturn;
- }
- if (d4Session.getAttribute(CURRENT_REPORT_INSTANCE) != null)
- return (Model) d4Session.getAttribute(CURRENT_REPORT_INSTANCE) ;
- return null;
- }
- else {
- if (d4Session.getAttribute(CURRENT_REPORT_INSTANCE) != null) {
- _log.debug("getAttribute(\"CURRENT_REPORT_INSTANCE\")...");
- Model model = (Model) d4Session.getAttribute(CURRENT_REPORT_INSTANCE) ;
- _log.debug(model.getTemplateName());
-
- return model;
- }
- }
- ServiceUtil myUtil = new ServiceUtil(getASLSession());
- String dirToClean = myUtil.getTemplateFolder(getVreName(), getUsername());
- _log.info("No data on session for Reports, cleaning temp dir: " + dirToClean);
- delTemplateDir(new File(dirToClean));
return null;
}
@@ -796,86 +393,6 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe
}
- private void convertDynamicImagesFromHL(Model model) {
- _log.debug("model == NULL " + (model == null));
- Vector sections = model.getSections();
- for (BasicSection section : sections) {
- for (BasicComponent component : section.getComponents()) {
- if (component.getType() == ComponentType.DYNA_IMAGE) {
- _log.debug("Found Simple Image: " + component.getPossibleContent());
- if (component.getId() != null) { // you need to convert only new images that stay in the HL Workspace, this is the check
- String imageID = component.getId();
- component.setPossibleContent(getdDataImagebase64(imageID));
- _log.trace("Image converted base 64 OK: " + component.getPossibleContent());
- }
- }
- if (component.getType() == ComponentType.REPEAT_SEQUENCE || component.getType() == ComponentType.BODY_TABLE_IMAGE) { //there could be images inside
- RepeatableSequence res = (RepeatableSequence) component.getPossibleContent();
- for (BasicComponent co : res.getGroupedComponents()) {
- if (component.getType() == ComponentType.DYNA_IMAGE) {
- _log.debug("Found Image IN SEQUENCE, type is: " + component.getType());
- if (co.getId() != null) { // you need to convert only new images that stay in the HL Workspace, this is the check
- String imageID = co.getId();
- co.setPossibleContent(getdDataImagebase64(imageID));
- _log.trace("Image converted base 64 OK, in SEQUENCE: " + co.getPossibleContent());
- }
- }
- }
- }
- }
- }
- }
-
-
- /**
- * convert the image into a String encoded base 64
- * @param imageIDinWorkspace the id of the image in workspace
- * @return the string representing the image converted to be put in the img src attribute e.g. data:image/ong;base64,a...z
- */
- private String getdDataImagebase64(String imageIDinWorkspace) {
- Workspace root = null;
- try {
- root = getWorkspaceArea();
-
- WorkspaceItem item = null;
- item = root.getItem(imageIDinWorkspace);
- if (item.getType() == WorkspaceItemType.FOLDER_ITEM) {
- _log.debug("Item is a Folder Item");
- FolderItem imageItem = (FolderItem) item;
- InputStream data = null;
-
- if (imageItem.getFolderItemType()==FolderItemType.EXTERNAL_IMAGE){
- _log.debug("EXTERNAL_IMAGE -|- " + item.getType() + " itemId=" + item.getId());
- ExternalImage image = (ExternalImage)item;
- _log.debug("EXTERNAL_IMAGE Name= " + item.getName() + " Asking InputStream ..");
- data = image.getData();
- _log.debug("Got inputStream");
- }
- else if (imageItem.getFolderItemType()==FolderItemType.IMAGE_DOCUMENT){
- GCubeItem image = (GCubeItem)item;
- if (image.getMimeType().equals("image/tiff"))
- // image.getProperties().getProperties().get(NodeProperty.THUMBNAIL_DATA); //this is a problem
- // else
- data = image.getData();
- }
- if (data != null) {
- _log.debug("Encoding image in base64");
- byte[] imageBytes = IOUtils.toByteArray(data);
- String extension = ImagesUtil.getImageExtension(imageItem);
- String srcAttrValue = "data:image/"+extension+";base64,"+DatatypeConverter.printBase64Binary(imageBytes);
- _log.debug("Encoded image=" + srcAttrValue);
- return srcAttrValue;
- }
- return null;
- }
- else
- return null;
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
-
/**
* @param reportItemid the report itemd id in basket to store in the session
*/
@@ -899,30 +416,7 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe
* used to save the report in the same folder
*/
public void saveReport(Model toSave) {
- Workspace root = null;
- try {
- root = getWorkspaceArea();
- } catch (Exception e) { e.printStackTrace();}
-
- WorkspaceItem item = null;
- String folderid = "";
- String itemName = "";
- try {
- if (getReportItemIDFromSession().equals("")) {
- folderid = getRootFolder();
- }
- else {
- item = root.getItem(getReportItemIDFromSession());
- folderid = item.getParent().getId();
- itemName = item.getName();
- }
- } catch (ItemNotFoundException e) {
- _log.error("ITEM NOT FOUND -> " + getReportItemIDFromSession());
-
- } catch (InternalErrorException e) {
- e.printStackTrace();
- }
- saveReport(toSave, folderid, itemName);
+ _log.warn("saveReport Not supported anymore");
}
@@ -932,134 +426,10 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe
*
*/
public void saveReport(Model toSave, String folderid, String newname) {
-
- Model model = toSave;
-
- storeTemplateInSession(toSave);
- _log.info("Serializing Model in folder: " + folderid );
- _log.info("Trying to convert dynamic images ... ");
- convertDynamicImagesFromHL(model);
-
- ServiceUtil myUtil = new ServiceUtil(getASLSession());
- boolean result = myUtil.writeModel(model, "CURRENT_OPEN", getVreName(), getUsername());
-
- try {
- ModelReader reader = new ModelReader(model);
- System.out.println(reader);
- } catch (Exception e) {
- _log.warn("ModelReader fails to read this report, continue...");
- }
-
-
- if (!result) {
- _log.debug("Could not save report, serializing failed");
- }
- else {
- String templatePath = myUtil.getTemplateFolder(getVreName(), getUsername()) + "CURRENT_OPEN";
- try {
- Thread.sleep(1000);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
-
- _log.debug("Trying to zip folder: " + templatePath);
-
- String folderToZip = templatePath;
- String outZip = templatePath+"-report.zip";
-
- try {
- ZipUtil.zipDir(outZip, folderToZip);
- } catch (IOException e) {
- _log.error("Could not zip template, serializing failed");
- e.printStackTrace();
- }
- _log.info("Folder zipped, result: "+ outZip);
-
- InputStream isZip = null;
-
- WorkspaceFolder toSaveIn = null;
- try {
- isZip = new BufferedInputStream(new FileInputStream(outZip));
-
- toSaveIn = getRootFolder(folderid);
-
- String templateName = newname;
-
- boolean isUpdate = false;
- if (templateName.endsWith("d4sR") ) {
- if (toSaveIn.exists(templateName)) {
- _log.warn("Item exists already, updating");
- //toSaveIn.removeChild(toSaveIn.find(templateName));
- isUpdate = true;
- }
- }
-
- if (toSaveIn.exists(templateName + ".d4sR")) {
- _log.warn("Item exists already, updating");
- //toSaveIn.removeChild(toSaveIn.find(templateName + ".d4sR"));
- isUpdate = true;
- }
-
- //remove the template extension
- String templateToInsert = templateName.replace(".d4sT", "");
- if (! templateToInsert.endsWith(".d4sR"))
- templateToInsert+=".d4sR";
-
- Report rep = null;
- if (isUpdate) {
- rep = (Report) toSaveIn.find(templateName);
- getWorkspaceArea().updateItem(rep.getId(), isZip);
- } else { //is new
- Calendar dateCreated = Calendar.getInstance();
- dateCreated.setTime(model.getDateCreated());
-
- Calendar lastEdit = Calendar.getInstance();
- lastEdit.setTime(model.getLastEdit());
-
- rep = toSaveIn.createReportItem(templateToInsert, templateToInsert, dateCreated, lastEdit,
- model.getAuthor(), model.getLastEditBy(), templateToInsert, model.getSections().size(), "no-status", isZip);
- }
-
- storeReportItemIDInSession(rep.getId());
-
-
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
-
- /**
- * Return an instance of the root folder
- * @param folderId
- * @return
- * @throws ItemNotFoundException
- */
- private WorkspaceFolder getRootFolder(String folderId) throws ItemNotFoundException {
- Workspace root = null;
- try {
- root = getWorkspaceArea();
- } catch (WorkspaceFolderNotFoundException e) {e.printStackTrace();
- } catch (InternalErrorException e) { e.printStackTrace();
- } catch (HomeNotFoundException e) { e.printStackTrace();
- }
-
- WorkspaceItem item = null;
- try {
- item = root.getItem(folderId);
- } catch (ItemNotFoundException e) {
- _log.info("Folder : " + folderId + " NOT FOUND RETURNING DEFAULT ONE");
- return(WorkspaceFolder)root.getItem(getRootFolder());
-
-
- }
- if (item.getType() == WorkspaceItemType.FOLDER || item.getType() == WorkspaceItemType.SHARED_FOLDER) {
- return (WorkspaceFolder) item;
- }
- _log.error("The item id does not belong to a valid folder id:" + folderId);
- return null;
+ _log.warn("saveReport Not supported anymore");
}
+ /*
/**
* return a sample of the given TS to the client
@@ -1067,61 +437,10 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe
* @return .
*/
public Table getSampleTimeSeries(RepTimeSeries sTS) {
-
- File csvTS = getTimeSeriesFromWorkspace(sTS);
- Table toReturn = null;
- try {
- toReturn = parseCSV(csvTS, sTS);
- } catch (ParseException e) { e.printStackTrace();
- } catch (IOException e) { e.printStackTrace();
- } catch (ProcessingException e) { e.printStackTrace();
- }
-
- return toReturn;
+ return null;
}
- /**
- * retrieve the given TS csv representation and writes it into /tmp returning the File
- * @param sTS serializable TS
- * @return a File csv
- */
- private File getTimeSeriesFromWorkspace(RepTimeSeries sTS) {
- try {
- String timeSeriesBasketID = sTS.getTsMetadata().getId();
-
- Workspace root = null;
- try {
- root = getWorkspaceArea();
- } catch (WorkspaceFolderNotFoundException e) {e.printStackTrace();
- } catch (InternalErrorException e) { e.printStackTrace();
- } catch (HomeNotFoundException e) { e.printStackTrace();
- }
- WorkspaceItem item = null;
- try {
- item = root.getItem(timeSeriesBasketID);
- } catch (ItemNotFoundException e) {
- e.printStackTrace();
- }
- _log.debug("Got Item TS From HL, Item Type: "+item.getType());
-
- if (item.getType() != WorkspaceItemType.FOLDER_ITEM) {
- _log.debug("The item id does not belong to a timeseries, id:" + timeSeriesBasketID);
- return null;
- }
- FolderItem bItem = (FolderItem) item;
- if (bItem.getFolderItemType() != FolderItemType.TIME_SERIES) {
- _log.debug("The basket item does not belong to a timeseries, id:" + timeSeriesBasketID);
- return null;
- }
-
- TimeSeries ts = (TimeSeries) bItem;
- return getTSFromBasket(ts);
- }
- catch (NullPointerException e) {
- _log.error("No TS was dragged in the Area returning NULL");
- return null;
- }
- }
+
/**
*
@@ -1211,43 +530,7 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe
}
- /**
- * get the TS from the Basket
- * @param ts
- * @return a csv file
- */
- private File getTSFromBasket(TimeSeries ts) {
- try {
- File temp = File.createTempFile(ts.getName(), ".csv");
-
- InputStream inputStream = null;
- try {
- inputStream = ts.getData();
- } catch (InternalErrorException e) {
- e.printStackTrace();
- return null;
- }
-
- OutputStream out = new FileOutputStream(temp);
-
- byte buf[] = new byte[1024];
- int len;
- while((len = inputStream.read(buf))>0)
- out.write(buf,0,len);
- out.close();
- inputStream.close();
- _log.debug("Successfully got TimeSeries from Basket: \n" + temp.getAbsolutePath());
- return temp;
- }
- catch (IOException e){
- e.printStackTrace();
- return null;
- } catch (InternalErrorException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- return null;
- }
+
/**