From 01b512567b46b35f367313571520aa3557aa8d01 Mon Sep 17 00:00:00 2001 From: Massimiliano Assante Date: Mon, 18 Nov 2013 17:25:49 +0000 Subject: [PATCH] added support for Sequences Having ReportRef inside. git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/portlets/user/reports@85650 82a268e6-3cf1-43bd-a215-b396298e98cf --- .settings/org.eclipse.wst.common.component | 11 +++- pom.xml | 2 - .../client/Presenter/Presenter.java | 13 ++-- .../client/model/TemplateComponent.java | 23 ++++--- .../targets/ClientRepeatableSequence.java | 9 ++- .../client/targets/ClientReportReference.java | 3 +- .../client/targets/GroupingDelimiterArea.java | 4 +- .../server/servlet/ReportServiceImpl.java | 62 ++++++++++++++----- .../reportgenerator/ReportGenerator.gwt.xml | 4 +- 9 files changed, 85 insertions(+), 46 deletions(-) diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component index a7ced10..43de741 100644 --- a/.settings/org.eclipse.wst.common.component +++ b/.settings/org.eclipse.wst.common.component @@ -5,10 +5,19 @@ + + uses + + + uses + uses - + + uses + + uses diff --git a/pom.xml b/pom.xml index e9b749a..d0c2cfa 100644 --- a/pom.xml +++ b/pom.xml @@ -146,7 +146,6 @@ org.gcube.portlets.admin document-workflow-library [1.2.0-SNAPSHOT, 2.0.0-SNAPSHOT) - ${setScope} org.gcube.portlets.widgets @@ -157,7 +156,6 @@ org.gcube.portal gcube-reporting-library [3.4.0-SNAPSHOT, 4.0.0-SNAPSHOT) - ${setScope} org.gcube.portlets.user 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 a2d49a5..a302ced 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 @@ -9,9 +9,7 @@ import org.gcube.portlets.d4sreporting.common.shared.BasicSection; import org.gcube.portlets.d4sreporting.common.shared.ComponentType; import org.gcube.portlets.d4sreporting.common.shared.Metadata; import org.gcube.portlets.d4sreporting.common.shared.Model; -import org.gcube.portlets.d4sreporting.common.shared.RepeatableSequence; -import org.gcube.portlets.d4sreporting.common.shared.ReportReference; -import org.gcube.portlets.d4sreporting.common.shared.Tuple; +import org.gcube.portlets.d4sreporting.common.shared.ReportReferences; import org.gcube.portlets.user.reportgenerator.client.Headerbar; import org.gcube.portlets.user.reportgenerator.client.ReportConstants; import org.gcube.portlets.user.reportgenerator.client.ReportGenerator; @@ -43,8 +41,8 @@ import org.gcube.portlets.user.reportgenerator.client.targets.AttributeSingleSel import org.gcube.portlets.user.reportgenerator.client.targets.BasicTextArea; import org.gcube.portlets.user.reportgenerator.client.targets.ClientImage; import org.gcube.portlets.user.reportgenerator.client.targets.ClientRepeatableSequence; -import org.gcube.portlets.user.reportgenerator.client.targets.ClientSequence; import org.gcube.portlets.user.reportgenerator.client.targets.ClientReportReference; +import org.gcube.portlets.user.reportgenerator.client.targets.ClientSequence; import org.gcube.portlets.user.reportgenerator.client.targets.Coords; import org.gcube.portlets.user.reportgenerator.client.targets.D4sRichTextarea; import org.gcube.portlets.user.reportgenerator.client.targets.GenericTable; @@ -948,8 +946,6 @@ public class Presenter { List pageElems = model.getSectionComponent(section); for (TemplateComponent component : pageElems) { - //GWT.log("Reading component.. " + component.getType(), null); - int uiX = component.getX(); int uiY= component.getY(); switch (component.getType()) { @@ -1361,11 +1357,10 @@ public class Presenter { @Override public void onSuccess(Model reportRef) { if (reportRef != null && reportRef.getSections().size() > 0) { - //the Repeatable Seq must be in the 1st Section, second component. (because ReportsModeler put it that way) + //the Repeatable Seq must be in the 1st Section, second component. (because ReportsModeler put it there) BasicSection firstSection = reportRef.getSections().get(0); if (firstSection.getComponents() != null && firstSection.getComponents().size()==2) { - - ReportReference toPass = (ReportReference) firstSection.getComponents().get(1).getPossibleContent(); + ReportReferences toPass = (ReportReferences) firstSection.getComponents().get(1).getPossibleContent(); clientSeqSelected.add(toPass.getTuples().get(0).getKey(), toPass.getTuples().get(0)); } else { 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 47b7809..4b28e6d 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 @@ -8,20 +8,20 @@ import java.util.List; import org.gcube.portlets.d4sreporting.common.shared.AttributeArea; import org.gcube.portlets.d4sreporting.common.shared.BasicComponent; import org.gcube.portlets.d4sreporting.common.shared.ComponentType; -import org.gcube.portlets.d4sreporting.common.shared.ReportReference; -import org.gcube.portlets.d4sreporting.common.shared.Tuple; import org.gcube.portlets.d4sreporting.common.shared.Metadata; import org.gcube.portlets.d4sreporting.common.shared.RepTimeSeries; import org.gcube.portlets.d4sreporting.common.shared.RepeatableSequence; +import org.gcube.portlets.d4sreporting.common.shared.ReportReferences; import org.gcube.portlets.d4sreporting.common.shared.Table; +import org.gcube.portlets.d4sreporting.common.shared.Tuple; import org.gcube.portlets.user.reportgenerator.client.Presenter.Presenter; import org.gcube.portlets.user.reportgenerator.client.targets.AttributeMultiSelection; import org.gcube.portlets.user.reportgenerator.client.targets.AttributeSingleSelection; import org.gcube.portlets.user.reportgenerator.client.targets.BasicTextArea; import org.gcube.portlets.user.reportgenerator.client.targets.ClientImage; -import org.gcube.portlets.user.reportgenerator.client.targets.ClientSequence; -import org.gcube.portlets.user.reportgenerator.client.targets.ClientReportReference; import org.gcube.portlets.user.reportgenerator.client.targets.ClientRepeatableSequence; +import org.gcube.portlets.user.reportgenerator.client.targets.ClientReportReference; +import org.gcube.portlets.user.reportgenerator.client.targets.ClientSequence; import org.gcube.portlets.user.reportgenerator.client.targets.D4sRichTextarea; import org.gcube.portlets.user.reportgenerator.client.targets.DropTSListener; import org.gcube.portlets.user.reportgenerator.client.targets.GenericTable; @@ -169,6 +169,8 @@ public class TemplateComponent { this.doubleColLayout = sc.isDoubleColLayout(); this.locked = sc.isLocked(); this.metadata = sc.getMetadata(); + + //Log.debug("TemplateComponent found type: " + sc.getType()); switch (sc.getType()) { case DYNA_IMAGE: @@ -346,7 +348,7 @@ public class TemplateComponent { this.content = tsa; break; case REPEAT_SEQUENCE_DELIMITER: - GroupingDelimiterArea gp = new GroupingDelimiterArea(); + GroupingDelimiterArea gp = new GroupingDelimiterArea(height); this.content = gp; break; case REPEAT_SEQUENCE_INNER: @@ -354,7 +356,7 @@ public class TemplateComponent { this.content = spacer; break; case REPEAT_SEQUENCE: - //GWT.log("FOUND SEQUENCE trying getGroup"); + //Log.debug("FOUND SEQUENCE trying getGroup"); RepeatableSequence repeatableSequence = (RepeatableSequence) sc.getPossibleContent(); ClientRepeatableSequence rps = new ClientRepeatableSequence(presenter, repeatableSequence); @@ -371,9 +373,10 @@ public class TemplateComponent { this.content = tti; break; case REPORT_REFERENCE: + //Log.debug("FOUND Master SEQUENCE trying getGroup"); GWT.log("FOUND Master SEQUENCE trying getGroup"); - ReportReference ref = (ReportReference) sc.getPossibleContent(); + ReportReferences ref = (ReportReferences) sc.getPossibleContent(); ArrayList tuple = ref.getTuples(); ClientReportReference cmSeq = new ClientReportReference(presenter, ref.getRefType(), tuple); @@ -476,7 +479,7 @@ public class TemplateComponent { break; case REPEAT_SEQUENCE: ClientRepeatableSequence repSeq = (ClientRepeatableSequence) this.content; - RepeatableSequence toStore = new RepeatableSequence(getSerializableSequence(repSeq), height); + RepeatableSequence toStore = new RepeatableSequence(getSerializableSequence(repSeq), repSeq.getIdentifier(), height); content = toStore; break; case BODY_TABLE_IMAGE: @@ -486,7 +489,7 @@ public class TemplateComponent { break; case REPORT_REFERENCE: ClientReportReference cRef = (ClientReportReference) this.content; - ReportReference ref = new ReportReference(cRef.getRefType(), cRef.getTupleList()); + ReportReferences ref = new ReportReferences(cRef.getRefType(), cRef.getTupleList()); content = ref; break; } @@ -508,7 +511,7 @@ public class TemplateComponent { } /** - * this method constructs a Sequence that can be serializable from the TextTableImage Widget + * this method constructs a ReportSequence that can be serializable from the TextTableImage Widget * @param repSeq * @return */ 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 4c00a82..8ffa596 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 @@ -17,7 +17,7 @@ public class ClientRepeatableSequence extends Composite implements ClientSequenc private VerticalPanel myPanel = new VerticalPanel(); private Presenter p; - + private String identifier; protected RepeatableSequence repSequence; protected RepeatableSequence originalSequence = new RepeatableSequence(); @@ -29,6 +29,7 @@ public class ClientRepeatableSequence extends Composite implements ClientSequenc public ClientRepeatableSequence(Presenter p, RepeatableSequence sRS) { this.p = p; this.repSequence = sRS; + this.identifier = sRS.getKey(); this.originalSequence = extractOriginalSequence(sRS); SequenceWidget seqW = new SequenceWidget(p, this, originalSequence, true, false); myPanel.add(seqW); @@ -152,5 +153,11 @@ public class ClientRepeatableSequence extends Composite implements ClientSequenc @Override public void AddButtonClicked(RepeatableSequence sequence) { add("not needed", sequence); + } + + public String getIdentifier() { + return identifier; } + + } 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 3067f6b..6e0acbf 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 @@ -55,7 +55,8 @@ public class ClientReportReference extends Composite implements ClientSequence { private SequenceWidget getMasterSequence(RepeatableSequence seq) { SequenceWidget toReturn = new SequenceWidget(p, this, seq, true, false); if (tupleList.size() == 1) { - toReturn.enableClear(); + toReturn.enableClear(); + toReturn.removeAddAnotherButton(); } return toReturn; } diff --git a/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/GroupingDelimiterArea.java b/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/GroupingDelimiterArea.java index 228ff66..7a48ddd 100644 --- a/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/GroupingDelimiterArea.java +++ b/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/GroupingDelimiterArea.java @@ -6,10 +6,10 @@ import com.google.gwt.user.client.ui.HTML; public class GroupingDelimiterArea extends HTML { - public GroupingDelimiterArea() { + public GroupingDelimiterArea(int height) { super(); setWidth("700px"); - setHeight("15px"); + setHeight(height+"px"); setStyleName("grouping-border"); } } 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 5c72e77..23b2910 100644 --- a/src/main/java/org/gcube/portlets/user/reportgenerator/server/servlet/ReportServiceImpl.java +++ b/src/main/java/org/gcube/portlets/user/reportgenerator/server/servlet/ReportServiceImpl.java @@ -31,8 +31,10 @@ 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.ReportSequence; import org.gcube.application.reporting.ReportsModeler; import org.gcube.application.reporting.reference.DBTableRow; +import org.gcube.application.reporting.reference.ReferenceReport; import org.gcube.application.reporting.reference.ReferenceReportType; import org.gcube.application.rsg.service.dto.ReportEntry; import org.gcube.application.rsg.service.dto.ReportType; @@ -139,8 +141,8 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe * Called then servlet is intialized */ public void init() { - _log.info("Initializing Servlet ReportServiceImpl..."); - store = new MyDerbyStore(); + _log.info("Initializing Servlet ReportServiceImpl... connecting to WF DB"); + store = new MyDerbyStore(); } /** @@ -1533,6 +1535,8 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe rm.addTextInput("Corner Rise Seamounts2"); rm.addHeading(3, "This is a Heading of Level 3 that is editable", false); rm.addTextInput(); + rm.nextSection(); + rm = addSection2(rm); try { return rm.getReportInstance(); } catch (Exception e) { @@ -1556,23 +1560,19 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe ArrayList dBTableRows = new ArrayList(); ArrayList md = new ArrayList(); - + Random generator = new Random(); int year = generator.nextInt(15) + 2000; - - md.add(new Metadata("Year", ""+year)); - year = generator.nextInt(15) + 2000; - md.add(new Metadata("Validity Period - Start", ""+year)); - year = generator.nextInt(15) + 2000; - md.add(new Metadata("Validity Period - End", ""+year)); - md.add(new Metadata("VME Specific Measure Summary", - "2011 Roll over of existing measures until 31 Dec 2014. " + UUID.randomUUID().toString() - + "Closed to demersal fishing with possibilities of an exploratory fishing not exceed-ing 20% " - + "of the fishable area of each seamount. (CEM 2011, Art. 15)")); - md.add(new Metadata("Link Bookmarked", "http://archive.nafo.int/open/fc/2012/fcdoc12-01.pdf")); - md.add(new Metadata("Link Source URL", "http://archive.nafo.int/open/fc/2012/fcdoc12-01.pdf")); - dBTableRows.add(new DBTableRow(md)); - rm.addReference(ReferenceReportType.GeneralMeasure, dBTableRows); + //construct the references + md.add(new Metadata("Meeting Date", ""+year)); + md.add(new Metadata("Report Summary", "Aenean vulputate ac dui eu interdum. Nullam tincidunt hendrerit sollicitudin.")); + md.add(new Metadata("Committee", "Lorem ipsum dolor sit amet, consectetur adipiscing elit")); + md.add(new Metadata("URL", "http://archive.nafo.int/open/fc/2012/fcdoc12-01.pdf")); + md.add(new Metadata("Citation", "(Rossi et Al) adipiscing elit oekfha lfkahjf lakjfha lkfahjf alkjdfh ")); + md.add(new Metadata("Type", "The type")); + dBTableRows.add(new DBTableRow("primaryKey", md)); + + rm.addReference(new ReferenceReport(ReferenceReportType.InformationSource, dBTableRows)); try { return rm.getReportInstance(); } catch (Exception e) { @@ -1581,5 +1581,33 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe return null; } + private ReportsModeler addSection2(ReportsModeler rm) { + rm.addHeading(1, "Specific Measure"); + ReportSequence seq = new ReportSequence(); + seq.addHeading(2, "year"); + seq.addTextInput(); + seq.addHeading(2, "Validity Period - Start"); + seq.addTextInput(); + seq.addHeading(2, "Validity Period - End"); + seq.addTextInput(); + + + //construct the options (the references) + ArrayList dBTableRows = new ArrayList(); + + ArrayList md = new ArrayList(); + //construct the references + md.add(new Metadata("Meeting Date", "2009")); + md.add(new Metadata("Report Summary", "Aenean vulputate ac dui eu interdum. Nullam tincidunt hendrerit sollicitudin.")); + md.add(new Metadata("Committee", "Lorem ipsum dolor sit amet, consectetur adipiscing elit")); + md.add(new Metadata("URL", "http://archive.nafo.int/open/fc/2012/fcdoc12-01.pdf")); + md.add(new Metadata("Citation", "(Rossi et Al) adipiscing elit oekfha lfkahjf lakjfha lkfahjf alkjdfh ")); + md.add(new Metadata("Type", "The type")); + dBTableRows.add(new DBTableRow("primaryKey", md)); + seq.addReference(new ReferenceReport(ReferenceReportType.InformationSource, dBTableRows)); + rm.addSequence("a key", seq); + + return rm; + } } diff --git a/src/main/resources/org/gcube/portlets/user/reportgenerator/ReportGenerator.gwt.xml b/src/main/resources/org/gcube/portlets/user/reportgenerator/ReportGenerator.gwt.xml index 66e0977..99663ec 100644 --- a/src/main/resources/org/gcube/portlets/user/reportgenerator/ReportGenerator.gwt.xml +++ b/src/main/resources/org/gcube/portlets/user/reportgenerator/ReportGenerator.gwt.xml @@ -3,10 +3,8 @@ - - - +