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.Composite; 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 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(null, displayFields, sortByField); itemsTable.initTable(null, null, new ListDataProvider()); 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"); cmsPanel.showLoading(true); contentModeratorService.getListItemsForStatus(status, ContentModeratorWidgetConstants.ITEMS_PER_PAGE, ContentModeratorWidgetConstants.ITEM_START_INDEX, new AsyncCallback>() { @Override public void onSuccess(List result) { cmsPanel.showLoading(false); itemsTable.updateItems(result, true); } @Override public void onFailure(Throwable caught) { cmsPanel.showLoading(false); // 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() { @Override public void onFailure(Throwable caught) { onCompletation.execute(); } @Override public void onSuccess(Boolean result) { isContentModeratorEnabled = result; onCompletation.execute(); } }); } public Composite getPanel(){ return cmsPanel.getPanel(); } }