added check configurations. Improved GUI
This commit is contained in:
parent
12bca95bf8
commit
2ca89206e6
|
@ -0,0 +1,162 @@
|
||||||
|
package org.gcube.portlets.widgets.ckancontentmoderator.client;
|
||||||
|
|
||||||
|
import com.google.gwt.core.client.GWT;
|
||||||
|
import com.google.gwt.user.client.Command;
|
||||||
|
import com.google.gwt.user.client.Timer;
|
||||||
|
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Class CkanContentModeratorCheckConfig.
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
|
||||||
|
*
|
||||||
|
* Feb 22, 2022
|
||||||
|
*/
|
||||||
|
public class CkanContentModeratorCheckConfig {
|
||||||
|
|
||||||
|
private int configurationLoaded = 0;
|
||||||
|
private static final int CONFIGURATION_EXPECTED = 2;
|
||||||
|
private int MAX_RETRY_ON_LOADING_CONFIG = 20;
|
||||||
|
private int attemptLC = 0;
|
||||||
|
private Boolean contentModerationEnabled = null;
|
||||||
|
private Boolean moderatorRoleAssigned = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instantiates a new ckan content moderator check config.
|
||||||
|
*/
|
||||||
|
public CkanContentModeratorCheckConfig() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check configs.
|
||||||
|
*
|
||||||
|
* @param whenDone the when done
|
||||||
|
* @throws Exception the exception
|
||||||
|
*/
|
||||||
|
public void checkConfigs(final Command whenDone) throws Exception {
|
||||||
|
|
||||||
|
configurationLoaded = 0;
|
||||||
|
attemptLC = 0;
|
||||||
|
|
||||||
|
CkanContentModeratorWidgetController.contentModeratorService
|
||||||
|
.isContentModeratorEnabled(new AsyncCallback<Boolean>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFailure(Throwable caught) {
|
||||||
|
contentModerationEnabled = false;
|
||||||
|
incrementConfigurationLoaded();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSuccess(Boolean result) {
|
||||||
|
incrementConfigurationLoaded();
|
||||||
|
GWT.log("isContentModeratorEnabled: "+result);
|
||||||
|
contentModerationEnabled = result;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
CkanContentModeratorWidgetController.contentModeratorService
|
||||||
|
.isModeratorRoleAssigned(new AsyncCallback<Boolean>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFailure(Throwable caught) {
|
||||||
|
moderatorRoleAssigned = false;
|
||||||
|
incrementConfigurationLoaded();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSuccess(Boolean result) {
|
||||||
|
incrementConfigurationLoaded();
|
||||||
|
GWT.log("isModeratorRoleAssigned: "+result);
|
||||||
|
moderatorRoleAssigned = result;
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if (whenDone != null) {
|
||||||
|
|
||||||
|
final Timer timer = new Timer() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
attemptLC++;
|
||||||
|
GWT.log("checking configuration loaded, attempt "+attemptLC+" of "+MAX_RETRY_ON_LOADING_CONFIG);
|
||||||
|
boolean configsLoaded = getConfigurationLoaded() == CONFIGURATION_EXPECTED;
|
||||||
|
GWT.log("configsLoaded: "+configsLoaded);
|
||||||
|
if (configsLoaded) {
|
||||||
|
GWT.log("ContentModeratorCheckConfig loaded correclty");
|
||||||
|
whenDone.execute();
|
||||||
|
this.cancel();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (attemptLC > MAX_RETRY_ON_LOADING_CONFIG) {
|
||||||
|
GWT.log("MAX_RETRY_ON_LOADING_CONFIG reached, timer cancelled");
|
||||||
|
this.cancel();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
timer.scheduleRepeating(500);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Increment configuration loaded.
|
||||||
|
*/
|
||||||
|
private void incrementConfigurationLoaded() {
|
||||||
|
configurationLoaded++;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Decrement configuration loaded.
|
||||||
|
*/
|
||||||
|
private synchronized void decrementConfigurationLoaded() {
|
||||||
|
configurationLoaded--;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the configuration loaded.
|
||||||
|
*
|
||||||
|
* @return the configuration loaded
|
||||||
|
*/
|
||||||
|
private synchronized int getConfigurationLoaded() {
|
||||||
|
return configurationLoaded;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if is moderator role assigned.
|
||||||
|
*
|
||||||
|
* @return the boolean
|
||||||
|
* @throws Exception the exception
|
||||||
|
*/
|
||||||
|
public Boolean isModeratorRoleAssigned() throws Exception {
|
||||||
|
if (moderatorRoleAssigned == null)
|
||||||
|
throw new Exception(
|
||||||
|
"Please, first check if the Moderator role is assigned in this context by calling checkContentModeratorConfiguration");
|
||||||
|
|
||||||
|
return moderatorRoleAssigned;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if is content moderation enabled.
|
||||||
|
*
|
||||||
|
* @return true, if is content moderation enabled
|
||||||
|
* @throws Exception the exception
|
||||||
|
*/
|
||||||
|
public boolean isContentModerationEnabled() throws Exception {
|
||||||
|
|
||||||
|
if (contentModerationEnabled == null)
|
||||||
|
throw new Exception(
|
||||||
|
"Please, first check if the content moderation is enabled in this context by calling checkContentModeratorConfiguration");
|
||||||
|
|
||||||
|
return contentModerationEnabled;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -3,7 +3,6 @@ package org.gcube.portlets.widgets.ckancontentmoderator.client;
|
||||||
import java.util.List;
|
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.CMSUserRole;
|
|
||||||
import org.gcube.portlets.widgets.ckancontentmoderator.shared.CatalogueDataset;
|
import org.gcube.portlets.widgets.ckancontentmoderator.shared.CatalogueDataset;
|
||||||
import org.gcube.portlets.widgets.ckancontentmoderator.shared.ModerationUserRole;
|
import org.gcube.portlets.widgets.ckancontentmoderator.shared.ModerationUserRole;
|
||||||
import org.gcube.portlets.widgets.ckancontentmoderator.shared.OperationReport;
|
import org.gcube.portlets.widgets.ckancontentmoderator.shared.OperationReport;
|
||||||
|
@ -27,7 +26,7 @@ public interface CkanContentModeratorService extends RemoteService {
|
||||||
*
|
*
|
||||||
* @return true, if is content moderator enabled
|
* @return true, if is content moderator enabled
|
||||||
*/
|
*/
|
||||||
public boolean isContentModeratorEnabled();
|
public Boolean isContentModeratorEnabled();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the status. Currently, this only used to change the status from Rejected
|
* Sets the status. Currently, this only used to change the status from Rejected
|
||||||
|
@ -75,10 +74,10 @@ public interface CkanContentModeratorService extends RemoteService {
|
||||||
/**
|
/**
|
||||||
* Gets the data for status.
|
* Gets the data for status.
|
||||||
*
|
*
|
||||||
* @param status the status
|
* @param status the status
|
||||||
* @param startIndex the start index
|
* @param star@Override tIndex the start index
|
||||||
* @param lenght the lenght
|
* @param lenght the lenght
|
||||||
* @param serverIndex the server index
|
* @param serverIndex the server index
|
||||||
* @return the data for status
|
* @return the data for status
|
||||||
* @throws Exception the exception
|
* @throws Exception the exception
|
||||||
* @par@Override am lenght the lenght
|
* @par@Override am lenght the lenght
|
||||||
|
@ -102,4 +101,12 @@ public interface CkanContentModeratorService extends RemoteService {
|
||||||
* @throws Exception the exception
|
* @throws Exception the exception
|
||||||
*/
|
*/
|
||||||
ModerationUserRole getCMSRolesForUserInTheContext() throws Exception;
|
ModerationUserRole getCMSRolesForUserInTheContext() throws Exception;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if is moderator role assigned.
|
||||||
|
*
|
||||||
|
* @return the moderation user role
|
||||||
|
* @throws Exception the exception
|
||||||
|
*/
|
||||||
|
Boolean isModeratorRoleAssigned() throws Exception;
|
||||||
}
|
}
|
||||||
|
|
|
@ -96,4 +96,11 @@ public interface CkanContentModeratorServiceAsync {
|
||||||
*/
|
*/
|
||||||
void getCMSRolesForUserInTheContext(AsyncCallback<ModerationUserRole> callback);
|
void getCMSRolesForUserInTheContext(AsyncCallback<ModerationUserRole> callback);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if is moderator role assigned.
|
||||||
|
*
|
||||||
|
* @param callback the callback
|
||||||
|
*/
|
||||||
|
void isModeratorRoleAssigned(AsyncCallback<Boolean> callback);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@ import com.google.gwt.user.client.ui.ComplexPanel;
|
||||||
*/
|
*/
|
||||||
public class CkanContentModeratorWidget {
|
public class CkanContentModeratorWidget {
|
||||||
|
|
||||||
CkanContentModeratorWidgetController cmsController;
|
private CkanContentModeratorWidgetController cmsController;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Instantiates a new ckan content moderator widget.
|
* Instantiates a new ckan content moderator widget.
|
||||||
|
@ -24,36 +24,10 @@ 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(ItemStatus status, DISPLAY_FIELD[] displayFields, DISPLAY_FIELD sortByField) {
|
public CkanContentModeratorWidget(ItemStatus status, DISPLAY_FIELD[] displayFields, DISPLAY_FIELD sortByField,
|
||||||
|
Command onConfigurationLoaded) {
|
||||||
cmsController = new CkanContentModeratorWidgetController(status, displayFields, sortByField);
|
cmsController = new CkanContentModeratorWidgetController(status, displayFields, sortByField);
|
||||||
|
|
||||||
try {
|
|
||||||
cmsController.checkContentModeratorConfiguration(null);
|
|
||||||
} catch (Exception e) {
|
|
||||||
// TODO Auto-generated catch block
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Checks if is content moderator enabled.
|
|
||||||
*
|
|
||||||
* @return true, if is content moderator enabled
|
|
||||||
* @throws Exception the exception
|
|
||||||
*/
|
|
||||||
public boolean isContentModeratorEnabled() throws Exception {
|
|
||||||
return cmsController.isContentModeratorEnabled();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Check content moderator configuration.
|
|
||||||
*
|
|
||||||
* @param onSuccess the on success
|
|
||||||
* @throws Exception the exception
|
|
||||||
*/
|
|
||||||
public void checkContentModeratorConfiguration(final Command onSuccess) throws Exception {
|
|
||||||
cmsController.checkContentModeratorConfiguration(onSuccess);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -64,4 +38,5 @@ public class CkanContentModeratorWidget {
|
||||||
public ComplexPanel getPanel() {
|
public ComplexPanel getPanel() {
|
||||||
return cmsController.getMainPanel();
|
return cmsController.getMainPanel();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,6 +16,8 @@ import org.gcube.portlets.widgets.ckancontentmoderator.client.events.SelectItems
|
||||||
import org.gcube.portlets.widgets.ckancontentmoderator.client.events.SelectItemsWithItemStatusEventHandler;
|
import org.gcube.portlets.widgets.ckancontentmoderator.client.events.SelectItemsWithItemStatusEventHandler;
|
||||||
import org.gcube.portlets.widgets.ckancontentmoderator.client.events.ShowItemEvent;
|
import org.gcube.portlets.widgets.ckancontentmoderator.client.events.ShowItemEvent;
|
||||||
import org.gcube.portlets.widgets.ckancontentmoderator.client.events.ShowItemEventHandler;
|
import org.gcube.portlets.widgets.ckancontentmoderator.client.events.ShowItemEventHandler;
|
||||||
|
import org.gcube.portlets.widgets.ckancontentmoderator.client.events.ShowMessageEvent;
|
||||||
|
import org.gcube.portlets.widgets.ckancontentmoderator.client.events.ShowMessageEventHandler;
|
||||||
import org.gcube.portlets.widgets.ckancontentmoderator.client.events.TableRangeViewChangedEvent;
|
import org.gcube.portlets.widgets.ckancontentmoderator.client.events.TableRangeViewChangedEvent;
|
||||||
import org.gcube.portlets.widgets.ckancontentmoderator.client.events.TableRangeViewChangedEventHandler;
|
import org.gcube.portlets.widgets.ckancontentmoderator.client.events.TableRangeViewChangedEventHandler;
|
||||||
import org.gcube.portlets.widgets.ckancontentmoderator.client.ui.CkanFramePanel;
|
import org.gcube.portlets.widgets.ckancontentmoderator.client.ui.CkanFramePanel;
|
||||||
|
@ -26,11 +28,10 @@ import org.gcube.portlets.widgets.ckancontentmoderator.client.ui.table.ItemsTabl
|
||||||
import org.gcube.portlets.widgets.ckancontentmoderator.shared.CatalogueDataset;
|
import org.gcube.portlets.widgets.ckancontentmoderator.shared.CatalogueDataset;
|
||||||
|
|
||||||
import com.github.gwtbootstrap.client.ui.Alert;
|
import com.github.gwtbootstrap.client.ui.Alert;
|
||||||
|
import com.github.gwtbootstrap.client.ui.constants.AlertType;
|
||||||
import com.google.gwt.core.client.GWT;
|
import com.google.gwt.core.client.GWT;
|
||||||
import com.google.gwt.event.shared.HandlerManager;
|
import com.google.gwt.event.shared.HandlerManager;
|
||||||
import com.google.gwt.user.client.Command;
|
|
||||||
import com.google.gwt.user.client.Timer;
|
import com.google.gwt.user.client.Timer;
|
||||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
|
||||||
import com.google.gwt.user.client.ui.ComplexPanel;
|
import com.google.gwt.user.client.ui.ComplexPanel;
|
||||||
import com.google.gwt.user.client.ui.FlowPanel;
|
import com.google.gwt.user.client.ui.FlowPanel;
|
||||||
|
|
||||||
|
@ -51,7 +52,7 @@ public class CkanContentModeratorWidgetController {
|
||||||
|
|
||||||
private ContentModeratorToolbar toolbar;
|
private ContentModeratorToolbar toolbar;
|
||||||
private MainTabPanel mainTabPanel = new MainTabPanel();
|
private MainTabPanel mainTabPanel = new MainTabPanel();
|
||||||
private Boolean isContentModeratorEnabled = null;
|
|
||||||
public final static HandlerManager eventBus = new HandlerManager(null);
|
public final static HandlerManager eventBus = new HandlerManager(null);
|
||||||
private HomeView howeView;
|
private HomeView howeView;
|
||||||
|
|
||||||
|
@ -169,71 +170,46 @@ public class CkanContentModeratorWidgetController {
|
||||||
howeView.loadItemsWithStatus(statusSelectedEvent.getItemStatus());
|
howeView.loadItemsWithStatus(statusSelectedEvent.getItemStatus());
|
||||||
mainTabPanel.selectTab(0);
|
mainTabPanel.selectTab(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(statusSelectedEvent.getDisplayMessage()!=null) {
|
if (statusSelectedEvent.getDisplayMessage() != null) {
|
||||||
final Alert alert = new Alert(statusSelectedEvent.getDisplayMessage());
|
showMessage(statusSelectedEvent.getDisplayMessage(), statusSelectedEvent.getAlertType());
|
||||||
alert.setType(statusSelectedEvent.getAlertType());
|
|
||||||
alert.setClose(true);
|
|
||||||
alert.setAnimation(true);
|
|
||||||
infoPanel.add(alert);
|
|
||||||
|
|
||||||
//Cleans the info panel after 10 sec.
|
|
||||||
Timer t = new Timer() {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
infoPanel.clear();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
t.schedule(10000);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
eventBus.addHandler(ShowMessageEvent.TYPE, new ShowMessageEventHandler() {
|
||||||
* Checks if is content moderator enabled.
|
|
||||||
*
|
|
||||||
* @return true, if is content moderator enabled
|
|
||||||
* @throws Exception the exception
|
|
||||||
*/
|
|
||||||
public boolean isContentModeratorEnabled() throws Exception {
|
|
||||||
|
|
||||||
if (isContentModeratorEnabled == null)
|
|
||||||
throw new Exception("Please, first check if the content moderator is enabled in this context");
|
|
||||||
|
|
||||||
return isContentModeratorEnabled;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Check content moderator configuration.
|
|
||||||
*
|
|
||||||
* @param whenDone the when done
|
|
||||||
* @throws Exception the exception
|
|
||||||
*/
|
|
||||||
public void checkContentModeratorConfiguration(final Command whenDone) throws Exception {
|
|
||||||
|
|
||||||
contentModeratorService.isContentModeratorEnabled(new AsyncCallback<Boolean>() {
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable caught) {
|
public void onShowMessage(ShowMessageEvent showMessageEvent) {
|
||||||
whenDone.execute();
|
|
||||||
|
|
||||||
}
|
if (showMessageEvent.getMsg() != null) {
|
||||||
|
showMessage(showMessageEvent.getMsg(), showMessageEvent.getAlerType());
|
||||||
@Override
|
|
||||||
public void onSuccess(Boolean result) {
|
|
||||||
isContentModeratorEnabled = result;
|
|
||||||
if (whenDone != null)
|
|
||||||
whenDone.execute();
|
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private void showMessage(String msg, AlertType alertType) {
|
||||||
|
|
||||||
|
final Alert alert = new Alert(msg);
|
||||||
|
alertType = alertType != null ? alertType : AlertType.INFO;
|
||||||
|
alert.setType(alertType);
|
||||||
|
alert.setClose(true);
|
||||||
|
alert.setAnimation(true);
|
||||||
|
infoPanel.add(alert);
|
||||||
|
|
||||||
|
// Cleans the info panel after 12 sec.
|
||||||
|
Timer t = new Timer() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
infoPanel.clear();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
t.schedule(12000);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
package org.gcube.portlets.widgets.ckancontentmoderator.client;
|
package org.gcube.portlets.widgets.ckancontentmoderator.client;
|
||||||
|
|
||||||
import com.google.gwt.core.client.EntryPoint;
|
import com.google.gwt.core.client.EntryPoint;
|
||||||
import com.google.gwt.core.client.GWT;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Entry point classes define <code>onModuleLoad()</code>.
|
* Entry point classes define <code>onModuleLoad()</code>.
|
||||||
|
@ -14,41 +13,10 @@ public class CkanContentModeratorWidgetEntryPoint implements EntryPoint {
|
||||||
private static final String SERVER_ERROR = "An error occurred while "
|
private static final String SERVER_ERROR = "An error occurred while "
|
||||||
+ "attempting to contact the server. Please check your network " + "connection and try again.";
|
+ "attempting to contact the server. Please check your network " + "connection and try again.";
|
||||||
|
|
||||||
/**
|
|
||||||
* Create a remote service proxy to talk to the server-side Greeting service.
|
|
||||||
*/
|
|
||||||
private final CkanContentModeratorServiceAsync greetingService = GWT.create(CkanContentModeratorService.class);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This is the entry point method.
|
* This is the entry point method.
|
||||||
*/
|
*/
|
||||||
public void onModuleLoad() {
|
public void onModuleLoad() {
|
||||||
/*StyleInjector.inject(DataTableClientBundle.INSTANCE.dataTable().getText());
|
|
||||||
|
|
||||||
// MaterialDataTable<String> table = new MaterialDataTable<String>();
|
|
||||||
// table.getTableTitle().setText("Customers");
|
|
||||||
// List<String> users = new ArrayList<String>();
|
|
||||||
// users.add("Pippo");
|
|
||||||
// table.setRowData(0, users);
|
|
||||||
|
|
||||||
final CustomizedView cvTable = new CustomizedView();
|
|
||||||
RootPanel.get().add(cvTable);
|
|
||||||
// table.getView().refresh();
|
|
||||||
|
|
||||||
greetingService.getListItemsForStatus(ItemStatus.PENDING, 20, 0, new AsyncCallback<List<CatalogueDataset>>() {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onSuccess(List<CatalogueDataset> result) {
|
|
||||||
cvTable.setData(result);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onFailure(Throwable caught) {
|
|
||||||
Window.alert(caught.getMessage());
|
|
||||||
|
|
||||||
}
|
|
||||||
});*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,68 @@
|
||||||
|
package org.gcube.portlets.widgets.ckancontentmoderator.client.events;
|
||||||
|
|
||||||
|
import com.github.gwtbootstrap.client.ui.constants.AlertType;
|
||||||
|
import com.google.gwt.event.shared.GwtEvent;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Class ShowMessageEvent.
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
|
||||||
|
*
|
||||||
|
* Feb 22, 2022
|
||||||
|
*/
|
||||||
|
public class ShowMessageEvent extends GwtEvent<ShowMessageEventHandler> {
|
||||||
|
public static Type<ShowMessageEventHandler> TYPE = new Type<ShowMessageEventHandler>();
|
||||||
|
private String msg;
|
||||||
|
private AlertType alerType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instantiates a new click item event.
|
||||||
|
*
|
||||||
|
* @param msg the msg
|
||||||
|
* @param alerType the aler type
|
||||||
|
*/
|
||||||
|
public ShowMessageEvent(String msg, AlertType alerType) {
|
||||||
|
this.msg = msg;
|
||||||
|
this.alerType = alerType;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the associated type.
|
||||||
|
*
|
||||||
|
* @return the associated type
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
* (non-Javadoc)
|
||||||
|
*
|
||||||
|
* @see com.google.gwt.event.shared.GwtEvent#getAssociatedType()
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Type<ShowMessageEventHandler> getAssociatedType() {
|
||||||
|
return TYPE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Dispatch.
|
||||||
|
*
|
||||||
|
* @param handler the handler
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
* (non-Javadoc)
|
||||||
|
*
|
||||||
|
* @see
|
||||||
|
* com.google.gwt.event.shared.GwtEvent#dispatch(com.google.gwt.event.shared.
|
||||||
|
* EventHandler)
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
protected void dispatch(ShowMessageEventHandler handler) {
|
||||||
|
handler.onShowMessage(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getMsg() {
|
||||||
|
return msg;
|
||||||
|
}
|
||||||
|
|
||||||
|
public AlertType getAlerType() {
|
||||||
|
return alerType;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
package org.gcube.portlets.widgets.ckancontentmoderator.client.events;
|
||||||
|
|
||||||
|
import com.google.gwt.event.shared.EventHandler;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Interface ShowMessageEventHandler.
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
|
||||||
|
*
|
||||||
|
* Feb 22, 2022
|
||||||
|
*/
|
||||||
|
public interface ShowMessageEventHandler extends EventHandler {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* On show message.
|
||||||
|
*
|
||||||
|
* @param showMessageEvent the show message event
|
||||||
|
*/
|
||||||
|
void onShowMessage(ShowMessageEvent showMessageEvent);
|
||||||
|
}
|
|
@ -5,6 +5,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.client.CkanContentModeratorWidgetController;
|
import org.gcube.portlets.widgets.ckancontentmoderator.client.CkanContentModeratorWidgetController;
|
||||||
import org.gcube.portlets.widgets.ckancontentmoderator.client.ContentModeratorWidgetConstants;
|
import org.gcube.portlets.widgets.ckancontentmoderator.client.ContentModeratorWidgetConstants;
|
||||||
|
import org.gcube.portlets.widgets.ckancontentmoderator.client.events.ShowMessageEvent;
|
||||||
import org.gcube.portlets.widgets.ckancontentmoderator.client.events.TableRangeViewChangedEvent;
|
import org.gcube.portlets.widgets.ckancontentmoderator.client.events.TableRangeViewChangedEvent;
|
||||||
import org.gcube.portlets.widgets.ckancontentmoderator.client.ui.table.ItemsTable;
|
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.ItemsTable.DISPLAY_FIELD;
|
||||||
|
@ -13,6 +14,7 @@ import org.gcube.portlets.widgets.ckancontentmoderator.client.ui.util.LoadingPan
|
||||||
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.portlets.widgets.ckancontentmoderator.shared.SearchedData;
|
||||||
|
|
||||||
|
import com.github.gwtbootstrap.client.ui.constants.AlertType;
|
||||||
import com.google.gwt.core.client.GWT;
|
import com.google.gwt.core.client.GWT;
|
||||||
import com.google.gwt.event.shared.HandlerManager;
|
import com.google.gwt.event.shared.HandlerManager;
|
||||||
import com.google.gwt.user.cellview.client.SimplePager;
|
import com.google.gwt.user.cellview.client.SimplePager;
|
||||||
|
@ -30,7 +32,6 @@ import com.google.gwt.view.client.Range;
|
||||||
import com.google.gwt.view.client.SelectionModel;
|
import com.google.gwt.view.client.SelectionModel;
|
||||||
import com.google.gwt.view.client.SingleSelectionModel;
|
import com.google.gwt.view.client.SingleSelectionModel;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The Class GeonaRecordsPaginatedView.
|
* The Class GeonaRecordsPaginatedView.
|
||||||
*
|
*
|
||||||
|
@ -56,7 +57,7 @@ public class ContentModeratorPaginatedView {
|
||||||
/**
|
/**
|
||||||
* Instantiates a new content moderator paginated view.
|
* Instantiates a new content moderator paginated view.
|
||||||
*
|
*
|
||||||
* @param eventbus the eventbus
|
* @param eventbus the eventbus
|
||||||
* @param theStatus the the status
|
* @param theStatus the the status
|
||||||
* @param displayFields the display fields
|
* @param displayFields the display fields
|
||||||
* @param sortByField the sort by field
|
* @param sortByField the sort by field
|
||||||
|
@ -147,7 +148,8 @@ public class ContentModeratorPaginatedView {
|
||||||
*/
|
*/
|
||||||
private void loadNewPage(final int startIdx, final int limit, final boolean resetStore) {
|
private void loadNewPage(final int startIdx, final int limit, final boolean resetStore) {
|
||||||
// initFirstRangeChanged = resetStore;
|
// initFirstRangeChanged = resetStore;
|
||||||
GWT.log("loadNewPage with parameters [startIdx: " + startIdx + ", limit: " + limit + ", resetStore:"+ resetStore + "]");
|
GWT.log("loadNewPage with parameters [startIdx: " + startIdx + ", limit: " + limit + ", resetStore:"
|
||||||
|
+ resetStore + "]");
|
||||||
// showLoading(true);
|
// showLoading(true);
|
||||||
|
|
||||||
int newStartIndex = startIdx;
|
int newStartIndex = startIdx;
|
||||||
|
@ -181,14 +183,14 @@ public class ContentModeratorPaginatedView {
|
||||||
* @param result the new new page result
|
* @param result the new new page result
|
||||||
*/
|
*/
|
||||||
private void setNewPageResult(SearchedData result) {
|
private void setNewPageResult(SearchedData result) {
|
||||||
GWT.log("setNewPageResult: "+result);
|
GWT.log("setNewPageResult: " + result);
|
||||||
serverStartIndex = result.getServerEndIndex();
|
serverStartIndex = result.getServerEndIndex();
|
||||||
SelectionModel<? super CatalogueDataset> sm = getCellTable().getSelectionModel();
|
SelectionModel<? super CatalogueDataset> sm = getCellTable().getSelectionModel();
|
||||||
|
|
||||||
if (sm instanceof SingleSelectionModel) {
|
if (sm instanceof SingleSelectionModel) {
|
||||||
SingleSelectionModel<CatalogueDataset> ssm = (SingleSelectionModel<CatalogueDataset>) sm;
|
SingleSelectionModel<CatalogueDataset> ssm = (SingleSelectionModel<CatalogueDataset>) sm;
|
||||||
ssm.clear();
|
ssm.clear();
|
||||||
}else if (sm instanceof MultiSelectionModel) {
|
} else if (sm instanceof MultiSelectionModel) {
|
||||||
MultiSelectionModel<CatalogueDataset> msm = (MultiSelectionModel<CatalogueDataset>) sm;
|
MultiSelectionModel<CatalogueDataset> msm = (MultiSelectionModel<CatalogueDataset>) sm;
|
||||||
msm.clear();
|
msm.clear();
|
||||||
}
|
}
|
||||||
|
@ -240,6 +242,8 @@ public class ContentModeratorPaginatedView {
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable caught) {
|
public void onFailure(Throwable caught) {
|
||||||
showLoading(false);
|
showLoading(false);
|
||||||
|
eventBus.fireEvent(new ShowMessageEvent(caught.getMessage(), AlertType.ERROR));
|
||||||
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -248,7 +252,7 @@ public class ContentModeratorPaginatedView {
|
||||||
/**
|
/**
|
||||||
* Select items.
|
* Select items.
|
||||||
*
|
*
|
||||||
* @param select the select
|
* @param select the select
|
||||||
* @param limitToPage the limit to page
|
* @param limitToPage the limit to page
|
||||||
*/
|
*/
|
||||||
public void selectItems(boolean select, boolean limitToPage) {
|
public void selectItems(boolean select, boolean limitToPage) {
|
||||||
|
|
|
@ -276,23 +276,7 @@ public class HomeView extends Composite {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(ClickEvent event) {
|
public void onClick(ClickEvent event) {
|
||||||
confirmPanelContainer.clear();
|
confirmPanelContainer.clear();
|
||||||
|
|
||||||
performCMSAction(doActionCMS);
|
performCMSAction(doActionCMS);
|
||||||
// TODO DO ACTION UPDATE STATUS OR DELETE PERMANENTLY
|
|
||||||
|
|
||||||
// int count = selectedItems.size();
|
|
||||||
// String msg = "";
|
|
||||||
// if (count > 0) {
|
|
||||||
// if (count == 1) {
|
|
||||||
// msg += "One item";
|
|
||||||
// } else {
|
|
||||||
// msg += count + " items";
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// msg += " moved to " + toStatus + " status";
|
|
||||||
// }
|
|
||||||
// eventBus.fireEvent(new SelectItemsWithItemStatusEvent(displayingItemStatus, msg));
|
|
||||||
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -416,9 +400,13 @@ public class HomeView extends Composite {
|
||||||
msg += " moved to " + toStatus + " status.";
|
msg += " moved to " + toStatus + " status.";
|
||||||
}
|
}
|
||||||
|
|
||||||
int errorCount = result.getErrorListItems().size();
|
int errorCount = result.getErrorMapItems().size();
|
||||||
if (errorCount > 0) {
|
if (errorCount > 0) {
|
||||||
msg += " <br/>Error occurred on updating status to " + errorCount + " item/s";
|
msg += " <br/>Error occurred on updating status to " + errorCount + " item/s:";
|
||||||
|
for (String key : result.getErrorMapItems().keySet()) {
|
||||||
|
msg += "<br/> "+ key+". Error: "+ result.getErrorMapItems().get(key);
|
||||||
|
}
|
||||||
|
|
||||||
alert = AlertType.WARNING;
|
alert = AlertType.WARNING;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -465,10 +453,12 @@ public class HomeView extends Composite {
|
||||||
msg += " moved to " + toStatus + " status.";
|
msg += " moved to " + toStatus + " status.";
|
||||||
}
|
}
|
||||||
|
|
||||||
int errorCount = result.getErrorListItems().size();
|
int errorCount = result.getErrorMapItems().size();
|
||||||
if (errorCount > 0) {
|
if (errorCount > 0) {
|
||||||
msg += " <br/>Error occurred on approving " + errorCount + " item/s";
|
msg += " <br/>Error occurred on approving " + errorCount + " item/s:";
|
||||||
alert = AlertType.WARNING;
|
for (String key : result.getErrorMapItems().keySet()) {
|
||||||
|
msg += "<br/> "+ key+". Error: "+ result.getErrorMapItems().get(key);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
eventBus.fireEvent(new SelectItemsWithItemStatusEvent(displayingItemStatus, msg, alert));
|
eventBus.fireEvent(new SelectItemsWithItemStatusEvent(displayingItemStatus, msg, alert));
|
||||||
|
@ -507,10 +497,12 @@ public class HomeView extends Composite {
|
||||||
msg += " moved to " + toStatus + " status.";
|
msg += " moved to " + toStatus + " status.";
|
||||||
}
|
}
|
||||||
|
|
||||||
int errorCount = result.getErrorListItems().size();
|
int errorCount = result.getErrorMapItems().size();
|
||||||
if (errorCount > 0) {
|
if (errorCount > 0) {
|
||||||
msg += " <br/>Error occurred on rejecting " + errorCount + " item/s";
|
msg += " <br/>Error occurred on rejecting " + errorCount + " item/s:";
|
||||||
alert = AlertType.WARNING;
|
for (String key : result.getErrorMapItems().keySet()) {
|
||||||
|
msg += "<br/> "+ key+". Error: "+ result.getErrorMapItems().get(key);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
eventBus.fireEvent(new SelectItemsWithItemStatusEvent(displayingItemStatus, msg, alert));
|
eventBus.fireEvent(new SelectItemsWithItemStatusEvent(displayingItemStatus, msg, alert));
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
package org.gcube.portlets.widgets.ckancontentmoderator.server;
|
package org.gcube.portlets.widgets.ckancontentmoderator.server;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
|
import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
|
||||||
import org.gcube.common.scope.api.ScopeProvider;
|
import org.gcube.common.scope.api.ScopeProvider;
|
||||||
|
@ -39,7 +41,7 @@ public class CkanContentModeratorServiceImpl extends RemoteServiceServlet implem
|
||||||
* @return true, if is content moderator enabled
|
* @return true, if is content moderator enabled
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public boolean isContentModeratorEnabled() {
|
public Boolean isContentModeratorEnabled() {
|
||||||
LOG.info("called isContentModeratorEnabled");
|
LOG.info("called isContentModeratorEnabled");
|
||||||
String scope = setContexts();
|
String scope = setContexts();
|
||||||
boolean isContentModeratorEnabled = false;
|
boolean isContentModeratorEnabled = false;
|
||||||
|
@ -54,7 +56,27 @@ public class CkanContentModeratorServiceImpl extends RemoteServiceServlet implem
|
||||||
return isContentModeratorEnabled;
|
return isContentModeratorEnabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if is moderator role is assigned to working user in the context.
|
||||||
|
*
|
||||||
|
* @return the moderation user role
|
||||||
|
* @throws Exception the exception
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Boolean isModeratorRoleAssigned() throws Exception {
|
||||||
|
LOG.info("called isModeratorRoleAssigned");
|
||||||
|
ModerationUserRole userRole = getCMSRolesForUserInTheContext();
|
||||||
|
|
||||||
|
boolean isCatalogueModerator = false;
|
||||||
|
if (userRole != null && userRole.getRoles() != null
|
||||||
|
&& userRole.getRoles().contains(CMSUserRole.CATALOGUE_MODERATOR)) {
|
||||||
|
LOG.info("called isModeratorRoleAssigned");
|
||||||
|
isCatalogueModerator = true;
|
||||||
|
}
|
||||||
|
LOG.info("is " + CMSUserRole.CATALOGUE_MODERATOR.getRoleName() + " assigned? " + isCatalogueModerator);
|
||||||
|
return isCatalogueModerator;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the CMS roles for user in the context.
|
* Gets the CMS roles for user in the context.
|
||||||
*
|
*
|
||||||
|
@ -66,10 +88,10 @@ public class CkanContentModeratorServiceImpl extends RemoteServiceServlet implem
|
||||||
LOG.info("called getCMSRolesForUserInTheContext");
|
LOG.info("called getCMSRolesForUserInTheContext");
|
||||||
setContexts();
|
setContexts();
|
||||||
List<CMSUserRole> roles = GcubeContextUtil.getCMSRoleForUserInTheScope(getThreadLocalRequest());
|
List<CMSUserRole> roles = GcubeContextUtil.getCMSRoleForUserInTheScope(getThreadLocalRequest());
|
||||||
|
|
||||||
GcubeContextUtil.getCurrentUser(getThreadLocalRequest());
|
GcubeContextUtil.getCurrentUser(getThreadLocalRequest());
|
||||||
ModerationUserRole userRole = new ModerationUserRole(getServletInfo(), roles);
|
ModerationUserRole userRole = new ModerationUserRole(getServletInfo(), roles);
|
||||||
LOG.info("return: "+userRole);
|
LOG.info("return: " + userRole);
|
||||||
return userRole;
|
return userRole;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -120,9 +142,8 @@ public class CkanContentModeratorServiceImpl extends RemoteServiceServlet implem
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
LOG.error(e.getMessage(), e);
|
LOG.error("Error occurred on reading items for status: " + theStatus, e);
|
||||||
throw new Exception(
|
throw e;
|
||||||
"Error occurred on reading items for status: " + theStatus + ". Caused by: " + e.getMessage());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG.info("returning " + datasetList.size() + " dataset");
|
LOG.info("returning " + datasetList.size() + " dataset");
|
||||||
|
@ -135,7 +156,7 @@ public class CkanContentModeratorServiceImpl extends RemoteServiceServlet implem
|
||||||
* @param theStatus the the status
|
* @param theStatus the the status
|
||||||
* @param itemNames the item names
|
* @param itemNames the item names
|
||||||
* @return the operation report
|
* @return the operation report
|
||||||
* @throws Exception
|
* @throws Exception the exception
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public OperationReport setStatus(ItemStatus theStatus, List<String> itemNames) throws Exception {
|
public OperationReport setStatus(ItemStatus theStatus, List<String> itemNames) throws Exception {
|
||||||
|
@ -144,7 +165,7 @@ public class CkanContentModeratorServiceImpl extends RemoteServiceServlet implem
|
||||||
try {
|
try {
|
||||||
String scope = setContexts();
|
String scope = setContexts();
|
||||||
DataCatalogueImpl catalogueImpl = CatalogueCMSFactory.getFactory().getCatalogueImplPerScope(scope);
|
DataCatalogueImpl catalogueImpl = CatalogueCMSFactory.getFactory().getCatalogueImplPerScope(scope);
|
||||||
List<String> errorListItems = new ArrayList<String>();
|
Map<String, String> errorMapItems = new HashMap<String, String>();
|
||||||
List<String> changedStatusListItems = new ArrayList<String>();
|
List<String> changedStatusListItems = new ArrayList<String>();
|
||||||
for (String itemName : itemNames) {
|
for (String itemName : itemNames) {
|
||||||
try {
|
try {
|
||||||
|
@ -152,11 +173,11 @@ public class CkanContentModeratorServiceImpl extends RemoteServiceServlet implem
|
||||||
changedStatusListItems.add(itemName);
|
changedStatusListItems.add(itemName);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
LOG.warn("Error when setting status (updating) the itemName: " + itemName, e);
|
LOG.warn("Error when setting status (updating) the itemName: " + itemName, e);
|
||||||
errorListItems.add(itemName);
|
errorMapItems.put(itemName, e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return new OperationReport(theStatus.getLabel(), errorListItems, changedStatusListItems);
|
return new OperationReport(theStatus.getLabel(), changedStatusListItems, errorMapItems);
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
LOG.error(e.getMessage(), e);
|
LOG.error(e.getMessage(), e);
|
||||||
|
@ -182,7 +203,7 @@ public class CkanContentModeratorServiceImpl extends RemoteServiceServlet implem
|
||||||
DataCatalogueImpl catalogueImpl = CatalogueCMSFactory.getFactory().getCatalogueImplPerScope(scope);
|
DataCatalogueImpl catalogueImpl = CatalogueCMSFactory.getFactory().getCatalogueImplPerScope(scope);
|
||||||
CatalogueContentModeratorSystem cmsInstance = catalogueImpl.getCatalogueContentModerator();
|
CatalogueContentModeratorSystem cmsInstance = catalogueImpl.getCatalogueContentModerator();
|
||||||
|
|
||||||
List<String> errorListItems = new ArrayList<String>();
|
Map<String, String> errorMapItems = new HashMap<String, String>();
|
||||||
List<String> approvedListItems = new ArrayList<String>();
|
List<String> approvedListItems = new ArrayList<String>();
|
||||||
for (String itemName : itemNames) {
|
for (String itemName : itemNames) {
|
||||||
try {
|
try {
|
||||||
|
@ -190,11 +211,11 @@ public class CkanContentModeratorServiceImpl extends RemoteServiceServlet implem
|
||||||
approvedListItems.add(itemName);
|
approvedListItems.add(itemName);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
LOG.warn("Error when approving itemName: " + itemName, e);
|
LOG.warn("Error when approving itemName: " + itemName, e);
|
||||||
errorListItems.add(itemName);
|
errorMapItems.put(itemName, e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return new OperationReport(ItemStatus.APPROVED.getLabel(), errorListItems, approvedListItems);
|
return new OperationReport(ItemStatus.APPROVED.getLabel(), approvedListItems, errorMapItems);
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
LOG.error(e.getMessage(), e);
|
LOG.error(e.getMessage(), e);
|
||||||
|
@ -221,7 +242,7 @@ public class CkanContentModeratorServiceImpl extends RemoteServiceServlet implem
|
||||||
DataCatalogueImpl catalogueImpl = CatalogueCMSFactory.getFactory().getCatalogueImplPerScope(scope);
|
DataCatalogueImpl catalogueImpl = CatalogueCMSFactory.getFactory().getCatalogueImplPerScope(scope);
|
||||||
CatalogueContentModeratorSystem cmsInstance = catalogueImpl.getCatalogueContentModerator();
|
CatalogueContentModeratorSystem cmsInstance = catalogueImpl.getCatalogueContentModerator();
|
||||||
|
|
||||||
List<String> errorListItems = new ArrayList<String>();
|
Map<String, String> errorMapItems = new HashMap<String, String>();
|
||||||
List<String> passedListItems = new ArrayList<String>();
|
List<String> passedListItems = new ArrayList<String>();
|
||||||
for (String itemName : itemNames) {
|
for (String itemName : itemNames) {
|
||||||
try {
|
try {
|
||||||
|
@ -229,11 +250,11 @@ public class CkanContentModeratorServiceImpl extends RemoteServiceServlet implem
|
||||||
passedListItems.add(itemName);
|
passedListItems.add(itemName);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
LOG.warn("Error when rejecting itemName: " + itemName, e);
|
LOG.warn("Error when rejecting itemName: " + itemName, e);
|
||||||
errorListItems.add(itemName);
|
errorMapItems.put(itemName, e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return new OperationReport(ItemStatus.REJECTED.getLabel(), errorListItems, passedListItems);
|
return new OperationReport(ItemStatus.REJECTED.getLabel(), passedListItems, errorMapItems);
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
LOG.error(e.getMessage(), e);
|
LOG.error(e.getMessage(), e);
|
||||||
|
@ -257,7 +278,7 @@ public class CkanContentModeratorServiceImpl extends RemoteServiceServlet implem
|
||||||
DataCatalogueImpl catalogueImpl = CatalogueCMSFactory.getFactory().getCatalogueImplPerScope(scope);
|
DataCatalogueImpl catalogueImpl = CatalogueCMSFactory.getFactory().getCatalogueImplPerScope(scope);
|
||||||
CatalogueContentModeratorSystem cmsInstance = catalogueImpl.getCatalogueContentModerator();
|
CatalogueContentModeratorSystem cmsInstance = catalogueImpl.getCatalogueContentModerator();
|
||||||
|
|
||||||
List<String> errorListItems = new ArrayList<String>();
|
Map<String, String> errorMapItems = new HashMap<String, String>();
|
||||||
List<String> passedListItems = new ArrayList<String>();
|
List<String> passedListItems = new ArrayList<String>();
|
||||||
for (String itemName : itemNames) {
|
for (String itemName : itemNames) {
|
||||||
try {
|
try {
|
||||||
|
@ -265,11 +286,11 @@ public class CkanContentModeratorServiceImpl extends RemoteServiceServlet implem
|
||||||
passedListItems.add(itemName);
|
passedListItems.add(itemName);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
LOG.warn("Error when deleting permanently the itemName: " + itemName, e);
|
LOG.warn("Error when deleting permanently the itemName: " + itemName, e);
|
||||||
errorListItems.add(itemName);
|
errorMapItems.put(itemName, e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return new OperationReport("Permanently Delete", errorListItems, passedListItems);
|
return new OperationReport("Permanently Delete", passedListItems, errorMapItems);
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
LOG.error(e.getMessage(), e);
|
LOG.error(e.getMessage(), e);
|
||||||
|
@ -293,69 +314,37 @@ public class CkanContentModeratorServiceImpl extends RemoteServiceServlet implem
|
||||||
throws Exception {
|
throws Exception {
|
||||||
LOG.info("called getDataForStatus [status: " + status + ", offset: " + offset + ", limit: " + limit
|
LOG.info("called getDataForStatus [status: " + status + ", offset: " + offset + ", limit: " + limit
|
||||||
+ ", serverIndex: " + serverStartIndex);
|
+ ", serverIndex: " + serverStartIndex);
|
||||||
|
|
||||||
|
String scope = setContexts();
|
||||||
|
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 {
|
try {
|
||||||
String scope = setContexts();
|
LOG.debug("getListItemsForStatus with searchStartIndex: " + searchStartIndex + ", limit: " + limit);
|
||||||
// int searchStartIndex = limit < serverStartIndex? serverStartIndex : offset;
|
listDataset = getListItemsForStatus(status, searchStartIndex, limit);
|
||||||
|
|
||||||
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) {
|
} catch (Exception e) {
|
||||||
LOG.error("Error during folder retrieving", e);
|
String error = "Error occurred on getting items for status: " + status;
|
||||||
throw new Exception("Sorry, an error occurred on loading items");
|
LOG.error(error, e);
|
||||||
|
throw new Exception(error+". Cause: "+e.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
LOG.debug("Returning: " + searchedData);
|
||||||
|
return searchedData;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,10 +31,6 @@ public class ModerationUserRole implements Serializable {
|
||||||
this.roles = roles;
|
this.roles = roles;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static long getSerialversionuid() {
|
|
||||||
return serialVersionUID;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getUsername() {
|
public String getUsername() {
|
||||||
return username;
|
return username;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,25 +2,27 @@ package org.gcube.portlets.widgets.ckancontentmoderator.shared;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
public class OperationReport implements Serializable {
|
public class OperationReport implements Serializable {
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
private static final long serialVersionUID = 879318163198093725L;
|
private static final long serialVersionUID = 4960774282956107668L;
|
||||||
private String operationType;
|
private String operationType;
|
||||||
private List<String> errorListItems = new ArrayList<String>();
|
private Map<String, String> errorMapItems = new HashMap<String, String>();
|
||||||
private List<String> passedListItems = new ArrayList<String>();
|
private List<String> passedListItems = new ArrayList<String>();
|
||||||
|
|
||||||
public OperationReport() {
|
public OperationReport() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public OperationReport(String operationType, List<String> errorListItems, List<String> passedListItems) {
|
public OperationReport(String operationType, List<String> passedListItems, Map<String, String> errorMapItems) {
|
||||||
super();
|
|
||||||
this.operationType = operationType;
|
this.operationType = operationType;
|
||||||
this.errorListItems = errorListItems;
|
this.errorMapItems = errorMapItems;
|
||||||
this.passedListItems = passedListItems;
|
this.passedListItems = passedListItems;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -28,8 +30,8 @@ public class OperationReport implements Serializable {
|
||||||
return operationType;
|
return operationType;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<String> getErrorListItems() {
|
public Map<String, String> getErrorMapItems() {
|
||||||
return errorListItems;
|
return errorMapItems;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<String> getPassedListItems() {
|
public List<String> getPassedListItems() {
|
||||||
|
@ -40,8 +42,8 @@ public class OperationReport implements Serializable {
|
||||||
this.operationType = operationType;
|
this.operationType = operationType;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setErrorListItems(List<String> errorListItems) {
|
public void setErrorMapItems(Map<String, String> errorMapItems) {
|
||||||
this.errorListItems = errorListItems;
|
this.errorMapItems = errorMapItems;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setPassedListItems(List<String> passedListItems) {
|
public void setPassedListItems(List<String> passedListItems) {
|
||||||
|
@ -53,8 +55,8 @@ public class OperationReport implements Serializable {
|
||||||
StringBuilder builder = new StringBuilder();
|
StringBuilder builder = new StringBuilder();
|
||||||
builder.append("OperationReport [operationType=");
|
builder.append("OperationReport [operationType=");
|
||||||
builder.append(operationType);
|
builder.append(operationType);
|
||||||
builder.append(", errorListItems=");
|
builder.append(", errorMapItems=");
|
||||||
builder.append(errorListItems);
|
builder.append(errorMapItems);
|
||||||
builder.append(", passedListItems=");
|
builder.append(", passedListItems=");
|
||||||
builder.append(passedListItems);
|
builder.append(passedListItems);
|
||||||
builder.append("]");
|
builder.append("]");
|
||||||
|
|
Loading…
Reference in New Issue