ckan-content-moderator-widget/src/main/java/org/gcube/portlets/widgets/ckancontentmoderator/client/CkanContentModeratorWidget....

106 lines
3.1 KiB
Java

package org.gcube.portlets.widgets.ckancontentmoderator.client;
import java.util.List;
import org.gcube.datacatalogue.utillibrary.shared.ItemStatus;
import org.gcube.portlets.widgets.ckancontentmoderator.client.ui.ContentModeratorSystemPanel;
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.shared.CatalogueDataset;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.ScrollPanel;
import com.google.gwt.view.client.ListDataProvider;
/**
* The Class CkanContentModeratorWidget.
*
* @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
*
* Jun 15, 2021
*/
public class CkanContentModeratorWidget {
public final CkanContentModeratorServiceAsync contentModeratorService = GWT
.create(CkanContentModeratorService.class);
private ItemsTable<CatalogueDataset> itemsTable;
private ContentModeratorSystemPanel cmsPanel = new ContentModeratorSystemPanel();
private Boolean isContentModeratorEnabled = null;
/**
* Instantiates a new ckan content moderator widget.
*
* @param displayFields the display fields
* @param sortByField the sort by field
*/
public CkanContentModeratorWidget(DISPLAY_FIELD[] displayFields, DISPLAY_FIELD sortByField) {
itemsTable = new ItemsTable<CatalogueDataset>(null, displayFields, sortByField);
itemsTable.initTable(null, null, new ListDataProvider<CatalogueDataset>());
cmsPanel.add(itemsTable.getCellTable());
}
/**
* Load items for status.
*
* @param status the status
* @throws Exception the exception
*/
public void loadItemsForStatus(ItemStatus status) throws Exception {
if (isContentModeratorEnabled == null)
throw new Exception("Please, first check if the content moderator is enabled in this context");
if (!isContentModeratorEnabled)
throw new Exception("Content Moderator is not enabled in this context");
contentModeratorService.getListItemsForStatus(status, ContentModeratorWidgetConstants.ITEMS_PER_PAGE,
ContentModeratorWidgetConstants.ITEM_START_INDEX, new AsyncCallback<List<CatalogueDataset>>() {
@Override
public void onSuccess(List<CatalogueDataset> result) {
itemsTable.updateItems(result, true);
}
@Override
public void onFailure(Throwable caught) {
// TODO Auto-generated method stub
}
});
}
/**
* Checks if is content moderator enabled.
*
* @param onCompletation the on completation
*/
public void isContentModeratorEnabled(final Command onCompletation) {
contentModeratorService.isContentModeratorEnabled(new AsyncCallback<Boolean>() {
@Override
public void onFailure(Throwable caught) {
onCompletation.execute();
}
@Override
public void onSuccess(Boolean result) {
isContentModeratorEnabled = result;
onCompletation.execute();
}
});
}
public ScrollPanel getPanel(){
return cmsPanel;
}
}