diff --git a/.classpath b/.classpath index e6f84d8..0e86e18 100644 --- a/.classpath +++ b/.classpath @@ -1,6 +1,6 @@ - + @@ -31,5 +31,5 @@ - + diff --git a/.settings/com.google.gdt.eclipse.core.prefs b/.settings/com.google.gdt.eclipse.core.prefs index 550f60c..82cc1e7 100644 --- a/.settings/com.google.gdt.eclipse.core.prefs +++ b/.settings/com.google.gdt.eclipse.core.prefs @@ -2,6 +2,6 @@ <<<<<<<=.mine >>>>>>>=.r71295 eclipse.preferences.version=1 -lastWarOutDir=/Users/massi/Documents/workspace/reports/target/reports-4.7.3-SNAPSHOT +lastWarOutDir=/Users/massi/Documents/workspace/reports/target/reports-4.7.6-SNAPSHOT warSrcDir=src/main/webapp warSrcDirIsOutput=false diff --git a/pom.xml b/pom.xml index 47c270b..610959f 100644 --- a/pom.xml +++ b/pom.xml @@ -12,7 +12,7 @@ org.gcube.portlets.user reports war - 4.7.3-SNAPSHOT + 4.7.6-SNAPSHOT gCube Reports Manager gCube Reports Portlet. @@ -30,7 +30,7 @@ cersion --> provided online - + 1.7 1.7 ${project.build.directory}/${project.build.finalName} 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 956e110..a23fa7b 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 @@ -191,7 +191,7 @@ public class Headerbar extends Composite{ separator4 = menuBar.addSeparator(); - MenuItem vmeMenuDelete = getVMEMenuFake("Delete"); + MenuItem vmeMenuDelete = getVMEMenuDelete(); menuBar.addItem(vmeMenuDelete); menuBar.addSeparator(); @@ -332,24 +332,44 @@ public class Headerbar extends Composite{ } }; - private MenuItem getVMEMenuFake(String fakeOption) { + private MenuItem getVMEMenuDelete() { MenuBar createMenu = new MenuBar(true); createMenu.setAnimationEnabled(true); - MenuItem toReturn = new MenuItem(fakeOption+" VME-DB", createMenu); + MenuItem toReturn = new MenuItem("Delete VME-DB", createMenu); toReturn.getElement().getStyle().setWhiteSpace(WhiteSpace.NOWRAP); - MenuItem item = new MenuItem(""+fakeOption+" VME", true, getNullCommand()); + MenuItem item = new MenuItem("Delete VME", true, new Command() { + public void execute() { + presenter.showVMEDeleteDialog(VMETypeIdentifier.Vme); + } + }); createMenu.addItem(item); createMenu.addSeparator(); - item = new MenuItem(""+fakeOption+" VME General Measure", true, getNullCommand()); + item = new MenuItem("Delete VME General Measure", true, new Command() { + public void execute() { + presenter.showVMEDeleteDialog(VMETypeIdentifier.GeneralMeasure); + } + }); createMenu.addItem(item); - item = new MenuItem(""+fakeOption+" Information Source", true, getNullCommand()); + item = new MenuItem("Delete Information Source", true, new Command() { + public void execute() { + presenter.showVMEDeleteDialog(VMETypeIdentifier.InformationSource); + } + }); createMenu.addItem(item); - item = new MenuItem(""+fakeOption+" Fishing footprint", true, getNullCommand()); + item = new MenuItem("Delete Fishing footprint", true, new Command() { + public void execute() { + presenter.showVMEDeleteDialog(VMETypeIdentifier.FisheryAreasHistory); + } + }); createMenu.addItem(item); - item = new MenuItem(""+fakeOption+" Regional History of VMEs", true, getNullCommand()); + item = new MenuItem("Delete Regional History of VMEs", true, new Command() { + public void execute() { + presenter.showVMEDeleteDialog(VMETypeIdentifier.VMEsHistory); + } + }); createMenu.addItem(item); return toReturn; } diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/client/Presenter/CommonCommands.java b/src/main/java/org/gcube/portlets/user/reportgenerator/client/Presenter/CommonCommands.java index 73e9ec7..300bc42 100644 --- a/src/main/java/org/gcube/portlets/user/reportgenerator/client/Presenter/CommonCommands.java +++ b/src/main/java/org/gcube/portlets/user/reportgenerator/client/Presenter/CommonCommands.java @@ -80,9 +80,7 @@ public class CommonCommands { }; newTemplate = new Command() { public void execute() { - presenter.changeTemplateName(TemplateModel.DEFAULT_NAME); - presenter.cleanAll(); - presenter.showOpenOptions(); + presenter.newDoc(); } }; diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/client/Presenter/Presenter.java b/src/main/java/org/gcube/portlets/user/reportgenerator/client/Presenter/Presenter.java index a432bd3..c1959bd 100644 --- a/src/main/java/org/gcube/portlets/user/reportgenerator/client/Presenter/Presenter.java +++ b/src/main/java/org/gcube/portlets/user/reportgenerator/client/Presenter/Presenter.java @@ -18,7 +18,8 @@ import org.gcube.portlets.user.reportgenerator.client.ToolboxPanel; import org.gcube.portlets.user.reportgenerator.client.WorkspacePanel; import org.gcube.portlets.user.reportgenerator.client.dialog.AddBiblioEntryDialog; import org.gcube.portlets.user.reportgenerator.client.dialog.DeleteCitationsDialog; -import org.gcube.portlets.user.reportgenerator.client.dialog.ImportVMEReportDialog; +import org.gcube.portlets.user.reportgenerator.client.dialog.SelectVMEReportDialog; +import org.gcube.portlets.user.reportgenerator.client.dialog.SelectVMEReportDialog.Action; import org.gcube.portlets.user.reportgenerator.client.dialog.WaitingOperationDialog; import org.gcube.portlets.user.reportgenerator.client.events.AddBiblioEvent; import org.gcube.portlets.user.reportgenerator.client.events.AddBiblioEventHandler; @@ -56,6 +57,8 @@ import org.gcube.portlets.user.reportgenerator.client.uibinder.ExportOptions; 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; @@ -117,6 +120,8 @@ public class Presenter { */ private ClientSequence clientSeqSelected = null; + private boolean isShowingStructure = false; + RichTextToolbar currentSelectedToolbar; RichTextArea areaForBiblio; @@ -129,6 +134,10 @@ public class Presenter { private boolean menuForWorkflowDocument = false; private boolean isVME = false; + /** + * by default is set to Type VME, because refs can only be imported and not opened from WorkSpace + */ + private VMETypeIdentifier currentVmeType = VMETypeIdentifier.Vme; /** * eventbus events handler */ @@ -144,16 +153,21 @@ public class Presenter { eventBus.addHandler(SelectedReportEvent.TYPE, new SelectedReportEventHandler() { @Override public void onReportSelected(SelectedReportEvent event) { - if (event.isAssociation()) { + switch (event.getAction()) { + case SELECT: + importVMEReport(event.getId(), event.getName(), event.getType()); + break; + case ASSOCIATE: try { - associateVMRReportRef(event.getType(), event.getId()); + associateVMEReportRef(event.getType(), event.getId()); } catch (Exception e) { e.printStackTrace(); } - } - else { - importVMEReport(event.getId(), event.getName(), event.getType()); - } + break; + case DELETE: + deleteVMEReport(event.getId(), event.getName(), event.getType()); + break; + } } }); @@ -305,7 +319,7 @@ public class Presenter { } public void showOpenOptions() { - wp.showOpenOptions(isVME); + wp.showOpenOptions(isVME); } public void showLoading() { @@ -529,20 +543,35 @@ public class Presenter { * */ public void exportReportToRSG() { - dlg.center(); - dlg.show(); - Model toSave = model.getSerializableModel(); - reportService.exportReportToRSG(toSave, new AsyncCallback() { - public void onFailure(Throwable caught) { - dlg.hide(); - MessageBox.alert("Warning","Report Not Exported: " + caught.getMessage(), null); - } - public void onSuccess(Void result) { - dlg.hide(); - MessageBox.info("Exporting to RSG Operation","Report Exported Successfully", null); - refreshWorkspace(); - } - }); + if (Window.confirm("Are you sure you want to commit the " + model.getTemplateName() + " into the VME Database?")) { + dlg.center(); + dlg.show(); + Model toSave = model.getSerializableModel(); + reportService.exportReportToRSG(currentVmeType, toSave, new AsyncCallback() { + public void onFailure(Throwable caught) { + dlg.hide(); + MessageBox.alert("Warning","Report Not Exported: " + caught.getMessage(), null); + } + public void onSuccess(VmeExportResponse response) { + dlg.hide(); + //write ok + if (response.isGloballySucceded()) + MessageBox.info("Exporting to RSG Operation","Report Exported Successfully", null); + //runtime exception + else if (response.getResponseMessageList().size() == 1 && response.getResponseMessageList().get(0).getResponseEntryCode().equals("RUNTIME_EXCEPTION")) { + MessageBox.alert("Exporting to RSG Operation Failed","Report Exporting has failed for the following reason:
" + response.getResponseMessageList().get(0).getResponseMessage(), null); + } + //user report compile exception + else { + String failReasons = ""; + for (VmeResponseEntry entry : response.getResponseMessageList()) { + failReasons += entry.getResponseMessage() + "
"; + } + MessageBox.alert("Exporting to RSG Operation Failed","Report Exporting has failed for the following reasons:
" + failReasons, null); + } + } + }); + } } /** * Save the current report in a given folder @@ -829,7 +858,9 @@ public class Presenter { if (currPage > 1) titleBar.getSectionSwitchPanel().showPrevButton(); - + if (isShowingStructure) + showStructure(); + } /** @@ -1149,18 +1180,23 @@ public class Presenter { /** * show/hide the structure view */ - boolean hidden = true; + public void toggleReportStructure() { - if (hidden) { - toolBoxPanel.showStructure(new ReportStructurePanel(eventBus, model.getSerializableModel(), ToolboxPanel.TOOLBOX_WIDTH+"px", ToolboxPanel.TOOLBOX_HEIGHT+"px")); - hidden = false; + if (!isShowingStructure) { + showStructure(); + isShowingStructure = true; } else { toolBoxPanel.collapse(); - hidden = true; + isShowingStructure = false; } } + private void showStructure() { + toolBoxPanel.showStructure(new ReportStructurePanel(eventBus, model.getSerializableModel(), ToolboxPanel.TOOLBOX_WIDTH+"px", ToolboxPanel.TOOLBOX_HEIGHT+"px")); + + } + public HorizontalPanel getExportsPanel() { return exportsPanel; } @@ -1215,11 +1251,17 @@ public class Presenter { exportsPanel.clear(); } + public void newDoc() { + changeTemplateName(TemplateModel.DEFAULT_NAME); + cleanAll(); + showOpenOptions(); + } + /** * */ public void showVMEImportDialog() { - ImportVMEReportDialog dlg = new ImportVMEReportDialog(getEventBus(), VMETypeIdentifier.Vme, false); + SelectVMEReportDialog dlg = new SelectVMEReportDialog(getEventBus(), VMETypeIdentifier.Vme, Action.SELECT); dlg.show(); } @@ -1227,14 +1269,21 @@ public class Presenter { * */ public void showVMEReportRefImportDialog(VMETypeIdentifier refType) { - ImportVMEReportDialog dlg = new ImportVMEReportDialog(getEventBus(), refType, false); + SelectVMEReportDialog dlg = new SelectVMEReportDialog(getEventBus(), refType, Action.SELECT); dlg.show(); } /** * */ public void showVMERefAssociateDialog(VMETypeIdentifier refType) { - ImportVMEReportDialog dlg = new ImportVMEReportDialog(getEventBus(), refType, true); + SelectVMEReportDialog dlg = new SelectVMEReportDialog(getEventBus(), refType, Action.ASSOCIATE); + dlg.show(); + } + /** + * + */ + public void showVMEDeleteDialog(VMETypeIdentifier refType) { + SelectVMEReportDialog dlg = new SelectVMEReportDialog(getEventBus(), refType, Action.DELETE); dlg.show(); } @@ -1257,7 +1306,42 @@ public class Presenter { }); } - + + + private void deleteVMEReport(String reportId, String name, final VMETypeIdentifier type) { + if (Window.confirm("Are you sure you want to delete " + name + " from the VME Database? (This action is Undoable)")) { + showLoading(); + reportService.deleteReportFromRSG(type, reportId, new AsyncCallback() { + @Override + public void onFailure(Throwable caught) { + dlg.hide(); + Window.alert("Could not Delete, error on server.: " + caught.getMessage()); + } + + @Override + public void onSuccess(VmeExportResponse response) { + dlg.hide(); + //delete ok + if (response.getResponseMessageList().size() == 1 && response.getResponseMessageList().get(0).getResponseEntryCode().equalsIgnoreCase("SUCCEEDED")) + MessageBox.info("Delete VME Report Operation","Report Deleted Successfully", null); + //runtime exception + else if (response.getResponseMessageList().size() == 1 && response.getResponseMessageList().get(0).getResponseEntryCode().equals("RUNTIME_EXCEPTION")) { + MessageBox.alert("Delete VME Report Operation Failed","Report Delete has failed for the following reason:
" + response.getResponseMessageList().get(0).getResponseMessage(), null); + } + //user report compile exception + else { + String failReasons = ""; + for (VmeResponseEntry entry : response.getResponseMessageList()) { + failReasons += entry.getResponseMessage() + "
"; + } + MessageBox.alert("Deleting Operation Failed","Report Deletion has failed for the following reasons:
" + failReasons, null); + } + newDoc(); + } + }); + } + } + private void importVMEReport(String reportId, String name, final VMETypeIdentifier type) { showLoading(); reportService.importVMEReport(reportId, name, type, new AsyncCallback() { @@ -1270,15 +1354,15 @@ public class Presenter { public void onSuccess(Model toLoad) { if (toLoad != null) { loadModel(toLoad, type == VMETypeIdentifier.Vme); + currentVmeType = type; } else Window.alert("Could not Load Report Model, error on server."); } }); - } - private void associateVMRReportRef(VMETypeIdentifier type, String reportId) throws Exception { + private void associateVMEReportRef(VMETypeIdentifier type, String reportId) throws Exception { GWT.log("Type="+type); GWT.log("Id"+reportId); reportService.getVMEReportRef2Associate(reportId, type, new AsyncCallback() { diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/client/ReportService.java b/src/main/java/org/gcube/portlets/user/reportgenerator/client/ReportService.java index ddde1e3..b314a9a 100644 --- a/src/main/java/org/gcube/portlets/user/reportgenerator/client/ReportService.java +++ b/src/main/java/org/gcube/portlets/user/reportgenerator/client/ReportService.java @@ -8,6 +8,7 @@ import org.gcube.portlets.d4sreporting.common.shared.Table; 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; @@ -88,7 +89,10 @@ public interface ReportService extends RemoteService{ /** * @param toSave the report instance to save */ - void exportReportToRSG(Model toSave); + VmeExportResponse exportReportToRSG(VMETypeIdentifier refType, Model toSave); + + VmeExportResponse deleteReportFromRSG(VMETypeIdentifier refType, String idToDelete); + Model getWorkflowDocumentFromDocumentLibrary(); diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/client/ReportServiceAsync.java b/src/main/java/org/gcube/portlets/user/reportgenerator/client/ReportServiceAsync.java index c838253..718234b 100644 --- a/src/main/java/org/gcube/portlets/user/reportgenerator/client/ReportServiceAsync.java +++ b/src/main/java/org/gcube/portlets/user/reportgenerator/client/ReportServiceAsync.java @@ -8,6 +8,7 @@ import org.gcube.portlets.d4sreporting.common.shared.Table; 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; @@ -86,5 +87,8 @@ public interface ReportServiceAsync { void getVMEReportRef2Associate(String id, VMETypeIdentifier refType, AsyncCallback callback); void importVMETemplate(VMETypeIdentifier refType, AsyncCallback callback); - void exportReportToRSG(Model toSave, AsyncCallback callback); + void exportReportToRSG(VMETypeIdentifier refType, Model toSave, + AsyncCallback callback); + void deleteReportFromRSG(VMETypeIdentifier refType, String idToDelete, + AsyncCallback callback); } diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/client/dialog/ImportVMEReportDialog.java b/src/main/java/org/gcube/portlets/user/reportgenerator/client/dialog/SelectVMEReportDialog.java similarity index 76% rename from src/main/java/org/gcube/portlets/user/reportgenerator/client/dialog/ImportVMEReportDialog.java rename to src/main/java/org/gcube/portlets/user/reportgenerator/client/dialog/SelectVMEReportDialog.java index 36684b4..3243be2 100644 --- a/src/main/java/org/gcube/portlets/user/reportgenerator/client/dialog/ImportVMEReportDialog.java +++ b/src/main/java/org/gcube/portlets/user/reportgenerator/client/dialog/SelectVMEReportDialog.java @@ -15,7 +15,6 @@ import com.extjs.gxt.ui.client.event.GridEvent; import com.extjs.gxt.ui.client.event.Listener; import com.extjs.gxt.ui.client.event.SelectionListener; import com.extjs.gxt.ui.client.store.GroupingStore; -import com.extjs.gxt.ui.client.store.ListStore; import com.extjs.gxt.ui.client.store.Store; import com.extjs.gxt.ui.client.widget.ContentPanel; import com.extjs.gxt.ui.client.widget.Window; @@ -24,11 +23,10 @@ import com.extjs.gxt.ui.client.widget.form.StoreFilterField; import com.extjs.gxt.ui.client.widget.grid.ColumnConfig; import com.extjs.gxt.ui.client.widget.grid.ColumnModel; import com.extjs.gxt.ui.client.widget.grid.Grid; -import com.extjs.gxt.ui.client.widget.grid.GridSelectionModel; +import com.extjs.gxt.ui.client.widget.grid.GridGroupRenderer; +import com.extjs.gxt.ui.client.widget.grid.GroupColumnData; import com.extjs.gxt.ui.client.widget.grid.GroupingView; import com.extjs.gxt.ui.client.widget.layout.FitLayout; -import com.extjs.gxt.ui.client.widget.tips.QuickTip; -import com.extjs.gxt.ui.client.widget.tips.ToolTipConfig; import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.Style.Unit; import com.google.gwt.event.shared.HandlerManager; @@ -36,7 +34,7 @@ import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.HasVerticalAlignment; import com.google.gwt.user.client.ui.HorizontalPanel; -public class ImportVMEReportDialog extends Window { +public class SelectVMEReportDialog extends Window { private static final int WIDTH = 700; private static final int HEIGHT = 450; @@ -47,11 +45,13 @@ public class ImportVMEReportDialog extends Window { private StoreFilterField filter; private VMETypeIdentifier type; + public enum Action {SELECT, ASSOCIATE, DELETE } + /** * * @param eventBus the bus to fire events into */ - public ImportVMEReportDialog(final HandlerManager eventBus, VMETypeIdentifier type, final boolean isAssociation) { + public SelectVMEReportDialog(final HandlerManager eventBus, VMETypeIdentifier type, final Action action) { this.eventBus = eventBus; this.type = type; setModal(true); @@ -86,7 +86,7 @@ public class ImportVMEReportDialog extends Window { add(mainPanel); showLoading(); - setHeading(getHeading(type, isAssociation)); + setHeading(getHeading(type, action)); if (type == VMETypeIdentifier.Vme) { reportService.listVMEReports(new AsyncCallback>() { @Override @@ -97,7 +97,7 @@ public class ImportVMEReportDialog extends Window { @Override public void onSuccess(ArrayList refReports) { mainPanel.unmask(); - showAvailableReports(refReports, isAssociation); + showAvailableReports(refReports, action); } }); } else { @@ -110,17 +110,18 @@ public class ImportVMEReportDialog extends Window { @Override public void onSuccess(ArrayList refReports) { mainPanel.unmask(); - showAvailableReports(refReports, isAssociation); + showAvailableReports(refReports, action); } }); } } /** - * view for collections step - * @param vDesc + * + * @param reports + * @param isAssociation */ - public void showAvailableReports(List reports, final boolean isAssociation) { + public void showAvailableReports(List reports, final Action theAction) { ColumnModel cm = null; List configs = new ArrayList(); @@ -186,14 +187,30 @@ public class ImportVMEReportDialog extends Window { public void handleEvent(GridEvent ge) { if (ge != null && ge.getModel() != null) { hide(); - if (isAssociation) - associateSelected(grid.getSelectionModel().getSelectedItem(), type); - else - openSelected(grid.getSelectionModel().getSelectedItem(), type); + switch (theAction) { + case SELECT: + openSelected(grid.getSelectionModel().getSelectedItem(), type, theAction); + break; + case ASSOCIATE: + associateSelected(grid.getSelectionModel().getSelectedItem(), type, theAction); + break; + case DELETE: + deleteSelected(grid.getSelectionModel().getSelectedItem(), type, theAction); + break; + } } } }); - + + final ColumnModel finalCM = cm; + view.setGroupRenderer(new GridGroupRenderer() { + public String render(GroupColumnData data) { + String f = finalCM.getColumnById(data.field).getHeader(); + String l = data.models.size() == 1 ? "Item" : "Items"; + return f + ": " + data.group + " (" + data.models.size() + " " + l + ")"; + } + }); + view.setForceFit(true); ContentPanel gridPanel = new ContentPanel(new FitLayout()); gridPanel.setHeaderVisible(false); @@ -208,33 +225,47 @@ public class ImportVMEReportDialog extends Window { } })); - if (isAssociation) { + switch (theAction) { + case SELECT: + gridPanel.addButton(new Button("Open Selected", new SelectionListener() { + @Override + public void componentSelected(ButtonEvent ce) { + openSelected(grid.getSelectionModel().getSelectedItem(), type, theAction); + hide(); + } + })); + break; + case ASSOCIATE: gridPanel.addButton(new Button("Associate Selected", new SelectionListener() { @Override public void componentSelected(ButtonEvent ce) { hide(); - associateSelected(grid.getSelectionModel().getSelectedItem(), type); + associateSelected(grid.getSelectionModel().getSelectedItem(), type, theAction); } })); - } - else { - gridPanel.addButton(new Button("Open Selected", new SelectionListener() { + break; + case DELETE: + gridPanel.addButton(new Button("Delete Selected from VME-DB", new SelectionListener() { @Override public void componentSelected(ButtonEvent ce) { - openSelected(grid.getSelectionModel().getSelectedItem(), type); - hide(); + hide(); + deleteSelected(grid.getSelectionModel().getSelectedItem(), type, theAction); } })); - } + break; + } mainPanel.add(gridPanel); mainPanel.setLayout(new FitLayout()); mainPanel.layout(); } - private void associateSelected(VMEReportBean selectedItem, VMETypeIdentifier type) { - eventBus.fireEvent(new SelectedReportEvent(selectedItem.getId(), selectedItem.getName(), type, true)); + private void associateSelected(VMEReportBean selectedItem, VMETypeIdentifier type, Action theAction) { + eventBus.fireEvent(new SelectedReportEvent(selectedItem.getId(), selectedItem.getName(), type, theAction)); } - private void openSelected(VMEReportBean selectedItem, VMETypeIdentifier type) { - eventBus.fireEvent(new SelectedReportEvent(selectedItem.getId(), selectedItem.getName(), type, false)); + private void openSelected(VMEReportBean selectedItem, VMETypeIdentifier type, Action theAction) { + eventBus.fireEvent(new SelectedReportEvent(selectedItem.getId(), selectedItem.getName(), type, theAction)); + } + private void deleteSelected(VMEReportBean selectedItem, VMETypeIdentifier type, Action theAction) { + eventBus.fireEvent(new SelectedReportEvent(selectedItem.getId(), selectedItem.getName(), type, theAction)); } /** * @@ -248,7 +279,7 @@ public class ImportVMEReportDialog extends Window { * @param isAssociation * @return */ - private String getHeading(VMETypeIdentifier type, boolean isAssociation) { + private String getHeading(VMETypeIdentifier type, Action theAction) { String toReturn = ""; switch (type) { case Vme: @@ -273,8 +304,18 @@ public class ImportVMEReportDialog extends Window { toReturn = "Unknown Category!"; break; } - toReturn = isAssociation ? "Associate " + toReturn : "Edit " + toReturn; + switch (theAction) { + case SELECT: + toReturn = "Edit " + toReturn; + break; + case ASSOCIATE: + toReturn = "Associate " + toReturn; + break; + case DELETE: + toReturn = "Delete " + toReturn; + break; + } return toReturn; } } diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/client/events/SelectedReportEvent.java b/src/main/java/org/gcube/portlets/user/reportgenerator/client/events/SelectedReportEvent.java index 187ddb0..e18a2d3 100644 --- a/src/main/java/org/gcube/portlets/user/reportgenerator/client/events/SelectedReportEvent.java +++ b/src/main/java/org/gcube/portlets/user/reportgenerator/client/events/SelectedReportEvent.java @@ -1,5 +1,6 @@ package org.gcube.portlets.user.reportgenerator.client.events; +import org.gcube.portlets.user.reportgenerator.client.dialog.SelectVMEReportDialog.Action; import org.gcube.portlets.user.reportgenerator.shared.VMETypeIdentifier; import com.google.gwt.event.shared.GwtEvent; @@ -9,14 +10,14 @@ public class SelectedReportEvent extends GwtEvent{ private final String id; private final String name; private final VMETypeIdentifier type; - private final boolean isAssociation; + private final Action theAction; - public SelectedReportEvent(String id, String name, VMETypeIdentifier type, boolean isAssociation) { + public SelectedReportEvent(String id, String name, VMETypeIdentifier type, Action theAction) { super(); this.id = id; this.name = name; this.type = type; - this.isAssociation = isAssociation; + this.theAction = theAction; } public String getId() { @@ -31,8 +32,8 @@ public class SelectedReportEvent extends GwtEvent{ return type; } - public boolean isAssociation() { - return isAssociation; + public Action getAction() { + return theAction; } @Override diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/client/model/TemplateComponent.java b/src/main/java/org/gcube/portlets/user/reportgenerator/client/model/TemplateComponent.java index 8119cb9..231cf55 100644 --- a/src/main/java/org/gcube/portlets/user/reportgenerator/client/model/TemplateComponent.java +++ b/src/main/java/org/gcube/portlets/user/reportgenerator/client/model/TemplateComponent.java @@ -36,7 +36,6 @@ import org.gcube.portlets.user.reportgenerator.client.targets.TextTableImage; import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.Style.Unit; import com.google.gwt.user.client.ui.HTML; -import com.google.gwt.user.client.ui.Hidden; import com.google.gwt.user.client.ui.Widget; @@ -274,7 +273,7 @@ public class TemplateComponent { } } } - //is it is saved as a Report is an instance of this class else is a simple text in a template + //if it is saved as a Report is an instance of this class else is a simple text in a template if (sc.getPossibleContent() instanceof AttributeArea) { AttributeArea sata = (AttributeArea) sc.getPossibleContent(); //in the metadata in this case there an attribute for diplayType @@ -371,6 +370,7 @@ public class TemplateComponent { RepeatableSequence repeatableSequence = (RepeatableSequence) sc.getPossibleContent(); ClientRepeatableSequence rps = new ClientRepeatableSequence(presenter, repeatableSequence); rps.setMetadata(sc.getMetadata()); + rps.setId(sc.getId()); this.content = rps; break; case BODY_TABLE_IMAGE: @@ -380,6 +380,7 @@ public class TemplateComponent { } else { RepeatableSequence seq = (RepeatableSequence) sc.getPossibleContent(); tti = new TextTableImage(presenter, seq); + tti.setId(sc.getId()); } this.content = tti; break; @@ -521,13 +522,17 @@ public class TemplateComponent { break; case REPEAT_SEQUENCE: ClientRepeatableSequence repSeq = (ClientRepeatableSequence) this.content; - metas = repSeq.getMetadata(); - RepeatableSequence toStore = new RepeatableSequence(getSerializableSequence(repSeq), repSeq.getIdentifier(), height); + id = repSeq.getId(); + metas = repSeq.getMetadata(); + RepeatableSequence toStore = new RepeatableSequence(getSerializableSequence(repSeq), repSeq.getKey(), height); + content = toStore; break; case BODY_TABLE_IMAGE: TextTableImage tti = (TextTableImage) this.content; - RepeatableSequence toSave = new RepeatableSequence(getSerializableSequence(tti), height); + id = tti.getId(); + metas = tti.getMetadata(); + RepeatableSequence toSave = new RepeatableSequence(getSerializableSequence(tti), height); content = toSave; break; case REPORT_REFERENCE: @@ -551,7 +556,7 @@ public class TemplateComponent { GWT.log("Serializing sequence ... "); ArrayList sComps = new ArrayList(); for (TemplateComponent tc : repSeq.getGroupedComponents()) { - GWT.log(" Got " + tc.getType()); + //GWT.log(" Got " + tc.getType()); sComps.add(tc.getSerializable()); } return sComps; diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/client/model/TemplateModel.java b/src/main/java/org/gcube/portlets/user/reportgenerator/client/model/TemplateModel.java index 5d6055b..9842b0a 100644 --- a/src/main/java/org/gcube/portlets/user/reportgenerator/client/model/TemplateModel.java +++ b/src/main/java/org/gcube/portlets/user/reportgenerator/client/model/TemplateModel.java @@ -52,7 +52,10 @@ public class TemplateModel { public static final String BIBLIO_SECTION = "isBibliography"; public static final String USER_COMMENT = "isComment"; public static final String USER_COMMENT_HEIGHT = "isCommentHeight"; - + /** + * The id of the model + */ + private String id; /** * The name of the template */ @@ -275,6 +278,7 @@ public class TemplateModel { public void loadModel(Model toLoad, Presenter presenter) { //loading template from disk + this.id = toLoad.getUniqueID(); this.author = toLoad.getAuthor(); this.dateCreated = toLoad.getDateCreated(); this.lastEdit = toLoad.getLastEdit(); @@ -405,29 +409,12 @@ public class TemplateModel { } Model toReturn = - new Model("UniqueID", author, dateCreated, lastEdit, lastEditBy, templateName, columnWidth, currentPage, marginBottom, marginLeft, marginRight, marginTop, + new Model(id, author, dateCreated, lastEdit, lastEditBy, templateName, columnWidth, currentPage, marginBottom, marginLeft, marginRight, marginTop, pageHeight, pageWidth, serializedsections, totalPages, metadata); return toReturn; } - /** - * - * @param folderid . - * @param name . - */ - public void saveReport (Model toSave, String folderid, String name) { - - } - - /** - * - * - */ - public void saveReport (Model toSave) { - - } - - + /** * look for the model in the current page and edits its size * @param toResize . diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/AttributeMultiSelection.java b/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/AttributeMultiSelection.java index ee100ce..b99275d 100644 --- a/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/AttributeMultiSelection.java +++ b/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/AttributeMultiSelection.java @@ -94,6 +94,7 @@ public class AttributeMultiSelection extends Composite { CheckBox toAdd = new CheckBox(attr.getName()); toAdd.setStyleName("checkAttribute"); toAdd.setValue(attr.getValue()); + toAdd.setTitle(attr.getOptionalValue()); boxes[j] = toAdd; j++; } @@ -163,7 +164,7 @@ public class AttributeMultiSelection extends Composite { public AttributeArea getSerializable() { ArrayList values = new ArrayList(); for (CheckBox box : getBoxes()) { - values.add(new Attribute(box.getText().trim(), box.getValue())); + values.add(new Attribute(box.getText().trim(), box.getValue(), box.getTitle())); } return new AttributeArea(getAttrName().trim(), values); } diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/AttributeSingleSelection.java b/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/AttributeSingleSelection.java index 80e8a00..597de4c 100644 --- a/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/AttributeSingleSelection.java +++ b/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/AttributeSingleSelection.java @@ -96,6 +96,7 @@ public class AttributeSingleSelection extends Composite { RadioButton toAdd = new RadioButton(RADIO_NAME, attr.getName()); toAdd.setStyleName("checkAttribute"); toAdd.setValue(attr.getValue()); + toAdd.setTitle(attr.getOptionalValue()); boxes[j] = toAdd; j++; } @@ -164,7 +165,7 @@ public class AttributeSingleSelection extends Composite { public AttributeArea getSerializable() { ArrayList singlevalues = new ArrayList(); for (RadioButton box : getBoxes()) { - singlevalues.add(new Attribute(box.getText().trim(), box.getValue())); + singlevalues.add(new Attribute(box.getText().trim(), box.getValue(), box.getTitle())); } return new AttributeArea(getAttrName().trim(), singlevalues); } diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/ClientRepeatableSequence.java b/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/ClientRepeatableSequence.java index 8214e23..144cadb 100644 --- a/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/ClientRepeatableSequence.java +++ b/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/ClientRepeatableSequence.java @@ -7,8 +7,6 @@ import org.gcube.portlets.d4sreporting.common.shared.BasicComponent; import org.gcube.portlets.d4sreporting.common.shared.ComponentType; import org.gcube.portlets.d4sreporting.common.shared.Metadata; import org.gcube.portlets.d4sreporting.common.shared.RepeatableSequence; -import org.gcube.portlets.d4sreporting.common.shared.ReportReferences; -import org.gcube.portlets.d4sreporting.common.shared.Tuple; import org.gcube.portlets.user.reportgenerator.client.Presenter.Presenter; import org.gcube.portlets.user.reportgenerator.client.model.TemplateComponent; @@ -19,10 +17,11 @@ import com.google.gwt.user.client.ui.VerticalPanel; public class ClientRepeatableSequence extends Composite implements ClientSequence { protected ArrayList groupedComponents = new ArrayList(); + private String id; private List metas; private VerticalPanel myPanel = new VerticalPanel(); private Presenter p; - private String identifier; + private String key; protected RepeatableSequence repSequence; protected RepeatableSequence originalSequence = new RepeatableSequence(); @@ -34,7 +33,7 @@ public class ClientRepeatableSequence extends Composite implements ClientSequenc public ClientRepeatableSequence(Presenter p, RepeatableSequence sRS) { this.p = p; this.repSequence = sRS; - this.identifier = sRS.getKey(); + this.key = sRS.getKey(); this.originalSequence = extractOriginalSequence(sRS); SequenceWidget seqW = new SequenceWidget(p, this, originalSequence, true, false); myPanel.add(seqW); @@ -245,8 +244,8 @@ public class ClientRepeatableSequence extends Composite implements ClientSequenc add("not needed", sequence, false); } - public String getIdentifier() { - return identifier; + public String getKey() { + return key; } public List getMetadata() { @@ -256,6 +255,16 @@ public class ClientRepeatableSequence extends Composite implements ClientSequenc public void setMetadata(List metas) { this.metas = metas; } + + public String getId() { + if (id == null) + return "-1"; + return id; + } + + public void setId(String id) { + this.id = id; + } diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/ClientReportReference.java b/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/ClientReportReference.java index a9655cd..b41f977 100644 --- a/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/ClientReportReference.java +++ b/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/ClientReportReference.java @@ -148,6 +148,7 @@ public class ClientReportReference extends Composite implements ClientSequence, myPanel.add(seqW); first.hideClearAssociationButton(); } + this.id = id; //needed for the model Tuple toAdd = new Tuple(id, sequence.getGroupedComponents()); tupleList.add(toAdd); @@ -179,7 +180,7 @@ public class ClientReportReference extends Composite implements ClientSequence, e.printStackTrace(); } p.showVMERefAssociateDialog(type2Pass); - p.setClientSequenceSelected(this); //important! + p.setClientSequenceSelected(this); //important! } public String getRefType() { @@ -209,7 +210,10 @@ public class ClientReportReference extends Composite implements ClientSequence, public void setMetadata(List metas) { this.metas = metas; } + public String getId() { + if (id == null) + return "-1"; return id; } diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/TextTableImage.java b/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/TextTableImage.java index 8b890bd..ab55e1e 100644 --- a/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/TextTableImage.java +++ b/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/TextTableImage.java @@ -32,7 +32,9 @@ public class TextTableImage extends Composite { public static final int DEFAULT_HEIGHT = 100; public static final int DEFAULT_WIDTH = 700; - + + public String id; + private List metas; private FocusPanel focusPanel = new FocusPanel(); private VerticalPanel mainPanel = new VerticalPanel(); private HorizontalPanel controlPanel; @@ -210,7 +212,23 @@ public class TextTableImage extends Composite { } } } - + } + + public List getMetadata() { + return metas; } + public void setMetadata(List metas) { + this.metas = metas; + } + public String getId() { + if (id == null) + return "-1"; + return id; + } + + + public void setId(String id) { + this.id = id; + } } diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/client/uibinder/OpenOptionsVME.java b/src/main/java/org/gcube/portlets/user/reportgenerator/client/uibinder/OpenOptionsVME.java index 883e0db..1ef25d9 100644 --- a/src/main/java/org/gcube/portlets/user/reportgenerator/client/uibinder/OpenOptionsVME.java +++ b/src/main/java/org/gcube/portlets/user/reportgenerator/client/uibinder/OpenOptionsVME.java @@ -2,7 +2,6 @@ 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 org.gcube.portlets.user.reportgenerator.shared.VMETypeIdentifier; import com.google.gwt.core.client.GWT; @@ -10,7 +9,6 @@ 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; @@ -24,7 +22,7 @@ public class OpenOptionsVME extends Composite { interface OpenOptionsUiBinder extends UiBinder { } - enum OpenMode {OPEN_REPORT, OPEN_TEMPLATE, UPLOAD } + enum OpenMode {EDIT_VME, NEW_VME, DELETE_VME } @UiField HTML editVME; @UiField HTML createVME; @@ -45,30 +43,30 @@ public class OpenOptionsVME extends Composite { @UiHandler("editVME") void onEditVMEClick(ClickEvent e) { GWT.log("editVME"); - doAction(OpenMode.OPEN_REPORT); + doAction(OpenMode.EDIT_VME); } @UiHandler("createVME") void onOpenTemplateClick(ClickEvent e) { - doAction(OpenMode.OPEN_TEMPLATE); + doAction(OpenMode.NEW_VME); } @UiHandler("deleteVME") void unUploadClick(ClickEvent e) { - doAction(OpenMode.UPLOAD); + doAction(OpenMode.DELETE_VME); } private void doAction(OpenMode mode) { CommonCommands cmd = new CommonCommands(p); switch (mode) { - case OPEN_REPORT: + case EDIT_VME: p.showVMEImportDialog(); break; - case OPEN_TEMPLATE: + case NEW_VME: p.importVMETemplate(VMETypeIdentifier.Vme); break; - case UPLOAD: - Window.alert("Not yet available"); + case DELETE_VME: + p.showVMEDeleteDialog(VMETypeIdentifier.Vme); break; default: break; 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 11797b2..1516222 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 @@ -41,6 +41,8 @@ import org.gcube.application.rsg.client.RsgClient; import org.gcube.application.rsg.service.RsgService; import org.gcube.application.rsg.service.dto.ReportEntry; import org.gcube.application.rsg.service.dto.ReportType; +import org.gcube.application.rsg.service.dto.response.Response; +import org.gcube.application.rsg.service.dto.response.ResponseEntry; 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; @@ -91,6 +93,8 @@ import org.gcube.portlets.user.reportgenerator.shared.SessionInfo; import org.gcube.portlets.user.reportgenerator.shared.UserBean; 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; @@ -1607,26 +1611,60 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe } @Override - public void exportReportToRSG(Model model) { + public VmeExportResponse exportReportToRSG(VMETypeIdentifier refType, Model model) { System.out.println(new ModelReader(model).toString()); - + RsgService rsgClient = new RsgClient(getRSGWSAddress()); //Use the RSG client to get a template for the report whose type is the last token (i.e. the corresponding class' 'simple name') //appearing in the VME model class name as stored in the 'type' metadata - //If you're updating a 'report': - CompiledReport template = rsgClient.getTemplate(new ReportType(VMETypeIdentifier.Vme.getId())); + CompiledReport template = rsgClient.getTemplate(new ReportType(refType.getId())); CompiledReport toSend = null; try { toSend = new ReportManagerReportBuilder().extract(template, model); } catch (Exception e) { e.printStackTrace(); } - //Actual RSG client interface exposes different methods (publish / publishDelta etc.) that need to be updated - rsgClient.update(toSend); - + try { + //Actual RSG client interface exposes different methods (publish / publishDelta etc.) that need to be updated + Response res = null; + if (refType == VMETypeIdentifier.Vme) { + _log.info("Exporting VME Report"); + res = rsgClient.update(toSend); + } + else { + _log.info("Exporting Ref type= " + refType.getId()); + res = rsgClient.updateRef(toSend); + } + return getClientResponse(res); + } catch (RuntimeException ex) { + ex.printStackTrace(); + return new VmeExportResponse(new VmeResponseEntry("RUNTIME_EXCEPTION", "Sorry, there was an error on the Server, please try again in few minutes or report an Issue.")); + } } + + @Override + public VmeExportResponse deleteReportFromRSG(VMETypeIdentifier refType, String idToDelete) { + RsgService rsgClient = new RsgClient(getRSGWSAddress()); + + try { + Response res = null; + if (refType == VMETypeIdentifier.Vme) { + _log.info("Deleting VME Report id = " + idToDelete); + res = rsgClient.deleteById(new ReportType(refType.getId()), idToDelete); + } + else { + _log.info("Deleting VME Reference Report of Type " + refType + " having id = " + idToDelete); + res = rsgClient.deleteReferenceById(new ReportType(refType.getId()), idToDelete); + } + return getClientResponse(res); + } catch (RuntimeException ex) { + ex.printStackTrace(); + return new VmeExportResponse(new VmeResponseEntry("RUNTIME_EXCEPTION", "Sorry, there was an error on the Server, we could not delete. Please try again in few minutes or report an Issue.")); + } + } + /** * this method look for a ReportsStoreGateway WS available in the infrastructure * @return true if an instance of the ReportsStoreGateway is available in the infrastructure @@ -1659,6 +1697,18 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe } + private VmeExportResponse getClientResponse(Response rsgResponse) { + VmeExportResponse toReturn = new VmeExportResponse(); + for (ResponseEntry entry : rsgResponse.getResponseMessageList()) { + String entryCode = entry.getResponseCode() == null ? "no-code" : entry.getResponseCode().toString(); + String entryMessage = entry.getResponseMessage() == null ? "no response message" : entry.getResponseMessage(); + toReturn.getResponseMessageList().add(new VmeResponseEntry(entryCode, entryMessage)); + } + toReturn.setGloballySucceded(rsgResponse.isGloballySucceeded()); + return toReturn; + } + + } diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/shared/VmeExportResponse.java b/src/main/java/org/gcube/portlets/user/reportgenerator/shared/VmeExportResponse.java new file mode 100644 index 0000000..2b544cd --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/reportgenerator/shared/VmeExportResponse.java @@ -0,0 +1,50 @@ +package org.gcube.portlets.user.reportgenerator.shared; + +import java.io.Serializable; +import java.util.ArrayList; + +/** + * Simply wraps the Response clases of the RSG WS for sending them to the client + * @author Massimiliano Assante, ISTI-CNR + * + */ +@SuppressWarnings("serial") +public class VmeExportResponse implements Serializable { + private boolean globallySucceded; + + private ArrayList responseMessageList; + + public VmeExportResponse() { + super(); + responseMessageList = new ArrayList(); + } + + public VmeExportResponse(VmeResponseEntry singleResponse) { + responseMessageList = new ArrayList(); + responseMessageList.add(singleResponse); + } + + public VmeExportResponse(ArrayList responseMessageList) { + super(); + this.responseMessageList = responseMessageList; + } + + public ArrayList getResponseMessageList() { + if (responseMessageList == null) + responseMessageList = new ArrayList(); + return responseMessageList; + } + + public void setResponseMessageList(ArrayList responseMessageList) { + this.responseMessageList = responseMessageList; + } + + public boolean isGloballySucceded() { + return globallySucceded; + } + + public void setGloballySucceded(boolean globallySucceded) { + this.globallySucceded = globallySucceded; + } + +} diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/shared/VmeResponseEntry.java b/src/main/java/org/gcube/portlets/user/reportgenerator/shared/VmeResponseEntry.java new file mode 100644 index 0000000..7ae15bc --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/reportgenerator/shared/VmeResponseEntry.java @@ -0,0 +1,40 @@ +package org.gcube.portlets.user.reportgenerator.shared; + +import java.io.Serializable; + +/** + * Simply wraps the ResponseEntry class of the RSG WS for sending them to the client + * @author Massimiliano Assante, ISTI-CNR + * + */ +@SuppressWarnings("serial") +public class VmeResponseEntry implements Serializable { + private String responseEntryCode; + private String responseMessage; + + public VmeResponseEntry() { + super(); + } + + public VmeResponseEntry(String responseEntryCode, String responseMessage) { + super(); + this.responseEntryCode = responseEntryCode; + this.responseMessage = responseMessage; + } + + public String getResponseMessage() { + return responseMessage; + } + + public void setResponseMessage(String responseMessage) { + this.responseMessage = responseMessage; + } + + public String getResponseEntryCode() { + return responseEntryCode; + } + + public void setResponseEntryCode(String responseEntryCode) { + this.responseEntryCode = responseEntryCode; + } +} diff --git a/src/main/webapp/ReportGenerator.css b/src/main/webapp/ReportGenerator.css index 147d0a6..3bec5e9 100644 --- a/src/main/webapp/ReportGenerator.css +++ b/src/main/webapp/ReportGenerator.css @@ -57,7 +57,6 @@ .optionDeleteVME { background: url('images/deleteVME.png') 55% 25px no-repeat; - opacity: 0.5; } .exportPanel {