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.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;
}
-
+
+
+
}