diff --git a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/rpc/WorkspaceExplorerService.java b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/rpc/WorkspaceExplorerService.java index 07adb77..3f66d6d 100644 --- a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/rpc/WorkspaceExplorerService.java +++ b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/rpc/WorkspaceExplorerService.java @@ -9,6 +9,7 @@ import org.gcube.portlets.widgets.wsexplorer.shared.Item; import org.gcube.portlets.widgets.wsexplorer.shared.ItemCategory; import org.gcube.portlets.widgets.wsexplorer.shared.ItemInterface; import org.gcube.portlets.widgets.wsexplorer.shared.ItemType; +import org.gcube.portlets.widgets.wsexplorer.shared.SearchedFolder; import org.gcube.portlets.widgets.wsexplorer.shared.WorkspaceNavigatorServiceException; import com.google.gwt.user.client.rpc.RemoteService; @@ -197,11 +198,34 @@ public interface WorkspaceExplorerService extends RemoteService { */ Map getGcubePropertiesForWorspaceId(String id) throws Exception; - Item getFolder( + + + /** + * Gets the folder. + * + * @param item the item + * @param showableTypesParam the showable types param + * @param purgeEmpyFolders the purge empy folders + * @param filterCriteria the filter criteria + * @param loadGcubeProperties the load gcube properties + * @param startIndex the start index + * @param limit the limit + * @param serverStartIndex the server start index + * @return the folder + * @throws WorkspaceNavigatorServiceException the workspace navigator service exception + */ + SearchedFolder getFolder( Item item, List showableTypesParam, boolean purgeEmpyFolders, FilterCriteria filterCriteria, boolean loadGcubeProperties, - int startIndex, int limit) throws WorkspaceNavigatorServiceException; + int startIndex, int limit, int serverStartIndex) throws WorkspaceNavigatorServiceException; + /** + * Gets the folder children count. + * + * @param item the item + * @return the folder children count + * @throws WorkspaceNavigatorServiceException the workspace navigator service exception + */ int getFolderChildrenCount(Item item) throws WorkspaceNavigatorServiceException; } diff --git a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/rpc/WorkspaceExplorerServiceAsync.java b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/rpc/WorkspaceExplorerServiceAsync.java index 23eddf7..ae3b83a 100644 --- a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/rpc/WorkspaceExplorerServiceAsync.java +++ b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/rpc/WorkspaceExplorerServiceAsync.java @@ -12,6 +12,7 @@ import org.gcube.portlets.widgets.wsexplorer.shared.Item; import org.gcube.portlets.widgets.wsexplorer.shared.ItemCategory; import org.gcube.portlets.widgets.wsexplorer.shared.ItemInterface; import org.gcube.portlets.widgets.wsexplorer.shared.ItemType; +import org.gcube.portlets.widgets.wsexplorer.shared.SearchedFolder; import com.google.gwt.user.client.rpc.AsyncCallback; @@ -199,6 +200,7 @@ public interface WorkspaceExplorerServiceAsync { void getGcubePropertiesForWorspaceId(String id, AsyncCallback> callback); + /** * Gets the folder. * @@ -209,16 +211,21 @@ public interface WorkspaceExplorerServiceAsync { * @param loadGcubeProperties the load gcube properties * @param startIndex the start index * @param limit the limit + * @param serverStartIndex the server start index * @param asyncCallback the async callback * @return the folder */ - public void getFolder( + void getFolder( Item item, List showableTypesParam, boolean purgeEmpyFolders, FilterCriteria filterCriteria, boolean loadGcubeProperties, - int startIndex, int limit, AsyncCallback asyncCallback); + int startIndex, int limit, int serverStartIndex, AsyncCallback asyncCallback); /** - * @param item + * Gets the folder children count. + * + * @param item the item + * @param asyncCallback the async callback + * @return the folder children count */ public void getFolderChildrenCount(Item item, AsyncCallback asyncCallback); diff --git a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/view/WorkspaceExplorerPaginated.java b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/view/WorkspaceExplorerPaginated.java index ea5dbe8..11de742 100644 --- a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/view/WorkspaceExplorerPaginated.java +++ b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/view/WorkspaceExplorerPaginated.java @@ -13,6 +13,7 @@ import org.gcube.portlets.widgets.wsexplorer.client.view.grid.SortedCellTable; import org.gcube.portlets.widgets.wsexplorer.shared.FilterCriteria; import org.gcube.portlets.widgets.wsexplorer.shared.Item; import org.gcube.portlets.widgets.wsexplorer.shared.ItemType; +import org.gcube.portlets.widgets.wsexplorer.shared.SearchedFolder; import com.github.gwtbootstrap.client.ui.constants.AlertType; import com.google.gwt.core.client.GWT; @@ -53,6 +54,8 @@ public class WorkspaceExplorerPaginated extends WorkspaceExplorer{ protected Widget orginalLoadingIndicator = null; + private int serverStartIndex = 0; + /** * Instantiates a new workspace explorer paginated. * @@ -122,34 +125,45 @@ public class WorkspaceExplorerPaginated extends WorkspaceExplorer{ final boolean purgeEmpyFolders = !showEmptyFolders; - //IF IS INIT OR A DOUBLE CLICK - if(getDisplayingFolderItem()==null || getDisplayingFolderItem().getId()!=item.getId()){ - GWT.log("Performing Get Folder Children Count "); - WorkspaceExplorerConstants.workspaceNavigatorService.getFolderChildrenCount(item, new AsyncCallback() { +// //IF IS INIT OR A DOUBLE CLICK +// if(getDisplayingFolderItem()==null || getDisplayingFolderItem().getId()!=item.getId()){ +// GWT.log("Performing Get Folder Children Count "); +// WorkspaceExplorerConstants.workspaceNavigatorService.getFolderChildrenCount(item, new AsyncCallback() { +// +// @Override +// public void onFailure(Throwable caught) { +// } +// +// @Override +// public void onSuccess(final Integer result) { +// GWT.log("Folder Children count: "+result); +// +// int newStartIndex = startIdx; +// getAsycnDataProvider().updateRowCount(result, true); +// +// if(newLoading){ +// GWT.log("Cleaning all data..."); +// newStartIndex = 0; +// GWT.log("Store reset performed start index is: "+newStartIndex); +// } +// +// //final Range range = display.getVisibleRange(); +// perfomGetFolderChildren(item, loadGcubeProperties, newStartIndex, limit, purgeEmpyFolders, showableTypesParam); +// } +// }); +// }else +// perfomGetFolderChildren(item, loadGcubeProperties, startIdx, limit, purgeEmpyFolders, showableTypesParam); - @Override - public void onFailure(Throwable caught) { - } + int newStartIndex = startIdx; - @Override - public void onSuccess(final Integer result) { - GWT.log("Folder Children count: "+result); + if(newLoading){ + GWT.log("Cleaning all data..."); + newStartIndex = 0; + GWT.log("Store reset performed start index is: "+newStartIndex); + getAsycnDataProvider().updateRowCount(WorkspaceExplorerConstants.ITEMS_PER_PAGE, false); + } - int newStartIndex = startIdx; - getAsycnDataProvider().updateRowCount(result, true); - - if(newLoading){ - GWT.log("Cleaning all data..."); - newStartIndex = 0; - GWT.log("Store reset performed start index is: "+newStartIndex); - } - - //final Range range = display.getVisibleRange(); - perfomGetFolderChildren(item, loadGcubeProperties, newStartIndex, limit, purgeEmpyFolders, showableTypesParam); - } - }); - }else - perfomGetFolderChildren(item, loadGcubeProperties, startIdx, limit, purgeEmpyFolders, showableTypesParam); + perfomGetFolderChildren(item, loadGcubeProperties, newStartIndex, limit, purgeEmpyFolders, showableTypesParam); } @@ -167,9 +181,9 @@ public class WorkspaceExplorerPaginated extends WorkspaceExplorer{ * @param purgeEmpyFolders the purge empy folders * @param showableTypesParam the showable types param */ - private void perfomGetFolderChildren(final Item item, boolean loadGcubeProperties, final int startIdx, int limit, boolean purgeEmpyFolders, List showableTypesParam){ + private void perfomGetFolderChildren(final Item item, boolean loadGcubeProperties, final int startIdx, final int limit, boolean purgeEmpyFolders, List showableTypesParam){ GWT.log("loading workspace folder by item id from server: "+item.getId()); - WorkspaceExplorerConstants.workspaceNavigatorService.getFolder(item, showableTypesParam, purgeEmpyFolders, filterCriteria, loadGcubeProperties, startIdx, limit, new AsyncCallback() { + WorkspaceExplorerConstants.workspaceNavigatorService.getFolder(item, showableTypesParam, purgeEmpyFolders, filterCriteria, loadGcubeProperties, startIdx, limit, serverStartIndex, new AsyncCallback() { @Override public void onFailure(Throwable caught) { @@ -180,28 +194,30 @@ public class WorkspaceExplorerPaginated extends WorkspaceExplorer{ } @Override - public void onSuccess(Item result) { + public void onSuccess(SearchedFolder result) { + + serverStartIndex = result.getServerEndIndex(); if(item.getName()==null || item.getName().isEmpty()) - item.setName(result.getName()); + item.setName(result.getFolder().getName()); //GWT.log("Returned "+result.getChildren().size() +" children"); //getItTables().updateItems(result.getChildren(), true); if(newLoading){ - getCellTable().setVisibleRangeAndClearData(new Range(startIdx, WorkspaceExplorerConstants.ITEMS_PER_PAGE), false); + getCellTable().setVisibleRangeAndClearData(new Range(result.getClientStartIndex(), WorkspaceExplorerConstants.ITEMS_PER_PAGE), false); } SelectionModel sm = getCellTable().getSelectionModel(); if(sm instanceof SingleSelectionModel){ - SingleSelectionModel ssm = (SingleSelectionModel) sm; + SingleSelectionModel ssm = (SingleSelectionModel) sm; ssm.clear(); } - getAsycnDataProvider().updateRowData(startIdx, result.getChildren()); + getAsycnDataProvider().updateRowData(result.getClientStartIndex(), result.getFolder().getChildren()); - if(result.getChildren().size()==0){ + if(result.getFolder().getChildren().size()==0){ getCellTable().setLoadingIndicator(new Label("No data")); }else{ getCellTable().setLoadingIndicator(orginalLoadingIndicator); @@ -210,13 +226,18 @@ public class WorkspaceExplorerPaginated extends WorkspaceExplorer{ //getCellTable().setVisibleRangeAndClearData(new Range(startIdx, result.getChildren()).), false); //getAsycnDataProvider().getDataDisplays(). - GWT.log("Updating row data startIndex: "+startIdx + " size: "+result.getChildren().size()); + GWT.log("Updating row data startIndex: "+result.getClientStartIndex() + " children size: "+result.getFolder().getChildren().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()); - setDisplayingFolderItem(result); + setDisplayingFolderItem(result.getFolder()); newLoading = false; } @@ -281,13 +302,15 @@ public class WorkspaceExplorerPaginated extends WorkspaceExplorer{ int start = range.getStart(); int length = range.getLength(); - GWT.log("Range changed: "+start +" "+length + " visible count: "+display.getVisibleItemCount()); - 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); loadFolder(getDisplayingFolderItem(), loadGcubeProperties, start, length, false); } catch (Exception e) { diff --git a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/view/grid/ItemsTable.java b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/view/grid/ItemsTable.java index 697a531..a1cb82f 100644 --- a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/view/grid/ItemsTable.java +++ b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/view/grid/ItemsTable.java @@ -169,12 +169,16 @@ public class ItemsTable extends AbstractItemsCellTable implem name = new TextColumn() { @Override public String getValue(T object) { + if(object==null) + return ""; return ((Item) object).getName(); } //ADDING TOOLTIP @Override public void render(com.google.gwt.cell.client.Cell.Context context, T object, SafeHtmlBuilder sb) { + if(object == null) + return; sb.appendHtmlConstant("
"); super.render(context, object, sb); sb.appendHtmlConstant("
"); @@ -201,6 +205,8 @@ public class ItemsTable extends AbstractItemsCellTable implem owner = new TextColumn() { @Override public String getValue(T object) { + if(object==null) + return ""; return ((Item) object).getOwner() != null ? ((Item) object).getOwner() : ""; } }; @@ -226,6 +232,8 @@ public class ItemsTable extends AbstractItemsCellTable implem @Override public Date getValue(T object) { + if(object==null) + return null; return ((Item) object).getCreationDate(); } }; @@ -255,9 +263,6 @@ public class ItemsTable extends AbstractItemsCellTable implem sortedCellTable.setComparator(dateColumn,c); } - - - } diff --git a/src/main/java/org/gcube/portlets/widgets/wsexplorer/server/WorkspaceExplorerServiceImpl.java b/src/main/java/org/gcube/portlets/widgets/wsexplorer/server/WorkspaceExplorerServiceImpl.java index 9545ba6..41c1c3d 100644 --- a/src/main/java/org/gcube/portlets/widgets/wsexplorer/server/WorkspaceExplorerServiceImpl.java +++ b/src/main/java/org/gcube/portlets/widgets/wsexplorer/server/WorkspaceExplorerServiceImpl.java @@ -29,6 +29,7 @@ import org.gcube.portlets.widgets.wsexplorer.shared.Item; import org.gcube.portlets.widgets.wsexplorer.shared.ItemCategory; import org.gcube.portlets.widgets.wsexplorer.shared.ItemInterface; import org.gcube.portlets.widgets.wsexplorer.shared.ItemType; +import org.gcube.portlets.widgets.wsexplorer.shared.SearchedFolder; import org.gcube.portlets.widgets.wsexplorer.shared.WorkspaceNavigatorServiceException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -696,10 +697,10 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement * @see org.gcube.portlets.widgets.wsexplorer.client.rpc.WorkspaceExplorerService#getFolder(org.gcube.portlets.widgets.wsexplorer.shared.Item, java.util.List, boolean, org.gcube.portlets.widgets.wsexplorer.shared.FilterCriteria, boolean, int, int) */ @Override - public Item getFolder( + public SearchedFolder getFolder( Item item, List showableTypes, boolean purgeEmpyFolders, FilterCriteria filterCriteria, boolean loadGcubeProperties, - int startIndex, int limit) throws WorkspaceNavigatorServiceException { + final int startIndex, final int limit, final int serverStartIndex) throws WorkspaceNavigatorServiceException { logger.trace("getFolder folderId: "+item.getId()+" showableTypes: "+showableTypes+" purgeEmpyFolders: "+purgeEmpyFolders+" filterCriteria: "+filterCriteria); @@ -707,30 +708,95 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement Workspace workspace = getWorkspace(); WorkspaceItem folder = workspace.getItem(item.getId()); - logger.trace("GetFolder - Replyiing folder"); - long startTime = System.currentTimeMillis(); - logger.trace("start time - " + startTime); + int searchStartIndex = startIndex < serverStartIndex? serverStartIndex : startIndex; + //logger.trace("GetFolder - Replyiing folder"); + logger.debug("MyLg getFolder searchIndex: "+searchStartIndex+", limit: "+limit); + //long startTime = System.currentTimeMillis(); + //logger.trace("start time - " + startTime); //TO AVOID SLOW CALL getPATH() String folderPath = item.getPath()!=null && !item.getPath().isEmpty()?item.getPath():folder.getPath(); + Item itemFolderToReturn = ItemBuilder.getItem(null, folder, folderPath, showableTypes, filterCriteria, true, loadGcubeProperties, searchStartIndex, limit); - //folder.get + SearchedFolder sf = new SearchedFolder(itemFolderToReturn, startIndex, limit, searchStartIndex, false); + int currentListCount = sf.getFolder().getChildren().size(); + logger.debug("MyLg Total item returning is: "+currentListCount); - Item itemFolder = ItemBuilder.getItem(null, folder, folderPath, showableTypes, filterCriteria, true, loadGcubeProperties, startIndex, limit); -// _log.trace("Only showable types:"); + WorkspaceFolder hlFolder = (WorkspaceFolder) folder; + int folderChildrenCount = hlFolder.getChildrenCount(false); + logger.debug("MyLg Folder children count is: "+folderChildrenCount); - if (purgeEmpyFolders) { - itemFolder = ItemBuilder.purgeEmptyFolders(itemFolder); + if(currentListCount == limit || folderChildrenCount==0){ + logger.debug("Page completed returning "+currentListCount+ " items"); + int offset = searchStartIndex+limit; + + //Collections.sort(sf.getFolder().getChildren(), new ItemComparator()); + + sf.setServerSearchFinished(offset>folderChildrenCount || folderChildrenCount == 0); + logger.debug("is Search finished: "+sf.isServerSearchFinished()); + return sf; } - logger.debug("Returning: "+itemFolder.getChildren().size() + " items"); - Long endTime = System.currentTimeMillis() - startTime; - String time = String.format("%d msc %d sec", endTime, TimeUnit.MILLISECONDS.toSeconds(endTime)); - logger.debug("end time - " + time); + ArrayList childrenToReturn = new ArrayList(limit); + childrenToReturn.addAll(sf.getFolder().getChildren()); - Collections.sort(itemFolder.getChildren(), new ItemComparator()); + int offsetStartIndex = searchStartIndex; + boolean pageOffsetOut = false; + while(currentListCount < limit && !sf.isServerSearchFinished() && !pageOffsetOut){ //&& SEARCH NOT ULTIMATED + logger.debug("MyLg new WHILE Items count: "+currentListCount+" is less than limit.."); - return itemFolder; + int newstartIndex = offsetStartIndex+limit+1; + logger.debug("MyLg NewStartIndex is startIndex+limit: "+newstartIndex); + + //THERE ARE OTHER CHILDREN OVER NEW START INDEX + if(newstartIndex < folderChildrenCount){ + //newLimit = limit - childrenToReturn.size(); + logger.debug("MyLg getting items with index start: "+newstartIndex + ", limit: "+limit); + Item newItemFolder = ItemBuilder.getItem(null, folder, folderPath, showableTypes, filterCriteria, true, loadGcubeProperties, newstartIndex, limit); + int diff = limit - currentListCount; //How items are remaining + //int offset = 0; + logger.debug("MyLg new search start: "+newstartIndex + ", diff: "+diff+ ", retrieved: "+newItemFolder.getChildren().size()); + if(diff >= newItemFolder.getChildren().size()){ + logger.debug("MyLg Adding sublist from 0 to 'diff' "+diff+" to children"); + childrenToReturn.addAll(newItemFolder.getChildren().subList(0, newItemFolder.getChildren().size())); + //offset = diff; + }else{ + logger.debug("MyLg PageOffsetOut, the sublist size: "+newItemFolder.getChildren().size()+ " is greather than (limit-currentListCount)"+diff+" leaving WHILE..."); + //childrenToReturn.addAll(newItemFolder.getChildren().subList(0, newItemFolder.getChildren().size())); + //offset = newItemFolder.getChildren().size(); + pageOffsetOut = true; + } + offsetStartIndex = newstartIndex; + currentListCount = childrenToReturn.size(); + //int realServerEndIndex = newstartIndex+offset; + logger.debug("MyLg New items count is: "+currentListCount + " serverEndIndex: "+offsetStartIndex); + sf.setServerEndIndex(offsetStartIndex); + }else{ + logger.debug("MyLg New start index (oldStartIndex+limit) is grather than folder children count, search is finished"); + sf.setServerSearchFinished(true); + } + } + + sf.getFolder().setChildren(childrenToReturn); + //sf.setServerEndIndex(sf.getServerEndIndex()); + + if (purgeEmpyFolders) { + itemFolderToReturn = ItemBuilder.purgeEmptyFolders(sf.getFolder()); + } + + //logger.debug("Returning: "+itemFolder.getChildren().size() + " items"); + //Long endTime = System.currentTimeMillis() - startTime; + //String time = String.format("%d msc %d sec", endTime, TimeUnit.MILLISECONDS.toSeconds(endTime)); + //logger.debug("end time - " + time); + + int i = 0; + for (Item item2 : sf.getFolder().getChildren()) { + logger.debug(++i+") "+item2); + } + + //Collections.sort(itemFolderToReturn.getChildren(), new ItemComparator()); + logger.debug("Returning: "+sf); + return sf; } catch (Exception e) { logger.error("Error during folder retrieving", e); diff --git a/src/main/java/org/gcube/portlets/widgets/wsexplorer/shared/Item.java b/src/main/java/org/gcube/portlets/widgets/wsexplorer/shared/Item.java index 7f2a0d4..3c98f9d 100644 --- a/src/main/java/org/gcube/portlets/widgets/wsexplorer/shared/Item.java +++ b/src/main/java/org/gcube/portlets/widgets/wsexplorer/shared/Item.java @@ -51,6 +51,7 @@ public class Item implements IsSerializable, ItemInterface{ this.isFolder = isFolder; this.name = name; this.type = isFolder?ItemType.FOLDER:ItemType.UNKNOWN_TYPE; + this.children = new ArrayList(); } @@ -95,6 +96,16 @@ public class Item implements IsSerializable, ItemInterface{ this.isRoot = isRoot; } + + /** + * Sets the children. + * + * @param children the new children + */ + public void setChildren(ArrayList children) { + + this.children = children; + } /** * Sets the id. * @@ -382,8 +393,8 @@ public class Item implements IsSerializable, ItemInterface{ builder.append(type); builder.append(", path="); builder.append(path); - builder.append(", children="); - builder.append(children); + builder.append(", children size="); + builder.append(children.size()); builder.append(", owner="); builder.append(owner); builder.append(", isFolder="); diff --git a/src/main/java/org/gcube/portlets/widgets/wsexplorer/shared/SearchedFolder.java b/src/main/java/org/gcube/portlets/widgets/wsexplorer/shared/SearchedFolder.java new file mode 100644 index 0000000..7ca5be8 --- /dev/null +++ b/src/main/java/org/gcube/portlets/widgets/wsexplorer/shared/SearchedFolder.java @@ -0,0 +1,174 @@ +/** + * + */ +package org.gcube.portlets.widgets.wsexplorer.shared; + +import com.google.gwt.user.client.rpc.IsSerializable; + + +/** + * The Class SearchedFolder. + * + * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it + * Jul 12, 2017 + */ +public class SearchedFolder implements IsSerializable{ + + + private Item folder; + private int clientStartIndex = 0; + private int limit; + private int serverEndIndex = 0; + private boolean isServerSearchFinished = false; + + + /** + * + */ + public SearchedFolder() { + } + + /** + * @param folder + * @param clientStartIndex + * @param limit + * @param serverEndIndex + * @param isServerSearchFinished + */ + public SearchedFolder(Item folder, int clientStartIndex, int limit, int serverEndIndex, boolean isServerSearchFinished) { + + super(); + this.folder = folder; + this.clientStartIndex = clientStartIndex; + this.limit = limit; + this.serverEndIndex = serverEndIndex; + this.isServerSearchFinished = isServerSearchFinished; + } + + + + /** + * @return the folder + */ + public Item getFolder() { + + return folder; + } + + + + /** + * @return the clientStartIndex + */ + public int getClientStartIndex() { + + return clientStartIndex; + } + + + + /** + * @return the limit + */ + public int getLimit() { + + return limit; + } + + + + /** + * @return the serverEndIndex + */ + public int getServerEndIndex() { + + return serverEndIndex; + } + + + + /** + * @return the isServerSearchFinished + */ + public boolean isServerSearchFinished() { + + return isServerSearchFinished; + } + + + + /** + * @param folder the folder to set + */ + public void setFolder(Item folder) { + + this.folder = folder; + } + + + + /** + * @param clientStartIndex the clientStartIndex to set + */ + public void setClientStartIndex(int clientStartIndex) { + + this.clientStartIndex = clientStartIndex; + } + + + + /** + * @param limit the limit to set + */ + public void setLimit(int limit) { + + this.limit = limit; + } + + + + /** + * @param serverEndIndex the serverEndIndex to set + */ + public void setServerEndIndex(int serverEndIndex) { + + this.serverEndIndex = serverEndIndex; + } + + + + /** + * @param isServerSearchFinished the isServerSearchFinished to set + */ + public void setServerSearchFinished(boolean isServerSearchFinished) { + + this.isServerSearchFinished = isServerSearchFinished; + } + + + + /* (non-Javadoc) + * @see java.lang.Object#toString() + */ + @Override + public String toString() { + + StringBuilder builder = new StringBuilder(); + builder.append("SearchedFolder [folder="); + builder.append(folder); + 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("]"); + return builder.toString(); + } + + + + +}