moved to gwt.2.9.0. Added Sort By facility

pull/4/head
Francesco Mangiacrapa 3 years ago
parent f1f1465696
commit 8ed729ea51

@ -1,11 +1,11 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
org.eclipse.jdt.core.compiler.compliance=1.7
org.eclipse.jdt.core.compiler.compliance=1.8
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore
org.eclipse.jdt.core.compiler.release=disabled
org.eclipse.jdt.core.compiler.source=1.7
org.eclipse.jdt.core.compiler.source=1.8

@ -2,6 +2,6 @@
<faceted-project>
<installed facet="jst.web" version="3.0"/>
<installed facet="com.gwtplugins.gwt.facet" version="1.0"/>
<installed facet="java" version="1.7"/>
<installed facet="jst.jaxrs" version="1.1"/>
<installed facet="java" version="1.8"/>
</faceted-project>

@ -25,12 +25,12 @@
<properties>
<!-- Convenience property to set the GWT version -->
<gwtVersion>2.7.0</gwtVersion>
<gwtVersion>2.9.0</gwtVersion>
<!-- GWT needs at least java 1.6 -->
<webappDirectory>${project.build.directory}/${project.build.finalName}</webappDirectory>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
@ -59,6 +59,22 @@
</dependencyManagement>
<dependencies>
<!-- needed to compile with gwt > 2.7 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<!-- needed to compile with gwt > 2.7 -->
<dependency>
<groupId>xml-apis</groupId>
<artifactId>xml-apis</artifactId>
<version>1.4.01</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.google.gwt</groupId>
<artifactId>gwt-user</artifactId>

@ -2,6 +2,13 @@ package org.gcube.portlets.user.geoportaldataentry.client;
import org.gcube.portlets.widgets.mpformbuilder.client.ConstantsMPFormBuilder;
/**
* The Class ConstantsGeoPortalDataEntryApp.
*
* @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
*
* Aug 6, 2021
*/
public class ConstantsGeoPortalDataEntryApp {
public static final String DATE_FORMAT = ConstantsMPFormBuilder.DATE_FORMAT;
@ -12,12 +19,59 @@ public class ConstantsGeoPortalDataEntryApp {
public static final String ERROR_ON_INIZIALITAION_STAGE_PLEASE_CONTACT_THE_SUPPORT = "Error on inizialization stage, please contact the support!";
/**
* The Enum RECORD_TYPE.
*
* @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
*
* Aug 6, 2021
*/
public enum RECORD_TYPE {
CONCESSIONE
}
/**
* The Enum ACTION_ON_ITEM.
*
* @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
*
* Aug 6, 2021
*/
public enum ACTION_ON_ITEM {
SHOW_ON_MAP, SHOW_METADATA, REMOVE
}
/**
* The Enum RECORD_FIELD.
*
* @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
*
* Aug 6, 2021
*/
public static enum RECORD_FIELD {
NAME, INTRODUCTION, AUTHOR, PROJECT_START, CREATED, CREATED_BY
}
/**
* The Enum RECORD_FIELD.
*
* @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
*
* Aug 6, 2021
*/
public static enum RECORD_DISPLAY_FIELD {
NAME, INTRODUCTION, AUTHOR, PROJECT_START_END_DATE, CREATED, CREATED_BY
}
/**
* The Enum ORDER.
*
* @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
*
* Aug 6, 2021
*/
public static enum ORDER {
ASC, DESC
}
}

@ -10,6 +10,8 @@ import java.util.TreeMap;
import org.gcube.application.geoportalcommon.shared.GeoNaItemRef;
import org.gcube.application.geoportalcommon.shared.products.ConcessioneDV;
import org.gcube.portlets.user.geoportaldataentry.client.ConstantsGeoPortalDataEntryApp.ACTION_ON_ITEM;
import org.gcube.portlets.user.geoportaldataentry.client.ConstantsGeoPortalDataEntryApp.ORDER;
import org.gcube.portlets.user.geoportaldataentry.client.ConstantsGeoPortalDataEntryApp.RECORD_FIELD;
import org.gcube.portlets.user.geoportaldataentry.client.ConstantsGeoPortalDataEntryApp.RECORD_TYPE;
import org.gcube.portlets.user.geoportaldataentry.client.events.ActionOnItemEvent;
import org.gcube.portlets.user.geoportaldataentry.client.events.ActionOnItemEventHandler;
@ -24,7 +26,6 @@ import org.gcube.portlets.user.geoportaldataentry.client.ui.GeonaRecordsPaginate
import org.gcube.portlets.user.geoportaldataentry.client.ui.card.GeoNaFormCardModel;
import org.gcube.portlets.user.geoportaldataentry.client.ui.form.GeonaDataEntryMainForm;
import org.gcube.portlets.user.geoportaldataentry.client.ui.report.ReportTemplateToHTML;
import org.gcube.portlets.user.geoportaldataentry.client.ui.table.ItemsTable.DISPLAY_FIELD;
import org.gcube.portlets.user.geoportaldataentry.client.ui.utils.DialogConfirm;
import org.gcube.portlets.user.geoportaldataentry.client.ui.utils.HTMLUtil;
import org.gcube.portlets.user.geoportaldataentry.client.ui.utils.HTMLUtil.HTML_TAG;
@ -33,6 +34,7 @@ import org.gcube.portlets.user.geoportaldataentry.client.ui.utils.NewBrowserWind
import org.gcube.portlets.user.geoportaldataentry.shared.CommitReport;
import org.gcube.portlets.user.geoportaldataentry.shared.GeoNaFormDataObject;
import org.gcube.portlets.user.geoportaldataentry.shared.GeonaISConfig;
import org.gcube.portlets.user.geoportaldataentry.shared.SortFilter;
import org.gcube.portlets.widgets.mpformbuilder.client.MetadataProfileFormBuilderServiceAsync;
import org.gcube.portlets.widgets.mpformbuilder.client.form.generic.CreateMetadataForm;
import org.gcube.portlets.widgets.mpformbuilder.shared.metadata.MetaDataProfileBean;
@ -90,7 +92,12 @@ public class GeoPortalDataEntryApp implements EntryPoint {
*/
public void onModuleLoad() {
mainTabPanel = new GeonaMainTabPanel(appManagerBus);
RECORD_FIELD[] sortByOptions = new RECORD_FIELD[] { RECORD_FIELD.NAME, RECORD_FIELD.PROJECT_START,
RECORD_FIELD.CREATED, RECORD_FIELD.CREATED_BY };
SortFilter initialSortFilter = new SortFilter(RECORD_FIELD.NAME, ORDER.ASC);
mainTabPanel = new GeonaMainTabPanel(appManagerBus, sortByOptions, initialSortFilter);
mainTabPanel.setLoaderVisible("Loading...", true);
geoNaMainForm = new GeonaDataEntryMainForm(appManagerBus);
@ -386,7 +393,7 @@ public class GeoPortalDataEntryApp implements EntryPoint {
public void onGetList(GetListOfRecordsEvent getListOfRecordsEvent) {
GeonaRecordsPaginatedView grpw = new GeonaRecordsPaginatedView(appManagerBus, RECORD_TYPE.CONCESSIONE,
null, DISPLAY_FIELD.NAME);
null, getListOfRecordsEvent.getSortFilter());
mainTabPanel.showListOfConcessioniView(grpw);
}
});
@ -496,7 +503,8 @@ public class GeoPortalDataEntryApp implements EntryPoint {
hp.add(alert);
appManagerBus.fireEvent(
new GetListOfRecordsEvent(RECORD_TYPE.CONCESSIONE));
new GetListOfRecordsEvent(RECORD_TYPE.CONCESSIONE,
mainTabPanel.getCurrentSortFilter()));
}
}

@ -7,7 +7,8 @@ import org.gcube.portlets.user.geoportaldataentry.client.ConstantsGeoPortalDataE
import org.gcube.portlets.user.geoportaldataentry.shared.CommitReport;
import org.gcube.portlets.user.geoportaldataentry.shared.GeoNaFormDataObject;
import org.gcube.portlets.user.geoportaldataentry.shared.GeonaISConfig;
import org.gcube.portlets.user.geoportaldataentry.shared.SearchedData;
import org.gcube.portlets.user.geoportaldataentry.shared.ResultSetPaginatedData;
import org.gcube.portlets.user.geoportaldataentry.shared.SortFilter;
import com.google.gwt.user.client.rpc.RemoteService;
import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;
@ -52,12 +53,14 @@ public interface GeoportalDataEntryService extends RemoteService {
* Gets the list concessioni.
*
* @param start the start
* @param offset the offset
* @param limit the limit
* @param filter the filter
* @param reloadFromService the reload from service
* @return the list concessioni
* @throws Exception the exception
*/
SearchedData getListConcessioni(Integer start, Integer offset, boolean reloadFromService) throws Exception;
public ResultSetPaginatedData getListConcessioni(Integer start, Integer limit, SortFilter filter, boolean reloadFromService) throws Exception;
/**
* Delete record.

@ -7,7 +7,8 @@ import org.gcube.portlets.user.geoportaldataentry.client.ConstantsGeoPortalDataE
import org.gcube.portlets.user.geoportaldataentry.shared.CommitReport;
import org.gcube.portlets.user.geoportaldataentry.shared.GeoNaFormDataObject;
import org.gcube.portlets.user.geoportaldataentry.shared.GeonaISConfig;
import org.gcube.portlets.user.geoportaldataentry.shared.SearchedData;
import org.gcube.portlets.user.geoportaldataentry.shared.ResultSetPaginatedData;
import org.gcube.portlets.user.geoportaldataentry.shared.SortFilter;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.AsyncCallback;
@ -47,7 +48,8 @@ public interface GeoportalDataEntryServiceAsync
void getLinksFor(String itemId, RECORD_TYPE recordType, AsyncCallback<GeoNaItemRef> callback);
void getListConcessioni(Integer start, Integer offset, boolean reloadFromService, AsyncCallback<SearchedData> callback);
void getListConcessioni(Integer start, Integer limit, SortFilter filter, boolean reloadFromService,
AsyncCallback<ResultSetPaginatedData> callback);
void deleteRecord(String itemId, RECORD_TYPE recordType, AsyncCallback<Boolean> callback);

@ -2,6 +2,7 @@ package org.gcube.portlets.user.geoportaldataentry.client.events;
import org.gcube.portlets.user.geoportaldataentry.client.ConstantsGeoPortalDataEntryApp;
import org.gcube.portlets.user.geoportaldataentry.client.ConstantsGeoPortalDataEntryApp.RECORD_TYPE;
import org.gcube.portlets.user.geoportaldataentry.shared.SortFilter;
import com.google.gwt.event.shared.GwtEvent;
@ -17,13 +18,14 @@ public class GetListOfRecordsEvent extends GwtEvent<GetListOfRecordsEventHandler
/** The type. */
public static Type<GetListOfRecordsEventHandler> TYPE = new Type<GetListOfRecordsEventHandler>();
private RECORD_TYPE recordType;
private SortFilter sortFilter;
/**
* Instantiates a new cancel upload event.
*/
public GetListOfRecordsEvent(ConstantsGeoPortalDataEntryApp.RECORD_TYPE recordType) {
public GetListOfRecordsEvent(ConstantsGeoPortalDataEntryApp.RECORD_TYPE recordType, SortFilter sortFilter) {
this.recordType = recordType;
this.sortFilter = sortFilter;
}
/**
@ -57,9 +59,13 @@ public class GetListOfRecordsEvent extends GwtEvent<GetListOfRecordsEventHandler
protected void dispatch(GetListOfRecordsEventHandler handler) {
handler.onGetList(this);
}
public RECORD_TYPE getRecordType() {
return recordType;
}
public SortFilter getSortFilter() {
return sortFilter;
}
}

@ -1,14 +1,18 @@
package org.gcube.portlets.user.geoportaldataentry.client.ui;
import org.gcube.portlets.user.geoportaldataentry.client.ConstantsGeoPortalDataEntryApp.ORDER;
import org.gcube.portlets.user.geoportaldataentry.client.ConstantsGeoPortalDataEntryApp.RECORD_FIELD;
import org.gcube.portlets.user.geoportaldataentry.client.ConstantsGeoPortalDataEntryApp.RECORD_TYPE;
import org.gcube.portlets.user.geoportaldataentry.client.events.CreateNewProjectEvent;
import org.gcube.portlets.user.geoportaldataentry.client.events.GetListOfRecordsEvent;
import org.gcube.portlets.user.geoportaldataentry.client.ui.form.GeonaDataEntryMainForm;
import org.gcube.portlets.user.geoportaldataentry.client.ui.table.ItemsTable.DISPLAY_FIELD;
import org.gcube.portlets.user.geoportaldataentry.client.ui.utils.LoaderIcon;
import org.gcube.portlets.user.geoportaldataentry.shared.SortFilter;
import com.github.gwtbootstrap.client.ui.Dropdown;
import com.github.gwtbootstrap.client.ui.NavLink;
import com.github.gwtbootstrap.client.ui.Tab;
import com.github.gwtbootstrap.client.ui.TextBox;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
@ -16,6 +20,7 @@ import com.google.gwt.event.shared.HandlerManager;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HTMLPanel;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
@ -29,6 +34,8 @@ import com.google.gwt.user.client.ui.Widget;
*/
public class GeonaMainTabPanel extends Composite {
private static final String LABEL_FILTER_SEPARATOR = " - ";
private static GeonaMainTabPanelUiBinder uiBinder = GWT.create(GeonaMainTabPanelUiBinder.class);
/**
@ -64,20 +71,53 @@ public class GeonaMainTabPanel extends Composite {
@UiField
Tab tabGetListOfProjects;
@UiField
Dropdown dropdownSortBy;
@UiField
TextBox textBoxSortBy;
private HandlerManager appManagerBus;
private RECORD_FIELD[] sortByFields;
private SortFilter currentSortFilter;
private HTML divAnchorTop;
private HTML anchorTop;
private HTML divAnchorBotton;
private HTML anchorBottom;
/**
* Instantiates a new geona main tab panel.
*
* @param appManagerBus the first name
* @param appManagerBus the first name
* @param sortByFields the sort by fields
* @param initialSortFilter
*/
public GeonaMainTabPanel(HandlerManager appManagerBus) {
public GeonaMainTabPanel(HandlerManager appManagerBus, RECORD_FIELD[] sortByFields, SortFilter initialSortFilter) {
initWidget(uiBinder.createAndBindUi(this));
this.appManagerBus = appManagerBus;
this.sortByFields = sortByFields;
setCurrentSortFilter(initialSortFilter);
bindEvents();
// Anchor top
divAnchorTop = new HTML("<div id=\"topOfTable\"/>");
anchorTop = new HTML("<a href=\"#topOfTable\" style=\"float:right\">Go to top of table</a>");
// Anchor bottom
divAnchorBotton = new HTML("<div id=\"bottomOfTable\" />");
anchorBottom = new HTML("<a href=\"#bottomOfTable\" style=\"float:right\">Go to bottom of table</a>");
}
/**
* Bind events.
*/
private void bindEvents() {
buttCreateNewProject.addClickHandler(new ClickHandler() {
@ -93,7 +133,7 @@ public class GeonaMainTabPanel extends Composite {
@Override
public void onClick(ClickEvent event) {
appManagerBus.fireEvent(new GetListOfRecordsEvent(RECORD_TYPE.CONCESSIONE));
appManagerBus.fireEvent(new GetListOfRecordsEvent(RECORD_TYPE.CONCESSIONE, getCurrentSortFilter()));
}
});
@ -102,13 +142,49 @@ public class GeonaMainTabPanel extends Composite {
@Override
public void onClick(ClickEvent event) {
GeonaRecordsPaginatedView grpw = new GeonaRecordsPaginatedView(appManagerBus, RECORD_TYPE.CONCESSIONE,
null, DISPLAY_FIELD.NAME);
null, currentSortFilter);
showListOfConcessioniView(grpw);
}
});
for (RECORD_FIELD record_FIELD : sortByFields) {
// ASC
SortFilter sortFilter = new SortFilter(record_FIELD, ORDER.ASC);
String labelASC = toLabelFilter(sortFilter);
NavLink nav = new NavLink(labelASC);
dropdownSortBy.add(nav);
nav.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
GWT.log("Sort by: " + sortFilter);
setCurrentSortFilter(sortFilter);
appManagerBus.fireEvent(new GetListOfRecordsEvent(RECORD_TYPE.CONCESSIONE, getCurrentSortFilter()));
}
});
// //DESC
SortFilter sortFilter2 = new SortFilter(record_FIELD, ORDER.DESC);
String labelASC2 = toLabelFilter(sortFilter2);
NavLink nav2 = new NavLink(labelASC2);
dropdownSortBy.add(nav2);
nav2.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
GWT.log("Sort by: " + sortFilter2);
setCurrentSortFilter(sortFilter2);
appManagerBus.fireEvent(new GetListOfRecordsEvent(RECORD_TYPE.CONCESSIONE, getCurrentSortFilter()));
}
});
}
}
/**
@ -120,11 +196,23 @@ public class GeonaMainTabPanel extends Composite {
geonaMainFormPanel.add(formPanel);
}
/**
* Show list of concessioni view.
*
* @param grpw the grpw
*/
public void showListOfConcessioniView(GeonaRecordsPaginatedView grpw) {
geonaListOfConcessioniPanel.clear();
VerticalPanel htmllPanel = new VerticalPanel();
htmllPanel.add(divAnchorTop);
htmllPanel.add(anchorBottom);
htmllPanel.add(grpw.getCellPanel());
htmllPanel.add(grpw.getPagerPanel());
htmllPanel.add(anchorTop);
htmllPanel.add(divAnchorBotton);
geonaListOfConcessioniPanel.add(htmllPanel);
}
@ -139,4 +227,51 @@ public class GeonaMainTabPanel extends Composite {
loader.setVisible(visible);
}
private void setCurrentSortFilter(SortFilter sortFilter) {
this.currentSortFilter = sortFilter;
this.textBoxSortBy.setText(toLabelFilter(sortFilter));
}
/**
* To label filter.
*
* @param sortFilter the sort filter
* @return the string
*/
public String toLabelFilter(SortFilter sortFilter) {
String labelFilter = sortFilter.getOrderByField().name() + LABEL_FILTER_SEPARATOR
+ sortFilter.getOrder().name();
GWT.log("Got " + sortFilter);
return labelFilter;
}
/**
* To sort filter.
*
* @param labelFilter the label filter
* @return the sort filter
*/
public SortFilter toSortFilter(String labelFilter) {
String[] array = labelFilter.split(LABEL_FILTER_SEPARATOR);
SortFilter sortFilter = null;
try {
RECORD_FIELD recordField = RECORD_FIELD.valueOf(array[0]);
ORDER orderField = ORDER.valueOf(array[1]);
sortFilter = new SortFilter(recordField, orderField);
} catch (Exception e) {
}
GWT.log("Got " + sortFilter);
return sortFilter;
}
public SortFilter getCurrentSortFilter() {
return currentSortFilter;
}
}

@ -16,6 +16,10 @@
margin-bottom: 10px;
border: 1px solid #eee;
}
.margin-top-5 {
margin-top: 5px;
}
</ui:style>
<g:HTMLPanel>
<b:PageHeader subtext="data entry facility"
@ -39,6 +43,15 @@
ui:field="tabGetListOfProjects">
<b:Navbar>
<b:Brand>List of Projects</b:Brand>
<b:Nav>
<b:Dropdown text="Sort by" ui:field="dropdownSortBy">
</b:Dropdown>
</b:Nav>
<b:Nav>
<b:TextBox ui:field="textBoxSortBy" readOnly="true"
addStyleNames="{style.margin-top-5}"></b:TextBox>
</b:Nav>
<b:Nav>
<b:NavLink ui:field="buttonReloadConcessioni"
title="Create a new Project" icon="ROTATE_RIGHT">Reload Projects</b:NavLink>

@ -3,13 +3,14 @@ package org.gcube.portlets.user.geoportaldataentry.client.ui;
import java.util.List;
import org.gcube.application.geoportalcommon.shared.products.ConcessioneDV;
import org.gcube.portlets.user.geoportaldataentry.client.ConstantsGeoPortalDataEntryApp.RECORD_DISPLAY_FIELD;
import org.gcube.portlets.user.geoportaldataentry.client.ConstantsGeoPortalDataEntryApp.RECORD_TYPE;
import org.gcube.portlets.user.geoportaldataentry.client.GeoPortalDataEntryApp;
import org.gcube.portlets.user.geoportaldataentry.client.ui.table.ItemsTable;
import org.gcube.portlets.user.geoportaldataentry.client.ui.table.ItemsTable.DISPLAY_FIELD;
import org.gcube.portlets.user.geoportaldataentry.client.ui.table.SortedCellTable;
import org.gcube.portlets.user.geoportaldataentry.client.ui.utils.LoaderIcon;
import org.gcube.portlets.user.geoportaldataentry.shared.SearchedData;
import org.gcube.portlets.user.geoportaldataentry.shared.ResultSetPaginatedData;
import org.gcube.portlets.user.geoportaldataentry.shared.SortFilter;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.shared.HandlerManager;
@ -49,21 +50,23 @@ public class GeonaRecordsPaginatedView {
private int serverStartIndex;
private HandlerManager eventBus;
private RECORD_TYPE recordType;
private SortFilter currentSortFilter;
/**
* Instantiates a new geona records paginated view.
*
* @param eventbus the eventbus
* @param recordType the record type
* @param displayFields the display fields
* @param sortByField the sort by field
* @param eventbus the eventbus
* @param recordType the record type
* @param displayFields the display fields
* @param currentSortFilter the sort by field
*/
public GeonaRecordsPaginatedView(HandlerManager eventbus, RECORD_TYPE recordType, DISPLAY_FIELD[] displayFields,
DISPLAY_FIELD sortByField) {
public GeonaRecordsPaginatedView(HandlerManager eventbus, RECORD_TYPE recordType,
RECORD_DISPLAY_FIELD[] displayFields, SortFilter currentSortFilter) {
this.recordType = recordType;
this.currentSortFilter = currentSortFilter;
this.initClassFirstRangeChanged = true;
this.eventBus = eventbus;
itemsTable = new ItemsTable<ConcessioneDV>(eventbus, displayFields, sortByField);
itemsTable = new ItemsTable<ConcessioneDV>(eventbus, displayFields, currentSortFilter);
itemsTable.initTable(null, null, dataProvider);
orginalLoadingIndicator = itemsTable.getCellTable().getLoadingIndicator();
@ -111,13 +114,13 @@ public class GeonaRecordsPaginatedView {
/**
* Load new page.
*
* @param startIdx the start idx
* @param limit the limit
* @param resetStore the reset store
* @param startIdx the start idx
* @param limit the limit
* @param resetStore the reset store
* @param invalidCache the invalid cache
*/
private void loadNewPage(final int startIdx, final int limit, final boolean resetStore,
final boolean invalidCache) {
final SortFilter currentSortFilter, final boolean invalidCache) {
// initFirstRangeChanged = resetStore;
GWT.log("loadNewPage with parameters [startIdx: " + startIdx + ", limit: " + limit + ", resetStore:"
+ resetStore + "]");
@ -133,7 +136,7 @@ public class GeonaRecordsPaginatedView {
getTableDataProvider().updateRowCount(ITEMS_PER_PAGE, false);
}
loadConcessioni(newStartIndex, limit, serverStartIndex, invalidCache);
loadConcessioni(newStartIndex, limit, serverStartIndex, currentSortFilter, invalidCache);
}
/**
@ -144,7 +147,7 @@ public class GeonaRecordsPaginatedView {
public void loadItemsForType(RECORD_TYPE recordType) {
this.recordType = recordType;
getCellTable().setVisibleRangeAndClearData(new Range(ITEM_START_INDEX, ITEMS_PER_PAGE), false);
loadNewPage(ITEM_START_INDEX, ITEMS_PER_PAGE, true, true);
loadNewPage(ITEM_START_INDEX, ITEMS_PER_PAGE, true, currentSortFilter, true);
}
/**
@ -152,7 +155,7 @@ public class GeonaRecordsPaginatedView {
*
* @param result the new new page result
*/
private void setNewPageResult(SearchedData result) {
private void setNewPageResult(ResultSetPaginatedData result) {
GWT.log("setNewPageResult: " + result);
serverStartIndex = result.getServerEndIndex();
SelectionModel<? super ConcessioneDV> sm = getCellTable().getSelectionModel();
@ -194,14 +197,14 @@ public class GeonaRecordsPaginatedView {
* @param limit the limit
* @param serverIndex the server index
*/
private <T> void loadConcessioni(int newStartIndex, int limit, int serverIndex, boolean invalidCache) {
private <T> void loadConcessioni(int newStartIndex, int limit, int serverIndex, SortFilter sortFilter,
boolean invalidCache) {
showLoading(true);
GWT.log("calling loadItemsForStatus with parameters [startIndex: " + newStartIndex + ", limit: " + limit
+ ", serverIndex:" + serverIndex + "]");
GeoPortalDataEntryApp.greetingService.getListConcessioni(newStartIndex, limit, invalidCache,
new AsyncCallback<SearchedData>() {
+ ", serverIndex:" + serverIndex + ", sortFilter: " + sortFilter + "]");
GeoPortalDataEntryApp.greetingService.getListConcessioni(newStartIndex, limit, sortFilter, invalidCache,
new AsyncCallback<ResultSetPaginatedData>() {
@Override
public void onFailure(Throwable caught) {
@ -211,7 +214,7 @@ public class GeonaRecordsPaginatedView {
}
@Override
public void onSuccess(SearchedData result) {
public void onSuccess(ResultSetPaginatedData result) {
showLoading(false);
setNewPageResult(result);
@ -287,7 +290,7 @@ public class GeonaRecordsPaginatedView {
return;
}
GWT.log("Range changed: " + start + " " + length + " visible count: " + display.getVisibleItemCount());
loadNewPage(start, length, false, false);
loadNewPage(start, length, false, currentSortFilter, false);
// eventBus.fireEvent(new TableRangeViewChangedEvent<T>(start, length));
}

@ -13,7 +13,9 @@ import java.util.Set;
import org.gcube.application.geoportalcommon.ConvertToDataViewModel;
import org.gcube.application.geoportalcommon.shared.products.ConcessioneDV;
import org.gcube.portlets.user.geoportaldataentry.client.ConstantsGeoPortalDataEntryApp.ACTION_ON_ITEM;
import org.gcube.portlets.user.geoportaldataentry.client.ConstantsGeoPortalDataEntryApp.RECORD_DISPLAY_FIELD;
import org.gcube.portlets.user.geoportaldataentry.client.events.ActionOnItemEvent;
import org.gcube.portlets.user.geoportaldataentry.shared.SortFilter;
import com.github.gwtbootstrap.client.ui.Pagination;
import com.google.gwt.cell.client.ButtonCell;
@ -58,35 +60,26 @@ public class ItemsTable<T extends ConcessioneDV> extends AbstractItemsCellTable<
private AbstractDataProvider<T> dataProvider;
/**
* The Enum DISPLAY_FIELD.
*
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it Feb 1, 2016
*/
public static enum DISPLAY_FIELD {
NAME, INTRO, AUTHOR, PROJECT_START_DATE, PROJECT_START_END_DATE, CREATED, CREATED_BY
};
private List<DISPLAY_FIELD> displayFields;
private List<RECORD_DISPLAY_FIELD> displayFields;
private TextColumn<T> startEndProjectColumn;
// private Column<T, Date> startProjectDateColumn;
// private Column<T, Date> endProjectDateColumn;
private DISPLAY_FIELD startSortByColumn;
private boolean isAsyncronusTable;
private TextColumn<T> insertedBy;
private Column<T, Date> createdColumn;
private SortFilter currentSortFilter;
/**
* Instantiates a new items table.
*
* @param eventBus the event bus
* @param fields the fields
* @param displayFields the display fields
* @param startSortByColumn the start sort by column
*/
public ItemsTable(HandlerManager eventBus, DISPLAY_FIELD[] fields, DISPLAY_FIELD startSortByColumn) {
public ItemsTable(HandlerManager eventBus, RECORD_DISPLAY_FIELD[] displayFields, SortFilter currentSortFilter) {
this.eventBus = eventBus;
this.startSortByColumn = startSortByColumn;
setDisplayFields(fields);
this.currentSortFilter = currentSortFilter;
setDisplayFields(displayFields);
}
/**
@ -115,7 +108,7 @@ public class ItemsTable<T extends ConcessioneDV> extends AbstractItemsCellTable<
this.isAsyncronusTable = dataProvider instanceof ListDataProvider ? false : true;
setEmptyTableMessage(NO_DATA);
if (this.displayFields.contains(DISPLAY_FIELD.NAME)) {
if (this.displayFields.contains(RECORD_DISPLAY_FIELD.NAME)) {
// NAME
name = new TextColumn<T>() {
@ -152,7 +145,7 @@ public class ItemsTable<T extends ConcessioneDV> extends AbstractItemsCellTable<
}
if (this.displayFields.contains(DISPLAY_FIELD.INTRO)) {
if (this.displayFields.contains(RECORD_DISPLAY_FIELD.INTRODUCTION)) {
introduction = new TextColumn<T>() {
@Override
@ -181,7 +174,7 @@ public class ItemsTable<T extends ConcessioneDV> extends AbstractItemsCellTable<
}
if (this.displayFields.contains(DISPLAY_FIELD.AUTHOR)) {
if (this.displayFields.contains(RECORD_DISPLAY_FIELD.AUTHOR)) {
author = new TextColumn<T>() {
@Override
@ -212,7 +205,7 @@ public class ItemsTable<T extends ConcessioneDV> extends AbstractItemsCellTable<
}
if (this.displayFields.contains(DISPLAY_FIELD.PROJECT_START_END_DATE)) {
if (this.displayFields.contains(RECORD_DISPLAY_FIELD.PROJECT_START_END_DATE)) {
startEndProjectColumn = new TextColumn<T>() {
@Override
@ -231,7 +224,7 @@ public class ItemsTable<T extends ConcessioneDV> extends AbstractItemsCellTable<
}
if (this.displayFields.contains(DISPLAY_FIELD.CREATED)) {
if (this.displayFields.contains(RECORD_DISPLAY_FIELD.CREATED)) {
DateCell date = new DateCell(dtformat);
createdColumn = new Column<T, Date>(date) {
@ -275,7 +268,7 @@ public class ItemsTable<T extends ConcessioneDV> extends AbstractItemsCellTable<
}
if (this.displayFields.contains(DISPLAY_FIELD.CREATED_BY)) {
if (this.displayFields.contains(RECORD_DISPLAY_FIELD.CREATED_BY)) {
// NAME
insertedBy = new TextColumn<T>() {
@ -336,22 +329,22 @@ public class ItemsTable<T extends ConcessioneDV> extends AbstractItemsCellTable<
sortedCellTable.addColumn(deleteRecordColumn);
sortedCellTable.setColumnWidth(deleteRecordColumn, 80, Unit.PX);
GWT.log("startSortByColumn: " + startSortByColumn);
GWT.log("currentSortFilter: " + currentSortFilter);
if (startSortByColumn != null)
switch (startSortByColumn) {
if (currentSortFilter != null)
switch (currentSortFilter.getOrderByField()) {
case NAME:
if (this.displayFields.contains(DISPLAY_FIELD.NAME)) {
if (this.displayFields.contains(RECORD_DISPLAY_FIELD.NAME)) {
sortedCellTable.setInitialSortColumn(name);
}
break;
case INTRO:
if (this.displayFields.contains(DISPLAY_FIELD.INTRO)) {
case INTRODUCTION:
if (this.displayFields.contains(RECORD_DISPLAY_FIELD.INTRODUCTION)) {
sortedCellTable.setInitialSortColumn(introduction);
}
break;
case AUTHOR:
if (this.displayFields.contains(DISPLAY_FIELD.AUTHOR)) {
if (this.displayFields.contains(RECORD_DISPLAY_FIELD.AUTHOR)) {
sortedCellTable.setInitialSortColumn(author);
}
break;
@ -361,6 +354,12 @@ public class ItemsTable<T extends ConcessioneDV> extends AbstractItemsCellTable<
}
/**
* To display authors.
*
* @param authors the authors
* @return the string
*/
private String toDisplayAuthors(List<String> authors) {
String toDisplay = "";
if (authors == null)
@ -400,9 +399,9 @@ public class ItemsTable<T extends ConcessioneDV> extends AbstractItemsCellTable<
*
* @param fields the new display fields
*/
public void setDisplayFields(DISPLAY_FIELD[] fields) {
public void setDisplayFields(RECORD_DISPLAY_FIELD[] fields) {
this.displayFields = fields != null && fields.length > 0 ? Arrays.asList(fields)
: Arrays.asList(DISPLAY_FIELD.values());
: Arrays.asList(RECORD_DISPLAY_FIELD.values());
}
/**
@ -421,7 +420,7 @@ public class ItemsTable<T extends ConcessioneDV> extends AbstractItemsCellTable<
*
* @return the displayFields
*/
public List<DISPLAY_FIELD> getDisplayFields() {
public List<RECORD_DISPLAY_FIELD> getDisplayFields() {
return displayFields;
}

@ -1,6 +1,7 @@
package org.gcube.portlets.user.geoportaldataentry.server;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -20,19 +21,23 @@ import org.gcube.application.geoportalcommon.shared.GeoNaDataViewerProfile;
import org.gcube.application.geoportalcommon.shared.GeoNaItemRef;
import org.gcube.application.geoportalcommon.shared.products.ConcessioneDV;
import org.gcube.portlets.user.geoportaldataentry.client.ConcessioniFormCardTitle;
import org.gcube.portlets.user.geoportaldataentry.client.ConstantsGeoPortalDataEntryApp.ORDER;
import org.gcube.portlets.user.geoportaldataentry.client.ConstantsGeoPortalDataEntryApp.RECORD_FIELD;
import org.gcube.portlets.user.geoportaldataentry.client.ConstantsGeoPortalDataEntryApp.RECORD_TYPE;
import org.gcube.portlets.user.geoportaldataentry.client.GeoportalDataEntryService;
import org.gcube.portlets.user.geoportaldataentry.shared.CommitReport;
import org.gcube.portlets.user.geoportaldataentry.shared.CommitReport.STATE;
import org.gcube.portlets.user.geoportaldataentry.shared.GeoNaFormDataObject;
import org.gcube.portlets.user.geoportaldataentry.shared.GeonaISConfig;
import org.gcube.portlets.user.geoportaldataentry.shared.SearchedData;
import org.gcube.portlets.user.geoportaldataentry.shared.ResultSetPaginatedData;
import org.gcube.portlets.user.geoportaldataentry.shared.SortFilter;
import org.gcube.portlets.widgets.mpformbuilder.shared.GenericDatasetBean;
import org.gcube.portlets.widgets.mpformbuilder.shared.upload.FileUploaded;
import org.gcube.vomanagement.usermanagement.model.GCubeUser;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.allen_sauer.gwt.log.client.Log;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
/**
@ -405,19 +410,124 @@ public class GeoportalDataEntryServiceImpl extends RemoteServiceServlet implemen
return item;
}
/*
* @Override public ResultSetPaginatedData getListConcessioni(Integer start,
* Integer limit, SortFilter filter, boolean reloadFromService) throws Exception
* { LOG.info("getListConcessioni called wit start: " + start + ", limit: " +
* limit + ", filter: " + filter);
*
* try { List<Concessione> listOfConcessioni =
* SessionUtil.getListOfConcessioni(getThreadLocalRequest(), reloadFromService);
* int listConcessioniSize = listOfConcessioni.size();
*
* List<Concessione> toReturn = new ArrayList<Concessione>(); int startIndex;
* int limitIndex = 0; if (start == null && limit == null) { startIndex = 0;
* limitIndex = listConcessioniSize; } else { startIndex = start; limitIndex =
* start + limit; if (limitIndex > listConcessioniSize) { limitIndex =
* listConcessioniSize; } }
*
* ResultSetPaginatedData searchedData = new ResultSetPaginatedData(start,
* limit, startIndex, false); searchedData.setTotalItems(listConcessioniSize);
*
* if (filter == null) { // unsorted list of records toReturn =
* listOfConcessioni.subList(startIndex, limitIndex); } else {
*
* RECORD_FIELD orderBy = filter.getOrderByField(); ORDER order =
* filter.getOrder();
*
* if (orderBy == null) orderBy = RECORD_FIELD.NAME;
*
* if (order == null) order = ORDER.ASC;
*
* ResultSetSorted resultSetSorted =
* SessionUtil.getLatestResultSetSorted(getThreadLocalRequest()); boolean
* latestOrderBy =
* resultSetSorted.getSearchFilter().getOrderByField().equals(orderBy); boolean
* latestOrder = resultSetSorted.getSearchFilter().getOrder().equals(order);
*
* //Checking if SortFilter is new (different to previous one used). If yes
* sorting again if(resultSetSorted==null || !latestOrderBy || !latestOrder) {
*
* // CASE INSENSITIVE COMPARATOR Comparator<Concessione> comparator = null;
* switch (orderBy) { case NAME: if (order.equals(ORDER.ASC)) { comparator =
* Comparator.comparing(Concessione::getNome,
* Comparator.nullsLast(String.CASE_INSENSITIVE_ORDER)); } else { comparator =
* Comparator .comparing(Concessione::getNome,
* Comparator.nullsLast(String.CASE_INSENSITIVE_ORDER)) .reversed(); }
*
* break; case CREATED: if (order.equals(ORDER.ASC)) { comparator =
* Comparator.comparing(Concessione::getCreationTime,
* Comparator.nullsLast(Comparator.naturalOrder())); } else { comparator =
* Comparator.comparing(Concessione::getCreationTime,
* Comparator.nullsLast(Comparator.naturalOrder())).reversed(); } break;
*
* case CREATED_BY: if (order.equals(ORDER.ASC)) { comparator =
* Comparator.comparing(Concessione::getCreationUser,
* Comparator.nullsLast(String.CASE_INSENSITIVE_ORDER)); } else { comparator =
* Comparator.comparing(Concessione::getCreationUser,
* Comparator.nullsLast(String.CASE_INSENSITIVE_ORDER)).reversed(); } break;
*
* case PROJECT_START: if (order.equals(ORDER.ASC)) { comparator =
* Comparator.comparing(Concessione::getDataInizioProgetto,
* Comparator.nullsLast(Comparator.naturalOrder())); } else { comparator =
* Comparator.comparing(Concessione::getDataInizioProgetto,
* Comparator.nullsLast(Comparator.naturalOrder())).reversed(); } break;
*
* default: break; }
*
* // sorting with nullsLast
* listOfConcessioni.sort(Comparator.nullsLast(comparator));
* Log.debug("sorted list: " + listOfConcessioni); //saving in session the
* ResultSetSorted with SortFilter and ordered data ResultSetSorted rsSorted =
* new ResultSetSorted(new SortFilter(orderBy, order), listOfConcessioni);
* SessionUtil.setLatestResultSetSorted(getThreadLocalRequest(),rsSorted);
*
* }else { //Using the ResultSet sorted at previous request listOfConcessioni =
* resultSetSorted.getData(); }
*
* // pagination toReturn = listOfConcessioni.subList(startIndex, limitIndex); }
*
* List<ConcessioneDV> toReturnList = new
* ArrayList<ConcessioneDV>(toReturn.size());
*
* for (Concessione concessione : toReturn) { ConcessioneDV concessioneDV =
* ConvertToDataViewModel.toBaseConcessione(concessione);
* toReturnList.add(concessioneDV); }
*
*
* searchedData.setData(toReturnList);
*
* if (listConcessioniSize == limit || listConcessioniSize == 0) {
* LOG.debug("Page completed returning " + listConcessioniSize + " items"); int
* newOffset = startIndex + start;
* searchedData.setServerSearchFinished(newOffset > listConcessioniSize ||
* listConcessioniSize == 0); LOG.debug("is Search finished: " +
* searchedData.isServerSearchFinished()); return searchedData; }
*
* LOG.debug("Returning: " + toReturnList);
* LOG.info("Returning list of concessioni with size: " + toReturnList.size());
* return searchedData; } catch (Exception e) {
* LOG.error("Error on loading list of concessioni: ", e); throw new
* Exception("Error occurred on loading list of Concessioni. Error: " +
* e.getMessage()); }
*
* }
*/
/**
* Gets the list concessioni.
*
* @param start the start
* @param limit the limit
* @param reloadFromService if true, ignore the concessioni saved in session and
* reload them from service
* @param filter the filter
* @param reloadFromService the reload from service
* @return the list concessioni
* @throws Exception the exception
*/
@Override
public SearchedData getListConcessioni(Integer start, Integer limit, boolean reloadFromService) throws Exception {
LOG.info("getListConcessioni called wit start: " + start + ", limit: " + limit);
public ResultSetPaginatedData getListConcessioni(Integer start, Integer limit, SortFilter filter,
boolean reloadFromService) throws Exception {
LOG.info("getListConcessioni called wit start: " + start + ", limit: " + limit + ", filter: " + filter);
try {
List<Concessione> listOfConcessioni = SessionUtil.getListOfConcessioni(getThreadLocalRequest(),
@ -428,7 +538,6 @@ public class GeoportalDataEntryServiceImpl extends RemoteServiceServlet implemen
int startIndex;
int limitIndex = 0;
if (start == null && limit == null) {
toReturn.addAll(listOfConcessioni);
startIndex = 0;
limitIndex = listConcessioniSize;
} else {
@ -439,10 +548,78 @@ public class GeoportalDataEntryServiceImpl extends RemoteServiceServlet implemen
}
}
SearchedData searchedData = new SearchedData(start, limit, startIndex, false);
ResultSetPaginatedData searchedData = new ResultSetPaginatedData(start, limit, startIndex, false);
searchedData.setTotalItems(listConcessioniSize);
toReturn = listOfConcessioni.subList(startIndex, limitIndex);
if (filter == null) {
// unsorted list of records
toReturn = listOfConcessioni.subList(startIndex, limitIndex);
} else {
RECORD_FIELD orderBy = filter.getOrderByField();
ORDER order = filter.getOrder();
if (orderBy == null)
orderBy = RECORD_FIELD.NAME;
if (order == null)
order = ORDER.ASC;
// CASE INSENSITIVE COMPARATOR
Comparator<Concessione> comparator = null;
switch (orderBy) {
case NAME:
if (order.equals(ORDER.ASC)) {
comparator = Comparator.comparing(Concessione::getNome,
Comparator.nullsLast(String.CASE_INSENSITIVE_ORDER));
} else {
comparator = Comparator
.comparing(Concessione::getNome, Comparator.nullsLast(String.CASE_INSENSITIVE_ORDER))
.reversed();
}
break;
case CREATED:
if (order.equals(ORDER.ASC)) {
comparator = Comparator.comparing(Concessione::getCreationTime,
Comparator.nullsLast(Comparator.naturalOrder()));
} else {
comparator = Comparator.comparing(Concessione::getCreationTime,
Comparator.nullsLast(Comparator.naturalOrder())).reversed();
}
break;
case CREATED_BY:
if (order.equals(ORDER.ASC)) {
comparator = Comparator.comparing(Concessione::getCreationUser,
Comparator.nullsLast(String.CASE_INSENSITIVE_ORDER));
} else {
comparator = Comparator.comparing(Concessione::getCreationUser,
Comparator.nullsLast(String.CASE_INSENSITIVE_ORDER)).reversed();
}
break;
case PROJECT_START:
if (order.equals(ORDER.ASC)) {
comparator = Comparator.comparing(Concessione::getDataInizioProgetto,
Comparator.nullsLast(Comparator.naturalOrder()));
} else {
comparator = Comparator.comparing(Concessione::getDataInizioProgetto,
Comparator.nullsLast(Comparator.naturalOrder())).reversed();
}
break;
default:
break;
}
// sorting with nullsLast
listOfConcessioni.sort(Comparator.nullsLast(comparator));
Log.debug("sorted list: " + listOfConcessioni);
// pagination
toReturn = listOfConcessioni.subList(startIndex, limitIndex);
}
List<ConcessioneDV> toReturnList = new ArrayList<ConcessioneDV>(toReturn.size());

@ -17,6 +17,7 @@ import org.gcube.application.geoportalcommon.shared.GeoNaDataViewerProfile;
import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
import org.gcube.common.portal.PortalContext;
import org.gcube.common.scope.api.ScopeProvider;
import org.gcube.portlets.user.geoportaldataentry.shared.ResultSetSorted;
import org.gcube.vomanagement.usermanagement.GroupManager;
import org.gcube.vomanagement.usermanagement.exception.GroupRetrievalFault;
import org.gcube.vomanagement.usermanagement.exception.UserManagementSystemException;
@ -154,17 +155,16 @@ public class SessionUtil {
}
}
LOG.debug("Got list of concessioni from client mongo: " + listOfConcessioni);
// LOG.debug("Got list of concessioni from client mongo: " + listOfConcessioni);
session.setAttribute(LIST_OF_CONCESSIONI, listOfConcessioni);
LOG.info("Saved in session list of concessioni from client mongo with size: " + listOfConcessioni.size());
} else
LOG.info("list of concessioni presents in session");
LOG.info("list of concessioni presents in session, using it");
LOG.info("read list of concessioni with size: " + listOfConcessioni.size());
return listOfConcessioni;
}
/**
* Gets the geportal viewer resource profile.
*
@ -183,8 +183,31 @@ public class SessionUtil {
geoNaDataViewerProfile = gc.getGeoNaDataViewProfile(null);
session.setAttribute(GEONA_DATAVIEWER_PROFILE, geoNaDataViewerProfile);
}
return geoNaDataViewerProfile;
}
/**
* Gets the latest result set sorted.
*
* @param httpServletRequest the http servlet request
* @return the latest result set sorted
*/
public static ResultSetSorted getLatestResultSetSorted(HttpServletRequest httpServletRequest) {
HttpSession session = httpServletRequest.getSession();
return (ResultSetSorted) session.getAttribute("LATEST_RESULT_SET_SORTED");
}
/**
* Gets the latest sort filter.
*
* @param httpServletRequest the http servlet request
* @return the latest sort filter
*/
public static void setLatestResultSetSorted(HttpServletRequest httpServletRequest, ResultSetSorted rsSorted) {
HttpSession session = httpServletRequest.getSession();
session.setAttribute("LATEST_RESULT_SET_SORTED", rsSorted);
}
}

@ -10,13 +10,13 @@ import org.gcube.application.geoportalcommon.shared.products.ConcessioneDV;
/**
* The Class SearchedFolder.
* The Class ResultSetPaginatedData.
*
* @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
*
* Jun 16, 2021
* Aug 6, 2021
*/
public class SearchedData implements Serializable {
public class ResultSetPaginatedData implements Serializable {
/**
*
@ -32,18 +32,19 @@ public class SearchedData implements Serializable {
/**
* Instantiates a new searched folder.
*/
public SearchedData() {
public ResultSetPaginatedData() {
}
/**
* Instantiates a new searched data.
* Instantiates a new result set paginated data.
*
* @param clientStartIndex the client start index
* @param limit the limit
* @param serverEndIndex the server end index
* @param clientStartIndex the client start index
* @param limit the limit
* @param serverEndIndex the server end index
* @param isServerSearchFinished the is server search finished
*/
public SearchedData(int clientStartIndex, int limit, int serverEndIndex, boolean isServerSearchFinished) {
public ResultSetPaginatedData(int clientStartIndex, int limit, int serverEndIndex, boolean isServerSearchFinished) {
this.clientStartIndex = clientStartIndex;
this.limit = limit;
@ -159,10 +160,15 @@ public class SearchedData implements Serializable {
this.totalItems = totalItems;
}
/**
* To string.
*
* @return the string
*/
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("SearchedData [data=");
builder.append("ResultSetPaginatedData [data=");
builder.append(data);
builder.append(", clientStartIndex=");
builder.append(clientStartIndex);

@ -0,0 +1,56 @@
package org.gcube.portlets.user.geoportaldataentry.shared;
import java.io.Serializable;
import java.util.List;
import org.gcube.application.geoportal.common.model.legacy.Concessione;
public class ResultSetSorted implements Serializable {
/**
*
*/
private static final long serialVersionUID = 889420364685643758L;
private SortFilter searchFilter;
private List<Concessione> data;
ResultSetSorted() {
}
public ResultSetSorted(SortFilter searchFilter, List<Concessione> data) {
super();
this.searchFilter = searchFilter;
this.data = data;
}
public SortFilter getSearchFilter() {
return searchFilter;
}
public List<Concessione> getData() {
return data;
}
public void setSearchFilter(SortFilter searchFilter) {
this.searchFilter = searchFilter;
}
public void setData(List<Concessione> data) {
this.data = data;
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("ResultSetSorted [searchFilter=");
builder.append(searchFilter);
builder.append(", data=");
builder.append(data);
builder.append("]");
return builder.toString();
}
}

@ -0,0 +1,99 @@
package org.gcube.portlets.user.geoportaldataentry.shared;
import java.io.Serializable;
import org.gcube.portlets.user.geoportaldataentry.client.ConstantsGeoPortalDataEntryApp.ORDER;
import org.gcube.portlets.user.geoportaldataentry.client.ConstantsGeoPortalDataEntryApp.RECORD_FIELD;
/**
* The Class SortFilter.
*
* @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
*
* Aug 6, 2021
*/
public class SortFilter implements Serializable {
/**
*
*/
private static final long serialVersionUID = -4004094263090373626L;
private RECORD_FIELD orderByField;
private ORDER order;
/**
* Instantiates a new sort filter.
*/
public SortFilter() {
}
/**
* Instantiates a new sort filter.
*
* @param orderByField the order by field
* @param order the order
*/
public SortFilter(RECORD_FIELD orderByField, ORDER order) {
this.orderByField = orderByField;
this.order = order;
}
/**
* Gets the order by field.
*
* @return the order by field
*/
public RECORD_FIELD getOrderByField() {
return orderByField;
}
/**
* Gets the order.
*
* @return the order
*/
public ORDER getOrder() {
return order;
}
/**
* Sets the order by field.
*
* @param orderByField the new order by field
*/
public void setOrderByField(RECORD_FIELD orderByField) {
this.orderByField = orderByField;
}
/**
* Sets the order.
*
* @param order the new order
*/
public void setOrder(ORDER order) {
this.order = order;
}
/**
* To string.
*
* @return the string
*/
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("SortFilter [orderByField=");
builder.append(orderByField);
builder.append(", order=");
builder.append(order);
builder.append("]");
return builder.toString();
}
}
Loading…
Cancel
Save