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 2a258d4..9ee314d 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 @@ -11,6 +11,7 @@ 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.lighttree.client.ItemType; import org.gcube.portlets.widgets.lighttree.client.event.PopupEvent; import org.gcube.portlets.widgets.lighttree.client.event.PopupHandler; @@ -51,6 +52,7 @@ public class Headerbar extends Composite{ 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 = "Import VME Report"; + private static final String IMPORT_VME_REF = "Import VME Reference Report"; // private static final String EXPORT_ENCRYPTED_REPORT = "Save an Encrypted Version to Desktop"; private static final String VIEW_USER_COMMENTS = "View user comments"; @@ -99,6 +101,8 @@ public class Headerbar extends Composite{ private MenuItem discardSection; private MenuItem importVME; + + private MenuItem importVMERef; @@ -351,11 +355,26 @@ public class Headerbar extends Composite{ presenter.showVMEImportDialog(); } }; - + importVME = new MenuItem(IMPORT_VME, true, importVMEReport); + MenuBar importVMERef = new MenuBar(true); + MenuItem importVMERefItem = new MenuItem(IMPORT_VME_REF, importVMERef); + //add the submenu items for report refs + for (final VMETypeIdentifier type : VMETypeIdentifier.values()) { + if (type != VMETypeIdentifier.Vme) { + MenuItem item = new MenuItem(type.getId(), true, new Command() { + public void execute() { + presenter.showVMERefAssociateDialog(type); + } + }); + importVMERef.addItem(item); + } + } + importMenu.addItem(importVME); + importMenu.addItem(importVMERefItem); return toReturn; } 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 4d8239d..6bedbde 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 @@ -1,6 +1,5 @@ package org.gcube.portlets.user.reportgenerator.client.Presenter; -import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -11,7 +10,6 @@ import org.gcube.portlets.d4sreporting.common.shared.Metadata; import org.gcube.portlets.d4sreporting.common.shared.Model; import org.gcube.portlets.d4sreporting.common.shared.ReportReferences; import org.gcube.portlets.user.reportgenerator.client.Headerbar; -import org.gcube.portlets.user.reportgenerator.client.ReportConstants; import org.gcube.portlets.user.reportgenerator.client.ReportGenerator; import org.gcube.portlets.user.reportgenerator.client.ReportService; import org.gcube.portlets.user.reportgenerator.client.ReportServiceAsync; @@ -65,8 +63,6 @@ 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.userselection.client.UserSelectionDialog; -import org.gcube.portlets.widgets.userselection.client.events.UsersFetchedEvent; -import org.gcube.portlets.widgets.userselection.shared.ItemSelectableBean; import com.extjs.gxt.ui.client.widget.MessageBox; import com.google.gwt.core.client.GWT; @@ -1252,7 +1248,7 @@ public class Presenter { * */ public void showVMEImportDialog() { - ImportVMEReportDialog dlg = new ImportVMEReportDialog(getEventBus()); + ImportVMEReportDialog dlg = new ImportVMEReportDialog(getEventBus(), VMETypeIdentifier.Vme); dlg.show(); } @@ -1260,23 +1256,8 @@ public class Presenter { * */ public void showVMERefAssociateDialog(VMETypeIdentifier refType) { - itemSelectionDialog = new UserSelectionDialog("Associate " + refType.toString() + ": Please select one ", eventBus); - itemSelectionDialog.center(); - itemSelectionDialog.show(); - reportService.listVMEReportRefByType(refType, new AsyncCallback>() { - @Override - public void onFailure(Throwable caught) { - //handled by the Widget - } - - @Override - public void onSuccess(ArrayList result) { - for (ItemSelectableBean item : result) { - item.setIconURL(ReportConstants.REPORT_REF_ICON); - } - eventBus.fireEvent(new UsersFetchedEvent(result)); - } - }); + ImportVMEReportDialog dlg = new ImportVMEReportDialog(getEventBus(), refType); + dlg.show(); } private void importVMEReport(String reportId) { @@ -1298,7 +1279,9 @@ public class Presenter { } - private void associateVMRReportRef (VMETypeIdentifier type, String reportId) throws Exception { + private void associateVMRReportRef(VMETypeIdentifier type, String reportId) throws Exception { + GWT.log("Type="+type); + GWT.log("Id"+reportId); reportService.importVMEReportRef(reportId, type, new AsyncCallback() { @Override 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 415d08c..f76feb2 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 @@ -5,13 +5,12 @@ import java.util.ArrayList; import org.gcube.portlets.d4sreporting.common.shared.Model; import org.gcube.portlets.d4sreporting.common.shared.RepTimeSeries; import org.gcube.portlets.d4sreporting.common.shared.Table; -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.portlets.widgets.userselection.shared.ItemSelectableBean; 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.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; @@ -24,7 +23,7 @@ public interface ReportService extends RemoteService{ ArrayList listVMEReports(); - ArrayList listVMEReportRefByType(VMETypeIdentifier refType); + ArrayList listVMEReportRefByType(VMETypeIdentifier refType); Model importVMEReport(String id); 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 b8a2cf4..7be7eaa 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 @@ -5,11 +5,10 @@ import java.util.ArrayList; import org.gcube.portlets.d4sreporting.common.shared.Model; import org.gcube.portlets.d4sreporting.common.shared.RepTimeSeries; import org.gcube.portlets.d4sreporting.common.shared.Table; -import org.gcube.portlets.widgets.exporter.shared.TypeExporter; -import org.gcube.portlets.widgets.userselection.shared.ItemSelectableBean; 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.widgets.exporter.shared.TypeExporter; import com.google.gwt.user.client.rpc.AsyncCallback; /** @@ -80,7 +79,8 @@ public interface ReportServiceAsync { void importVMEReport(String id, AsyncCallback callback); - void listVMEReportRefByType(VMETypeIdentifier refType, AsyncCallback> callback); + void listVMEReportRefByType(VMETypeIdentifier refType, + AsyncCallback> callback); void importVMEReportRef(String id, VMETypeIdentifier refType, 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/ImportVMEReportDialog.java index 67f5a5d..6ac38ef 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/ImportVMEReportDialog.java @@ -12,6 +12,7 @@ import org.gcube.portlets.user.reportgenerator.shared.VMETypeIdentifier; import com.extjs.gxt.ui.client.event.ButtonEvent; 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.Html; @@ -39,14 +40,15 @@ public class ImportVMEReportDialog extends Window { private HandlerManager eventBus; private HorizontalPanel hp = new HorizontalPanel(); private StoreFilterField filter; + private VMETypeIdentifier type; /** * * @param eventBus the bus to fire events into */ - public ImportVMEReportDialog(final HandlerManager eventBus) { + public ImportVMEReportDialog(final HandlerManager eventBus, VMETypeIdentifier type) { this.eventBus = eventBus; - + this.type = type; mainPanel.setHeaderVisible(false); setWidth(WIDTH); setHeight(HEIGHT); @@ -76,27 +78,102 @@ public class ImportVMEReportDialog extends Window { add(hp); add(mainPanel); showLoading(); - reportService.listVMEReports(new AsyncCallback>() { - @Override - public void onFailure(Throwable caught) { - mainPanel.unmask(); - } - - @Override - public void onSuccess(ArrayList reports) { - mainPanel.unmask(); - for (VMEReportBean vmeReportBean : reports) { - GWT.log(vmeReportBean.getName()); + if (type == VMETypeIdentifier.Vme) + reportService.listVMEReports(new AsyncCallback>() { + @Override + public void onFailure(Throwable caught) { + mainPanel.unmask(); } - showCollections(reports); - } - }); + + @Override + public void onSuccess(ArrayList reports) { + mainPanel.unmask(); + showAvailableReports(reports); + } + }); + else { + reportService.listVMEReportRefByType(type, new AsyncCallback>() { + @Override + public void onFailure(Throwable caught) { + mainPanel.unmask(); + } + + @Override + public void onSuccess(ArrayList refReports) { + mainPanel.unmask(); + showAvailableReferenceReports(refReports); + } + }); + } + } + /** + * + * @param reports + */ + public void showAvailableReferenceReports(List reports) { + + ColumnModel cm = null; + List configs = new ArrayList(); + ColumnConfig column = new ColumnConfig(); + column.setId("id"); + column.setHeader("ID"); + column.setHidden(false); + column.setWidth(50); + column.setRowHeader(true); + configs.add(column); + + column = new ColumnConfig(); + column.setId("name"); + column.setHeader("Name"); + column.setWidth(150); + configs.add(column); + + cm = new ColumnModel(configs); + + /** + * load the grid data + */ + ListStore store = new ListStore (); + store.add(reports); + + filter.bind(store); + + final Grid grid = new Grid(store, cm); + + grid.getElement().getStyle().setBorderWidth(0, Unit.PX); + grid.setAutoExpandColumn("name"); + grid.setBorders(false); + grid.setStripeRows(true); + + ContentPanel gridPanel = new ContentPanel(new FitLayout()); + gridPanel.setHeaderVisible(false); + gridPanel.add(grid); + + + + gridPanel.addButton(new Button("Cancel", new SelectionListener() { + @Override + public void componentSelected(ButtonEvent ce) { + hide(); + } + })); + + gridPanel.addButton(new Button("Edit Selected", new SelectionListener() { + @Override + public void componentSelected(ButtonEvent ce) { + hide(); + eventBus.fireEvent(new SelectedReportEvent(grid.getSelectionModel().getSelectedItem().getId(), type)); + } + })); + mainPanel.add(gridPanel); + mainPanel.setLayout(new FitLayout()); + mainPanel.layout(); } /** * view for collections step * @param vDesc */ - public void showCollections(List reports) { + public void showAvailableReports(List reports) { ColumnModel cm = null; List configs = new ArrayList(); @@ -143,7 +220,7 @@ public class ImportVMEReportDialog extends Window { grid.getElement().getStyle().setBorderWidth(0, Unit.PX); grid.setAutoExpandColumn("name"); - grid.setBorders(true); + grid.setBorders(false); grid.setStripeRows(true); @@ -168,17 +245,13 @@ public class ImportVMEReportDialog extends Window { @Override public void componentSelected(ButtonEvent ce) { hide(); - fireEvent(grid.getSelectionModel().getSelectedItem()); + eventBus.fireEvent(new SelectedReportEvent(grid.getSelectionModel().getSelectedItem().getId(), VMETypeIdentifier.Vme)); } })); mainPanel.add(gridPanel); mainPanel.setLayout(new FitLayout()); mainPanel.layout(); - } - - private void fireEvent(VMEReportBean toFire) { - eventBus.fireEvent(new SelectedReportEvent(toFire.getId(), VMETypeIdentifier.Vme)); - } + } /** * */ 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 6d3a2a5..e11d8b2 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 @@ -1492,19 +1492,20 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe } @Override - public ArrayList listVMEReportRefByType(VMETypeIdentifier refType) { + public ArrayList listVMEReportRefByType(VMETypeIdentifier refType) { if (refType == VMETypeIdentifier.Vme) throw new IllegalArgumentException("VME Type is not a reference"); try { Thread.sleep(1000); } catch (InterruptedException e) { } - ArrayList toReturn = new ArrayList(); + ArrayList toReturn = new ArrayList(); ReportType type = new ReportType(); type.setTypeIdentifier(refType.toString()); - + for (ReportEntry re : getFakeReports(type)) { - toReturn.add(new ItemSelectableBean(""+re.getId(), re.getNameValueList().get(0).getValue(), "", refType.toString())); + String name = re.getNameValueList().get(0).getValue(); + toReturn.add(new VMEReportBean(""+re.getId(), "", name, -1)); } return toReturn; } @@ -1545,6 +1546,7 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe List namesValues = new ArrayList(); NameValue name = new NameValue(); name.setName(type.getTypeIdentifier() + "-" + i); + name.setValue(type.getTypeIdentifier() + "-" + generateRandomWord()); namesValues.add(name); re.setNameValueList(namesValues); toReturn.add(re); @@ -1594,7 +1596,7 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe public Model importVMEReportRef(String id, VMETypeIdentifier refType) { - String reportName = "Sample VME Report imported with id: " + id; + String reportName = "Sample Reference Report: " + id; ReportsModeler rm = new ReportsModeler( UUID.randomUUID().toString(), reportName, @@ -1620,7 +1622,9 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe dBTableRows.add(new DBTableRow("primaryKey", md)); rm.add(new ReferenceReport(ReferenceReportType.InformationSource, dBTableRows)); try { - return rm.getReportInstance(); + Model toReturn = rm.getReportInstance(); + ReportsReader.readReportStructure(toReturn); + return toReturn; } catch (Exception e) { e.printStackTrace(); } diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/shared/VMETypeIdentifier.java b/src/main/java/org/gcube/portlets/user/reportgenerator/shared/VMETypeIdentifier.java index d0b301f..79445df 100644 --- a/src/main/java/org/gcube/portlets/user/reportgenerator/shared/VMETypeIdentifier.java +++ b/src/main/java/org/gcube/portlets/user/reportgenerator/shared/VMETypeIdentifier.java @@ -1,7 +1,7 @@ package org.gcube.portlets.user.reportgenerator.shared; public enum VMETypeIdentifier { - Vme("GeneralMeasure"), + Vme("Vme"), GeneralMeasure("GeneralMeasure"), InformationSource("InformationSource"), FisheryAreasHistory("FisheryAreasHistory"),