task_21363 #1
|
@ -4,10 +4,12 @@ import java.util.List;
|
||||||
|
|
||||||
import org.gcube.datacatalogue.utillibrary.shared.ItemStatus;
|
import org.gcube.datacatalogue.utillibrary.shared.ItemStatus;
|
||||||
import org.gcube.portlets.widgets.ckancontentmoderator.shared.CatalogueDataset;
|
import org.gcube.portlets.widgets.ckancontentmoderator.shared.CatalogueDataset;
|
||||||
|
import org.gcube.portlets.widgets.ckancontentmoderator.shared.SearchedData;
|
||||||
|
|
||||||
import com.google.gwt.user.client.rpc.RemoteService;
|
import com.google.gwt.user.client.rpc.RemoteService;
|
||||||
import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;
|
import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;
|
||||||
|
|
||||||
|
// TODO: Auto-generated Javadoc
|
||||||
/**
|
/**
|
||||||
* The client side stub for the RPC service.
|
* The client side stub for the RPC service.
|
||||||
*
|
*
|
||||||
|
@ -63,8 +65,20 @@ public interface CkanContentModeratorService extends RemoteService {
|
||||||
* @param limit the limit
|
* @param limit the limit
|
||||||
* @param offset the offset
|
* @param offset the offset
|
||||||
* @return the list items for status
|
* @return the list items for status
|
||||||
* @throws Exception
|
* @throws Exception the exception
|
||||||
*/
|
*/
|
||||||
public List<CatalogueDataset> getListItemsForStatus(ItemStatus theStatus, int limit, int offset) throws Exception;
|
public List<CatalogueDataset> getListItemsForStatus(ItemStatus theStatus, int limit, int offset) throws Exception;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the data for status.
|
||||||
|
*
|
||||||
|
* @param status the status
|
||||||
|
* @param startIndex the start index
|
||||||
|
* @param lenght the lenght
|
||||||
|
* @param serverIndex the server index
|
||||||
|
* @return the data for status
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
SearchedData getDataForStatus(ItemStatus status, int startIndex, int lenght, int serverIndex) throws Exception;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,6 +4,7 @@ import java.util.List;
|
||||||
|
|
||||||
import org.gcube.datacatalogue.utillibrary.shared.ItemStatus;
|
import org.gcube.datacatalogue.utillibrary.shared.ItemStatus;
|
||||||
import org.gcube.portlets.widgets.ckancontentmoderator.shared.CatalogueDataset;
|
import org.gcube.portlets.widgets.ckancontentmoderator.shared.CatalogueDataset;
|
||||||
|
import org.gcube.portlets.widgets.ckancontentmoderator.shared.SearchedData;
|
||||||
|
|
||||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||||
|
|
||||||
|
@ -70,4 +71,8 @@ public interface CkanContentModeratorServiceAsync {
|
||||||
void getListItemsForStatus(ItemStatus theStatus, int limit, int offset,
|
void getListItemsForStatus(ItemStatus theStatus, int limit, int offset,
|
||||||
AsyncCallback<List<CatalogueDataset>> callback);
|
AsyncCallback<List<CatalogueDataset>> callback);
|
||||||
|
|
||||||
|
void getDataForStatus(ItemStatus status, int startIndex, int lenght, int serverIndex,
|
||||||
|
AsyncCallback<SearchedData> asyncCallback);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,18 +1,14 @@
|
||||||
package org.gcube.portlets.widgets.ckancontentmoderator.client;
|
package org.gcube.portlets.widgets.ckancontentmoderator.client;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.gcube.datacatalogue.utillibrary.shared.ItemStatus;
|
import org.gcube.datacatalogue.utillibrary.shared.ItemStatus;
|
||||||
import org.gcube.portlets.widgets.ckancontentmoderator.client.ui.ContentModeratorSystemPanel;
|
import org.gcube.portlets.widgets.ckancontentmoderator.client.ui.ContentModeratorPaginatedView;
|
||||||
import org.gcube.portlets.widgets.ckancontentmoderator.client.ui.table.ItemsTable;
|
import org.gcube.portlets.widgets.ckancontentmoderator.client.ui.ContentModeratorSystemBaseView;
|
||||||
import org.gcube.portlets.widgets.ckancontentmoderator.client.ui.table.ItemsTable.DISPLAY_FIELD;
|
import org.gcube.portlets.widgets.ckancontentmoderator.client.ui.table.ItemsTable.DISPLAY_FIELD;
|
||||||
import org.gcube.portlets.widgets.ckancontentmoderator.shared.CatalogueDataset;
|
|
||||||
|
|
||||||
import com.google.gwt.core.client.GWT;
|
import com.google.gwt.core.client.GWT;
|
||||||
import com.google.gwt.user.client.Command;
|
import com.google.gwt.user.client.Command;
|
||||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||||
import com.google.gwt.user.client.ui.Composite;
|
import com.google.gwt.user.client.ui.Composite;
|
||||||
import com.google.gwt.view.client.ListDataProvider;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The Class CkanContentModeratorWidget.
|
* The Class CkanContentModeratorWidget.
|
||||||
|
@ -23,12 +19,13 @@ import com.google.gwt.view.client.ListDataProvider;
|
||||||
*/
|
*/
|
||||||
public class CkanContentModeratorWidget {
|
public class CkanContentModeratorWidget {
|
||||||
|
|
||||||
public final CkanContentModeratorServiceAsync contentModeratorService = GWT
|
public final static CkanContentModeratorServiceAsync contentModeratorService = GWT
|
||||||
.create(CkanContentModeratorService.class);
|
.create(CkanContentModeratorService.class);
|
||||||
|
|
||||||
private ItemsTable<CatalogueDataset> itemsTable;
|
// private ItemsTable<CatalogueDataset> itemsTable;
|
||||||
private ContentModeratorSystemPanel cmsPanel = new ContentModeratorSystemPanel();
|
private ContentModeratorSystemBaseView cmsPanel = new ContentModeratorSystemBaseView();
|
||||||
private Boolean isContentModeratorEnabled = null;
|
private Boolean isContentModeratorEnabled = null;
|
||||||
|
private ContentModeratorPaginatedView paginatedView;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Instantiates a new ckan content moderator widget.
|
* Instantiates a new ckan content moderator widget.
|
||||||
|
@ -36,46 +33,51 @@ public class CkanContentModeratorWidget {
|
||||||
* @param displayFields the display fields
|
* @param displayFields the display fields
|
||||||
* @param sortByField the sort by field
|
* @param sortByField the sort by field
|
||||||
*/
|
*/
|
||||||
public CkanContentModeratorWidget(DISPLAY_FIELD[] displayFields, DISPLAY_FIELD sortByField) {
|
public CkanContentModeratorWidget(ItemStatus status, DISPLAY_FIELD[] displayFields, DISPLAY_FIELD sortByField) {
|
||||||
itemsTable = new ItemsTable<CatalogueDataset>(null, displayFields, sortByField);
|
// itemsTable = new ItemsTable<CatalogueDataset>(null, displayFields, sortByField);
|
||||||
itemsTable.initTable(null, null, new ListDataProvider<CatalogueDataset>());
|
// itemsTable.initTable(null, null, new ListDataProvider<CatalogueDataset>());
|
||||||
cmsPanel.add(itemsTable.getCellTable());
|
// cmsPanel.add(itemsTable.getCellTable());
|
||||||
|
|
||||||
|
paginatedView = new ContentModeratorPaginatedView(status, displayFields, sortByField);
|
||||||
|
//cmsPanel.addToTop(new LoadingPanel(new HTML("Loading...")));
|
||||||
|
cmsPanel.addToCenter(paginatedView.getCellPanel());
|
||||||
|
cmsPanel.addToBottom(paginatedView.getPagerPanel());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
// /**
|
||||||
* Load items for status.
|
// * Load items for status.
|
||||||
*
|
// *
|
||||||
* @param status the status
|
// * @param status the status
|
||||||
* @throws Exception the exception
|
// * @throws Exception the exception
|
||||||
*/
|
// */
|
||||||
public void loadItemsForStatus(ItemStatus status) throws Exception {
|
// public void loadItemsForStatus(ItemStatus status) throws Exception {
|
||||||
|
//
|
||||||
if (isContentModeratorEnabled == null)
|
// if (isContentModeratorEnabled == null)
|
||||||
throw new Exception("Please, first check if the content moderator is enabled in this context");
|
// throw new Exception("Please, first check if the content moderator is enabled in this context");
|
||||||
|
//
|
||||||
if (!isContentModeratorEnabled)
|
// if (!isContentModeratorEnabled)
|
||||||
throw new Exception("Content Moderator is not enabled in this context");
|
// throw new Exception("Content Moderator is not enabled in this context");
|
||||||
|
//
|
||||||
cmsPanel.showLoading(true);
|
// cmsPanel.showLoading(true);
|
||||||
contentModeratorService.getListItemsForStatus(status, ContentModeratorWidgetConstants.ITEMS_PER_PAGE,
|
// contentModeratorService.getListItemsForStatus(status, ContentModeratorWidgetConstants.ITEMS_PER_PAGE,
|
||||||
ContentModeratorWidgetConstants.ITEM_START_INDEX, new AsyncCallback<List<CatalogueDataset>>() {
|
// ContentModeratorWidgetConstants.ITEM_START_INDEX, new AsyncCallback<List<CatalogueDataset>>() {
|
||||||
|
//
|
||||||
@Override
|
// @Override
|
||||||
public void onSuccess(List<CatalogueDataset> result) {
|
// public void onSuccess(List<CatalogueDataset> result) {
|
||||||
cmsPanel.showLoading(false);
|
// cmsPanel.showLoading(false);
|
||||||
itemsTable.updateItems(result, true);
|
// itemsTable.updateItems(result, true);
|
||||||
|
//
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
@Override
|
// @Override
|
||||||
public void onFailure(Throwable caught) {
|
// public void onFailure(Throwable caught) {
|
||||||
cmsPanel.showLoading(false);
|
// cmsPanel.showLoading(false);
|
||||||
// TODO Auto-generated method stub
|
// // TODO Auto-generated method stub
|
||||||
|
//
|
||||||
}
|
// }
|
||||||
});
|
// });
|
||||||
|
//
|
||||||
}
|
// }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks if is content moderator enabled.
|
* Checks if is content moderator enabled.
|
||||||
|
|
|
@ -11,6 +11,6 @@ public class ContentModeratorWidgetConstants {
|
||||||
|
|
||||||
public static final String NO_DATA = "No data";
|
public static final String NO_DATA = "No data";
|
||||||
|
|
||||||
public static int ITEMS_PER_PAGE = 20;
|
public static int ITEMS_PER_PAGE = 10;
|
||||||
public static int ITEM_START_INDEX = 0;
|
public static int ITEM_START_INDEX = 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,47 +0,0 @@
|
||||||
package org.gcube.portlets.widgets.ckancontentmoderator.client.ui;
|
|
||||||
|
|
||||||
import com.google.gwt.core.client.GWT;
|
|
||||||
import com.google.gwt.event.dom.client.ClickEvent;
|
|
||||||
import com.google.gwt.uibinder.client.UiBinder;
|
|
||||||
import com.google.gwt.uibinder.client.UiField;
|
|
||||||
import com.google.gwt.uibinder.client.UiHandler;
|
|
||||||
import com.google.gwt.user.client.Window;
|
|
||||||
import com.google.gwt.user.client.ui.Button;
|
|
||||||
import com.google.gwt.user.client.ui.Composite;
|
|
||||||
import com.google.gwt.user.client.ui.HasText;
|
|
||||||
import com.google.gwt.user.client.ui.Widget;
|
|
||||||
|
|
||||||
public class ConentModeratorSystemBasePanel extends Composite implements HasText {
|
|
||||||
|
|
||||||
private static ConentModeratorSystemBasePanelUiBinder uiBinder = GWT
|
|
||||||
.create(ConentModeratorSystemBasePanelUiBinder.class);
|
|
||||||
|
|
||||||
interface ConentModeratorSystemBasePanelUiBinder extends UiBinder<Widget, ConentModeratorSystemBasePanel> {
|
|
||||||
}
|
|
||||||
|
|
||||||
public ConentModeratorSystemBasePanel() {
|
|
||||||
initWidget(uiBinder.createAndBindUi(this));
|
|
||||||
}
|
|
||||||
|
|
||||||
@UiField
|
|
||||||
Button button;
|
|
||||||
|
|
||||||
public ConentModeratorSystemBasePanel(String firstName) {
|
|
||||||
initWidget(uiBinder.createAndBindUi(this));
|
|
||||||
button.setText(firstName);
|
|
||||||
}
|
|
||||||
|
|
||||||
@UiHandler("button")
|
|
||||||
void onClick(ClickEvent e) {
|
|
||||||
Window.alert("Hello!");
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setText(String text) {
|
|
||||||
button.setText(text);
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getText() {
|
|
||||||
return button.getText();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,17 +0,0 @@
|
||||||
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
|
|
||||||
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
|
|
||||||
xmlns:g="urn:import:com.google.gwt.user.client.ui">
|
|
||||||
<ui:style>
|
|
||||||
.important {
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
</ui:style>
|
|
||||||
<g:HTMLPanel>
|
|
||||||
<g:DockPanel>
|
|
||||||
|
|
||||||
</g:DockPanel>
|
|
||||||
<g:ScrollPanel ui:field="theCenterPanel">
|
|
||||||
|
|
||||||
</g:ScrollPanel>
|
|
||||||
</g:HTMLPanel>
|
|
||||||
</ui:UiBinder>
|
|
|
@ -0,0 +1,270 @@
|
||||||
|
package org.gcube.portlets.widgets.ckancontentmoderator.client.ui;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.gcube.datacatalogue.utillibrary.shared.ItemStatus;
|
||||||
|
import org.gcube.portlets.widgets.ckancontentmoderator.client.CkanContentModeratorWidget;
|
||||||
|
import org.gcube.portlets.widgets.ckancontentmoderator.client.ContentModeratorWidgetConstants;
|
||||||
|
import org.gcube.portlets.widgets.ckancontentmoderator.client.ui.table.ItemsTable;
|
||||||
|
import org.gcube.portlets.widgets.ckancontentmoderator.client.ui.table.ItemsTable.DISPLAY_FIELD;
|
||||||
|
import org.gcube.portlets.widgets.ckancontentmoderator.client.ui.table.SortedCellTable;
|
||||||
|
import org.gcube.portlets.widgets.ckancontentmoderator.client.ui.util.LoadingPanel;
|
||||||
|
import org.gcube.portlets.widgets.ckancontentmoderator.shared.CatalogueDataset;
|
||||||
|
import org.gcube.portlets.widgets.ckancontentmoderator.shared.SearchedData;
|
||||||
|
|
||||||
|
import com.google.gwt.core.client.GWT;
|
||||||
|
import com.google.gwt.user.cellview.client.SimplePager;
|
||||||
|
import com.google.gwt.user.cellview.client.SimplePager.TextLocation;
|
||||||
|
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||||
|
import com.google.gwt.user.client.ui.FlowPanel;
|
||||||
|
import com.google.gwt.user.client.ui.HTML;
|
||||||
|
import com.google.gwt.user.client.ui.Label;
|
||||||
|
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||||
|
import com.google.gwt.user.client.ui.Widget;
|
||||||
|
import com.google.gwt.view.client.AsyncDataProvider;
|
||||||
|
import com.google.gwt.view.client.HasData;
|
||||||
|
import com.google.gwt.view.client.Range;
|
||||||
|
import com.google.gwt.view.client.SelectionModel;
|
||||||
|
import com.google.gwt.view.client.SingleSelectionModel;
|
||||||
|
|
||||||
|
public class ContentModeratorPaginatedView {
|
||||||
|
|
||||||
|
private static final int ITEM_START_INDEX = ContentModeratorWidgetConstants.ITEM_START_INDEX;
|
||||||
|
|
||||||
|
private static final int ITEMS_PER_PAGE = ContentModeratorWidgetConstants.ITEMS_PER_PAGE;
|
||||||
|
|
||||||
|
private VerticalPanel vPanel = new VerticalPanel();
|
||||||
|
|
||||||
|
private FlowPanel pagerPanel = new FlowPanel();
|
||||||
|
|
||||||
|
private Boolean newLoading = false;
|
||||||
|
private ItemsTable<CatalogueDataset> itemsTable;
|
||||||
|
private MyCustomDataProvider<CatalogueDataset> dataProvider = new MyCustomDataProvider<CatalogueDataset>();
|
||||||
|
protected Widget orginalLoadingIndicator = null;
|
||||||
|
private LoadingPanel loadingPanel = new LoadingPanel(new HTML("Loading data..."));
|
||||||
|
// private int serverStartIndex = 0;
|
||||||
|
|
||||||
|
private ItemStatus itemStatus;
|
||||||
|
|
||||||
|
private int serverStartIndex;
|
||||||
|
|
||||||
|
public ContentModeratorPaginatedView(ItemStatus theStatus, DISPLAY_FIELD[] displayFields,
|
||||||
|
DISPLAY_FIELD sortByField) {
|
||||||
|
this.itemStatus = theStatus;
|
||||||
|
this.newLoading = true;
|
||||||
|
itemsTable = new ItemsTable<CatalogueDataset>(null, displayFields, sortByField);
|
||||||
|
itemsTable.initTable(null, null, dataProvider);
|
||||||
|
|
||||||
|
orginalLoadingIndicator = itemsTable.getCellTable().getLoadingIndicator();
|
||||||
|
initPagination(ITEMS_PER_PAGE);
|
||||||
|
loadNewPage(ITEM_START_INDEX, ITEMS_PER_PAGE,false);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the asycn data provider.
|
||||||
|
*
|
||||||
|
* @return the asycn data provider
|
||||||
|
*/
|
||||||
|
public AsyncDataProvider<CatalogueDataset> getAsycnDataProvider() {
|
||||||
|
return (AsyncDataProvider<CatalogueDataset>) getCellTable().getDataProvider();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the cell tale.
|
||||||
|
*
|
||||||
|
* @return the cell tale
|
||||||
|
*/
|
||||||
|
private SortedCellTable<CatalogueDataset> getCellTable() {
|
||||||
|
return itemsTable.getCellTable();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Inits the pagination.
|
||||||
|
*
|
||||||
|
* @param itemsPerPage the items per page
|
||||||
|
*/
|
||||||
|
public void initPagination(int itemsPerPage) {
|
||||||
|
|
||||||
|
SimplePager.Resources pagerResources = GWT.create(SimplePager.Resources.class);
|
||||||
|
SimplePager pager = new SimplePager(TextLocation.CENTER, pagerResources, false, 0, true);
|
||||||
|
pager.setDisplay(getCellTable());
|
||||||
|
pager.setPageSize(itemsPerPage);
|
||||||
|
pager.getElement().getStyle().setProperty("margin", "auto");
|
||||||
|
vPanel.add(loadingPanel);
|
||||||
|
vPanel.add(getCellTable());
|
||||||
|
vPanel.getElement().addClassName("vPanel");
|
||||||
|
pagerPanel.add(pager);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the pager panel.
|
||||||
|
*
|
||||||
|
* @return the pager panel
|
||||||
|
*/
|
||||||
|
public VerticalPanel getCellPanel() {
|
||||||
|
return vPanel;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the panel in loading mode.
|
||||||
|
*/
|
||||||
|
protected void showLoading(boolean show) {
|
||||||
|
loadingPanel.setVisible(show);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the pager panel.
|
||||||
|
*
|
||||||
|
* @return the pager panel
|
||||||
|
*/
|
||||||
|
public FlowPanel getPagerPanel() {
|
||||||
|
return pagerPanel;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* (non-Javadoc)
|
||||||
|
*
|
||||||
|
* @see org.gcube.portlets.widgets.wsexplorer.client.view.WorkspaceExplorer#
|
||||||
|
* loadFolder(org.gcube.portlets.widgets.wsexplorer.shared.Item, boolean, int,
|
||||||
|
* int, boolean)
|
||||||
|
*/
|
||||||
|
public void loadNewPage(final int startIdx, final int limit, final boolean resetStore) {
|
||||||
|
newLoading = resetStore;
|
||||||
|
GWT.log("loading data with parameters [startIdx: "+startIdx+", limit: " + limit + ", resetStore:" + resetStore + "]");
|
||||||
|
// showLoading(true);
|
||||||
|
|
||||||
|
int newStartIndex = startIdx;
|
||||||
|
|
||||||
|
if (newLoading) {
|
||||||
|
GWT.log("Cleaning all data...");
|
||||||
|
newStartIndex = 0;
|
||||||
|
serverStartIndex = 0;
|
||||||
|
GWT.log("Store reset performed start index is: " + newStartIndex);
|
||||||
|
getAsycnDataProvider().updateRowCount(ITEMS_PER_PAGE, false);
|
||||||
|
//newLoading = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
loadItemsForStatus(itemStatus, newStartIndex, limit, serverStartIndex);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A custom {@link AsyncDataProvider}.
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it Jul 5, 2017
|
||||||
|
* @param <T> the generic type
|
||||||
|
*/
|
||||||
|
public class MyCustomDataProvider<T> extends AsyncDataProvider<T> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@link #onRangeChanged(HasData)} is called when the table requests a new
|
||||||
|
* range of data. You can push data back to the displays using
|
||||||
|
* {@link #updateRowData(int, List)}.
|
||||||
|
*
|
||||||
|
* @param display the display
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void onRangeChanged(HasData<T> display) {
|
||||||
|
|
||||||
|
// Get the new range.
|
||||||
|
final Range range = display.getVisibleRange();
|
||||||
|
|
||||||
|
int start = range.getStart();
|
||||||
|
int length = range.getLength();
|
||||||
|
|
||||||
|
if (newLoading) {
|
||||||
|
GWT.log("OnLoading is true.. returning");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
GWT.log("Range changed: " + start + " " + length + " visible count: " + display.getVisibleItemCount());
|
||||||
|
// GWT.log("Server start index: " + serverStartIndex);
|
||||||
|
// int newStart = start < serverStartIndex? serverStartIndex : start;
|
||||||
|
// GWT.log("newStart index: "+newStart);
|
||||||
|
loadNewPage(start, length, false);
|
||||||
|
} catch (Exception e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the new page result.
|
||||||
|
*
|
||||||
|
* @param result the new new page result
|
||||||
|
*/
|
||||||
|
private void setNewPageResult(SearchedData result){
|
||||||
|
|
||||||
|
serverStartIndex = result.getServerEndIndex();
|
||||||
|
|
||||||
|
if(newLoading){
|
||||||
|
getCellTable().setVisibleRangeAndClearData(new Range(result.getClientStartIndex(), ITEMS_PER_PAGE), false);
|
||||||
|
}
|
||||||
|
|
||||||
|
SelectionModel<? super CatalogueDataset> sm = getCellTable().getSelectionModel();
|
||||||
|
|
||||||
|
if(sm instanceof SingleSelectionModel){
|
||||||
|
SingleSelectionModel<CatalogueDataset> ssm = (SingleSelectionModel<CatalogueDataset>) sm;
|
||||||
|
ssm.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
getAsycnDataProvider().updateRowCount((int) result.getTotalItems(), true);
|
||||||
|
getAsycnDataProvider().updateRowData(result.getClientStartIndex(), result.getData());
|
||||||
|
|
||||||
|
if(result.getData().size()==0){
|
||||||
|
getCellTable().setLoadingIndicator(new Label("No data"));
|
||||||
|
}else{
|
||||||
|
getCellTable().setLoadingIndicator(orginalLoadingIndicator);
|
||||||
|
}
|
||||||
|
|
||||||
|
//getCellTable().setVisibleRangeAndClearData(new Range(startIdx, result.getChildren()).), false);
|
||||||
|
//getAsycnDataProvider().getDataDisplays().
|
||||||
|
GWT.log("Updating row data startIndex: "+result.getClientStartIndex() + " children size: "+result.getData().size());
|
||||||
|
GWT.log("getAsycnDataProvider().getDataDisplays().size(): "+getCellTable().getRowCount());
|
||||||
|
|
||||||
|
if(result.isServerSearchFinished()){
|
||||||
|
GWT.log("Search finished!!!");
|
||||||
|
getAsycnDataProvider().updateRowCount(getCellTable().getRowCount(), true);
|
||||||
|
}
|
||||||
|
//getCellTable().setPageSize(result.getChildren().size()+1);
|
||||||
|
//getCellTable().setVisibleRange(startIdx, result.getChildren().size());
|
||||||
|
//getCellTable().redraw();
|
||||||
|
//GWT.log("cellTable size: "+getCellTable().getRowCount());
|
||||||
|
newLoading = false;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Load items for status.
|
||||||
|
*
|
||||||
|
* @param status the status
|
||||||
|
* @param offset
|
||||||
|
* @param limit
|
||||||
|
* @throws Exception the exception
|
||||||
|
*/
|
||||||
|
private void loadItemsForStatus(ItemStatus status, int offset, int limit, int serverIndex) {
|
||||||
|
showLoading(true);
|
||||||
|
|
||||||
|
//TODO implement new method
|
||||||
|
GWT.log("calling getDataForStatus with parameters [startIndex: "+offset+", limit: " + limit + ", serverIndex:" + serverIndex + "]");
|
||||||
|
CkanContentModeratorWidget.contentModeratorService.getDataForStatus(status, offset, limit, serverIndex,
|
||||||
|
new AsyncCallback<SearchedData>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSuccess(SearchedData result) {
|
||||||
|
showLoading(false);
|
||||||
|
setNewPageResult(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFailure(Throwable caught) {
|
||||||
|
showLoading(false);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,63 @@
|
||||||
|
package org.gcube.portlets.widgets.ckancontentmoderator.client.ui;
|
||||||
|
|
||||||
|
import com.google.gwt.user.client.ui.Composite;
|
||||||
|
import com.google.gwt.user.client.ui.ScrollPanel;
|
||||||
|
import com.google.gwt.user.client.ui.Widget;
|
||||||
|
|
||||||
|
// TODO: Auto-generated Javadoc
|
||||||
|
/**
|
||||||
|
* The Class ContentModeratorSystemBaseView.
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
|
||||||
|
*
|
||||||
|
* Jun 16, 2021
|
||||||
|
*/
|
||||||
|
public class ContentModeratorSystemBaseView {
|
||||||
|
|
||||||
|
private BaseViewTemplate baseViewTemplate = new BaseViewTemplate();
|
||||||
|
private ScrollPanel centerPanel = new ScrollPanel();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instantiates a new content moderator system base view.
|
||||||
|
*/
|
||||||
|
public ContentModeratorSystemBaseView() {
|
||||||
|
baseViewTemplate.addToMiddle(centerPanel);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds the to top.
|
||||||
|
*
|
||||||
|
* @param w the w
|
||||||
|
*/
|
||||||
|
public void addToTop(Widget w) {
|
||||||
|
baseViewTemplate.addToTop(w);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds the to center.
|
||||||
|
*
|
||||||
|
* @param w the w
|
||||||
|
*/
|
||||||
|
public void addToCenter(Widget w) {
|
||||||
|
centerPanel.add(w);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds the to bottom.
|
||||||
|
*
|
||||||
|
* @param w the w
|
||||||
|
*/
|
||||||
|
public void addToBottom(Widget w) {
|
||||||
|
baseViewTemplate.addToBottom(w);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the panel.
|
||||||
|
*
|
||||||
|
* @return the panel
|
||||||
|
*/
|
||||||
|
public Composite getPanel() {
|
||||||
|
return baseViewTemplate;
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,58 +0,0 @@
|
||||||
package org.gcube.portlets.widgets.ckancontentmoderator.client.ui;
|
|
||||||
|
|
||||||
import org.gcube.portlets.widgets.ckancontentmoderator.client.resources.ContentModeratorWidgetResources;
|
|
||||||
|
|
||||||
import com.google.gwt.dom.client.Style.Unit;
|
|
||||||
import com.google.gwt.user.client.ui.Composite;
|
|
||||||
import com.google.gwt.user.client.ui.HTML;
|
|
||||||
import com.google.gwt.user.client.ui.HorizontalPanel;
|
|
||||||
import com.google.gwt.user.client.ui.Image;
|
|
||||||
import com.google.gwt.user.client.ui.ScrollPanel;
|
|
||||||
import com.google.gwt.user.client.ui.Widget;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The Class ContentModeratorSystemPanel.
|
|
||||||
*
|
|
||||||
* @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
|
|
||||||
*
|
|
||||||
* Jun 15, 2021
|
|
||||||
*/
|
|
||||||
public class ContentModeratorSystemPanel {
|
|
||||||
|
|
||||||
|
|
||||||
private BaseViewTemplate baseViewTemplate = new BaseViewTemplate();
|
|
||||||
private ScrollPanel centerPanel = new ScrollPanel();
|
|
||||||
|
|
||||||
protected static final HorizontalPanel LOADING_PANEL = new HorizontalPanel();
|
|
||||||
protected static final Image LOADING_IMAGE = ContentModeratorWidgetResources.getIconLoading().createImage();
|
|
||||||
|
|
||||||
static {
|
|
||||||
LOADING_PANEL.getElement().getStyle().setMargin(5.0, Unit.PX);
|
|
||||||
// LOADING_PANEL.setSpacing(3);
|
|
||||||
LOADING_PANEL.add(LOADING_IMAGE);
|
|
||||||
HTML loading = new HTML("Loading...");
|
|
||||||
loading.getElement().getStyle().setPaddingLeft(5.0, Unit.PX);
|
|
||||||
LOADING_PANEL.add(loading);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public ContentModeratorSystemPanel(){
|
|
||||||
baseViewTemplate.addToTop(LOADING_PANEL);
|
|
||||||
baseViewTemplate.addToMiddle(centerPanel);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void showLoading(boolean show) {
|
|
||||||
LOADING_PANEL.setVisible(show);
|
|
||||||
centerPanel.setVisible(!show);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void add(Widget w){
|
|
||||||
centerPanel.add(w);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Composite getPanel(){
|
|
||||||
return baseViewTemplate;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,38 @@
|
||||||
|
package org.gcube.portlets.widgets.ckancontentmoderator.client.ui.util;
|
||||||
|
|
||||||
|
import org.gcube.portlets.widgets.ckancontentmoderator.client.resources.ContentModeratorWidgetResources;
|
||||||
|
|
||||||
|
import com.google.gwt.dom.client.Style.Unit;
|
||||||
|
import com.google.gwt.user.client.ui.HTML;
|
||||||
|
import com.google.gwt.user.client.ui.HorizontalPanel;
|
||||||
|
import com.google.gwt.user.client.ui.Image;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Class LoadingPanel.
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
|
||||||
|
*
|
||||||
|
* Jun 16, 2021
|
||||||
|
*/
|
||||||
|
public class LoadingPanel extends HorizontalPanel {
|
||||||
|
|
||||||
|
protected final Image LOADING_IMAGE = ContentModeratorWidgetResources.getIconLoading().createImage();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instantiates a new loading panel.
|
||||||
|
*
|
||||||
|
* @param html the html
|
||||||
|
*/
|
||||||
|
public LoadingPanel(HTML html) {
|
||||||
|
this.getElement().getStyle().setMargin(5.0, Unit.PX);
|
||||||
|
// LOADING_PANEL.setSpacing(3);
|
||||||
|
this.add(LOADING_IMAGE);
|
||||||
|
if (html != null) {
|
||||||
|
HTML loadingText = new HTML("Loading...");
|
||||||
|
loadingText.getElement().getStyle().setPaddingLeft(5.0, Unit.PX);
|
||||||
|
this.add(loadingText);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -10,6 +10,7 @@ import org.gcube.datacatalogue.utillibrary.shared.ItemStatus;
|
||||||
import org.gcube.datacatalogue.utillibrary.shared.jackan.model.CkanDataset;
|
import org.gcube.datacatalogue.utillibrary.shared.jackan.model.CkanDataset;
|
||||||
import org.gcube.portlets.widgets.ckancontentmoderator.client.CkanContentModeratorService;
|
import org.gcube.portlets.widgets.ckancontentmoderator.client.CkanContentModeratorService;
|
||||||
import org.gcube.portlets.widgets.ckancontentmoderator.shared.CatalogueDataset;
|
import org.gcube.portlets.widgets.ckancontentmoderator.shared.CatalogueDataset;
|
||||||
|
import org.gcube.portlets.widgets.ckancontentmoderator.shared.SearchedData;
|
||||||
import org.gcube.vomanagement.usermanagement.model.GCubeUser;
|
import org.gcube.vomanagement.usermanagement.model.GCubeUser;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
@ -37,10 +38,19 @@ public class CkanContentModeratorServiceImpl extends RemoteServiceServlet implem
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the list items for status.
|
||||||
|
*
|
||||||
|
* @param theStatus the the status
|
||||||
|
* @param offset the offset
|
||||||
|
* @param limit the limit
|
||||||
|
* @return the list items for status
|
||||||
|
* @throws Exception the exception
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public List<CatalogueDataset> getListItemsForStatus(ItemStatus theStatus, int limit, int offset) throws Exception {
|
public List<CatalogueDataset> getListItemsForStatus(ItemStatus theStatus, int offset, int limit) throws Exception {
|
||||||
LOG.info("called getListItemsForStatus with [status: " + theStatus + "], [limit: " + limit + "], [offset: "
|
LOG.info("called getListItemsForStatus with [status: " + theStatus + ", offset: " + offset + "], [limit: "
|
||||||
+ offset + "]");
|
+ limit + "]");
|
||||||
List<CatalogueDataset> datasetList = null;
|
List<CatalogueDataset> datasetList = null;
|
||||||
try {
|
try {
|
||||||
|
|
||||||
|
@ -89,4 +99,80 @@ public class CkanContentModeratorServiceImpl extends RemoteServiceServlet implem
|
||||||
// TODO Auto-generated method stub
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SearchedData getDataForStatus(ItemStatus status, int offset, int limit, int serverStartIndex) throws Exception {
|
||||||
|
LOG.info("called getDataForStatus [status: "+status+", offset: "+offset+", limit: "+limit+", serverIndex: "+serverStartIndex);
|
||||||
|
|
||||||
|
try {
|
||||||
|
String scope = WsUtil.getCurrentScope(this.getThreadLocalRequest());
|
||||||
|
GCubeUser user = WsUtil.getCurrentUser(this.getThreadLocalRequest());
|
||||||
|
String token = WsUtil.getCurrentToken(scope, user.getUsername());
|
||||||
|
ScopeProvider.instance.set(scope);
|
||||||
|
SecurityTokenProvider.instance.set(token);
|
||||||
|
//int searchStartIndex = limit < serverStartIndex? serverStartIndex : offset;
|
||||||
|
|
||||||
|
int searchStartIndex = offset;
|
||||||
|
|
||||||
|
CatalogueContentModeratorSystem cmsInstance = CatalogueCMSFactory.getFactory().getCMSPerScope(scope);
|
||||||
|
SearchedData searchedData = new SearchedData(offset, limit, searchStartIndex, false);
|
||||||
|
long totalItemsForStatus = cmsInstance.countListItemsForStatus(status);
|
||||||
|
LOG.info("totalItemsForStatus "+status+" are : "+totalItemsForStatus);
|
||||||
|
List<CatalogueDataset> listDataset = new ArrayList<CatalogueDataset>();
|
||||||
|
try {
|
||||||
|
LOG.debug("getListItemsForStatus with searchStartIndex: "+searchStartIndex+", limit: "+limit);
|
||||||
|
listDataset = getListItemsForStatus(status, searchStartIndex, limit);
|
||||||
|
}catch (Exception e) {
|
||||||
|
LOG.error("Error occurred on gettin items for status: "+status,e);
|
||||||
|
}
|
||||||
|
|
||||||
|
int listDatasetSize = listDataset.size();
|
||||||
|
LOG.debug("Returned "+listDatasetSize+" with above parameters");
|
||||||
|
searchedData.setData(listDataset);
|
||||||
|
searchedData.setTotalItems(totalItemsForStatus);
|
||||||
|
|
||||||
|
if(listDatasetSize == limit || listDatasetSize==0){
|
||||||
|
LOG.debug("Page completed returning "+listDatasetSize+ " items");
|
||||||
|
int newOffset = searchStartIndex+offset;
|
||||||
|
searchedData.setServerSearchFinished(newOffset>totalItemsForStatus || listDatasetSize == 0);
|
||||||
|
LOG.debug("is Search finished: "+searchedData.isServerSearchFinished());
|
||||||
|
return searchedData;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*int offsetStartIndex = searchStartIndex;
|
||||||
|
boolean pageOffsetOut = false;
|
||||||
|
while(listDatasetSize < offset && !searchedData.isServerSearchFinished() && !pageOffsetOut){ //&& SEARCH NOT ULTIMATED
|
||||||
|
LOG.debug("MyLg new WHILE Items count: "+totalItemsForStatus+" is less than limit..");
|
||||||
|
|
||||||
|
int newOffsetStartIndex = offsetStartIndex+limit+1;
|
||||||
|
LOG.debug("MyLg NewStartIndex is startIndex+limit: "+newOffsetStartIndex);
|
||||||
|
|
||||||
|
//THERE ARE OTHER CHILDREN OVER NEW START INDEX
|
||||||
|
if(newOffsetStartIndex < totalItemsForStatus){
|
||||||
|
//newLimit = limit - childrenToReturn.size();
|
||||||
|
LOG.debug("MyLg getting items with index start: "+newOffsetStartIndex + ", limit: "+offset);
|
||||||
|
|
||||||
|
int diff = (int) (offset - totalItemsForStatus); //How items are remaining
|
||||||
|
//int offset = 0;
|
||||||
|
LOG.debug("MyLg new search start: "+newOffsetStartIndex + ", diff: "+diff+ ", retrieved: "+listDatasetSize);
|
||||||
|
if(diff >= listDatasetSize){
|
||||||
|
}else{
|
||||||
|
pageOffsetOut = true;
|
||||||
|
}
|
||||||
|
offsetStartIndex = newOffsetStartIndex;
|
||||||
|
LOG.debug("MyLg items count is: "+totalItemsForStatus + " serverEndIndex: "+offsetStartIndex);
|
||||||
|
searchedData.setServerEndIndex(offsetStartIndex);
|
||||||
|
}else{
|
||||||
|
LOG.debug("New start index (oldStartIndex+limit) is grather than total items count, search is finished");
|
||||||
|
searchedData.setServerSearchFinished(true);
|
||||||
|
}
|
||||||
|
}*/
|
||||||
|
LOG.debug("Returning: "+searchedData);
|
||||||
|
return searchedData;
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
LOG.error("Error during folder retrieving", e);
|
||||||
|
throw new Exception("Sorry, an error occurred on loading items");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,181 @@
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package org.gcube.portlets.widgets.ckancontentmoderator.shared;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Class SearchedFolder.
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
|
||||||
|
*
|
||||||
|
* Jun 16, 2021
|
||||||
|
*/
|
||||||
|
public class SearchedData implements Serializable {
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private static final long serialVersionUID = 6800997954077785719L;
|
||||||
|
private List<CatalogueDataset> data;
|
||||||
|
private int clientStartIndex = 0;
|
||||||
|
private int limit;
|
||||||
|
private int serverEndIndex = 0;
|
||||||
|
private boolean isServerSearchFinished = false;
|
||||||
|
private long totalItems;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instantiates a new searched folder.
|
||||||
|
*/
|
||||||
|
public SearchedData() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instantiates a new searched data.
|
||||||
|
*
|
||||||
|
* @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) {
|
||||||
|
|
||||||
|
this.clientStartIndex = clientStartIndex;
|
||||||
|
this.limit = limit;
|
||||||
|
this.serverEndIndex = serverEndIndex;
|
||||||
|
this.isServerSearchFinished = isServerSearchFinished;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the data.
|
||||||
|
*
|
||||||
|
* @return the data
|
||||||
|
*/
|
||||||
|
public List<CatalogueDataset> getData() {
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the client start index.
|
||||||
|
*
|
||||||
|
* @return the client start index
|
||||||
|
*/
|
||||||
|
public int getClientStartIndex() {
|
||||||
|
return clientStartIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the limit.
|
||||||
|
*
|
||||||
|
* @return the limit
|
||||||
|
*/
|
||||||
|
public int getLimit() {
|
||||||
|
return limit;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the server end index.
|
||||||
|
*
|
||||||
|
* @return the server end index
|
||||||
|
*/
|
||||||
|
public int getServerEndIndex() {
|
||||||
|
return serverEndIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if is server search finished.
|
||||||
|
*
|
||||||
|
* @return true, if is server search finished
|
||||||
|
*/
|
||||||
|
public boolean isServerSearchFinished() {
|
||||||
|
return isServerSearchFinished;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the data.
|
||||||
|
*
|
||||||
|
* @param data the new data
|
||||||
|
*/
|
||||||
|
public void setData(List<CatalogueDataset> data) {
|
||||||
|
this.data = data;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the client start index.
|
||||||
|
*
|
||||||
|
* @param clientStartIndex the new client start index
|
||||||
|
*/
|
||||||
|
public void setClientStartIndex(int clientStartIndex) {
|
||||||
|
this.clientStartIndex = clientStartIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the limit.
|
||||||
|
*
|
||||||
|
* @param limit the new limit
|
||||||
|
*/
|
||||||
|
public void setLimit(int limit) {
|
||||||
|
this.limit = limit;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the server end index.
|
||||||
|
*
|
||||||
|
* @param serverEndIndex the new server end index
|
||||||
|
*/
|
||||||
|
public void setServerEndIndex(int serverEndIndex) {
|
||||||
|
this.serverEndIndex = serverEndIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the server search finished.
|
||||||
|
*
|
||||||
|
* @param isServerSearchFinished the new server search finished
|
||||||
|
*/
|
||||||
|
public void setServerSearchFinished(boolean isServerSearchFinished) {
|
||||||
|
this.isServerSearchFinished = isServerSearchFinished;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the total items.
|
||||||
|
*
|
||||||
|
* @return the total items
|
||||||
|
*/
|
||||||
|
public long getTotalItems() {
|
||||||
|
return totalItems;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the total items.
|
||||||
|
*
|
||||||
|
* @param totalItems the new total items
|
||||||
|
*/
|
||||||
|
public void setTotalItems(long totalItems) {
|
||||||
|
this.totalItems = totalItems;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
StringBuilder builder = new StringBuilder();
|
||||||
|
builder.append("SearchedData [data=");
|
||||||
|
builder.append(data);
|
||||||
|
builder.append(", clientStartIndex=");
|
||||||
|
builder.append(clientStartIndex);
|
||||||
|
builder.append(", limit=");
|
||||||
|
builder.append(limit);
|
||||||
|
builder.append(", serverEndIndex=");
|
||||||
|
builder.append(serverEndIndex);
|
||||||
|
builder.append(", isServerSearchFinished=");
|
||||||
|
builder.append(isServerSearchFinished);
|
||||||
|
builder.append(", totalItems=");
|
||||||
|
builder.append(totalItems);
|
||||||
|
builder.append("]");
|
||||||
|
return builder.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue