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
This commit is contained in:
Massimiliano Assante 2013-11-18 17:25:49 +00:00
parent a1b2de0962
commit 01b512567b
9 changed files with 85 additions and 46 deletions

View File

@ -5,10 +5,19 @@
<wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/> <wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/> <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/target/generated-sources/gwt"/> <wb-resource deploy-path="/WEB-INF/classes" source-path="/target/generated-sources/gwt"/>
<dependent-module archiveName="gcube-reporting-modeler-1.0.1-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-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"> <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> <dependency-type>uses</dependency-type>
</dependent-module> </dependent-module>
<dependent-module archiveName="report-exporter-widget-2.0.0-SNAPSHOT.jar" deploy-path="/WEB-INF/lib" handle="module:/resource/report-exporter-widget/report-exporter-widget"> <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>
<dependent-module archiveName="gcube-reporting-library-3.4.1-SNAPSHOT.jar" deploy-path="/WEB-INF/lib" handle="module:/resource/gcube-reporting-library/gcube-reporting-library">
<dependency-type>uses</dependency-type> <dependency-type>uses</dependency-type>
</dependent-module> </dependent-module>
<property name="java-output-path" value="/${module}/target/www/WEB-INF/classes"/> <property name="java-output-path" value="/${module}/target/www/WEB-INF/classes"/>

View File

@ -146,7 +146,6 @@
<groupId>org.gcube.portlets.admin</groupId> <groupId>org.gcube.portlets.admin</groupId>
<artifactId>document-workflow-library</artifactId> <artifactId>document-workflow-library</artifactId>
<version>[1.2.0-SNAPSHOT, 2.0.0-SNAPSHOT)</version> <version>[1.2.0-SNAPSHOT, 2.0.0-SNAPSHOT)</version>
<scope>${setScope}</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.gcube.portlets.widgets</groupId> <groupId>org.gcube.portlets.widgets</groupId>
@ -157,7 +156,6 @@
<groupId>org.gcube.portal</groupId> <groupId>org.gcube.portal</groupId>
<artifactId>gcube-reporting-library</artifactId> <artifactId>gcube-reporting-library</artifactId>
<version>[3.4.0-SNAPSHOT, 4.0.0-SNAPSHOT)</version> <version>[3.4.0-SNAPSHOT, 4.0.0-SNAPSHOT)</version>
<scope>${setScope}</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.gcube.portlets.user</groupId> <groupId>org.gcube.portlets.user</groupId>

View File

@ -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.ComponentType;
import org.gcube.portlets.d4sreporting.common.shared.Metadata; import org.gcube.portlets.d4sreporting.common.shared.Metadata;
import org.gcube.portlets.d4sreporting.common.shared.Model; import org.gcube.portlets.d4sreporting.common.shared.Model;
import org.gcube.portlets.d4sreporting.common.shared.RepeatableSequence; import org.gcube.portlets.d4sreporting.common.shared.ReportReferences;
import org.gcube.portlets.d4sreporting.common.shared.ReportReference;
import org.gcube.portlets.d4sreporting.common.shared.Tuple;
import org.gcube.portlets.user.reportgenerator.client.Headerbar; import org.gcube.portlets.user.reportgenerator.client.Headerbar;
import org.gcube.portlets.user.reportgenerator.client.ReportConstants; import org.gcube.portlets.user.reportgenerator.client.ReportConstants;
import org.gcube.portlets.user.reportgenerator.client.ReportGenerator; 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.BasicTextArea;
import org.gcube.portlets.user.reportgenerator.client.targets.ClientImage; 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.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.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.Coords;
import org.gcube.portlets.user.reportgenerator.client.targets.D4sRichTextarea; import org.gcube.portlets.user.reportgenerator.client.targets.D4sRichTextarea;
import org.gcube.portlets.user.reportgenerator.client.targets.GenericTable; import org.gcube.portlets.user.reportgenerator.client.targets.GenericTable;
@ -948,8 +946,6 @@ public class Presenter {
List<TemplateComponent> pageElems = model.getSectionComponent(section); List<TemplateComponent> pageElems = model.getSectionComponent(section);
for (TemplateComponent component : pageElems) { for (TemplateComponent component : pageElems) {
//GWT.log("Reading component.. " + component.getType(), null);
int uiX = component.getX(); int uiX = component.getX();
int uiY= component.getY(); int uiY= component.getY();
switch (component.getType()) { switch (component.getType()) {
@ -1361,11 +1357,10 @@ public class Presenter {
@Override @Override
public void onSuccess(Model reportRef) { public void onSuccess(Model reportRef) {
if (reportRef != null && reportRef.getSections().size() > 0) { 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); BasicSection firstSection = reportRef.getSections().get(0);
if (firstSection.getComponents() != null && firstSection.getComponents().size()==2) { if (firstSection.getComponents() != null && firstSection.getComponents().size()==2) {
ReportReferences toPass = (ReportReferences) firstSection.getComponents().get(1).getPossibleContent();
ReportReference toPass = (ReportReference) firstSection.getComponents().get(1).getPossibleContent();
clientSeqSelected.add(toPass.getTuples().get(0).getKey(), toPass.getTuples().get(0)); clientSeqSelected.add(toPass.getTuples().get(0).getKey(), toPass.getTuples().get(0));
} }
else { else {

View File

@ -8,20 +8,20 @@ import java.util.List;
import org.gcube.portlets.d4sreporting.common.shared.AttributeArea; import org.gcube.portlets.d4sreporting.common.shared.AttributeArea;
import org.gcube.portlets.d4sreporting.common.shared.BasicComponent; import org.gcube.portlets.d4sreporting.common.shared.BasicComponent;
import org.gcube.portlets.d4sreporting.common.shared.ComponentType; 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.Metadata;
import org.gcube.portlets.d4sreporting.common.shared.RepTimeSeries; import org.gcube.portlets.d4sreporting.common.shared.RepTimeSeries;
import org.gcube.portlets.d4sreporting.common.shared.RepeatableSequence; 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.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.Presenter.Presenter;
import org.gcube.portlets.user.reportgenerator.client.targets.AttributeMultiSelection; 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.AttributeSingleSelection;
import org.gcube.portlets.user.reportgenerator.client.targets.BasicTextArea; 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.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.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.D4sRichTextarea;
import org.gcube.portlets.user.reportgenerator.client.targets.DropTSListener; import org.gcube.portlets.user.reportgenerator.client.targets.DropTSListener;
import org.gcube.portlets.user.reportgenerator.client.targets.GenericTable; import org.gcube.portlets.user.reportgenerator.client.targets.GenericTable;
@ -169,6 +169,8 @@ public class TemplateComponent {
this.doubleColLayout = sc.isDoubleColLayout(); this.doubleColLayout = sc.isDoubleColLayout();
this.locked = sc.isLocked(); this.locked = sc.isLocked();
this.metadata = sc.getMetadata(); this.metadata = sc.getMetadata();
//Log.debug("TemplateComponent found type: " + sc.getType());
switch (sc.getType()) { switch (sc.getType()) {
case DYNA_IMAGE: case DYNA_IMAGE:
@ -346,7 +348,7 @@ public class TemplateComponent {
this.content = tsa; this.content = tsa;
break; break;
case REPEAT_SEQUENCE_DELIMITER: case REPEAT_SEQUENCE_DELIMITER:
GroupingDelimiterArea gp = new GroupingDelimiterArea(); GroupingDelimiterArea gp = new GroupingDelimiterArea(height);
this.content = gp; this.content = gp;
break; break;
case REPEAT_SEQUENCE_INNER: case REPEAT_SEQUENCE_INNER:
@ -354,7 +356,7 @@ public class TemplateComponent {
this.content = spacer; this.content = spacer;
break; break;
case REPEAT_SEQUENCE: case REPEAT_SEQUENCE:
//GWT.log("FOUND SEQUENCE trying getGroup"); //Log.debug("FOUND SEQUENCE trying getGroup");
RepeatableSequence repeatableSequence = (RepeatableSequence) sc.getPossibleContent(); RepeatableSequence repeatableSequence = (RepeatableSequence) sc.getPossibleContent();
ClientRepeatableSequence rps = new ClientRepeatableSequence(presenter, repeatableSequence); ClientRepeatableSequence rps = new ClientRepeatableSequence(presenter, repeatableSequence);
@ -371,9 +373,10 @@ public class TemplateComponent {
this.content = tti; this.content = tti;
break; break;
case REPORT_REFERENCE: case REPORT_REFERENCE:
//Log.debug("FOUND Master SEQUENCE trying getGroup");
GWT.log("FOUND Master SEQUENCE trying getGroup"); GWT.log("FOUND Master SEQUENCE trying getGroup");
ReportReference ref = (ReportReference) sc.getPossibleContent(); ReportReferences ref = (ReportReferences) sc.getPossibleContent();
ArrayList<Tuple> tuple = ref.getTuples(); ArrayList<Tuple> tuple = ref.getTuples();
ClientReportReference cmSeq = new ClientReportReference(presenter, ref.getRefType(), tuple); ClientReportReference cmSeq = new ClientReportReference(presenter, ref.getRefType(), tuple);
@ -476,7 +479,7 @@ public class TemplateComponent {
break; break;
case REPEAT_SEQUENCE: case REPEAT_SEQUENCE:
ClientRepeatableSequence repSeq = (ClientRepeatableSequence) this.content; ClientRepeatableSequence repSeq = (ClientRepeatableSequence) this.content;
RepeatableSequence toStore = new RepeatableSequence(getSerializableSequence(repSeq), height); RepeatableSequence toStore = new RepeatableSequence(getSerializableSequence(repSeq), repSeq.getIdentifier(), height);
content = toStore; content = toStore;
break; break;
case BODY_TABLE_IMAGE: case BODY_TABLE_IMAGE:
@ -486,7 +489,7 @@ public class TemplateComponent {
break; break;
case REPORT_REFERENCE: case REPORT_REFERENCE:
ClientReportReference cRef = (ClientReportReference) this.content; ClientReportReference cRef = (ClientReportReference) this.content;
ReportReference ref = new ReportReference(cRef.getRefType(), cRef.getTupleList()); ReportReferences ref = new ReportReferences(cRef.getRefType(), cRef.getTupleList());
content = ref; content = ref;
break; 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 * @param repSeq
* @return * @return
*/ */

View File

@ -17,7 +17,7 @@ public class ClientRepeatableSequence extends Composite implements ClientSequenc
private VerticalPanel myPanel = new VerticalPanel(); private VerticalPanel myPanel = new VerticalPanel();
private Presenter p; private Presenter p;
private String identifier;
protected RepeatableSequence repSequence; protected RepeatableSequence repSequence;
protected RepeatableSequence originalSequence = new RepeatableSequence(); protected RepeatableSequence originalSequence = new RepeatableSequence();
@ -29,6 +29,7 @@ public class ClientRepeatableSequence extends Composite implements ClientSequenc
public ClientRepeatableSequence(Presenter p, RepeatableSequence sRS) { public ClientRepeatableSequence(Presenter p, RepeatableSequence sRS) {
this.p = p; this.p = p;
this.repSequence = sRS; this.repSequence = sRS;
this.identifier = sRS.getKey();
this.originalSequence = extractOriginalSequence(sRS); this.originalSequence = extractOriginalSequence(sRS);
SequenceWidget seqW = new SequenceWidget(p, this, originalSequence, true, false); SequenceWidget seqW = new SequenceWidget(p, this, originalSequence, true, false);
myPanel.add(seqW); myPanel.add(seqW);
@ -152,5 +153,11 @@ public class ClientRepeatableSequence extends Composite implements ClientSequenc
@Override @Override
public void AddButtonClicked(RepeatableSequence sequence) { public void AddButtonClicked(RepeatableSequence sequence) {
add("not needed", sequence); add("not needed", sequence);
}
public String getIdentifier() {
return identifier;
} }
} }

View File

@ -55,7 +55,8 @@ public class ClientReportReference extends Composite implements ClientSequence {
private SequenceWidget getMasterSequence(RepeatableSequence seq) { private SequenceWidget getMasterSequence(RepeatableSequence seq) {
SequenceWidget toReturn = new SequenceWidget(p, this, seq, true, false); SequenceWidget toReturn = new SequenceWidget(p, this, seq, true, false);
if (tupleList.size() == 1) { if (tupleList.size() == 1) {
toReturn.enableClear(); toReturn.enableClear();
toReturn.removeAddAnotherButton();
} }
return toReturn; return toReturn;
} }

View File

@ -6,10 +6,10 @@ import com.google.gwt.user.client.ui.HTML;
public class GroupingDelimiterArea extends HTML { public class GroupingDelimiterArea extends HTML {
public GroupingDelimiterArea() { public GroupingDelimiterArea(int height) {
super(); super();
setWidth("700px"); setWidth("700px");
setHeight("15px"); setHeight(height+"px");
setStyleName("grouping-border"); setStyleName("grouping-border");
} }
} }

View File

@ -31,8 +31,10 @@ import org.apache.commons.io.IOUtils;
import org.gcube.application.framework.accesslogger.library.impl.AccessLogger; import org.gcube.application.framework.accesslogger.library.impl.AccessLogger;
import org.gcube.application.framework.core.session.ASLSession; import org.gcube.application.framework.core.session.ASLSession;
import org.gcube.application.framework.core.session.SessionManager; 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.ReportsModeler;
import org.gcube.application.reporting.reference.DBTableRow; 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.reporting.reference.ReferenceReportType;
import org.gcube.application.rsg.service.dto.ReportEntry; import org.gcube.application.rsg.service.dto.ReportEntry;
import org.gcube.application.rsg.service.dto.ReportType; import org.gcube.application.rsg.service.dto.ReportType;
@ -139,8 +141,8 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe
* Called then servlet is intialized * Called then servlet is intialized
*/ */
public void init() { public void init() {
_log.info("Initializing Servlet ReportServiceImpl..."); _log.info("Initializing Servlet ReportServiceImpl... connecting to WF DB");
store = new MyDerbyStore(); store = new MyDerbyStore();
} }
/** /**
@ -1533,6 +1535,8 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe
rm.addTextInput("Corner Rise Seamounts2"); rm.addTextInput("Corner Rise Seamounts2");
rm.addHeading(3, "This is a Heading of Level 3 that is editable", false); rm.addHeading(3, "This is a Heading of Level 3 that is editable", false);
rm.addTextInput(); rm.addTextInput();
rm.nextSection();
rm = addSection2(rm);
try { try {
return rm.getReportInstance(); return rm.getReportInstance();
} catch (Exception e) { } catch (Exception e) {
@ -1556,23 +1560,19 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe
ArrayList<DBTableRow> dBTableRows = new ArrayList<DBTableRow>(); ArrayList<DBTableRow> dBTableRows = new ArrayList<DBTableRow>();
ArrayList<Metadata> md = new ArrayList<Metadata>(); ArrayList<Metadata> md = new ArrayList<Metadata>();
Random generator = new Random(); Random generator = new Random();
int year = generator.nextInt(15) + 2000; int year = generator.nextInt(15) + 2000;
//construct the references
md.add(new Metadata("Year", ""+year)); md.add(new Metadata("Meeting Date", ""+year));
year = generator.nextInt(15) + 2000; md.add(new Metadata("Report Summary", "Aenean vulputate ac dui eu interdum. Nullam tincidunt hendrerit sollicitudin."));
md.add(new Metadata("Validity Period - Start", ""+year)); md.add(new Metadata("Committee", "Lorem ipsum dolor sit amet, consectetur adipiscing elit"));
year = generator.nextInt(15) + 2000; md.add(new Metadata("URL", "http://archive.nafo.int/open/fc/2012/fcdoc12-01.pdf"));
md.add(new Metadata("Validity Period - End", ""+year)); md.add(new Metadata("Citation", "(Rossi et Al) adipiscing elit oekfha lfkahjf lakjfha lkfahjf alkjdfh "));
md.add(new Metadata("VME Specific Measure Summary", md.add(new Metadata("Type", "The type"));
"2011 Roll over of existing measures until 31 Dec 2014. " + UUID.randomUUID().toString() dBTableRows.add(new DBTableRow("primaryKey", md));
+ "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)")); rm.addReference(new ReferenceReport(ReferenceReportType.InformationSource, dBTableRows));
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);
try { try {
return rm.getReportInstance(); return rm.getReportInstance();
} catch (Exception e) { } catch (Exception e) {
@ -1581,5 +1581,33 @@ public class ReportServiceImpl extends RemoteServiceServlet implements ReportSe
return null; 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<DBTableRow> dBTableRows = new ArrayList<DBTableRow>();
ArrayList<Metadata> md = new ArrayList<Metadata>();
//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;
}
} }

View File

@ -3,10 +3,8 @@
<!-- Inherit the core Web Toolkit stuff. --> <!-- Inherit the core Web Toolkit stuff. -->
<inherits name='com.google.gwt.user.User' /> <inherits name='com.google.gwt.user.User' />
<!-- To Comment out --> <!-- To Comment out -->
<!-- <set-property name="user.agent" value="gecko1_8" /> --> <set-property name="user.agent" value="gecko1_8" />
<inherits name='org.gcube.portlets.widgets.userselection.UserSelection' /> <inherits name='org.gcube.portlets.widgets.userselection.UserSelection' />
<inherits <inherits