Import Dialog Complete

git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/portlets/user/reports@86096 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Massimiliano Assante 2013-11-25 16:12:01 +00:00
parent 6e9b17be9d
commit fba76628e0
26 changed files with 566 additions and 426 deletions

View File

@ -8,6 +8,15 @@
<dependent-module archiveName="gcube-reporting-modeler-1.1.0-SNAPSHOT.jar" deploy-path="/WEB-INF/lib" handle="module:/resource/gcube-reporting-modeler/gcube-reporting-modeler">
<dependency-type>uses</dependency-type>
</dependent-module>
<dependent-module archiveName="reports-store-gateway-client-0.0.1-SNAPSHOT.jar" deploy-path="/WEB-INF/lib" handle="module:/resource/reports-store-gateway-client/reports-store-gateway-client">
<dependency-type>uses</dependency-type>
</dependent-module>
<dependent-module archiveName="reports-store-gateway-support-model-0.0.1-SNAPSHOT.jar" deploy-path="/WEB-INF/lib" handle="module:/resource/reports-store-gateway-support-model/reports-store-gateway-support-model">
<dependency-type>uses</dependency-type>
</dependent-module>
<dependent-module archiveName="reports-store-gateway-interface-dto-0.0.1-SNAPSHOT.jar" deploy-path="/WEB-INF/lib" handle="module:/resource/reports-store-gateway-interface-dto/reports-store-gateway-interface-dto">
<dependency-type>uses</dependency-type>
</dependent-module>
<dependent-module archiveName="document-workflow-library-1.4.0-SNAPSHOT.jar" deploy-path="/WEB-INF/lib" handle="module:/resource/document-workflow-library/document-workflow-library">
<dependency-type>uses</dependency-type>
</dependent-module>

View File

@ -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() {

View File

@ -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<ArrayList<ItemSelectableBean>>() {
@Override
public void onFailure(Throwable caught) {
//handled by the Widget
}
@Override
public void onSuccess(ArrayList<ItemSelectableBean> 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<Model>() {
reportService.importVMEReport(reportId, new AsyncCallback<Model>() {
@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<Model>() {
private void associateVMRReportRef (VMETypeIdentifier type, String reportId) throws Exception {
reportService.importVMEReportRef(reportId, type, new AsyncCallback<Model>() {
@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());
}
}

View File

@ -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<ItemSelectableBean> listVMEReports();
ArrayList<VMEReportBean> listVMEReports();
ArrayList<ItemSelectableBean> listVMEReportRefByType(VMETypeIdentifier refType);
Model importVMEReport(String id, String name);
Model importVMEReport(String id);
Model importVMEReportRef(String id, VMETypeIdentifier refType);

View File

@ -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<Model> callback);
void saveReport(Model toSave, String folderid, String newname,
AsyncCallback<Void> callback);
void saveReport(Model toSave, String folderid, String newname, AsyncCallback<Void> callback);
void saveReport(Model toSave, AsyncCallback<Void> callback);
/**
@ -63,21 +63,24 @@ public interface ReportServiceAsync {
* @param callback
*/
void getSessionInfo(String currentHost, AsyncCallback<SessionInfo> callback);
void getWorkflowDocumentFromDocumentLibrary(
AsyncCallback<Model> callback);
void updateWorkflowDocument(Model toSave, boolean update,
AsyncCallback<Void> callback);
void getWorkflowDocumentFromDocumentLibrary(AsyncCallback<Model> callback);
void updateWorkflowDocument(Model toSave, boolean update, AsyncCallback<Void> callback);
void renewLock(AsyncCallback<Void> callback);
void readImportedModel(String tempPath,
AsyncCallback<Model> callback);
void save(String filePath, String workspaceFolderId, String ItemName,
TypeExporter type, boolean overwrite, AsyncCallback<String> callback);
void readImportedModel(String tempPath, AsyncCallback<Model> callback);
void save(String filePath, String workspaceFolderId, String ItemName, TypeExporter type, boolean overwrite, AsyncCallback<String> callback);
void renewHTTPSession(AsyncCallback<Void> callback);
void listVMEReports(AsyncCallback<ArrayList<ItemSelectableBean>> callback);
void importVMEReport(String id, String name, AsyncCallback<Model> callback);
void listVMEReportRefByType(VMETypeIdentifier refType,
AsyncCallback<ArrayList<ItemSelectableBean>> callback);
void importVMEReportRef(String id, VMETypeIdentifier refType,
AsyncCallback<Model> callback);
void listVMEReports(AsyncCallback<ArrayList<VMEReportBean>> callback);
void importVMEReport(String id, AsyncCallback<Model> callback);
void listVMEReportRefByType(VMETypeIdentifier refType, AsyncCallback<ArrayList<ItemSelectableBean>> callback);
void importVMEReportRef(String id, VMETypeIdentifier refType, AsyncCallback<Model> callback);
}

View File

@ -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);

View File

@ -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

View File

@ -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<VMEReportBean> 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<VMEReportBean>() {
@Override
protected boolean doSelect(Store<VMEReportBean> 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<ArrayList<VMEReportBean>>() {
@Override
public void onFailure(Throwable caught) {
mainPanel.unmask();
}
@Override
public void onSuccess(ArrayList<VMEReportBean> reports) {
mainPanel.unmask();
for (VMEReportBean vmeReportBean : reports) {
GWT.log(vmeReportBean.getName());
}
showCollections(reports);
}
});
}
/**
* view for collections step
* @param vDesc
*/
public void showCollections(List<VMEReportBean> reports) {
ColumnModel cm = null;
List<ColumnConfig> configs = new ArrayList<ColumnConfig>();
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<VMEReportBean> store = new GroupingStore<VMEReportBean>();
store.add(reports);
store.groupBy("rfmo");
filter.bind(store);
final Grid<VMEReportBean> grid = new Grid<VMEReportBean>(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<ButtonEvent>() {
@Override
public void componentSelected(ButtonEvent ce) {
hide();
}
}));
gridPanel.addButton(new Button("Import Selected", new SelectionListener<ButtonEvent>() {
@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");
}
}

View File

@ -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<SelectedReportEventHandler>{
public static Type<SelectedReportEventHandler> TYPE = new Type<SelectedReportEventHandler>();
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<SelectedReportEventHandler> getAssociatedType() {
return TYPE;
}
@Override
protected void dispatch(SelectedReportEventHandler handler) {
handler.onReportSelected(this);
}
}

View File

@ -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);
}

View File

@ -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;
}
/**
*

View File

@ -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<Void>() {
// @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();
}
/**

View File

@ -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;
/**
* <code> BasicTextArea </code> 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<Metadata> 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;
}
}

View File

@ -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");
}

View File

@ -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());
}
});

View File

@ -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
*/

View File

@ -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;
}
}

View File

@ -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;
}
}

View File

@ -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);
}

View File

@ -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);

View File

@ -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;
/**
* <code> ImagesUploadServlet </code> 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;
}
}

View File

@ -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<ItemSelectableBean> listVMEReports() {
public ArrayList<VMEReportBean> listVMEReports() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
}
ArrayList<ItemSelectableBean> toReturn = new ArrayList<ItemSelectableBean>();
ArrayList<VMEReportBean> toReturn = new ArrayList<VMEReportBean>();
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<ReportEntry> getFakeReports(ReportType type) {
private List<ReportEntry> getFakeReports(ReportType type, NameValue... filters) {
Random generator = new Random();
int n = generator.nextInt(15) + 5;
ArrayList<ReportEntry> toReturn = new ArrayList<ReportEntry>();
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<NameValue> namesValues = new ArrayList<NameValue>();
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<NameValue> namesValues = new ArrayList<NameValue>();
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);
}
}

View File

@ -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;
}
}
}

View File

@ -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");
}
}

View File

@ -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;
}
}

View File

@ -25,17 +25,6 @@
<!-- <url-pattern>/reports/quicktourServlet</url-pattern> -->
<!-- </servlet-mapping> -->
<servlet>
<servlet-name>ImagesUploadServlet</servlet-name>
<servlet-class>org.gcube.portlets.user.reportgenerator.server.servlet.ImagesUploadServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ImagesUploadServlet</servlet-name>
<url-pattern>/reports/ImagesUploadServlet</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>WorkspaceLightService</servlet-name>
<servlet-class>org.gcube.portlets.widgets.lighttree.server.WorkspaceServiceImpl</servlet-class>