Massimiliano Assante 6 years ago
parent e9972d4742
commit cb093f81d5

@ -1,12 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="target/reports-manager-portlet-6.1.0-SNAPSHOT/WEB-INF/classes" path="src/main/java">
<classpathentry kind="src" output="target/reports-manager-portlet-6.2.0-SNAPSHOT/WEB-INF/classes" path="src/main/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="**" kind="src" output="target/reports-manager-portlet-6.1.0-SNAPSHOT/WEB-INF/classes" path="src/main/resources">
<classpathentry excluding="**" kind="src" output="target/reports-manager-portlet-6.2.0-SNAPSHOT/WEB-INF/classes" path="src/main/resources">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
@ -34,10 +34,10 @@
</attributes>
</classpathentry>
<classpathentry kind="con" path="com.google.gwt.eclipse.core.GWT_CONTAINER"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7">
<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/reports-manager-portlet-6.1.0-SNAPSHOT/WEB-INF/classes"/>
<classpathentry kind="output" path="target/reports-manager-portlet-6.2.0-SNAPSHOT/WEB-INF/classes"/>
</classpath>

@ -1,6 +1,6 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=1.7
org.eclipse.jdt.core.compiler.debug.lineNumber=generate

@ -5,7 +5,7 @@
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/target/generated-sources/gwt"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/>
<dependent-module archiveName="session-checker-1.1.0-SNAPSHOT.jar" deploy-path="/WEB-INF/lib" handle="module:/resource/session-checker/session-checker">
<dependent-module archiveName="storagehub-icons-library-1.0.0-SNAPSHOT.jar" deploy-path="/WEB-INF/lib" handle="module:/resource/storagehub-icons-library/storagehub-icons-library">
<dependency-type>uses</dependency-type>
</dependent-module>
<dependent-module archiveName="gcube-reporting-library-3.6.0-SNAPSHOT.jar" deploy-path="/WEB-INF/lib" handle="module:/resource/gcube-reporting-library/gcube-reporting-library">

@ -1,4 +1,8 @@
<ReleaseNotes>
<Changeset component="org.gcube.portlets-user.report-generator-portlet.6-2-0"
date="2018-06-26">
<Change>Removed obsolete dependencies</Change>
</Changeset>
<Changeset component="org.gcube.portlets-user.report-generator-portlet.6-1-0"
date="2017-01-29">
<Change>Removed dependency towards access logger</Change>

@ -12,7 +12,7 @@
<groupId>org.gcube.portlets.user</groupId>
<artifactId>reports-manager-portlet</artifactId>
<packaging>war</packaging>
<version>6.1.0-SNAPSHOT</version>
<version>6.2.0-SNAPSHOT</version>
<name>gCube Reports Manager</name>
<description>
gCube Reports Portlet.
@ -32,7 +32,7 @@
<setClassifier>online</setClassifier>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
<maven.compiler.target>1.8</maven.compiler.target>
<webappDirectory>${project.build.directory}/${project.build.finalName}</webappDirectory>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@ -68,15 +68,6 @@
<version>${gwtVersion}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.github.gwtbootstrap</groupId>
<artifactId>gwt-bootstrap</artifactId>
</dependency>
<dependency>
<groupId>org.gcube.portlets.widgets</groupId>
<artifactId>session-checker</artifactId>
<version>[1.0.0-SNAPSHOT, 2.0.0-SNAPSHOT)</version>
</dependency>
<dependency>
<groupId>org.gcube.core</groupId>
<artifactId>common-scope-maps</artifactId>
@ -113,16 +104,17 @@
<version>2.7.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.allen-sauer.gwt.log</groupId>
<artifactId>gwt-log</artifactId>
<version>3.1.7</version>
</dependency>
<dependency>
<groupId>org.gcube.application</groupId>
<artifactId>gcube-reporting-modeler</artifactId>
<version>[1.0.0-SNAPSHOT, 2.0.0-SNAPSHOT)</version>
</dependency>
<dependency>
<groupId>org.gcube.common.portal</groupId>
<artifactId>portal-manager</artifactId>
<scope>provided</scope>
</dependency>
<!-- reports-store-gateway-client -->
<dependency>
<groupId>org.gcube.application.rsg</groupId>
<artifactId>reports-store-gateway-client</artifactId>
@ -165,35 +157,13 @@
<dependency>
<groupId>org.gcube.portlets.widgets</groupId>
<artifactId>workspace-explorer</artifactId>
<version>[1.0.0-SNAPSHOT, 2.0.0-SNAPSHOT)</version>
</dependency>
<dependency>
<groupId>org.gcube.portlets.widgets</groupId>
<artifactId>report-exporter-widget</artifactId>
<version>[2.0.0-SNAPSHOT, 3.0.0-SNAPSHOT)</version>
<exclusions>
<exclusion>
<artifactId>xalan</artifactId>
<groupId>xalan</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.gcube.portal</groupId>
<artifactId>gcube-reporting-library</artifactId>
<version>[3.4.0-SNAPSHOT, 4.0.0-SNAPSHOT)</version>
</dependency>
<dependency>
<groupId>org.gcube.portlets.widgets</groupId>
<artifactId>fileupload-progress-bar</artifactId>
<version>[1.0.0-SNAPSHOT, 2.0.0-SNAPSHOT)</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.gcube.portlets.user</groupId>
<artifactId>workspace-application-handler</artifactId>
<version>[1.0.0-SNAPSHOT, 2.0.0-SNAPSHOT)</version>
</dependency>
<dependency>
<groupId>org.gcube.dvos</groupId>
<artifactId>usermanagement-core</artifactId>
@ -304,7 +274,7 @@
<version>2.3.2</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<target>1.8</target>
</configuration>
</plugin>
<!-- SA Plugin -->

@ -49,10 +49,6 @@ public class Headerbar extends Composite{
private static final String ADD_BIBLIO_ENTRY = "Add citation";
private static final String VIEW_BIBLIO = "View Bibliography";
private static final String MANAGE_BIBLIO = "Delete citation(s)";
private static final String EXPORT_OPENXML = "Export to OpenXML (docx)";
private static final String EXPORT_HTML = "Export to HTML";
private static final String EXPORT_FIMES = "Export to FiMES XML";
private static final String EXPORT_XML = "Export to XML";
private static final String IMPORT_VME = "Edit VME";
// private static final String EXPORT_ENCRYPTED_REPORT = "Save an Encrypted Version to Desktop";
@ -142,11 +138,6 @@ public class Headerbar extends Composite{
separator3 = menuBar.addSeparator();
biblioMenu = getBiblioMenu();
menuBar.addItem(biblioMenu);
separator4 = menuBar.addSeparator();
exportMenu = getExportsMenu();
menuBar.addItem(exportMenu);
mainLayout.setSize("100%", "24px");
mainLayout.setStyleName("menubar");
@ -195,9 +186,6 @@ public class Headerbar extends Composite{
MenuItem vmeMenuDelete = getVMEMenuDelete();
menuBar.addItem(vmeMenuDelete);
menuBar.addSeparator();
exportMenu = getExportsMenu();
menuBar.addItem(exportMenu);
}
public void setMenuForWorkflowDocument(boolean canUpdate) {
@ -222,14 +210,9 @@ public class Headerbar extends Composite{
separator3 = menuBar.addSeparator();
biblioMenu = getBiblioMenu();
menuBar.addItem(biblioMenu);
separator4 = menuBar.addSeparator();
exportMenu = getExportsMenu();
menuBar.addItem(exportMenu);
ReportGenerator.get().getToolbarPanel().clear();
ReportGenerator.get().getToolbarPanel().add(new HTML("&nbsp;&nbsp;", true));
enableExports();
}
/**
* Redirect to VRE Deployer Portlet
@ -501,32 +484,6 @@ public class Headerbar extends Composite{
return toReturn;
}
private MenuItem getExportsMenu() {
MenuBar exportsMenu = new MenuBar(true);
exportsMenu.setAnimationEnabled(true);
MenuItem toReturn = new MenuItem("Export", exportsMenu);
optionDOCX = new MenuItem("<font color=\"gray\">"+ EXPORT_OPENXML +"</font>", true, getDisabledExportMenuItemCmd());
optionPDF = new MenuItem("<font color=\"gray\">Export to PDF</font>", true, getDisabledExportMenuItemCmd());
optionHTML = new MenuItem("<font color=\"gray\">"+ EXPORT_HTML +"</font>", true, getDisabledExportMenuItemCmd());
optionFimes = new MenuItem("<font color=\"gray\">"+ EXPORT_FIMES +"</font>", true, getDisabledExportMenuItemCmd());
optionXML = new MenuItem("<font color=\"gray\">"+ EXPORT_XML +"</font>", true, getDisabledExportMenuItemCmd());
// optionEncryptedModel = new MenuItem("<font color=\"gray\">"+ EXPORT_ENCRYPTED_REPORT +"</font>", true, getDisabledExportMenuItemCmd());
exportsMenu.addItem(optionDOCX);
exportsMenu.addItem(optionHTML);
exportsMenu.addItem(optionPDF);
exportsMenu.addItem(optionXML);
exportsMenu.addSeparator();
// exportsMenu.addItem(optionEncryptedModel);
//optionsMenu.addItem(optionPDF);
//exportsMenu.addItem(optionFimes);
return toReturn;
}
private MenuItem getViewMenu() {
Command openPageProperties = new Command() {
public void execute() {
@ -560,40 +517,7 @@ public class Headerbar extends Composite{
return toReturn;
}
/**
* rewrite with setHTML to remove the gray color
*/
public void enableExports() {
optionDOCX.setHTML(EXPORT_OPENXML);
optionDOCX.setScheduledCommand(generateDOCX);
optionPDF.setHTML("Export to PDF");
optionPDF.setScheduledCommand(generatePDF);
optionHTML.setHTML(EXPORT_HTML);
optionHTML.setScheduledCommand(generateHTML);
optionFimes.setHTML(EXPORT_FIMES);
optionFimes.setScheduledCommand(generateFimes);
optionXML.setHTML(EXPORT_XML);
optionXML.setScheduledCommand(generatedXML);
// optionEncryptedModel.setHTML(EXPORT_ENCRYPTED_REPORT);
//
// importModel.setHTML("Import from Template or Report");
// importModel.setScheduledCommand(importModelOrReport);
//
// viewMetadata.setHTML("View Metadata");
// viewMetadata.setScheduledCommand(openMetadata);
// discardSection.setHTML("Discard current");
// discardSection.setScheduledCommand(discardSectionCom);
}
/**
* rewrite with setHTML to remove the gray color
@ -619,7 +543,6 @@ public class Headerbar extends Composite{
public void execute() {
if (! ReportConstants.isDeployed) {
presenter.openTemplate("", "", true);
enableExports();
}
else {
String url = "https://gcube.wiki.gcube-system.org/gcube/index.php/Common_Functionality#Report_Management";
@ -695,31 +618,6 @@ public class Headerbar extends Composite{
}
};
ScheduledCommand generateDOCX = new ScheduledCommand() {
public void execute() {
presenter.generateManifestation(templateModel, ExportManifestationType.DOCX);
}
};
ScheduledCommand generatePDF = new ScheduledCommand() {
public void execute() {
// Window.alert("PDF Exporting may not be fully working, you can also generate a PDF using your Word Processor application starting from the docx exported file");
presenter.generateManifestation(templateModel, ExportManifestationType.PDF);
}
};
ScheduledCommand generateHTML = new ScheduledCommand() {
public void execute() {
presenter.generateManifestation(templateModel, ExportManifestationType.HTML);
}
};
ScheduledCommand generatedXML = new ScheduledCommand() {
public void execute() {
presenter.generateManifestation(templateModel, ExportManifestationType.XML);
}
};
ScheduledCommand generateEncryptedModel = new ScheduledCommand() {
@Override
public void execute() {
@ -845,8 +743,7 @@ public class Headerbar extends Composite{
dlg.setAnimationEnabled(true);
dlg.show();
presenter.getHeader().enableExports();
}
}
@Override
public void onFailed(Throwable throwable) {
Window.alert("There are networks problem, please check your connection.");

@ -33,7 +33,6 @@ import org.gcube.portlets.user.reportgenerator.client.events.RemovedUserCommentE
import org.gcube.portlets.user.reportgenerator.client.events.RemovedUserCommentEventHandler;
import org.gcube.portlets.user.reportgenerator.client.events.SelectedReportEvent;
import org.gcube.portlets.user.reportgenerator.client.events.SelectedReportEventHandler;
import org.gcube.portlets.user.reportgenerator.client.model.ExportManifestationType;
import org.gcube.portlets.user.reportgenerator.client.model.TemplateComponent;
import org.gcube.portlets.user.reportgenerator.client.model.TemplateModel;
import org.gcube.portlets.user.reportgenerator.client.model.TemplateSection;
@ -52,34 +51,19 @@ import org.gcube.portlets.user.reportgenerator.client.targets.HeadingTextArea;
import org.gcube.portlets.user.reportgenerator.client.targets.ReportTextArea;
import org.gcube.portlets.user.reportgenerator.client.targets.TextTableImage;
import org.gcube.portlets.user.reportgenerator.client.toolbar.RichTextToolbar;
import org.gcube.portlets.user.reportgenerator.client.uibinder.ExportOptions;
import org.gcube.portlets.user.reportgenerator.shared.ReportImage;
import org.gcube.portlets.user.reportgenerator.shared.SessionInfo;
import org.gcube.portlets.user.reportgenerator.shared.UserBean;
import org.gcube.portlets.user.reportgenerator.shared.VMETypeIdentifier;
import org.gcube.portlets.user.reportgenerator.shared.VmeExportResponse;
import org.gcube.portlets.user.reportgenerator.shared.VmeResponseEntry;
import org.gcube.portlets.widgets.exporter.client.ReportExporterPopup;
import org.gcube.portlets.widgets.exporter.client.event.ExportingCompletedEvent;
import org.gcube.portlets.widgets.exporter.client.event.ExportingCompletedEventHandler;
import org.gcube.portlets.widgets.exporter.client.event.ReportExporterEvent;
import org.gcube.portlets.widgets.exporter.client.event.ReportExporterEventHandler;
import org.gcube.portlets.widgets.exporter.shared.TypeExporter;
import org.gcube.portlets.widgets.fileupload.client.events.FileUploadCompleteEvent;
import org.gcube.portlets.widgets.fileupload.client.events.FileUploadCompleteEventHandler;
import org.gcube.portlets.widgets.fileupload.client.events.FileUploadSelectedEvent;
import org.gcube.portlets.widgets.fileupload.client.events.FileUploadSelectedEventHandler;
import org.gcube.portlets.widgets.fileupload.client.view.UploadProgressDialog;
import com.extjs.gxt.ui.client.event.Listener;
import com.extjs.gxt.ui.client.event.MessageBoxEvent;
import com.extjs.gxt.ui.client.widget.Dialog;
import com.extjs.gxt.ui.client.widget.MessageBox;
import com.google.gwt.core.client.GWT;
import com.google.gwt.core.client.RunAsyncCallback;
import com.google.gwt.event.shared.HandlerManager;
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.HTML;
@ -113,7 +97,7 @@ public class Presenter {
private final WaitingOperationDialog dlg = new WaitingOperationDialog();
private UploadProgressDialog uploadDlg;
private UserBean currentUser;
private String currentScope;
@ -165,55 +149,7 @@ public class Presenter {
private void handleEvents() {
/**
* get the uploaded selected file name before submitting it
*/
eventBus.addHandler(FileUploadSelectedEvent.TYPE, new FileUploadSelectedEventHandler() {
@Override
public void onFileSelected(FileUploadSelectedEvent event) {
String fileName = event.getSelectedFileName();
GWT.log("selected file name: " + fileName);
if (fileName.endsWith(".jpg") || fileName.endsWith(".jpeg") || fileName.endsWith(".png")
|| fileName.endsWith(".gif") || fileName.endsWith(".bmp") || fileName.endsWith(".d4sR")) {
try {
uploadDlg.submitForm();
} catch (Exception e) {
e.printStackTrace();
}
}
else {
Window.alert("File type not allowed");
uploadDlg.hide();
}
}
});
/**
* get the uploaded file result
*/
eventBus.addHandler(FileUploadCompleteEvent.TYPE, new FileUploadCompleteEventHandler() {
@Override
public void onUploadComplete(FileUploadCompleteEvent event) {
//the filename and its path on server are returned to the client
String fileName = event.getUploadedFileInfo().getFilename();
String absolutePathOnServer = event.getUploadedFileInfo().getAbsolutePath();
GWT.log(fileName + " uploaded on Server here: " + absolutePathOnServer);
reportService.getUploadedImageUrlById(fileName, absolutePathOnServer, new AsyncCallback<ReportImage>() {
@Override
public void onFailure(Throwable caught) {
Window.alert("An error occurred in the server: " + caught.getMessage());
}
@Override
public void onSuccess(ReportImage result) {
uploadDlg.showRegisteringResult(true); //or false if an error occurred
selectedImage.dropImage(result.getUrl(), result.getId(), result.getWidth(), result.getHeight());
}
});
}
});
eventBus.addHandler(SelectedReportEvent.TYPE, new SelectedReportEventHandler() {
@Override
public void onReportSelected(SelectedReportEvent event) {
@ -235,14 +171,6 @@ public class Presenter {
}
});
eventBus.addHandler(ExportingCompletedEvent.TYPE, new ExportingCompletedEventHandler() {
@Override
public void onExportFinished(ExportingCompletedEvent event) {
int top = 0;
ReportGenerator.get().getScrollerPanel().setVerticalScrollPosition(top);
showExportSaveOptions(event.getFilePath(), event.getItemName(), event.getType());
}
});
eventBus.addHandler(AddBiblioEvent.TYPE, new AddBiblioEventHandler() {
public void onAddCitation(AddBiblioEvent event) {
@ -261,26 +189,6 @@ public class Presenter {
}
});
eventBus.addHandler(ReportExporterEvent.TYPE, new ReportExporterEventHandler() {
@Override
public void onCompletedExport(ReportExporterEvent event) {
switch (event.getOperationResult()) {
case SAVED:
//refreshWorkspace();
break;
case SAVED_OPEN:
// refreshWorkspace();
toolBoxPanel.showExportedVersion(event.getItemId(), event.getItemId());
break;
default:
break;
}
}
});
eventBus.addHandler(AddCommentEvent.TYPE, new AddCommentEventHandler() {
public void onAddComment(AddCommentEvent event) {
model.addCommentToComponent(event.getSourceComponent(), event.getComment(), event.getAreaHeight());
@ -343,12 +251,10 @@ public class Presenter {
public void onSuccess(Model result) {
if (isVME) {
header.setMenuForVME();
header.enableExports();
}
dlg.hide();
if (result != null) { //there was one report open in session
loadModel(result, true);
header.enableExports();
} else{
commonCommands.newTemplate.execute();
}
@ -697,44 +603,7 @@ public class Presenter {
*/
public void generateFiMES(final TemplateModel model) {
}
/**
*
* @param model .
* @param type .
*/
public void generateManifestation(final TemplateModel model, final ExportManifestationType type) {
GWT.runAsync(ReportExporterPopup.class, new RunAsyncCallback() {
@SuppressWarnings("incomplete-switch")
@Override
public void onSuccess() {
ReportExporterPopup popup = new ReportExporterPopup(eventBus);
Model reportModel = model.getSerializableModel();
switch (type) {
case DOCX:
popup.export(reportModel, TypeExporter.DOCX);
break;
case HTML:
popup.export(reportModel, TypeExporter.HTML);
break;
case PDF:
popup.export(reportModel, TypeExporter.PDF);
break;
case XML:
popup.export(reportModel, TypeExporter.XML);
break;
}
}
@Override
public void onFailure(Throwable reason) {
}
});
}
public void openAddCitationDialog() {
AddBiblioEntryDialog dlg = new AddBiblioEntryDialog(eventBus);
dlg.show();
@ -1124,23 +993,7 @@ public class Presenter {
public void refreshWorkspace() {
toolBoxPanel.refreshRoot();
}
/**
* show the upload file popup
*/
public void showUploadImagePopup(ClientImage selectedImage) {
uploadDlg = new UploadProgressDialog("Upload Image", eventBus, true);
uploadDlg.center();
uploadDlg.show();
this.selectedImage = selectedImage;
}
/**
* show the upload file popup
*/
public void showUploadFilePopup() {
uploadDlg = new UploadProgressDialog("Upload Report", eventBus);
uploadDlg.center();
uploadDlg.show();
}
/**
*
* @return the current selected rich text area
@ -1190,46 +1043,7 @@ public class Presenter {
this.exportsPanel = exportsPanel;
}
/**
* when export is done this method is called
* @param filePath
* @param itemName
* @param type
*/
public void showExportSaveOptions(final String filePath, final String itemName, final TypeExporter type) {
clearExportPanel();
/*
* I need to save a temp file, in case the user uses the Save & Open.
* Smart popup blockers will allow a popup if it is directly associated to a users action.
* If its delayed in anyway, theres a good chance its going to get blocked. The exported File needs to be there when clicking open.
*/
reportService.save(filePath, null, "system.tmp", type, true, new AsyncCallback<String>() {
@Override
public void onSuccess(String createdItemId) {
//here i pass the temp createdItemId
showExportPanel(filePath, itemName, type, createdItemId);
}
@Override
public void onFailure(Throwable caught) {
Window.alert("Error while trying exporting this report: " + caught.getMessage());
}
});
}
public void showExportPanel(final String filePath, final String itemName, final TypeExporter type, String tempFileId) {
final ExportOptions exo = new ExportOptions(this, toolBoxPanel, filePath, itemName, type, reportService, tempFileId);
exportsPanel.add(exo);
//needed for applying the css3 transition effect
final Timer t = new Timer() {
@Override
public void run() {
exo.getMainPanel().addStyleName("exportPanel-show");
}
};
t.schedule(10);
}
public void clearExportPanel() {
exportsPanel.clear();

@ -1,7 +1,6 @@
package org.gcube.portlets.user.reportgenerator.client;
import org.gcube.portlets.user.reportgenerator.client.Presenter.Presenter;
import org.gcube.portlets.widgets.sessionchecker.client.CheckSession;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.user.client.ui.CellPanel;
@ -129,8 +128,7 @@ public class ReportGenerator implements EntryPoint {
// Add image and button to the RootPanel
RootPanel.get("ReportGeneratorDIV").add(mainLayout);
//if you do not need to something when the session expire
CheckSession.getInstance().startPolling();
}

@ -10,9 +10,6 @@ import org.gcube.portlets.user.reportgenerator.shared.SessionInfo;
import org.gcube.portlets.user.reportgenerator.shared.VMEReportBean;
import org.gcube.portlets.user.reportgenerator.shared.VMETypeIdentifier;
import org.gcube.portlets.user.reportgenerator.shared.VmeExportResponse;
import org.gcube.portlets.widgets.exporter.shared.SaveReportFileException;
import org.gcube.portlets.widgets.exporter.shared.SaveReportFileExistException;
import org.gcube.portlets.widgets.exporter.shared.TypeExporter;
import com.google.gwt.user.client.rpc.RemoteService;
import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;
@ -35,10 +32,6 @@ public interface ReportService extends RemoteService{
Model importVMETemplate(VMETypeIdentifier refType);
String save(String filePath, String workspaceFolderId, String ItemName,
TypeExporter type, boolean overwrite)
throws SaveReportFileException, SaveReportFileExistException;
ReportImage getImageUrlById(String identifier);
/**
* return the first ten records of the timeseries having id as param

@ -10,7 +10,6 @@ import org.gcube.portlets.user.reportgenerator.shared.SessionInfo;
import org.gcube.portlets.user.reportgenerator.shared.VMEReportBean;
import org.gcube.portlets.user.reportgenerator.shared.VMETypeIdentifier;
import org.gcube.portlets.user.reportgenerator.shared.VmeExportResponse;
import org.gcube.portlets.widgets.exporter.shared.TypeExporter;
import com.google.gwt.user.client.rpc.AsyncCallback;
/**
@ -67,8 +66,7 @@ public interface ReportServiceAsync {
void readImportedModel(String tempPath, AsyncCallback<Model> callback);
void save(String filePath, String workspaceFolderId, String ItemName, TypeExporter type, boolean overwrite, AsyncCallback<String> callback);
void renewHTTPSession(AsyncCallback<Void> callback);
void listVMEReports(AsyncCallback<ArrayList<VMEReportBean>> callback);

@ -1,8 +1,5 @@
package org.gcube.portlets.user.reportgenerator.client;
import org.gcube.portlets.user.reportgenerator.client.Presenter.Presenter;
import org.gcube.portlets.widgets.fileupload.client.view.UploadProgressDialog;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.ui.VerticalPanel;

@ -189,7 +189,6 @@ public class ClientImage extends Composite {
}
private void showUploadPopup() {
presenter.showUploadImagePopup(this);
}
private VerticalPanel getAttributesPanel(BasicComponent co) {

@ -1,172 +0,0 @@
package org.gcube.portlets.user.reportgenerator.client.uibinder;
import java.util.Arrays;
import org.gcube.portlets.user.reportgenerator.client.ReportServiceAsync;
import org.gcube.portlets.user.reportgenerator.client.ToolboxPanel;
import org.gcube.portlets.user.reportgenerator.client.Presenter.Presenter;
import org.gcube.portlets.widgets.exporter.shared.TypeExporter;
import org.gcube.portlets.widgets.wsexplorer.client.notification.WorkspaceExplorerSaveNotification.WorskpaceExplorerSaveNotificationListener;
import org.gcube.portlets.widgets.wsexplorer.client.save.WorkspaceExplorerSaveDialog;
import org.gcube.portlets.widgets.wsexplorer.shared.Item;
import org.gcube.portlets.widgets.wsexplorer.shared.ItemType;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HTMLPanel;
import com.google.gwt.user.client.ui.Widget;
public class ExportOptions extends Composite {
private static ExportOptionsUiBinder uiBinder = GWT
.create(ExportOptionsUiBinder.class);
interface ExportOptionsUiBinder extends UiBinder<Widget, ExportOptions> {
}
enum ExportMode {SAVE_OPEN, SAVE, SAVE_AS }
ToolboxPanel tbp;
@UiField HTML saveOpen;
@UiField HTML save;
@UiField HTML saveAs;
@UiField HTML close;
@UiField HTMLPanel myPanel;
private String tempFileId;
private String filePath;
private String itemName;
private TypeExporter type;
private ReportServiceAsync rpc;
private Presenter p;
public ExportOptions(Presenter p, ToolboxPanel tbp, final String filePath, final String itemName, final TypeExporter type, ReportServiceAsync rpc, String tempFileId) {
initWidget(uiBinder.createAndBindUi(this));
this.tbp = tbp;
this.filePath = filePath;
this.itemName = itemName;
this.type= type;
this.rpc = rpc;
this.p = p;
this.tempFileId = tempFileId;
}
@UiHandler("close")
void onSaveCancel(ClickEvent e) {
myPanel.removeStyleName("exportPanel-show");
//needed for applying the css3 transition effect
final Timer t = new Timer() {
@Override
public void run() {
p.clearExportPanel();
}
};
t.schedule(500);
}
@UiHandler("saveOpen")
void onSaveOpenClick(ClickEvent e) {
GWT.log("SaveOPen");
doCallBack(ExportMode.SAVE_OPEN);
}
@UiHandler("save")
void onSaveClick(ClickEvent e) {
doCallBack(ExportMode.SAVE);
}
@UiHandler("saveAs")
void onSaveAs(ClickEvent e) {
doCallBack(ExportMode.SAVE_AS);
}
private void doCallBack(ExportMode mode) {
switch(mode) {
case SAVE:
rpc.save(filePath, null, itemName, type, true, new AsyncCallback<String>() {
@Override
public void onSuccess(String createdItemId) {
p.clearExportPanel();
tbp.refreshRoot();
}
@Override
public void onFailure(Throwable caught) {
Window.alert("Error: " + caught.getMessage());
}
});
break;
case SAVE_AS:
ItemType[] types = {ItemType.FOLDER};
final WorkspaceExplorerSaveDialog navigator = new WorkspaceExplorerSaveDialog("Save Report, choose folder please:", Arrays.asList(types));
WorskpaceExplorerSaveNotificationListener listener = new WorskpaceExplorerSaveNotificationListener(){
@Override
public void onSaving(Item parent, String fileName) {
rpc.save(filePath, parent.getId(), fileName, type, true, new AsyncCallback<String>() {
@Override
public void onSuccess(String createdItemId) {
p.clearExportPanel();
tbp.refreshRoot();
}
@Override
public void onFailure(Throwable caught) {
Window.alert("Error: " + caught.getMessage());
}
});
navigator.hide();
}
@Override
public void onAborted() {
GWT.log("onAborted");
}
@Override
public void onFailed(Throwable throwable) {
GWT.log("onFailed");
}
};
navigator.addWorkspaceExplorerSaveNotificationListener(listener);
navigator.show();
break;
case
SAVE_OPEN:
/*
* Smart popup blockers (Chrome and Safari have them) will allow a popup if it is directly associated to a users action.
* If its delayed in anyway, theres a good chance its going to get blocked.
* So the exported File needs to be there when clicking open, and I've saved a temp version previously.
*/
tbp.showExportedVersion(tempFileId, itemName);
rpc.save(filePath, null, itemName, type, true, new AsyncCallback<String>() {
@Override
public void onSuccess(String createdItemId) {
p.clearExportPanel();
tbp.refreshRoot();
}
@Override
public void onFailure(Throwable caught) {
Window.alert("Error: " + caught.getMessage());
}
});
break;
}
}
public HTMLPanel getMainPanel() {
return myPanel;
}
}

@ -1,34 +0,0 @@
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
xmlns:g="urn:import:com.google.gwt.user.client.ui">
<g:HTMLPanel styleName="exportPanel" ui:field="myPanel">
<div class="exportClose">
<g:HTML ui:field="close" styleName="closeImage" title="Cancel"></g:HTML>
</div>
<table style="width: 700px; text-align: center;">
<tr>
<td colspan="3">
<div class="exportResult">
Exporting Completed Succesfully</div>
</td>
</tr>
<tr>
<td>
<g:HTML ui:field="saveOpen" styleName="exportOption optionSaveOpen">Save &amp; Open</g:HTML>
</td>
<td>
<g:HTML ui:field="save" styleName="exportOption optionSave">Save</g:HTML>
</td>
<td>
<g:HTML ui:field="saveAs" styleName="exportOption optionSaveAs">Save As</g:HTML>
</td>
</tr>
<tr>
<td colspan="3">
<div class="tinyMessage">
Note: existing copies will be overwritten.</div>
</td>
</tr>
</table>
</g:HTMLPanel>
</ui:UiBinder>

@ -2,15 +2,12 @@ package org.gcube.portlets.user.reportgenerator.client.uibinder;
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.uibinder.ExportOptions.ExportMode;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HTMLPanel;

@ -52,7 +52,6 @@ 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.ItemAlreadyExistException;
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;
@ -61,6 +60,7 @@ 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.portal.PortalContext;
import org.gcube.common.resources.gcore.ServiceEndpoint;
import org.gcube.common.resources.gcore.ServiceEndpoint.AccessPoint;
import org.gcube.common.resources.gcore.ServiceEndpoint.Property;
@ -85,9 +85,6 @@ import org.gcube.portlets.user.reportgenerator.shared.VMEReportBean;
import org.gcube.portlets.user.reportgenerator.shared.VMETypeIdentifier;
import org.gcube.portlets.user.reportgenerator.shared.VmeExportResponse;
import org.gcube.portlets.user.reportgenerator.shared.VmeResponseEntry;
import org.gcube.portlets.widgets.exporter.shared.SaveReportFileException;
import org.gcube.portlets.widgets.exporter.shared.SaveReportFileExistException;
import org.gcube.portlets.widgets.exporter.shared.TypeExporter;
import org.gcube.resources.discovery.client.api.DiscoveryClient;
import org.gcube.resources.discovery.client.queries.api.SimpleQuery;
import org.gcube.vomanagement.usermanagement.RoleManager;
@ -1314,47 +1311,7 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe
return os.toByteArray();
}
@Override
public String save(String filePath, String workspaceFolderId, String itemName, TypeExporter type, boolean overwrite) throws SaveReportFileException, SaveReportFileExistException {
try {
File file = new File(filePath);
Workspace workspace = HomeLibrary.getUserWorkspace(getASLSession().getUsername());
_log.info("Saving in Workspace of " + workspace.getOwner().getPortalLogin());
WorkspaceFolder folder = (workspaceFolderId != null)?
(WorkspaceFolder)workspace.getItem(workspaceFolderId):workspace.getRoot();
itemName = itemName + "." + type.toString().toLowerCase();
if (workspace.exists(itemName, folder.getId())) {
if (overwrite)
workspace.remove(itemName, folder.getId());
else
throw new SaveReportFileException("The item " + itemName + " already exists");
}
switch (type) {
case PDF:
return folder.createExternalPDFFileItem(itemName,
"", null, new FileInputStream(file)).getId();
case HTML:
return folder.createExternalFileItem(itemName,
"", "text/html", new FileInputStream(file)).getId();
case DOCX:
return folder.createExternalFileItem(itemName,
"", "application/msword", new FileInputStream(file)).getId();
case XML:
return folder.createExternalFileItem(itemName,
"", "application/xml", new FileInputStream(file)).getId();
}
throw new SaveReportFileException("Unknown file type");
} catch (ItemAlreadyExistException e) {
throw new SaveReportFileExistException(e.getMessage());
} catch (Exception e) {
throw new SaveReportFileException(e.getMessage());
}
}
@Override
public void renewHTTPSession() {
@ -1667,14 +1624,13 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe
* @throws Exception
*/
private boolean isReportsStoreGatewayAvailable(){
String user = (String) this.getThreadLocalRequest().getSession().getAttribute(ScopeHelper.USERNAME_ATTRIBUTE);
String user = PortalContext.getConfiguration().getCurrentUser(getThreadLocalRequest()).getUsername();
if (user == null && isWithinPortal()) {
_log.warn("Session expired, returning ReportsStoreGateway not available");
return false;
}
String scope = getASLSession().getScope();
_log.info("Looking for a running ReportsStoreGateway WS in " + scope);
String previousScope = ScopeProvider.instance.get();
String scope = PortalContext.getConfiguration().getCurrentScope(getThreadLocalRequest());
_log.info("Looking for a running ReportsStoreGateway WS in " + scope);
ScopeProvider.instance.set(scope);
SimpleQuery query = queryFor(ServiceEndpoint.class);
query.addCondition("$resource/Profile/Category/string() eq 'Service'");
@ -1682,7 +1638,7 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe
DiscoveryClient<ServiceEndpoint> client = clientFor(ServiceEndpoint.class);
List<ServiceEndpoint> list = client.submit(query);
ScopeProvider.instance.set(previousScope);
if (list.size() > 1) {
_log.warn("Multiple ReportsStoreGateway Service Endpoints available in the scope, should be only one.");

@ -10,10 +10,6 @@
<inherits name='org.gcube.portlets.user.gcubewidgets.WidgetFactory' />
<inherits name='org.gcube.portlets.d4sreporting.common.Reporting' />
<inherits name='com.extjs.gxt.ui.GXT' />
<inherits name='org.gcube.portlets.widgets.fileupload.FileUpload' />
<inherits name='org.gcube.portlets.widgets.exporter.Report_exporter_widget' />
<inherits name='org.gcube.portlets.widgets.sessionchecker.SessionChecker' />
<inherits name="com.github.gwtbootstrap.Bootstrap" />
<!-- Specify the app entry point class. -->
<entry-point
class='org.gcube.portlets.user.reportgenerator.client.ReportGenerator' />

@ -1,9 +1,9 @@
name=Report Generator
module-group-id=liferay
module-incremental-version=1
module-incremental-version=2
tags=
short-description=
change-log=
page-url=http://www.liferay.com
author=Liferay, Inc.
licenses=MIT
page-url=http://www.gcube-system.org
author=gCube
licenses=EUPL

@ -24,27 +24,6 @@
<url-pattern>/reports/WorkspaceExplorerService</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>checkServlet</servlet-name>
<servlet-class>org.gcube.portlets.widgets.sessionchecker.server.SessionCheckerServiceImpl</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>checkServlet</servlet-name>
<url-pattern>/reports/checksession</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>uploadprogress</servlet-name>
<servlet-class>org.gcube.portlets.widgets.fileupload.server.UploadProgressServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>uploadprogress</servlet-name>
<url-pattern>/reports/uploadprogress</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>DownloadService</servlet-name>
<servlet-class>org.gcube.portlets.user.reportgenerator.server.servlet.DownloadImageServlet</servlet-class>
@ -55,41 +34,6 @@
<url-pattern>/reports/DownloadService</url-pattern>
</servlet-mapping>
<!-- DO NOT CHANGE - DO NOT Replace URL PATTERN HERE -->
<servlet>
<servlet-name>upload</servlet-name>
<servlet-class>org.gcube.portlets.widgets.fileupload.server.UploadServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>upload</servlet-name>
<url-pattern>/FileUpload/upload</url-pattern>
</servlet-mapping>
<!-- END DO NOT CHANGE -->
<servlet>
<servlet-name>remoteLoggerServiceImpl</servlet-name>
<servlet-class>com.allen_sauer.gwt.log.server.RemoteLoggerServiceImpl</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>remoteLoggerServiceImpl</servlet-name>
<url-pattern>/reports/gwt-log</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>convertServlet</servlet-name>
<servlet-class>org.gcube.portlets.widgets.exporter.server.ReportExporterServiceImpl</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>convertServlet</servlet-name>
<url-pattern>/reports/convert</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>DownloadEncryptedReport</servlet-name>
<servlet-class>org.gcube.portlets.user.reportgenerator.server.servlet.DownloadEncryptedReport</servlet-class>