diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component index 400921f..a5078d4 100644 --- a/.settings/org.eclipse.wst.common.component +++ b/.settings/org.eclipse.wst.common.component @@ -8,6 +8,15 @@ uses + + uses + + + uses + + + uses + uses 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 74ccf87..2a258d4 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 @@ -131,9 +131,9 @@ public class Headerbar extends Composite{ separator1 = menuBar.addSeparator(); viewMenu = getViewMenu(); menuBar.addItem(viewMenu); - separator2 = menuBar.addSeparator(); - sectionsMenu = getSectionMenu(); - menuBar.addItem(sectionsMenu); +// separator2 = menuBar.addSeparator(); +// sectionsMenu = getSectionMenu(); +// menuBar.addItem(sectionsMenu); separator3 = menuBar.addSeparator(); biblioMenu = getBiblioMenu(); menuBar.addItem(biblioMenu); @@ -447,21 +447,12 @@ public class Headerbar extends Composite{ viewMetadata.setHTML("View Metadata"); viewMetadata.setScheduledCommand(openMetadata); - viewComments.setHTML(VIEW_USER_COMMENTS); - viewComments.setScheduledCommand(showUserComments); - discardSection.setHTML("Discard current"); - discardSection.setScheduledCommand(discardSectionCom); +// discardSection.setHTML("Discard current"); +// discardSection.setScheduledCommand(discardSectionCom); } - /** - * - */ - Command showUserComments = new Command() { - public void execute() { - presenter.showSectionUserCommentsTooltips(); - } - }; + /** * rewrite with setHTML to remove the gray color * @param d4sArea @@ -620,11 +611,6 @@ public class Headerbar extends Composite{ }; - ScheduledCommand discardSectionCom = new ScheduledCommand() { - public void execute() { - presenter.discardCurrentSection(); - } - }; //************** COMMANDS ********************************//// Command addBiblioEntryCommand = new Command() { 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 753bb07..4d8239d 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 @@ -21,6 +21,7 @@ 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.WaitingOperationDialog; import org.gcube.portlets.user.reportgenerator.client.events.AddBiblioEvent; import org.gcube.portlets.user.reportgenerator.client.events.AddBiblioEventHandler; @@ -32,6 +33,8 @@ import org.gcube.portlets.user.reportgenerator.client.events.RemovedCitationEven import org.gcube.portlets.user.reportgenerator.client.events.RemovedCitationEventHandler; import org.gcube.portlets.user.reportgenerator.client.events.RemovedUserCommentEvent; 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; @@ -62,8 +65,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.SelectedUserEvent; -import org.gcube.portlets.widgets.userselection.client.events.SelectedUserEventHandler; import org.gcube.portlets.widgets.userselection.client.events.UsersFetchedEvent; import org.gcube.portlets.widgets.userselection.shared.ItemSelectableBean; @@ -145,18 +146,18 @@ public class Presenter { private void handleEvents() { - eventBus.addHandler(SelectedUserEvent.TYPE, new SelectedUserEventHandler() { + eventBus.addHandler(SelectedReportEvent.TYPE, new SelectedReportEventHandler() { @Override - public void onSelectedUser(SelectedUserEvent event) { - itemSelectionDialog.hide(); - if (event.getSelectedUser().getType().equals(VMETypeIdentifier.Vme.toString())) - importVMEReport(event.getSelectedUser()); - else + public void onReportSelected(SelectedReportEvent event) { + if (event.getType() == VMETypeIdentifier.Vme) { + importVMEReport(event.getId()); + } else { try { - associateVMRReportRef(event.getSelectedUser()); + associateVMRReportRef(event.getType(), event.getId()); } catch (Exception e) { e.printStackTrace(); } + } } }); @@ -333,15 +334,6 @@ public class Presenter { }); } - public void showSectionUserCommentsTooltips() { - TemplateSection currSection = model.getSection(model.getCurrentPage()); - for (TemplateComponent tc : currSection.getAllComponents()) { - if (tc.getContent() instanceof ReportTextArea && tc.getUserComments() != null) { - ReportTextArea rpta = (ReportTextArea) tc.getContent(); - rpta.showComment(tc.getUserComments()); - } - } - } /** * called when a citation is added * @param citekey . @@ -502,9 +494,10 @@ public class Presenter { titleBar.getSectionSwitchPanel().setPageDisplayer(model.getCurrentPage(), model.getTotalPages()); titleBar.getSectionSwitchPanel().setVisible(false); resizeWorkingArea(model.getPageWidth(), model.getPageHeight()); + + toolBoxPanel.clear(); + toolBoxPanel.collapse(); - //persists the change in the session - model.storeInSession(); } /** * remove the user-added components from the workspace (in the current page) but not from the model @@ -607,14 +600,6 @@ public class Presenter { }-*/; - /** - * - * @param toChange . - */ - public void storeChangeInSession(Widget toChange) { - model.storeInSession(); - } - /** * * @param area . @@ -739,6 +724,7 @@ public class Presenter { 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); @@ -1266,23 +1252,8 @@ public class Presenter { * */ public void showVMEImportDialog() { - itemSelectionDialog = new UserSelectionDialog("Import: Please select the VME Report", eventBus); - itemSelectionDialog.center(); - itemSelectionDialog.show(); - reportService.listVMEReports(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_ICON); - } - eventBus.fireEvent(new UsersFetchedEvent(result)); - } - }); + ImportVMEReportDialog dlg = new ImportVMEReportDialog(getEventBus()); + dlg.show(); } /** @@ -1308,9 +1279,9 @@ public class Presenter { }); } - private void importVMEReport(ItemSelectableBean selectedReport) { + private void importVMEReport(String reportId) { showLoading(); - reportService.importVMEReport(selectedReport.getId(), selectedReport.getName(), new AsyncCallback() { + reportService.importVMEReport(reportId, new AsyncCallback() { @Override public void onFailure(Throwable caught) { Window.alert("Could not Load Report Model, error on server.: " + caught.getMessage()); @@ -1327,8 +1298,8 @@ public class Presenter { } - private void associateVMRReportRef (ItemSelectableBean selectedReport) throws Exception { - reportService.importVMEReportRef(selectedReport.getId(), getTypeIdFromString(selectedReport.getType()), new AsyncCallback() { + private void associateVMRReportRef (VMETypeIdentifier type, String reportId) throws Exception { + reportService.importVMEReportRef(reportId, type, new AsyncCallback() { @Override public void onFailure(Throwable caught) { @@ -1367,8 +1338,10 @@ public class Presenter { return VMETypeIdentifier.InformationSource; else if (theType.equals("FisheryAreasHistory")) return VMETypeIdentifier.FisheryAreasHistory; - else if (theType.equals("VmesHistory")) - return VMETypeIdentifier.VmesHistory; + else if (theType.equals("VMEsHistory")) + return VMETypeIdentifier.VMEsHistory; + else if (theType.equals("Rfmo")) + return VMETypeIdentifier.Rfmo; throw new Exception("Could not find any valid Report Ref, got " + theType + " should be any of " + VMETypeIdentifier.values().toString()); } } 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 bbbff88..415d08c 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 @@ -10,6 +10,7 @@ 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 com.google.gwt.user.client.rpc.RemoteService; @@ -21,11 +22,11 @@ import com.google.gwt.user.client.rpc.RemoteServiceRelativePath; @RemoteServiceRelativePath("ReportServiceImpl") public interface ReportService extends RemoteService{ - ArrayList listVMEReports(); + ArrayList listVMEReports(); ArrayList listVMEReportRefByType(VMETypeIdentifier refType); - Model importVMEReport(String id, String name); + Model importVMEReport(String id); Model importVMEReportRef(String id, VMETypeIdentifier refType); 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 7a7b54c..b8a2cf4 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.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 com.google.gwt.user.client.rpc.AsyncCallback; @@ -53,8 +54,7 @@ public interface ReportServiceAsync { */ void readTemplateFromSession( AsyncCallback callback); - void saveReport(Model toSave, String folderid, String newname, - AsyncCallback callback); + void saveReport(Model toSave, String folderid, String newname, AsyncCallback callback); void saveReport(Model toSave, AsyncCallback callback); /** @@ -63,21 +63,24 @@ public interface ReportServiceAsync { * @param callback */ void getSessionInfo(String currentHost, AsyncCallback callback); - void getWorkflowDocumentFromDocumentLibrary( - AsyncCallback callback); - void updateWorkflowDocument(Model toSave, boolean update, - AsyncCallback callback); + + void getWorkflowDocumentFromDocumentLibrary(AsyncCallback callback); + + void updateWorkflowDocument(Model toSave, boolean update, AsyncCallback callback); + void renewLock(AsyncCallback callback); - void readImportedModel(String tempPath, - AsyncCallback callback); - void save(String filePath, String workspaceFolderId, String ItemName, - TypeExporter type, boolean overwrite, AsyncCallback callback); + void readImportedModel(String tempPath, AsyncCallback callback); + + void save(String filePath, String workspaceFolderId, String ItemName, TypeExporter type, boolean overwrite, AsyncCallback callback); + void renewHTTPSession(AsyncCallback callback); - void listVMEReports(AsyncCallback> callback); - void importVMEReport(String id, String name, AsyncCallback callback); - void listVMEReportRefByType(VMETypeIdentifier refType, - AsyncCallback> callback); - void importVMEReportRef(String id, VMETypeIdentifier refType, - AsyncCallback callback); + + void listVMEReports(AsyncCallback> callback); + + void importVMEReport(String id, 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/ReportStructurePanel.java b/src/main/java/org/gcube/portlets/user/reportgenerator/client/ReportStructurePanel.java index b6b49fa..e0d63c2 100644 --- a/src/main/java/org/gcube/portlets/user/reportgenerator/client/ReportStructurePanel.java +++ b/src/main/java/org/gcube/portlets/user/reportgenerator/client/ReportStructurePanel.java @@ -235,8 +235,8 @@ public class ReportStructurePanel extends ScrollPanel{ node.add(image); String shortTitle = title; - if (shortTitle.length() > 25) - shortTitle = shortTitle.substring(0,25) + "..."; + if (shortTitle.length() > 20) + shortTitle = shortTitle.substring(0,18) + ".."; Label text = new Label(shortTitle); node.add(text); diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/client/ToolboxPanel.java b/src/main/java/org/gcube/portlets/user/reportgenerator/client/ToolboxPanel.java index eed06e7..cda6958 100644 --- a/src/main/java/org/gcube/portlets/user/reportgenerator/client/ToolboxPanel.java +++ b/src/main/java/org/gcube/portlets/user/reportgenerator/client/ToolboxPanel.java @@ -3,17 +3,20 @@ package org.gcube.portlets.user.reportgenerator.client; import org.gcube.portlets.user.workspace.client.AppControllerExplorer; import org.gcube.portlets.user.workspace.client.event.FileDownloadEvent; import org.gcube.portlets.user.workspace.client.event.FileDownloadEvent.DownloadType; +import org.gcube.portlets.user.workspace.client.event.FileUploadEvent; +import org.gcube.portlets.user.workspace.client.event.FileUploadEvent.UploadType; import org.gcube.portlets.user.workspace.client.view.tree.AsyncTreePanel; import com.google.gwt.core.client.GWT; import com.google.gwt.user.client.ui.SimplePanel; +import com.google.gwt.user.client.ui.VerticalPanel; /** * * @author Massimiliano Assante, ISTI-CNR - massimiliano.assante@isti.cnr.it */ -public class ToolboxPanel extends SimplePanel { +public class ToolboxPanel extends VerticalPanel { private AppControllerExplorer appController; private AsyncTreePanel tp; /** @@ -27,8 +30,8 @@ public class ToolboxPanel extends SimplePanel { public ToolboxPanel(AppControllerExplorer appController) { this.appController = appController; -// AsyncTreePanel tp = appController.getTree(TOOLBOX_WIDTH, TOOLBOX_HEIGHT); -// this.tp = tp; + AsyncTreePanel tp = appController.getTree(TOOLBOX_WIDTH, TOOLBOX_HEIGHT); + this.tp = tp; // add(tp); // this.appController.hideSharingFacilities(); //sharing disabled we have problems from Reports } @@ -38,6 +41,10 @@ public class ToolboxPanel extends SimplePanel { setWidth("240px"); add(panel); } + + public void collapse() { + setWidth("20px"); + } public void showExportedVersion(String id, String fileName) { GWT.log("showExportedVersion"); @@ -53,7 +60,7 @@ public class ToolboxPanel extends SimplePanel { * show upload file popup */ public void showUploadFile() { - //AppControllerExplorer.getEventBus().fireEvent(new FileUploadEvent(tp.getRootItem(), UploadType.FILE)); + AppControllerExplorer.getEventBus().fireEvent(new FileUploadEvent(tp.getRootItem(), UploadType.FILE)); } /** * lalala 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 new file mode 100644 index 0000000..67f5a5d --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/reportgenerator/client/dialog/ImportVMEReportDialog.java @@ -0,0 +1,188 @@ +package org.gcube.portlets.user.reportgenerator.client.dialog; + +import java.util.ArrayList; +import java.util.List; + +import org.gcube.portlets.user.reportgenerator.client.ReportService; +import org.gcube.portlets.user.reportgenerator.client.ReportServiceAsync; +import org.gcube.portlets.user.reportgenerator.client.events.SelectedReportEvent; +import org.gcube.portlets.user.reportgenerator.shared.VMEReportBean; +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.Store; +import com.extjs.gxt.ui.client.widget.ContentPanel; +import com.extjs.gxt.ui.client.widget.Html; +import com.extjs.gxt.ui.client.widget.Window; +import com.extjs.gxt.ui.client.widget.button.Button; +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.GroupingView; +import com.extjs.gxt.ui.client.widget.layout.FitLayout; +import com.google.gwt.core.client.GWT; +import com.google.gwt.dom.client.Style.Unit; +import com.google.gwt.event.shared.HandlerManager; +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 { + private static final int WIDTH = 600; + private static final int HEIGHT = 450; + + private ReportServiceAsync reportService = (ReportServiceAsync) GWT.create(ReportService.class); + private ContentPanel mainPanel = new ContentPanel(); + private HandlerManager eventBus; + private HorizontalPanel hp = new HorizontalPanel(); + private StoreFilterField filter; + + /** + * + * @param eventBus the bus to fire events into + */ + public ImportVMEReportDialog(final HandlerManager eventBus) { + this.eventBus = eventBus; + + mainPanel.setHeaderVisible(false); + setWidth(WIDTH); + setHeight(HEIGHT); + + mainPanel.setWidth(WIDTH-10); + mainPanel.setHeight(HEIGHT-50); + + filter = new StoreFilterField() { + + @Override + protected boolean doSelect(Store store, VMEReportBean parent, VMEReportBean record, String property, String filter) { + String name = record.getName(); + name = name.toLowerCase(); + if (name.contains(filter.toLowerCase())) { + return true; + } + return false; + } + }; + filter.setEmptyText("Filter by Name"); + filter.setWidth("250px"); + hp.add(filter); + hp.setPixelSize(250, 20); + hp.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE); + + + 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()); + } + showCollections(reports); + } + }); + } + /** + * view for collections step + * @param vDesc + */ + public void showCollections(List reports) { + + ColumnModel cm = null; + List configs = new ArrayList(); + + + ColumnConfig column = new ColumnConfig(); + column.setId("id"); + column.setHeader("ID"); + column.setHidden(true); + column.setWidth(50); + column.setRowHeader(true); + configs.add(column); + + column = new ColumnConfig(); + column.setId("rfmo"); + column.setHeader("RFMO"); + column.setWidth(150); + configs.add(column); + + column = new ColumnConfig(); + column.setId("name"); + column.setHeader("Name"); + column.setWidth(150); + configs.add(column); + + column = new ColumnConfig(); + column.setId("year"); + column.setHeader("Year"); + column.setWidth(50); + configs.add(column); + + cm = new ColumnModel(configs); + + /** + * load the grid data + */ + GroupingStore store = new GroupingStore(); + store.add(reports); + store.groupBy("rfmo"); + + filter.bind(store); + + final Grid grid = new Grid(store, cm); + + grid.getElement().getStyle().setBorderWidth(0, Unit.PX); + grid.setAutoExpandColumn("name"); + grid.setBorders(true); + grid.setStripeRows(true); + + + GroupingView view = new GroupingView(); + view.setShowGroupedColumn(false); + grid.setView(view); + view.setForceFit(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("Import Selected", new SelectionListener() { + @Override + public void componentSelected(ButtonEvent ce) { + hide(); + fireEvent(grid.getSelectionModel().getSelectedItem()); + } + })); + mainPanel.add(gridPanel); + mainPanel.setLayout(new FitLayout()); + mainPanel.layout(); + } + + private void fireEvent(VMEReportBean toFire) { + eventBus.fireEvent(new SelectedReportEvent(toFire.getId(), VMETypeIdentifier.Vme)); + } + /** + * + */ + private void showLoading() { + mainPanel.mask("Asking for available Reports, please wait ... ", "loading-indicator"); + } +} 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 new file mode 100644 index 0000000..4664276 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/reportgenerator/client/events/SelectedReportEvent.java @@ -0,0 +1,35 @@ +package org.gcube.portlets.user.reportgenerator.client.events; + +import org.gcube.portlets.user.reportgenerator.shared.VMETypeIdentifier; + +import com.google.gwt.event.shared.GwtEvent; + +public class SelectedReportEvent extends GwtEvent{ + public static Type TYPE = new Type(); + private final String id; + private final VMETypeIdentifier type; + + public SelectedReportEvent(String id, VMETypeIdentifier type) { + super(); + this.id = id; + this.type = type; + } + + public String getId() { + return id; + } + + public VMETypeIdentifier getType() { + return type; + } + + @Override + public Type getAssociatedType() { + return TYPE; + } + + @Override + protected void dispatch(SelectedReportEventHandler handler) { + handler.onReportSelected(this); + } +} diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/client/events/SelectedReportEventHandler.java b/src/main/java/org/gcube/portlets/user/reportgenerator/client/events/SelectedReportEventHandler.java new file mode 100644 index 0000000..8ed1802 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/reportgenerator/client/events/SelectedReportEventHandler.java @@ -0,0 +1,7 @@ +package org.gcube.portlets.user.reportgenerator.client.events; + +import com.google.gwt.event.shared.EventHandler; + +public interface SelectedReportEventHandler extends EventHandler { + void onReportSelected(SelectedReportEvent event); +} 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 75db161..860c9f5 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 @@ -45,7 +45,7 @@ import com.google.gwt.user.client.ui.Widget; * @author Massimiliano Assante, ISTI-CNR - massimiliano.assante@isti.cnr.it */ public class TemplateComponent { - + private String id = ""; /** * */ @@ -58,7 +58,7 @@ public class TemplateComponent { private int height; private TemplateModel myModel; private int templatePage; - private String idInBasket = null; + private ComponentType type; @@ -193,7 +193,7 @@ public class TemplateComponent { this.content = area; } else { - HeadingTextArea bToAdd = new HeadingTextArea(sc.getType(), presenter, sc.getX(), sc.getY(), width, 25, getUserComments() != null, showClose); + HeadingTextArea bToAdd = new HeadingTextArea(sc.getId(), sc.getType(), presenter, sc.getX(), sc.getY(), width, 25, getUserComments() != null, showClose); bToAdd.setText((String) sc.getPossibleContent()); bToAdd.setMetadata(sc.getMetadata()); this.content = bToAdd; @@ -212,7 +212,7 @@ public class TemplateComponent { } else { int changedWidth = width -5; //because of the inner padding - BasicTextArea bToAdd = new BasicTextArea(sc.getType(), presenter, sc.getX(), sc.getY(), changedWidth, 25, getUserComments() != null, showClose); + BasicTextArea bToAdd = new BasicTextArea(sc.getId(), sc.getType(), presenter, sc.getX(), sc.getY(), changedWidth, 25, getUserComments() != null, showClose); bToAdd.setText((String) sc.getPossibleContent()); bToAdd.setMetadata(sc.getMetadata()); this.content = bToAdd; @@ -231,7 +231,7 @@ public class TemplateComponent { } else { height = 40; - D4sRichTextarea ta = new D4sRichTextarea(sc.getType(), presenter, sc.getX(), sc.getY(),width, height, getUserComments() != null, showClose, owner); + D4sRichTextarea ta = new D4sRichTextarea(sc.getId(), sc.getType(), presenter, sc.getX(), sc.getY(),width, height, getUserComments() != null, showClose, owner); ta.setHTML((String) sc.getPossibleContent()); //ta.setStyleName("cw-RichText"); ta.setPixelSize(width, height); @@ -240,17 +240,17 @@ public class TemplateComponent { this.setLocked(sc.isLocked()); break; case TOC: - ReportTextArea dp2 = new ReportTextArea(sc.getType(), presenter, sc.getX(), sc.getY(), width, height, getUserComments() != null, showClose); + ReportTextArea dp2 = new ReportTextArea(sc.getId(), sc.getType(), presenter, sc.getX(), sc.getY(), width, height, getUserComments() != null, showClose); dp2.addStyleName("tocArea"); this.content = dp2; break; case BIBLIO: - ReportTextArea dp3 = new ReportTextArea(sc.getType(), presenter, sc.getX(), sc.getY(), width, height, getUserComments() != null, showClose); + ReportTextArea dp3 = new ReportTextArea(sc.getId(), sc.getType(), presenter, sc.getX(), sc.getY(), width, height, getUserComments() != null, showClose); dp3.addStyleName("biblioArea"); this.content = dp3; break; case PAGEBREAK: - ReportTextArea dp4 = new ReportTextArea(sc.getType(), presenter, sc.getX(), sc.getY(), width, height, getUserComments() != null, showClose); + ReportTextArea dp4 = new ReportTextArea(sc.getId(), sc.getType(), presenter, sc.getX(), sc.getY(), width, height, getUserComments() != null, showClose); dp4.addStyleName("pagebreak"); this.content = dp4; break; @@ -421,7 +421,6 @@ public class TemplateComponent { ClientImage da = (ClientImage) this.content; content = da.getDroppedImage().getElement().getAttribute("src"); id = da.getIdInBasket(); - idInBasket = id; if (((String) content).compareTo("") == 0) content = DEFAULT_IMAGE_PATH; metas = da.getMetadata(); @@ -434,6 +433,7 @@ public class TemplateComponent { } else { content = ((D4sRichTextarea) this.content).getHTML(); + id = ((D4sRichTextarea) this.content).getId(); } break; case HEADING_1: @@ -447,6 +447,7 @@ public class TemplateComponent { } else { content = ((HeadingTextArea) this.content).getText(); + id = ((HeadingTextArea) this.content).getId(); metas = ((HeadingTextArea) this.content).getMetadata(); } break; @@ -456,7 +457,9 @@ public class TemplateComponent { } else { content = ((BasicTextArea) this.content).getText(); + id = ((BasicTextArea) this.content).getId(); metas = ((BasicTextArea) this.content).getMetadata(); + } break; case TIME_SERIES: @@ -499,8 +502,8 @@ public class TemplateComponent { content = ref; break; } - - return new BasicComponent(x, y, width, height, templatePage, type, idInBasket, "param empty", content, this.doubleColLayout, isLocked(), metas); + BasicComponent bc = new BasicComponent(x, y, width, height, templatePage, type, id, "param empty", content, this.doubleColLayout, isLocked(), metas); + return bc; } /** @@ -659,14 +662,14 @@ public class TemplateComponent { * @return . */ public String getIdInBasket() { - return idInBasket; + return id; } /** * - * @param idInBasket . + * @param id . */ public void setIdInBasket(String idInBasket) { - this.idInBasket = idInBasket; + this.id = idInBasket; } /** * 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 6a52971..5d6055b 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 @@ -194,14 +194,12 @@ public class TemplateModel { String tcPage = ""+currentPage; TemplateSection singleSection = sections.get(tcPage); singleSection.addCommentToComponent(component, comment2Add, visibleHeight); - storeInSession(); } public void removeComment(Widget toRemove) { String tcPage = ""+currentPage; TemplateSection singleSection = sections.get(tcPage); singleSection.discardComments(toRemove); - storeInSession(); } /** * @@ -218,7 +216,6 @@ public class TemplateModel { singleSection.addComponent(referencesTC); sections.put(""+totalPages, singleSection); - storeInSession(); } /** * @@ -236,7 +233,7 @@ public class TemplateModel { totalPages, ComponentType.BODY, "", citation, false, false, singleSection.getAllMetadata()); TemplateComponent entryTextTC = new TemplateComponent(this, entryText, presenter, false, null); singleSection.addComponent(entryTextTC); - storeInSession(); + } /** * remove a Citation from the model @@ -255,7 +252,6 @@ public class TemplateModel { if (singleSection.removeComponent(tc)) { //removes also the previous heading 2 TemplateComponent h2 = components.get(i-1); singleSection.removeComponent(h2); - storeInSession(); return true; } @@ -444,8 +440,6 @@ public class TemplateModel { String tcPage = ""+currentPage; TemplateSection singleSection = sections.get(tcPage); singleSection.resizeModelComponent(toResize, newWidth, newHeight); - - storeInSession(); } @@ -483,24 +477,6 @@ public class TemplateModel { return exportedURL; } - /** - * stores the current model in the session, not to be used anymore as images could have high payload - */ - @Deprecated - public void storeInSession() { -// Model modelToSend = getSerializableModel(); -// -// GWT.log("Storing in session: currpage = " + modelToSend.getCurrPage(), null); -// -// modelService.storeTemplateInSession(modelToSend, new AsyncCallback() { -// @Override -// public void onFailure(Throwable caught) { } -// @Override -// public void onSuccess(Void result) { -// } -// }); - } - //****** GETTERS n SETTERS /** * @return . @@ -511,7 +487,6 @@ public class TemplateModel { */ public void setCurrentPage(int currentPage) { this.currentPage = currentPage; - storeInSession(); } /** * @return . @@ -579,7 +554,6 @@ public class TemplateModel { */ public void setTemplateName(String templateName) { this.templateName = templateName; - storeInSession(); } /** diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/BasicTextArea.java b/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/BasicTextArea.java index 1a2bcf4..b740374 100644 --- a/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/BasicTextArea.java +++ b/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/BasicTextArea.java @@ -11,11 +11,8 @@ import com.google.gwt.event.dom.client.FocusEvent; import com.google.gwt.event.dom.client.FocusHandler; import com.google.gwt.event.dom.client.KeyUpEvent; import com.google.gwt.event.dom.client.KeyUpHandler; -import com.google.gwt.event.dom.client.MouseOutEvent; -import com.google.gwt.event.dom.client.MouseOutHandler; import com.google.gwt.user.client.ui.RichTextArea; import com.google.gwt.user.client.ui.TextArea; -import com.google.gwt.user.client.ui.Widget; /** * BasicTextArea is a resizable textArea * @@ -23,22 +20,18 @@ import com.google.gwt.user.client.ui.Widget; * @version July 2013 */ public class BasicTextArea extends TextArea { - private String myId; + //the id + private String id; //the properties associated private List metas; + // neeeded for js autosize + private String myId; - public BasicTextArea(ComponentType type, final Presenter presenter, int left, int top, final int width, final int height, boolean hasComments, boolean showClose) { - - myId = UUID.uuid(16); + public BasicTextArea(String id, ComponentType type, final Presenter presenter, int left, int top, final int width, final int height, boolean hasComments, boolean showClose) { + this.id = id; + myId = UUID.uuid(16); // neeeded for js autosize this.setPixelSize(width, height); - this.addMouseOutHandler(new MouseOutHandler() { - - public void onMouseOut(MouseOutEvent event) { - presenter.storeChangeInSession((Widget) event.getSource()); - } - }); - this.setStyleName("report-ui-component"); this.addStyleName("d4sFrame"); this.getElement().setId(myId); @@ -52,12 +45,6 @@ public class BasicTextArea extends TextArea { break; } - addMouseOutHandler(new MouseOutHandler() { - public void onMouseOut(MouseOutEvent event) { - presenter.storeChangeInSession((Widget) event.getSource()); - } - }); - this.addKeyUpHandler(new KeyUpHandler() { public void onKeyUp(KeyUpEvent event) { //presenter.resizeTemplateComponentInModel(myInstance, width, newHeight); @@ -127,4 +114,14 @@ public class BasicTextArea extends TextArea { resize(); }-*/; + + public String getId() { + return id; + } + + + public void setId(String id) { + this.id = id; + } + } diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/ClientImage.java b/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/ClientImage.java index 06a6ab5..12e2040 100644 --- a/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/ClientImage.java +++ b/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/ClientImage.java @@ -264,7 +264,6 @@ public class ClientImage extends Composite { mds.add(desc); mds.add(source); basicComponent.setMetadata(mds); - presenter.storeChangeInSession(this); GWT.log("Saved in Session"); } diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/D4sRichTextarea.java b/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/D4sRichTextarea.java index 4670cf5..b1b40e3 100644 --- a/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/D4sRichTextarea.java +++ b/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/D4sRichTextarea.java @@ -60,9 +60,9 @@ public class D4sRichTextarea extends ReportTextArea { * @param height . * @param type . */ - public D4sRichTextarea(ComponentType type, final Presenter presenter, int left, int top, final int width, + public D4sRichTextarea(String id, ComponentType type, final Presenter presenter, int left, int top, final int width, final int height, boolean hasComments, boolean showClose, TextTableImage owner) { - super(type, presenter, left, top, width, height, hasComments, showClose); + super(id, type, presenter, left, top, width, height, hasComments, showClose); this.owner = owner; currHeight = height; myPanel = getResizablePanel(); @@ -113,7 +113,6 @@ public class D4sRichTextarea extends ReportTextArea { area.addMouseOutHandler(new MouseOutHandler() { public void onMouseOut(MouseOutEvent event) { firstClick = true; - presenter.storeChangeInSession((Widget) event.getSource()); } }); diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/GenericTable.java b/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/GenericTable.java index c9b6678..22d3b84 100644 --- a/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/GenericTable.java +++ b/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/GenericTable.java @@ -16,8 +16,6 @@ import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.Style.Unit; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; -import com.google.gwt.event.dom.client.MouseOutEvent; -import com.google.gwt.event.dom.client.MouseOutHandler; import com.google.gwt.user.client.ui.Button; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.FlexTable; @@ -139,13 +137,6 @@ public class GenericTable extends Composite { focusPanel.add(myPanel); initWidget(focusPanel); - - focusPanel.addMouseOutHandler(new MouseOutHandler() { - @Override - public void onMouseOut(MouseOutEvent event) { - saveStatus(); - } - }); } private void saveTable(Table sTable) { @@ -153,9 +144,6 @@ public class GenericTable extends Composite { originalTable.setTable(sTable.getTable()); } - private void saveStatus() { - presenter.storeChangeInSession(this); - } /** * common Constructors Code */ diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/HeadingTextArea.java b/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/HeadingTextArea.java index f3469b5..3b99994 100644 --- a/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/HeadingTextArea.java +++ b/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/HeadingTextArea.java @@ -19,6 +19,7 @@ import com.google.gwt.user.client.ui.Widget; * @version July 2011 (3.0) */ public class HeadingTextArea extends ReportTextArea { + private TextArea textArea = new TextArea(); private VerticalPanel myPanel; private Presenter presenter; @@ -26,19 +27,13 @@ public class HeadingTextArea extends ReportTextArea { int currHeight = 0; - public HeadingTextArea(ComponentType type, final Presenter presenter, int left, int top, int width, final int height, boolean hasComments, boolean showClose) { - super(type, presenter, left, top, width, height, hasComments, showClose); + public HeadingTextArea(String id, ComponentType type, final Presenter presenter, int left, int top, int width, final int height, boolean hasComments, boolean showClose) { + super(id, type, presenter, left, top, width, height, hasComments, showClose); this.presenter = presenter; myPanel = getResizablePanel(); textArea.setPixelSize(width, height); - textArea.addMouseOutHandler(new MouseOutHandler() { - - public void onMouseOut(MouseOutEvent event) { - presenter.storeChangeInSession((Widget) event.getSource()); - } - }); textArea.setStyleName("report-ui-component"); switch (type) { case TITLE: @@ -73,13 +68,6 @@ public class HeadingTextArea extends ReportTextArea { myPanel.setVerticalAlignment(HasVerticalAlignment.ALIGN_BOTTOM); myPanel.setPixelSize(width, height); - textArea.addMouseOutHandler(new MouseOutHandler() { - - public void onMouseOut(MouseOutEvent event) { - presenter.storeChangeInSession((Widget) event.getSource()); - - } - }); } public String getText() { return textArea.getText(); @@ -97,4 +85,5 @@ public class HeadingTextArea extends ReportTextArea { this.metas = metas; } + } diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/ReportTextArea.java b/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/ReportTextArea.java index 864c0d6..766c8ea 100644 --- a/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/ReportTextArea.java +++ b/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/ReportTextArea.java @@ -24,7 +24,7 @@ import com.google.gwt.user.client.ui.VerticalPanel; * @version July 2011 (3.0) */ public class ReportTextArea extends Composite { - + private String id; /** * the allowance when mouse cursor is on borders */ @@ -78,10 +78,10 @@ public class ReportTextArea extends Composite { * @param height . * @param type a */ - public ReportTextArea(ComponentType type, final Presenter presenter, int left, int top, int width, int height, boolean hasComments, boolean isRemovable) { + public ReportTextArea(String id, ComponentType type, final Presenter presenter, int left, int top, int width, int height, boolean hasComments, boolean isRemovable) { myInstance = this; - + this.id = id; this.type = type; this.presenter = presenter; this.left = left; @@ -260,22 +260,12 @@ public class ReportTextArea extends Composite { commentImage.setUrl(ImageConstants.IMAGE_COMMENTS); } - public void showComment(String comment) { - // final Window window = new Window(); - // window.setTitle(""); - // window.setMaximizable(true); - // window.setResizable(true); - // window.setLayout(new FitLayout()); - // window.setWidth(200); - // window.setHeight(100); - // window.setModal(false); - // - // Panel windowPanel = new Panel(); - // windowPanel.setBaseCls("comment-popup"); - // windowPanel.setHtml(comment); - // windowPanel.setShadow(true); - // window.add(windowPanel); - // window.setPosition(commentImage.getAbsoluteLeft()+25, commentImage.getAbsoluteTop()); - // window.show(); + public String getId() { + return id; } + + public void setId(String id) { + this.id = id; + } + } diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/TSArea.java b/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/TSArea.java index feb8e2b..f39d433 100644 --- a/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/TSArea.java +++ b/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/TSArea.java @@ -134,9 +134,7 @@ public class TSArea extends Composite { moreDetails.addClickHandler(viewMetadataTS); showSample.addClickHandler(showTSSample); filter.addClickHandler(applyFilterTs); - - //TODO: check this - presenter.storeChangeInSession(this); + mainPanel.layout(true); } 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 a4e1324..8b890bd 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 @@ -60,7 +60,7 @@ public class TextTableImage extends Composite { if (isFromTemplate) { int height = 40; - D4sRichTextarea firstText = new D4sRichTextarea(ComponentType.BODY, presenter, 0, 0, DEFAULT_WIDTH, height, false, true, this); + D4sRichTextarea firstText = new D4sRichTextarea("-1", ComponentType.BODY, presenter, 0, 0, DEFAULT_WIDTH, height, false, true, this); firstText.setPixelSize(DEFAULT_WIDTH, height); mainPanel.add(firstText); //construct the first component and add it @@ -91,7 +91,7 @@ public class TextTableImage extends Composite { private void addNewText() { int height = 40; - D4sRichTextarea text = new D4sRichTextarea(ComponentType.BODY, presenter, 0, 0, DEFAULT_WIDTH, height, false, true, this); + D4sRichTextarea text = new D4sRichTextarea("-1", ComponentType.BODY, presenter, 0, 0, DEFAULT_WIDTH, height, false, true, this); text.setPixelSize(DEFAULT_WIDTH, height); TemplateComponent toAdd = new TemplateComponent(presenter.getModel(), 0, 0, DEFAULT_WIDTH, height, presenter.getModel().getCurrentPage(), ComponentType.BODY, "", text); diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/server/servlet/ImagesUploadServlet.java b/src/main/java/org/gcube/portlets/user/reportgenerator/server/servlet/ImagesUploadServlet.java deleted file mode 100644 index bb0fda0..0000000 --- a/src/main/java/org/gcube/portlets/user/reportgenerator/server/servlet/ImagesUploadServlet.java +++ /dev/null @@ -1,183 +0,0 @@ -package org.gcube.portlets.user.reportgenerator.server.servlet; - - - - -import java.io.File; -import java.io.IOException; - -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; - -import org.gcube.application.framework.core.session.ASLSession; -import org.gcube.application.framework.core.session.SessionManager; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * ImagesUploadServlet class is the server code delgated to receinve the byte stream and store i - * - * @author Massimiliano Assante, ISTI-CNR - massimiliano.assante@isti.cnr.it - * @version October 2008 (0.2) - */ - -public class ImagesUploadServlet extends HttpServlet { - - - private static final Logger _log = LoggerFactory.getLogger(ImagesUploadServlet.class); - - final String returnOKMessage = "OK"; - - private static final long serialVersionUID = 1L; - - private String currentUser; - - private String currentScope; - - /** - * - * @param message the msg - */ - public static void logger (String message) { - System.out.println("***" + message); - } - /** - * return the user template folder - * @param templateName - * @param currentDL . - * @param currentUser . - * @return . - */ - private String getTemplateFolder(String currentDL, String currentUser) { - _log.debug("getTemplateFolder Method called"); - // platform indipendent slash - String sl = File.separator; - //e.g. /home/massi/workspace/templategen/tomcat/webapps/ROOT - String path = System.getenv("CATALINA_HOME"); - path += sl + "webapps" + sl +"usersArea" + sl + currentDL + - sl + "templates" + sl + currentUser + sl ; - _log.debug("Returning Path= " + path); - return path; - - } - /** - * file upload handler - * @param request . - * @param response . - * @throws ServletException . - * @throws IOException . - */ - - public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - -// logger("ImagesUploadServlet received:"); -// -// currentUser = getUsername(request); -// currentScope = getVreName(request); -// -// String currTemplateName = request.getParameter("currTemplateName"); -// -// logger("currentUser: "+currentUser); -// logger("currentVRE: "+currentScope); -// logger("currTemplateName: "+currTemplateName); -// logger("CALLING :getTemplateFolder "); -// logger("RETURNED :getTemplateFolder "); -// //platform indipendent slash -// String sl = File.separator; -// String startDirectory = getTemplateFolder(currentScope, currentUser); //e.g. /home/massi/workspace/templategen/tomcat/webapps/ROOT -// int lastSlash = startDirectory.lastIndexOf(sl); -// startDirectory = startDirectory.substring(0, lastSlash); -// -// startDirectory += sl + "CURRENT_OPEN" + sl + "images"; -// -// logger("RETURNED : " + startDirectory); -// logger("WRITING... :"); -// -// String fileName = ""; -// PrintWriter out = response.getWriter(); -// -// if (!ServletFileUpload.isMultipartContent(request)) -// return; -// -// FileItemFactory factory = new DiskFileItemFactory(); -// ServletFileUpload upload = new ServletFileUpload(factory); -// -// List items = null; -// try { -// items = upload.parseRequest(request); -// } -// catch (FileUploadException e) { -// e.printStackTrace(); -// return; -// } -// File uploadedFile = null; -// for (Iterator i = items.iterator(); i.hasNext();) { -// FileItem item = (FileItem) i.next(); -// -// if (item.isFormField()) -// continue; -// fileName = item.getName(); -// if (fileName != null && fileName.compareTo("")!=0) { -// fileName = FilenameUtils.getName(fileName); -// -// uploadedFile = new File(startDirectory + File.separator + fileName); -// try { -// if(!uploadedFile.exists()){ -// File toCreate = new File(startDirectory); -// boolean success = toCreate.mkdirs(); -// if (success) -// Logger.debug("New file \"" + uploadedFile + "\" has been created "); -// } -// item.write(uploadedFile); -// } -// catch (Exception e) { e.printStackTrace(); } -// -// } -// } -// -// out.print(returnOKMessage); -// out.close(); - - } //end service - - /** - * - * @param httpServletRequest . - * @return . - */ - public String getUsername(HttpServletRequest httpServletRequest) { - - HttpSession session = httpServletRequest.getSession(); - String user = (String) session.getAttribute("username"); - if(session.getAttribute("username")== null) - { - user = "massi"; - logger("D4ScienceSession user NULL set to: " + user); - } - logger("D4ScienceSession user: " + user); - - ASLSession d4session = SessionManager.getInstance().getASLSession(session.getId(), user); - d4session.setAttribute("username", user); - return user; - } - - /** - * @param httpServletRequest . - * @return the shared session - */ - public String getVreName(HttpServletRequest httpServletRequest) { - HttpSession session = httpServletRequest.getSession(); - - ASLSession d4session = SessionManager.getInstance().getASLSession(session.getId(), getUsername(httpServletRequest)); - String scope = d4session.getScopeName(); - //need to remove the initial / of the scope - if (scope.charAt(0) == '/') - scope = scope.substring(1, scope.length()); - logger("ImagesUploadServlet SCOPE: " + scope); - //String scope = "gcube/devsec"; - return scope; - } -} 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 09b73ae..6d3a2a5 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 @@ -31,12 +31,14 @@ import org.apache.commons.io.IOUtils; import org.gcube.application.framework.accesslogger.library.impl.AccessLogger; import org.gcube.application.framework.core.session.ASLSession; import org.gcube.application.framework.core.session.SessionManager; +import org.gcube.application.reporting.Property; import org.gcube.application.reporting.ReportsModeler; import org.gcube.application.reporting.component.Heading; import org.gcube.application.reporting.component.Instruction; import org.gcube.application.reporting.component.ReportSequence; import org.gcube.application.reporting.component.TextInput; import org.gcube.application.reporting.component.Title; +import org.gcube.application.reporting.component.interfaces.ReportComponent; import org.gcube.application.reporting.reference.Column; import org.gcube.application.reporting.reference.DBTableRow; import org.gcube.application.reporting.reference.ReferenceReport; @@ -86,6 +88,7 @@ import org.gcube.portlets.user.reportgenerator.server.servlet.loggers.OpenWorkfl import org.gcube.portlets.user.reportgenerator.server.servlet.loggers.SaveWorkflowLogEntry; 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.widgets.exporter.shared.SaveReportFileException; import org.gcube.portlets.widgets.exporter.shared.SaveReportFileExistException; @@ -100,6 +103,8 @@ import com.liferay.portal.service.LockLocalServiceUtil; import com.liferay.portal.service.UserLocalServiceUtil; import com.liferay.portlet.documentlibrary.model.DLFileEntry; +import edu.emory.mathcs.backport.java.util.Arrays; + /** @@ -671,8 +676,8 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe for (BasicComponent component : section.getComponents()) { if (component.getType() == ComponentType.DYNA_IMAGE) { _log.debug("Found Simple Image: " + component.getPossibleContent()); - if (component.getIdInBasket() != null) { // you need to convert only new images that stay in the HL Workspace, this is the check - String imageID = component.getIdInBasket(); + if (component.getId() != null) { // you need to convert only new images that stay in the HL Workspace, this is the check + String imageID = component.getId(); component.setPossibleContent(getdDataImagebase64(imageID)); _log.trace("Image converted base 64 OK: " + component.getPossibleContent()); } @@ -681,8 +686,8 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe RepeatableSequence res = (RepeatableSequence) component.getPossibleContent(); for (BasicComponent co : res.getGroupedComponents()) { _log.debug("Found Image IN SEQUENCE, type is: " + component.getType()); - if (co.getIdInBasket() != null) { // you need to convert only new images that stay in the HL Workspace, this is the check - String imageID = co.getIdInBasket(); + if (co.getId() != null) { // you need to convert only new images that stay in the HL Workspace, this is the check + String imageID = co.getId(); co.setPossibleContent(getdDataImagebase64(imageID)); _log.trace("Image converted base 64 OK, in SEQUENCE: " + co.getPossibleContent()); } @@ -797,7 +802,11 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe * */ public void saveReport(Model toSave, String folderid, String newname) { - + try { + ReportsReader.readReportStructure(toSave); + } catch (Exception e1) { + e1.printStackTrace(); + } Model model = toSave; storeTemplateInSession(toSave); _log.info("Serializing Model in folder: " + folderid ); @@ -1463,17 +1472,20 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe } @Override - public ArrayList listVMEReports() { + public ArrayList listVMEReports() { try { Thread.sleep(1000); } catch (InterruptedException e) { } - ArrayList toReturn = new ArrayList(); + ArrayList toReturn = new ArrayList(); ReportType type = new ReportType(); type.setTypeIdentifier("Vme"); for (ReportEntry re : getFakeReports(type)) { - toReturn.add(new ItemSelectableBean(""+re.getId(), re.getNameValueList().get(0).getValue(), "", VMETypeIdentifier.Vme.toString())); + String rfmo = re.getNameValueList().get(0).getValue(); + String name = re.getNameValueList().get(1).getValue(); + int year = Integer.parseInt(re.getNameValueList().get(2).getValue()); + toReturn.add(new VMEReportBean(""+re.getId(), rfmo, name, year)); } return toReturn; @@ -1497,19 +1509,31 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe return toReturn; } - private List getFakeReports(ReportType type) { + + private List getFakeReports(ReportType type, NameValue... filters) { Random generator = new Random(); int n = generator.nextInt(15) + 5; ArrayList toReturn = new ArrayList(); - if (type.equals("Vme")) { + if (type.getTypeIdentifier().equals("Vme")) { ReportEntry re = new ReportEntry(); for (int i = 0; i < n; i++) { re = new ReportEntry(); re.setId(i); - List namesValues = new ArrayList(); + + NameValue rfmo = new NameValue(); + rfmo.setName("Rfmo"); + rfmo.setValue(i % 2 == 0 ? "NAFO" : "NEAFC"); NameValue name = new NameValue(); - name.setName( "VME Name " + i); + name.setName("Vme"); + name.setValue("VME " + generateRandomWord()); + NameValue year = new NameValue(); + year.setName("Year"); + year.setValue(""+(2000+generator.nextInt(15))); + List namesValues = new ArrayList(); + namesValues.add(rfmo); namesValues.add(name); + namesValues.add(year); + re.setNameValueList(namesValues); toReturn.add(re); } @@ -1530,7 +1554,7 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe } @Override - public Model importVMEReport(String id, String name) { + public Model importVMEReport(String id) { String reportName = "Sample VME Report imported with id: " + id; ReportsModeler rm = new ReportsModeler( UUID.randomUUID().toString(), @@ -1541,7 +1565,7 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe getASLSession().getUsername() ); rm.add(new Instruction(null)); - rm.add(new Title(name, false)); + rm.add(new Title("Name for id " + id, false)); rm.add(new Heading(1, "VME Name (Non Editable) ")); rm.add(new TextInput("Corner Rise Seamounts")); rm.add(new Heading(2, "This is a Heading of Level 2 that is editable")); @@ -1549,6 +1573,17 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe rm.add(new TextInput()); rm.nextSection(); rm = addSection2(rm); + rm.nextSection(); + ReportComponent rp = new TextInput("With props and id"); + rp.setId(UUID.randomUUID().toString()); + rp.setProperties(new Property("theId", "theValue")); + rm.add(rp); + + rp = new Heading(1, "Ciao!"); + rp.setId(UUID.randomUUID().toString()); + rp.setProperties(new Property("theId", "theValue")); + rm.add(rp); + try { return rm.getReportInstance(); } catch (Exception e) { @@ -1618,5 +1653,17 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe rm.add(seq); return rm; } - + /** + * TODO: remove once you get real names + * @return + */ + private static String generateRandomWord() { + Random random = new Random(); + char[] word = new char[random.nextInt(8)+3]; // words of length 3 through 10. (1 and 2 letter words are boring.) + for(int j = 0; j < word.length; j++) + { + word[j] = (char)('a' + random.nextInt(26)); + } + return new String(word); + } } diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/server/servlet/ReportsReader.java b/src/main/java/org/gcube/portlets/user/reportgenerator/server/servlet/ReportsReader.java new file mode 100644 index 0000000..63f697f --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/reportgenerator/server/servlet/ReportsReader.java @@ -0,0 +1,94 @@ +package org.gcube.portlets.user.reportgenerator.server.servlet; + +import org.gcube.application.reporting.component.Box; +import org.gcube.application.reporting.component.BoxesArea; +import org.gcube.application.reporting.component.interfaces.ReportComponent; +import org.gcube.application.reporting.persistence.PersistenceManager; +import org.gcube.application.reporting.reader.ModelReader; +import org.gcube.application.reporting.reader.Section; +import org.gcube.application.reporting.reference.Column; +import org.gcube.application.reporting.reference.DBTableRow; +import org.gcube.application.reporting.reference.ReferenceReport; +import org.gcube.portlets.d4sreporting.common.shared.Model; + +public class ReportsReader { + + /** + * Read and print in the console the Structure of the serialized report + * @throws Exception + * @see {@link PersistenceManager#readModel(String)} + */ + public static void readReportStructure(Model model) throws Exception { + + ModelReader reader = new ModelReader(model); + int i = 1; + for (Section section : reader.getSections()) { + System.out.println("Reading Section " + i); + for (ReportComponent rc : section.getComponents()) { + printReportCompomnent(rc, ""); + } + i++; + } + + + } + + /** Non Test methods **/ + /** + * ket method whne reading + * @param rc + * @param sep + */ + private static void printReportCompomnent(ReportComponent rc, String sep) { + switch (rc.getType()) { + case TITLE: + case HEADING: + case INSTRUCTION: + case TEXT_INPUT: + System.out.println(sep +"Type: " + rc.getType()+"\n\tId: " + rc.getId() + "\tValue: " + rc.getStringValue() + " props="+rc.getProperties().toString()); + break; + case BOXAREA: + BoxesArea ba = (BoxesArea) rc; + System.out.println(sep +"Type: " + rc.getType()); + for (ReportComponent rpc : ba.getChildren()) { + Box attrBox = (Box) rpc; + System.out.println("\t"+attrBox); + } + break; + case SEQUENCE: + System.out.println(sep +"Type: " + rc.getType()); + for (ReportComponent rpc : rc.getChildren()) { + printReportCompomnent(rpc, sep+"\t"); + } + break; + case REFERENCE: + ReferenceReport ref = (ReferenceReport) rc; + System.out.println(sep +"Type: " + rc.getType() + " RefType=" + ref.getRefType()); + for (ReportComponent rpc : rc.getChildren()) { + printReportCompomnent(rpc, sep+"\t"); + } + break; + case MEDIA: + System.out.println(sep +"Type: " + rc.getType()); + for (ReportComponent rpc : rc.getChildren()) { + printReportCompomnent(rpc, sep+"\t"); + } + break; + case TB_ROW: + DBTableRow tr = (DBTableRow) rc; + System.out.println(sep +"Type: " + rc.getType() + " key=" + tr.getId()); + for (ReportComponent rpc : rc.getChildren()) { + printReportCompomnent(rpc, sep+"\t"); + } + break; + case TB_COLUMN: + Column cl = (Column) rc; + System.out.println(sep + rc.getType() + " Name= " + cl.getName() + ", Value ="+ cl.getValue()); + break; + case ATTRIBUTE: + break; + default: + break; + } + } +} diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/shared/VMEReportBean.java b/src/main/java/org/gcube/portlets/user/reportgenerator/shared/VMEReportBean.java new file mode 100644 index 0000000..8b941f0 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/reportgenerator/shared/VMEReportBean.java @@ -0,0 +1,33 @@ +package org.gcube.portlets.user.reportgenerator.shared; + +import com.extjs.gxt.ui.client.data.BaseModel; + +@SuppressWarnings("serial") +public class VMEReportBean extends BaseModel { + + public VMEReportBean() {} + + public VMEReportBean(String id, String rfmo, String name, int year) { + super(); + set("id", id); + set("rfmo", rfmo); + set("name", name); + set("year", year); + } + + public String getId() { + return (String) get("id"); + } + + public String getRfmo() { + return (String) get("rfmo"); + } + + public String getName() { + return (String) get("name"); + } + + public int getYear() { + return (Integer) get("year"); + } +} 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 bf65631..d0b301f 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,9 +1,23 @@ package org.gcube.portlets.user.reportgenerator.shared; public enum VMETypeIdentifier { - Vme, - GeneralMeasure, - InformationSource, - FisheryAreasHistory, - VmesHistory; + Vme("GeneralMeasure"), + GeneralMeasure("GeneralMeasure"), + InformationSource("InformationSource"), + FisheryAreasHistory("FisheryAreasHistory"), + VMEsHistory("VMEsHistory"), + Rfmo("Rfmo"); + + private String _id; + + private VMETypeIdentifier(String id) { + this._id = id; + } + + /** + * @return the 'id' value + */ + public String getId() { + return this._id; + } } diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml index c91c8ac..3d9ac9d 100644 --- a/src/main/webapp/WEB-INF/web.xml +++ b/src/main/webapp/WEB-INF/web.xml @@ -25,17 +25,6 @@ - - - ImagesUploadServlet - org.gcube.portlets.user.reportgenerator.server.servlet.ImagesUploadServlet - - - - ImagesUploadServlet - /reports/ImagesUploadServlet - - WorkspaceLightService org.gcube.portlets.widgets.lighttree.server.WorkspaceServiceImpl