diff --git a/.classpath b/.classpath index b5c21af..dd1e368 100644 --- a/.classpath +++ b/.classpath @@ -1,6 +1,6 @@ - + @@ -26,10 +26,10 @@ - + - + - + diff --git a/.settings/com.google.gdt.eclipse.core.prefs b/.settings/com.google.gdt.eclipse.core.prefs index e5925c3..001af32 100644 --- a/.settings/com.google.gdt.eclipse.core.prefs +++ b/.settings/com.google.gdt.eclipse.core.prefs @@ -2,6 +2,6 @@ <<<<<<<=.mine >>>>>>>=.r71295 eclipse.preferences.version=1 -lastWarOutDir=/Users/massi/Documents/workspace/reports/target/reports-4.7.1-SNAPSHOT +lastWarOutDir=/Users/massi/Documents/workspace/reports/target/reports-4.7.2-SNAPSHOT warSrcDir=src/main/webapp warSrcDirIsOutput=false diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs index 69c31cd..443e085 100644 --- a/.settings/org.eclipse.jdt.core.prefs +++ b/.settings/org.eclipse.jdt.core.prefs @@ -1,8 +1,8 @@ eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 -org.eclipse.jdt.core.compiler.compliance=1.6 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 +org.eclipse.jdt.core.compiler.compliance=1.7 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.enumIdentifier=error org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning -org.eclipse.jdt.core.compiler.source=1.6 +org.eclipse.jdt.core.compiler.source=1.7 diff --git a/.settings/org.eclipse.wst.common.project.facet.core.xml b/.settings/org.eclipse.wst.common.project.facet.core.xml index 8937229..6491a24 100644 --- a/.settings/org.eclipse.wst.common.project.facet.core.xml +++ b/.settings/org.eclipse.wst.common.project.facet.core.xml @@ -3,5 +3,5 @@ - + diff --git a/pom.xml b/pom.xml index 2f091af..983874c 100644 --- a/pom.xml +++ b/pom.xml @@ -12,7 +12,7 @@ org.gcube.portlets.user reports war - 4.7.1-SNAPSHOT + 4.7.2-SNAPSHOT gCube Reports Manager gCube Reports Portlet. @@ -281,8 +281,8 @@ maven-compiler-plugin 2.3.2 - 1.6 - 1.6 + 1.7 + 1.7 diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/client/Presenter/CommonCommands.java b/src/main/java/org/gcube/portlets/user/reportgenerator/client/Presenter/CommonCommands.java index 861433e..73e9ec7 100644 --- a/src/main/java/org/gcube/portlets/user/reportgenerator/client/Presenter/CommonCommands.java +++ b/src/main/java/org/gcube/portlets/user/reportgenerator/client/Presenter/CommonCommands.java @@ -29,6 +29,10 @@ import com.google.gwt.user.client.ui.PopupPanel; * @author Massimiliano Assante, ISTI-CNR - massimiliano.assante@isti.cnr.it */ public class CommonCommands { + /** + * + */ + public Command exportToRSG; /** * */ @@ -229,6 +233,12 @@ public class CommonCommands { saveReportAsDialog(); } }; + + exportToRSG = new Command() { + public void execute() { + presenter.exportReportToRSG(); + } + }; } //end constructor 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 94249cf..a432bd3 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 @@ -419,6 +419,7 @@ public class Presenter { toReturn.put("structureView", commonCommands.structureView); toReturn.put("save", commonCommands.saveTemplate); + toReturn.put("exportRSG", commonCommands.exportToRSG); toReturn.put("newdoc", commonCommands.newTemplate); toReturn.put("open_report", commonCommands.openReport); toReturn.put("open_template", commonCommands.openTemplate); @@ -523,7 +524,26 @@ public class Presenter { } - + /** + * Save the current report in a given folder + * + */ + public void exportReportToRSG() { + dlg.center(); + dlg.show(); + Model toSave = model.getSerializableModel(); + reportService.exportReportToRSG(toSave, new AsyncCallback() { + public void onFailure(Throwable caught) { + dlg.hide(); + MessageBox.alert("Warning","Report Not Exported: " + caught.getMessage(), null); + } + public void onSuccess(Void result) { + dlg.hide(); + MessageBox.info("Exporting to RSG Operation","Report Exported Successfully", null); + refreshWorkspace(); + } + }); + } /** * Save the current report in a given folder * 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 f86a72c..ddde1e3 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 @@ -85,6 +85,11 @@ public interface ReportService extends RemoteService{ */ void saveReport(Model toSave); + /** + * @param toSave the report instance to save + */ + void exportReportToRSG(Model toSave); + Model getWorkflowDocumentFromDocumentLibrary(); void updateWorkflowDocument(Model toSave, boolean update); 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 00c2dab..c838253 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 @@ -86,4 +86,5 @@ public interface ReportServiceAsync { void getVMEReportRef2Associate(String id, VMETypeIdentifier refType, AsyncCallback callback); void importVMETemplate(VMETypeIdentifier refType, AsyncCallback callback); + void exportReportToRSG(Model toSave, AsyncCallback callback); } 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 bf2c4df..b6a72cb 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 @@ -386,6 +386,7 @@ public class TemplateComponent { if (refs != null) { ArrayList tuple = refs.getTuples(); ClientReportReference cmSeq = new ClientReportReference(presenter, refs.getRefType(), tuple, refs.isSingleRelation()); + cmSeq.setMetadata(sc.getMetadata()); this.content = cmSeq; } else this.content = new HTML(""); @@ -522,6 +523,7 @@ public class TemplateComponent { break; case REPORT_REFERENCE: ClientReportReference cRef = (ClientReportReference) this.content; + metas = cRef.getMetadata(); ReportReferences ref = new ReportReferences(cRef.getRefType(), cRef.getTupleList(), cRef.isSingleRelation()); content = ref; break; diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/ClientRepeatableSequence.java b/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/ClientRepeatableSequence.java index 0810a44..8214e23 100644 --- a/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/ClientRepeatableSequence.java +++ b/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/ClientRepeatableSequence.java @@ -7,9 +7,12 @@ import org.gcube.portlets.d4sreporting.common.shared.BasicComponent; import org.gcube.portlets.d4sreporting.common.shared.ComponentType; import org.gcube.portlets.d4sreporting.common.shared.Metadata; import org.gcube.portlets.d4sreporting.common.shared.RepeatableSequence; +import org.gcube.portlets.d4sreporting.common.shared.ReportReferences; +import org.gcube.portlets.d4sreporting.common.shared.Tuple; import org.gcube.portlets.user.reportgenerator.client.Presenter.Presenter; import org.gcube.portlets.user.reportgenerator.client.model.TemplateComponent; +import com.google.gwt.core.shared.GWT; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.VerticalPanel; @@ -35,7 +38,7 @@ public class ClientRepeatableSequence extends Composite implements ClientSequenc this.originalSequence = extractOriginalSequence(sRS); SequenceWidget seqW = new SequenceWidget(p, this, originalSequence, true, false); myPanel.add(seqW); - + for (RepeatableSequence repeatSeq : getRepeats()) { addAnother(repeatSeq); } @@ -86,7 +89,7 @@ public class ClientRepeatableSequence extends Composite implements ClientSequenc if (repeatDelimiterCounter == 0) { toReturn.add(new RepeatableSequence(groupedComponents, repSequence.getHeight())); repeatDelimiterCounter = 2; - groupedComponents = new ArrayList(); + groupedComponents = new ArrayList(); } } //if there is only the first sequence return nothing @@ -109,7 +112,7 @@ public class ClientRepeatableSequence extends Composite implements ClientSequenc SequenceWidget seqW = new SequenceWidget(p, this, sRS, false, false); myPanel.add(seqW); } - + protected void addNew(RepeatableSequence sRS) { SequenceWidget seqW = new SequenceWidget(p, this, sRS, false, true); @@ -125,42 +128,98 @@ public class ClientRepeatableSequence extends Composite implements ClientSequenc groupedComponents.remove(tc); } } - //TODO: change the -1 in the current max + /** + * add the template component in the model + */ + @Override + public void addTemplateComponent(TemplateComponent toAdd) { + groupedComponents.add(toAdd); + } + /** + * return the grouped components of a sequence. For the specific RSG case if it finds a @see {@link SequenceWidget} RSG_BINDING_PROPERTY + * with value -1 it update it to the max value so far (requirement for RSG needed to wrote back the report in the DB) + * Note that a Sequence can contain multiple sequences and they are separeted by componentType.REPEAT_SEQUENCE_DELIMITER + */ @Override public ArrayList getGroupedComponents() { - return groupedComponents; - } - /** - * @return specific cor RSG Case search for binding="geoRefList[3]" - */ - private int getMaxIndex() { - int max = 0; - for (TemplateComponent co : groupedComponents) { - for (Metadata prop : co.getAllMetadata()) { - if (prop.getAttribute().equals(SequenceWidget.RSG_BINDING_PROPERTY)) { - int currValue = extractIndexFromBindingContext(prop.getValue()); - if (currValue > max) - max = currValue; + int maxBindingContext = getMaxIndex(); + for (int i = 0; i < groupedComponents.size(); i++) { + TemplateComponent co = groupedComponents.get(i); + + if (co.getType() == ComponentType.REPEAT_SEQUENCE_DELIMITER) { + maxBindingContext++; + } + + //specific for report References in Sequences + if (co.getType() == ComponentType.REPORT_REFERENCE) { + GWT.log("Reference found"); + ClientReportReference refGroup = (ClientReportReference) co.getContent(); + if (refGroup != null) { + for (Metadata prop : refGroup.getMetadata()) { + GWT.log("-" + prop.getAttribute()+":"+prop.getValue()); + //if there's a new component + if ( prop.getAttribute().equals(SequenceWidget.RSG_BINDING_PROPERTY) && (extractIndexFromBindingContext(prop.getValue()) == -1) ) { + prop.setValue(replaceIndexFromBindingContext(prop.getValue(), maxBindingContext)); + break; + } + } + + //GWT.log("-" + prop.getAttribute()+":"+prop.getValue()); } } + //for any other component + for (Metadata prop : co.getAllMetadata()) { + //if there's a new component + if ( prop.getAttribute().equals(SequenceWidget.RSG_BINDING_PROPERTY) && (extractIndexFromBindingContext(prop.getValue()) == -1) ) { + prop.setValue(replaceIndexFromBindingContext(prop.getValue(), maxBindingContext)); + break; + } + } } - return max; + return groupedComponents; } - + + /** + * + * @param binding it expect sth like #.profileList[0] or #.specificMeasureList[0] etc + * and return the integer into square brackets + * @return the integer into square brackets + */ private int extractIndexFromBindingContext(String binding) { int openSquareBracket = binding.lastIndexOf("[")+1; int closeSquareBracket = binding.lastIndexOf("]"); return Integer.parseInt(binding.substring(openSquareBracket, closeSquareBracket)); } - + /** + * + * @param binding it expect sth like #.profileList[0] or #.specificMeasureList[0] etc + * @param newIndex + * @return return the newIndex into square brackets + */ private String replaceIndexFromBindingContext(String binding, int newIndex) { int openSquareBracket = binding.lastIndexOf("[")+1; int closeSquareBracket = binding.lastIndexOf("]"); String toReturn = binding.substring(0, openSquareBracket) + newIndex + binding.substring(closeSquareBracket); return toReturn; } - + /** + * @return specific cor RSG Case search for binding="geoRefList[3]" and return the max number into the square brackets + */ + private int getMaxIndex() { + int max = 0; + for (TemplateComponent co : groupedComponents) { + for (Metadata prop : co.getAllMetadata()) { + if (prop.getAttribute().equals(SequenceWidget.RSG_BINDING_PROPERTY)) { + int currValue = extractIndexFromBindingContext(prop.getValue()); + if (currValue > max) + max = currValue; + } + } + } + GWT.log("return max=" +max); + return max; + } public void setGroupedComponents(ArrayList groupedComponents) { this.groupedComponents = groupedComponents; } @@ -196,7 +255,9 @@ public class ClientRepeatableSequence extends Composite implements ClientSequenc public void setMetadata(List metas) { this.metas = metas; - } - - + } + + + + } diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/ClientReportReference.java b/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/ClientReportReference.java index aea6a61..76851f1 100644 --- a/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/ClientReportReference.java +++ b/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/ClientReportReference.java @@ -1,9 +1,11 @@ package org.gcube.portlets.user.reportgenerator.client.targets; import java.util.ArrayList; +import java.util.List; import org.gcube.portlets.d4sreporting.common.shared.BasicComponent; import org.gcube.portlets.d4sreporting.common.shared.ComponentType; +import org.gcube.portlets.d4sreporting.common.shared.Metadata; import org.gcube.portlets.d4sreporting.common.shared.RepeatableSequence; import org.gcube.portlets.d4sreporting.common.shared.Tuple; import org.gcube.portlets.user.reportgenerator.client.Presenter.Presenter; @@ -20,10 +22,10 @@ import com.google.gwt.user.client.ui.VerticalPanel; * @author massi * */ -public class ClientReportReference extends Composite implements ClientSequence { +public class ClientReportReference extends Composite implements ClientSequence, Cloneable { private final int indentationValue = 20; - + private List metas; protected ArrayList groupedComponents = new ArrayList(); private VerticalPanel myPanel = new VerticalPanel(); @@ -109,6 +111,14 @@ public class ClientReportReference extends Composite implements ClientSequence { return singleRelation; } + /** + * add the template component in the model + */ + @Override + public void addTemplateComponent(TemplateComponent toAdd) { + groupedComponents.add(toAdd); + } + @Override public ArrayList getGroupedComponents() { return groupedComponents; @@ -178,7 +188,7 @@ public class ClientReportReference extends Composite implements ClientSequence { } /** - * A Ref is a seqeunce with diffrent style (intendedm white background and less wide) + * A Ref is a seqeunce with diffrent style (indented, white background and less wide) * */ private SequenceWidget getRefSequence(Presenter p, ClientSequence owner, RepeatableSequence repSequence, boolean notRemovable, boolean isNew) { @@ -188,4 +198,12 @@ public class ClientReportReference extends Composite implements ClientSequence { toReturn.alignButtonsLeft(); return toReturn; } + + public List getMetadata() { + return metas; + } + + public void setMetadata(List metas) { + this.metas = metas; + } } diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/ClientSequence.java b/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/ClientSequence.java index 7eab373..ae861b4 100644 --- a/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/ClientSequence.java +++ b/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/ClientSequence.java @@ -8,6 +8,8 @@ import org.gcube.portlets.user.reportgenerator.client.model.TemplateComponent; public interface ClientSequence { ArrayList getGroupedComponents(); + + void addTemplateComponent(TemplateComponent toAdd); boolean add(String id, RepeatableSequence sequence, boolean isSingleRelation); diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/SequenceWidget.java b/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/SequenceWidget.java index c78b3b4..14f4163 100644 --- a/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/SequenceWidget.java +++ b/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/SequenceWidget.java @@ -7,6 +7,7 @@ import org.gcube.portlets.d4sreporting.common.shared.BasicComponent; import org.gcube.portlets.d4sreporting.common.shared.ComponentType; import org.gcube.portlets.d4sreporting.common.shared.Metadata; import org.gcube.portlets.d4sreporting.common.shared.RepeatableSequence; +import org.gcube.portlets.d4sreporting.common.shared.Tuple; import org.gcube.portlets.user.reportgenerator.client.Presenter.Presenter; import org.gcube.portlets.user.reportgenerator.client.model.TemplateComponent; @@ -72,10 +73,23 @@ public class SequenceWidget extends Composite { sComp.setPossibleContent(""); sComp.setMetadata(setPropertiesForRSG(sComp.getMetadata())); } + + TemplateComponent toAdd = new TemplateComponent(p.getModel(), sComp, p, false, null); if (isNew && sComp.getType() == ComponentType.REPORT_REFERENCE ) { //when adding a new Sequence blanks the Ref ClientReportReference cRef = (ClientReportReference) toAdd.getContent(); - cRef.clear(); + //need to clone the Tuple otherwise when blanking the ref it blanks the source too + ArrayList clonedTuples = new ArrayList(); + for (Tuple tuple : cRef.getTupleList()) { + Tuple clonedTuple = tuple.clone(); + clonedTuple.setKey("-1"); + clonedTuples.add(clonedTuple); + } + + ClientReportReference clonedRef = new ClientReportReference(p, cRef.getRefType(), clonedTuples, cRef.isSingleRelation()); + clonedRef.setMetadata(setPropertiesForRSG(sComp.getMetadata())); //copy the metadata and signal is new + toAdd.setContent(clonedRef); + clonedRef.clear(); } add(toAdd); @@ -126,6 +140,7 @@ public class SequenceWidget extends Composite { private List setPropertiesForRSG(List properties) { List toReturn = new ArrayList(); + //cloning metadata for (Metadata metadata : properties) { Metadata toAdd = new Metadata(metadata.getAttribute(), metadata.getValue()); toReturn.add(toAdd); @@ -177,10 +192,10 @@ public class SequenceWidget extends Composite { buttonsWrapperPanel.insert(clearB, 0); } - +//TODO: public void clearAssociation() { - GWT.log("Clearing Association"); + GWT.log("Clearing Association"); //in the MODEL leave only the delimiters ArrayList cleanedRef = new ArrayList(); for (BasicComponent bc : repSequence.getGroupedComponents()) { @@ -219,7 +234,7 @@ public class SequenceWidget extends Composite { public void add(TemplateComponent toAdd) { if (toAdd.getType() != ComponentType.REPEAT_SEQUENCE_INNER) { - owner.getGroupedComponents().add(toAdd); + owner.addTemplateComponent(toAdd); seqGroupedComponents.add(toAdd); myPanel.add(toAdd.getContent()); } diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/client/toolbar/RichTextToolbar.java b/src/main/java/org/gcube/portlets/user/reportgenerator/client/toolbar/RichTextToolbar.java index 4981fa7..66504e8 100644 --- a/src/main/java/org/gcube/portlets/user/reportgenerator/client/toolbar/RichTextToolbar.java +++ b/src/main/java/org/gcube/portlets/user/reportgenerator/client/toolbar/RichTextToolbar.java @@ -78,7 +78,12 @@ public class RichTextToolbar extends Composite { } else if (sender == save) { //call the command of Templates or Reports commands.get("save").execute(); - } else if (sender == newdoc) { + } + else if (sender == saveDB) { + //call the command toExport to RSG the current instance of the model + commands.get("exportRSG").execute(); + } + else if (sender == newdoc) { commands.get("newdoc").execute(); }else if (sender == structureView) { commands.get("structureView").execute(); @@ -255,13 +260,7 @@ public class RichTextToolbar extends Composite { //add the close button topPanel.add(close = createPushButton(images.closeDoc(), strings.close_report())); if (isVme) { - topPanel.add(saveDB = createPushButton(images.db_save(), "Commit current in VME-DB")); - saveDB.addClickHandler(new ClickHandler() { - @Override - public void onClick(ClickEvent event) { - Window.alert("Not currently available"); - } - }); + topPanel.add(saveDB = createPushButton(images.db_save(), "Commit current in VME-DB")); //TODO: } if (! isVme) { @@ -437,6 +436,7 @@ public class RichTextToolbar extends Composite { public void enableCommands(boolean enable) { open_report.setEnabled(enable); save.setEnabled(enable); + if (newdoc != null) { newdoc.setEnabled(enable); open_template.setEnabled(enable); 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 3bbc35b..86406c4 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 @@ -558,7 +558,7 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe } } - + private String getRSGWSAddress() { String addr = (String) getASLSession().getAttribute(RSG_WS_ADDRESS); _log.trace("getRSGWSAddress: " + addr); @@ -812,19 +812,19 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe saveReport(toSave, folderid, itemName); } - + /** * @param save a report in another folder . * */ public void saveReport(Model toSave, String folderid, String newname) { - + Model model = toSave; - + ModelReader reader = new ModelReader(model); System.out.println(reader); - + storeTemplateInSession(toSave); _log.info("Serializing Model in folder: " + folderid ); _log.info("Trying to convert dynamic images ... "); @@ -1165,9 +1165,9 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe getASLSession().setAttribute(WfDocsLibrary.WORKFLOW_READONLY_ATTRIBUTE, true); return new SessionInfo(getUserBean(), getVreName(), true, true, false); } - + boolean isVME = isReportsStoreGatewayAvailable(); - + if (getASLSession().getAttribute(WfDocsLibrary.WORKFLOW_ID_ATTRIBUTE) == null) { _log.debug("WfDocsLibrary.WORKFLOW_ID_ATTRIBUTE is NULL: "); return new SessionInfo(getUserBean(), getVreName(), false, false, isVME); @@ -1578,7 +1578,7 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe } return model; } - + @Override public Model importVMETemplate(VMETypeIdentifier refType) { RsgService rsgClient = new RsgClient(getRSGWSAddress()); @@ -1604,6 +1604,26 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe } return model; } + + @Override + public void exportReportToRSG(Model model) { + RsgService rsgClient = new RsgClient(getRSGWSAddress()); + + //Use the RSG client to get a template for the report whose type is the last token (i.e. the corresponding class' 'simple name') + //appearing in the VME model class name as stored in the 'type' metadata + + //If you're updating a 'report': + CompiledReport template = rsgClient.getTemplate(new ReportType(VMETypeIdentifier.Vme.getId())); + CompiledReport toSend = null; + try { + toSend = new ReportManagerReportBuilder().extract(template, model); + } catch (ReportBuilderException e) { + e.printStackTrace(); + } + //Actual RSG client interface exposes different methods (publish / publishDelta etc.) that need to be updated + rsgClient.update(toSend); + + } /** * this method look for a ReportsStoreGateway WS available in the infrastructure * @return true if an instance of the ReportsStoreGateway is available in the infrastructure @@ -1635,5 +1655,7 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe else return false; } - + + + }