#23785 "Publication Report" facility migrated to new client/service
model based on LifecycleInfo
This commit is contained in:
parent
68b5548718
commit
5b9b776c56
|
@ -14,6 +14,7 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
|
||||||
- [#22883] Integrated with (the new) geoportal-client (>= 1.1.0-SNAPSHOT)
|
- [#22883] Integrated with (the new) geoportal-client (>= 1.1.0-SNAPSHOT)
|
||||||
- [#22685] Migrated to geoportal-data-list configuration for UCD
|
- [#22685] Migrated to geoportal-data-list configuration for UCD
|
||||||
- [#23784] Migrated list and reload, searching and ordering functionalities
|
- [#23784] Migrated list and reload, searching and ordering functionalities
|
||||||
|
- [#23785] Migrated the GNA functionalities
|
||||||
- Moved to maven-portal-bom v3.7.0[-SNAPSHOT]
|
- Moved to maven-portal-bom v3.7.0[-SNAPSHOT]
|
||||||
|
|
||||||
## [v2.2.1] - 2022-06-29
|
## [v2.2.1] - 2022-06-29
|
||||||
|
|
|
@ -15,12 +15,12 @@ import org.gcube.application.geoportalcommon.shared.config.RoleRights;
|
||||||
import org.gcube.application.geoportalcommon.shared.config.RoleRights.OPERATION_TYPE;
|
import org.gcube.application.geoportalcommon.shared.config.RoleRights.OPERATION_TYPE;
|
||||||
import org.gcube.application.geoportalcommon.shared.geoportal.ConfigurationDV;
|
import org.gcube.application.geoportalcommon.shared.geoportal.ConfigurationDV;
|
||||||
import org.gcube.application.geoportalcommon.shared.geoportal.DocumentDV;
|
import org.gcube.application.geoportalcommon.shared.geoportal.DocumentDV;
|
||||||
|
import org.gcube.application.geoportalcommon.shared.geoportal.ResultDocumentDV;
|
||||||
import org.gcube.application.geoportalcommon.shared.geoportal.config.GcubeProfileDV;
|
import org.gcube.application.geoportalcommon.shared.geoportal.config.GcubeProfileDV;
|
||||||
import org.gcube.application.geoportalcommon.shared.geoportal.config.ItemFieldDV;
|
import org.gcube.application.geoportalcommon.shared.geoportal.config.ItemFieldDV;
|
||||||
import org.gcube.application.geoportalcommon.shared.geoportal.project.LifecycleInformationDV;
|
import org.gcube.application.geoportalcommon.shared.geoportal.project.LifecycleInformationDV;
|
||||||
import org.gcube.application.geoportalcommon.shared.geoportal.ucd.HandlerDeclarationDV;
|
import org.gcube.application.geoportalcommon.shared.geoportal.ucd.HandlerDeclarationDV;
|
||||||
import org.gcube.application.geoportalcommon.shared.geoportal.ucd.UseCaseDescriptorDV;
|
import org.gcube.application.geoportalcommon.shared.geoportal.ucd.UseCaseDescriptorDV;
|
||||||
import org.gcube.application.geoportalcommon.shared.products.ConcessioneDV;
|
|
||||||
import org.gcube.portlets.user.geoportaldataentry.client.ConstantsGeoPortalDataEntryApp.ACTION_PERFORMED_ON_ITEM;
|
import org.gcube.portlets.user.geoportaldataentry.client.ConstantsGeoPortalDataEntryApp.ACTION_PERFORMED_ON_ITEM;
|
||||||
import org.gcube.portlets.user.geoportaldataentry.client.GeoPortalClientCaches.CacheSearchingFilterParametersFromConfig;
|
import org.gcube.portlets.user.geoportaldataentry.client.GeoPortalClientCaches.CacheSearchingFilterParametersFromConfig;
|
||||||
import org.gcube.portlets.user.geoportaldataentry.client.events.ActionOnItemEvent;
|
import org.gcube.portlets.user.geoportaldataentry.client.events.ActionOnItemEvent;
|
||||||
|
@ -38,9 +38,10 @@ import org.gcube.portlets.user.geoportaldataentry.client.events.TreeItemEventHan
|
||||||
import org.gcube.portlets.user.geoportaldataentry.client.resource.Images;
|
import org.gcube.portlets.user.geoportaldataentry.client.resource.Images;
|
||||||
import org.gcube.portlets.user.geoportaldataentry.client.ui.GeonaMainTabPanel;
|
import org.gcube.portlets.user.geoportaldataentry.client.ui.GeonaMainTabPanel;
|
||||||
import org.gcube.portlets.user.geoportaldataentry.client.ui.GeonaRecordsPaginatedView;
|
import org.gcube.portlets.user.geoportaldataentry.client.ui.GeonaRecordsPaginatedView;
|
||||||
|
import org.gcube.portlets.user.geoportaldataentry.client.ui.ModalWindow;
|
||||||
import org.gcube.portlets.user.geoportaldataentry.client.ui.card.GeoNaFormCardModel;
|
import org.gcube.portlets.user.geoportaldataentry.client.ui.card.GeoNaFormCardModel;
|
||||||
import org.gcube.portlets.user.geoportaldataentry.client.ui.form.GeonaDataEntryMainForm;
|
import org.gcube.portlets.user.geoportaldataentry.client.ui.form.GeonaDataEntryMainForm;
|
||||||
import org.gcube.portlets.user.geoportaldataentry.client.ui.report.ReportTemplateToHTML;
|
import org.gcube.portlets.user.geoportaldataentry.client.ui.report.LifecycleInformationPanel;
|
||||||
import org.gcube.portlets.user.geoportaldataentry.client.ui.tree.NodeItem;
|
import org.gcube.portlets.user.geoportaldataentry.client.ui.tree.NodeItem;
|
||||||
import org.gcube.portlets.user.geoportaldataentry.client.ui.tree.TreeItemPanel;
|
import org.gcube.portlets.user.geoportaldataentry.client.ui.tree.TreeItemPanel;
|
||||||
import org.gcube.portlets.user.geoportaldataentry.client.ui.utils.DialogConfirm;
|
import org.gcube.portlets.user.geoportaldataentry.client.ui.utils.DialogConfirm;
|
||||||
|
@ -48,6 +49,7 @@ import org.gcube.portlets.user.geoportaldataentry.client.ui.utils.DialogInform;
|
||||||
import org.gcube.portlets.user.geoportaldataentry.client.ui.utils.HTMLUtil;
|
import org.gcube.portlets.user.geoportaldataentry.client.ui.utils.HTMLUtil;
|
||||||
import org.gcube.portlets.user.geoportaldataentry.client.ui.utils.HTMLUtil.HTML_TAG;
|
import org.gcube.portlets.user.geoportaldataentry.client.ui.utils.HTMLUtil.HTML_TAG;
|
||||||
import org.gcube.portlets.user.geoportaldataentry.client.ui.utils.LoaderIcon;
|
import org.gcube.portlets.user.geoportaldataentry.client.ui.utils.LoaderIcon;
|
||||||
|
import org.gcube.portlets.user.geoportaldataentry.client.ui.utils.NewBrowserWindow;
|
||||||
import org.gcube.portlets.user.geoportaldataentry.shared.CommitReport;
|
import org.gcube.portlets.user.geoportaldataentry.shared.CommitReport;
|
||||||
import org.gcube.portlets.user.geoportaldataentry.shared.GNADataEntryExtConfigProfile;
|
import org.gcube.portlets.user.geoportaldataentry.shared.GNADataEntryExtConfigProfile;
|
||||||
import org.gcube.portlets.user.geoportaldataentry.shared.GeoNaFormDataObject;
|
import org.gcube.portlets.user.geoportaldataentry.shared.GeoNaFormDataObject;
|
||||||
|
@ -558,11 +560,11 @@ public class GeoPortalDataEntryApp implements EntryPoint {
|
||||||
|
|
||||||
LifecycleInformationDV lcDV = result.getLifecycleInformation();
|
LifecycleInformationDV lcDV = result.getLifecycleInformation();
|
||||||
|
|
||||||
HTML htmlPhase = new HTML();
|
// HTML htmlPhase = new HTML();
|
||||||
htmlPhase.setHTML("Current phase: <b>" + lcDV.getPhase() + "</b>");
|
// htmlPhase.setHTML("Current phase: <b>" + lcDV.getPhase() + "</b>");
|
||||||
|
//
|
||||||
HTML htmlStep = new HTML();
|
// HTML htmlStep = new HTML();
|
||||||
htmlStep.setHTML("Invoked Step: <b>" + lcDV.getLastInvokedStep() + "</b>");
|
// htmlStep.setHTML("Invoked Step: <b>" + lcDV.getLastInvokedStep() + "</b>");
|
||||||
|
|
||||||
HTML lastOperationStatus = new HTML();
|
HTML lastOperationStatus = new HTML();
|
||||||
switch (lcDV.getLastOperationStatus()) {
|
switch (lcDV.getLastOperationStatus()) {
|
||||||
|
@ -577,18 +579,18 @@ public class GeoPortalDataEntryApp implements EntryPoint {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case WARNING: {
|
case WARNING: {
|
||||||
String warning = HTMLUtil.getHTMLElement(HTML_TAG.span, 14, "FF8000", null,
|
// String warning = HTMLUtil.getHTMLElement(HTML_TAG.span, 14, "FF8000", null,
|
||||||
"WARNING");
|
// "WARNING");
|
||||||
String msg = lcDV.getLastInvokedStep() + "terminated with: " + warning;
|
// String msg = lcDV.getLastInvokedStep() + "terminated with: " + warning;
|
||||||
lastOperationStatus.setHTML(msg);
|
// lastOperationStatus.setHTML(msg);
|
||||||
geoNaMainForm.enableButtonSave(true);
|
geoNaMainForm.enableButtonSave(true);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case ERROR: {
|
case ERROR: {
|
||||||
String error = HTMLUtil.getHTMLElement(HTML_TAG.span, 14, "FF0000", "bold",
|
// String error = HTMLUtil.getHTMLElement(HTML_TAG.span, 14, "FF0000", "bold",
|
||||||
"ERROR");
|
// "ERROR");
|
||||||
String msg = lcDV.getLastInvokedStep() + "terminated with: " + error;
|
// String msg = lcDV.getLastInvokedStep() + "terminated with: " + error;
|
||||||
lastOperationStatus.setHTML(msg);
|
// lastOperationStatus.setHTML(msg);
|
||||||
geoNaMainForm.enableButtonSave(true);
|
geoNaMainForm.enableButtonSave(true);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -596,55 +598,46 @@ public class GeoPortalDataEntryApp implements EntryPoint {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
modalContainerPanel.add(htmlPhase);
|
LifecycleInformationPanel lip = new LifecycleInformationPanel(result.getProjectID(),
|
||||||
modalContainerPanel.add(htmlStep);
|
result.getProfileID(), result.getProjectAsJSON(), lcDV, true);
|
||||||
modalContainerPanel.add(lastOperationStatus);
|
|
||||||
|
|
||||||
if (result.getProjectID() != null) {
|
modalContainerPanel.add(lip);
|
||||||
modalContainerPanel.add(new HTML("Record id: " + (result.getProjectID())));
|
|
||||||
|
|
||||||
try {
|
/*
|
||||||
savedMap.put(result.getProjectID(), saveGeonaDataFormsEvent.getTreeNode());
|
* modalContainerPanel.add(htmlPhase); modalContainerPanel.add(htmlStep);
|
||||||
} catch (Exception e) {
|
* modalContainerPanel.add(lastOperationStatus);
|
||||||
// TODO: handle exception
|
*
|
||||||
}
|
* if (result.getProjectID() != null) { modalContainerPanel.add(new
|
||||||
|
* HTML("Record id: " + (result.getProjectID())));
|
||||||
final HorizontalPanel hpGetLink = new HorizontalPanel();
|
*
|
||||||
final LoaderIcon lc = new LoaderIcon("Get link...");
|
* try { savedMap.put(result.getProjectID(),
|
||||||
hpGetLink.add(lc);
|
* saveGeonaDataFormsEvent.getTreeNode()); } catch (Exception e) { // TODO:
|
||||||
modalContainerPanel.add(hpGetLink);
|
* handle exception }
|
||||||
GeoportalDataEntryServiceAsync.Util.getInstance().getLinksFor(
|
*
|
||||||
result.getProjectID(), saveGeonaDataFormsEvent.getProfileID(),
|
* final HorizontalPanel hpGetLink = new HorizontalPanel(); final LoaderIcon lc
|
||||||
new AsyncCallback<GeoNaItemRef>() {
|
* = new LoaderIcon("Get link..."); hpGetLink.add(lc);
|
||||||
|
* modalContainerPanel.add(hpGetLink);
|
||||||
@Override
|
* GeoportalDataEntryServiceAsync.Util.getInstance().getLinksFor(
|
||||||
public void onFailure(Throwable caught) {
|
* result.getProjectID(), saveGeonaDataFormsEvent.getProfileID(), new
|
||||||
hpGetLink.clear();
|
* AsyncCallback<GeoNaItemRef>() {
|
||||||
|
*
|
||||||
}
|
* @Override public void onFailure(Throwable caught) { hpGetLink.clear();
|
||||||
|
*
|
||||||
@Override
|
* }
|
||||||
public void onSuccess(GeoNaItemRef result) {
|
*
|
||||||
hpGetLink.clear();
|
* @Override public void onSuccess(GeoNaItemRef result) { hpGetLink.clear();
|
||||||
String theURL = result.getRestrictedLink().getShortURL() != null
|
* String theURL = result.getRestrictedLink().getShortURL() != null ?
|
||||||
? result.getRestrictedLink().getShortURL()
|
* result.getRestrictedLink().getShortURL() :
|
||||||
: result.getRestrictedLink().getCompleteURL();
|
* result.getRestrictedLink().getCompleteURL(); String htmlLink =
|
||||||
String htmlLink = "<div>Go to project: <a href=" + theURL
|
* "<div>Go to project: <a href=" + theURL + " target=\"_blank\">" + theURL +
|
||||||
+ " target=\"_blank\">" + theURL + "</a></div>";
|
* "</a></div>"; HTML html = new HTML(htmlLink); hpGetLink.add(html); //
|
||||||
HTML html = new HTML(htmlLink);
|
* modal.add(html); } }); }
|
||||||
hpGetLink.add(html);
|
*
|
||||||
// modal.add(html);
|
* // geoNaMainForm.enableButtonSave(true); // resetUI();
|
||||||
}
|
*
|
||||||
});
|
* if (lcDV.getAsJSONString() != null) { modalContainerPanel .add(new
|
||||||
}
|
* ReportTemplateToHTML(lcDV.getAsJSONString(), false)); }
|
||||||
|
*/
|
||||||
// geoNaMainForm.enableButtonSave(true);
|
|
||||||
// resetUI();
|
|
||||||
|
|
||||||
if (lcDV.getAsJSONString() != null) {
|
|
||||||
modalContainerPanel
|
|
||||||
.add(new ReportTemplateToHTML(lcDV.getAsJSONString(), false));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -824,14 +817,14 @@ public class GeoPortalDataEntryApp implements EntryPoint {
|
||||||
CacheSearchingFilterParametersFromConfig seachingFilterParameters = geoportalCaches
|
CacheSearchingFilterParametersFromConfig seachingFilterParameters = geoportalCaches
|
||||||
.getFilterParametersForProfileId(getListOfRecordsEvent.getProfileID());
|
.getFilterParametersForProfileId(getListOfRecordsEvent.getProfileID());
|
||||||
|
|
||||||
if (searchingFilter == null || getListOfRecordsEvent.isOnApplicationInit() || getListOfRecordsEvent.isReloadFilteringParameters()) {
|
if (searchingFilter == null || getListOfRecordsEvent.isOnApplicationInit()
|
||||||
|
|| getListOfRecordsEvent.isReloadFilteringParameters()) {
|
||||||
mainTabPanel.setFilteringParameters(seachingFilterParameters);
|
mainTabPanel.setFilteringParameters(seachingFilterParameters);
|
||||||
searchingFilter = mainTabPanel.getCurrentSearchingFilter();
|
searchingFilter = mainTabPanel.getCurrentSearchingFilter();
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO MUST MANAGE getListOfRecordsEvent.isReloadFilteringParameters()
|
// TODO MUST MANAGE getListOfRecordsEvent.isReloadFilteringParameters()
|
||||||
|
|
||||||
|
|
||||||
searchingFilter.setProjection(seachingFilterParameters.getProjection());
|
searchingFilter.setProjection(seachingFilterParameters.getProjection());
|
||||||
|
|
||||||
List<ItemFieldDV> displayFields = seachingFilterParameters.getDisplayFields();
|
List<ItemFieldDV> displayFields = seachingFilterParameters.getDisplayFields();
|
||||||
|
@ -924,103 +917,127 @@ public class GeoPortalDataEntryApp implements EntryPoint {
|
||||||
if (item == null)
|
if (item == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (item instanceof DocumentDV) {
|
if (item instanceof ResultDocumentDV) {
|
||||||
|
|
||||||
Window.alert("ACTION MUST BE REVISITED");
|
final ResultDocumentDV resultDocumentDV = (ResultDocumentDV) item;
|
||||||
|
GWT.log("onDoActionFired item: " + resultDocumentDV);
|
||||||
|
|
||||||
|
// Checking if the user is NOT authorized to perform this action in two ways:
|
||||||
|
// 1. the map of actions allowed for the user does not contain the action;
|
||||||
|
RoleRights roleRights = myRights.getRoleRights();
|
||||||
|
OPERATION_TYPE operationType = roleRights.getListPermessions().get(action);
|
||||||
|
boolean allowedOperationForUser = operationType != null ? true : false;
|
||||||
|
if (!allowedOperationForUser) {
|
||||||
|
|
||||||
|
String msg = "You are not authorized to perform the action: " + action.getLabel();
|
||||||
|
ModalWindow modalW = new ModalWindow(new Image(Images.ICONS.accessDenied()),
|
||||||
|
"Forbidden: " + action, msg, AlertType.WARNING);
|
||||||
|
modalW.show();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// 2. the user cannot access to action (e.g. the user cannot write an item of
|
||||||
|
// another user)
|
||||||
|
// if so an error is shown
|
||||||
|
GcubeUserRole userRole = myRights.getRoleRights().getUserRole();
|
||||||
|
String creatorUsername = "";
|
||||||
|
try {
|
||||||
|
creatorUsername = resultDocumentDV.getPublicationInfoDV().getCreationInfo().getUsername();
|
||||||
|
} catch (Exception e) {
|
||||||
|
// TODO: handle exception
|
||||||
|
}
|
||||||
|
boolean allowedWriteActionOnItem = checkAccessToOperationType(userRole, operationType,
|
||||||
|
creatorUsername);
|
||||||
|
if (!allowedWriteActionOnItem) {
|
||||||
|
String title = "Forbidden: missing write access";
|
||||||
|
String msg = "You do not have write access to item: " + resultDocumentDV.getId();
|
||||||
|
if (!userRole.isWriteOwn()) {
|
||||||
|
msg = "You do not have write access to item: " + resultDocumentDV.getId();
|
||||||
|
} else if (!userRole.isWriteAny()) {
|
||||||
|
title = "Forbidden: missing ownership";
|
||||||
|
msg = "You are not the creator of: " + resultDocumentDV.getId()
|
||||||
|
+ ". You cannot access to it";
|
||||||
|
}
|
||||||
|
ModalWindow modalW = new ModalWindow(new Image(Images.ICONS.accessDenied()), title, msg,
|
||||||
|
AlertType.WARNING);
|
||||||
|
modalW.show();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (action) {
|
||||||
|
case VIEW_ON_MAP: {
|
||||||
|
final Modal modal = new Modal(true, true);
|
||||||
|
modal.setCloseVisible(true);
|
||||||
|
final HorizontalPanel hpGetLink = new HorizontalPanel();
|
||||||
|
final LoaderIcon lc = new LoaderIcon("Just moment getting link...");
|
||||||
|
hpGetLink.add(lc);
|
||||||
|
modal.add(hpGetLink);
|
||||||
|
|
||||||
|
final NewBrowserWindow newBrowserWindow = NewBrowserWindow.open("", "_blank", "");
|
||||||
|
|
||||||
|
GeoportalDataEntryServiceAsync.Util.getInstance().getLinksFor(resultDocumentDV.getId(),
|
||||||
|
resultDocumentDV.getProfileID(), new AsyncCallback<GeoNaItemRef>() {
|
||||||
|
@Override
|
||||||
|
public void onFailure(Throwable caught) {
|
||||||
|
hpGetLink.clear();
|
||||||
|
Alert alert = new Alert(caught.getMessage(), AlertType.ERROR);
|
||||||
|
alert.setClose(false);
|
||||||
|
hpGetLink.add(alert);
|
||||||
|
newBrowserWindow.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSuccess(GeoNaItemRef result) {
|
||||||
|
String theURL = result.getRestrictedLink().getShortURL() != null
|
||||||
|
? result.getRestrictedLink().getShortURL()
|
||||||
|
: result.getRestrictedLink().getCompleteURL();
|
||||||
|
newBrowserWindow.setUrl(theURL);
|
||||||
|
modal.hide();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
modal.show();
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case VIEW_REPORT:
|
||||||
|
|
||||||
|
final Modal modal2 = new Modal(true, true);
|
||||||
|
modal2.setTitle(
|
||||||
|
"<span style='font-size:20px;'>Report for Project: <span style='color:#555; font-size:20px;'>"
|
||||||
|
+ resultDocumentDV.getId() + "</span></span>");
|
||||||
|
modal2.setWidth(800);
|
||||||
|
modal2.setCloseVisible(true);
|
||||||
|
final LoaderIcon lc = new LoaderIcon("Just moment loading lifecycle info...");
|
||||||
|
modal2.add(lc);
|
||||||
|
|
||||||
|
GeoportalDataEntryServiceAsync.Util.getInstance().getLifecycleInfoForProjectId(
|
||||||
|
resultDocumentDV.getProfileID(), resultDocumentDV.getId(),
|
||||||
|
new AsyncCallback<LifecycleInformationDV>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFailure(Throwable caught) {
|
||||||
|
lc.setVisible(false);
|
||||||
|
modal2.add(
|
||||||
|
new HTML("No report available for: " + resultDocumentDV.getId()));
|
||||||
|
modal2.add(new Alert(caught.getMessage(), AlertType.ERROR));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSuccess(LifecycleInformationDV result) {
|
||||||
|
lc.setVisible(false);
|
||||||
|
LifecycleInformationPanel lip = new LifecycleInformationPanel(
|
||||||
|
resultDocumentDV.getId(), resultDocumentDV.getProfileID(),
|
||||||
|
resultDocumentDV.getDocumentAsJSON(), result, false);
|
||||||
|
modal2.add(lip);
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
modal2.show();
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
// final DocumentDV concessione = (DocumentDV) item;
|
|
||||||
// GWT.log("onDoActionFired item: " + concessione);
|
|
||||||
//
|
|
||||||
// // Checking if the user is NOT authorized to perform this action in two ways:
|
|
||||||
// // 1. the map of actions allowed for the user does not contain the action;
|
|
||||||
// RoleRights roleRights = myRights.getRoleRights();
|
|
||||||
// OPERATION_TYPE operationType = roleRights.getListPermessions().get(action);
|
|
||||||
// boolean allowedOperationForUser = operationType != null ? true : false;
|
|
||||||
// if (!allowedOperationForUser) {
|
|
||||||
//
|
|
||||||
// String msg = "You are not authorized to perform the action: " + action.getLabel();
|
|
||||||
// ModalWindow modalW = new ModalWindow(new Image(Images.ICONS.accessDenied()),
|
|
||||||
// "Forbidden: " + action, msg, AlertType.WARNING);
|
|
||||||
// modalW.show();
|
|
||||||
// return;
|
|
||||||
// }
|
|
||||||
// // 2. the user cannot access to action (e.g. the user cannot write an item of
|
|
||||||
// // another user)
|
|
||||||
// // if so an error is shown
|
|
||||||
// GcubeUserRole userRole = myRights.getRoleRights().getUserRole();
|
|
||||||
// boolean allowedWriteActionOnItem = checkAccessToOperationType(userRole, operationType,
|
|
||||||
// concessione);
|
|
||||||
// if (!allowedWriteActionOnItem) {
|
|
||||||
// String title = "Forbidden: missing write access";
|
|
||||||
// String msg = "You do not have write access to item: " + concessione.getNome();
|
|
||||||
// if (!userRole.isWriteOwn()) {
|
|
||||||
// msg = "You do not have write access to item: " + concessione.getNome();
|
|
||||||
// } else if (!userRole.isWriteAny()) {
|
|
||||||
// title = "Forbidden: missing ownership";
|
|
||||||
// msg = "You are not the creator of: " + concessione.getNome()
|
|
||||||
// + ". You cannot access to it";
|
|
||||||
// }
|
|
||||||
// ModalWindow modalW = new ModalWindow(new Image(Images.ICONS.accessDenied()), title, msg,
|
|
||||||
// AlertType.WARNING);
|
|
||||||
// modalW.show();
|
|
||||||
// return;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// switch (action) {
|
|
||||||
// case VIEW_ON_MAP:
|
|
||||||
// final Modal modal = new Modal(true, true);
|
|
||||||
// modal.setCloseVisible(true);
|
|
||||||
// final HorizontalPanel hpGetLink = new HorizontalPanel();
|
|
||||||
// final LoaderIcon lc = new LoaderIcon("Just moment getting link...");
|
|
||||||
// hpGetLink.add(lc);
|
|
||||||
// modal.add(hpGetLink);
|
|
||||||
//
|
|
||||||
// final NewBrowserWindow newBrowserWindow = NewBrowserWindow.open("", "_blank", "");
|
|
||||||
//
|
|
||||||
// GeoportalDataEntryServiceAsync.Util.getInstance().getLinksFor(concessione.getItemId(),
|
|
||||||
// showItemEvent.getProfileID(), new AsyncCallback<GeoNaItemRef>() {
|
|
||||||
// @Override
|
|
||||||
// public void onFailure(Throwable caught) {
|
|
||||||
// hpGetLink.clear();
|
|
||||||
// Alert alert = new Alert(caught.getMessage(), AlertType.ERROR);
|
|
||||||
// alert.setClose(false);
|
|
||||||
// hpGetLink.add(alert);
|
|
||||||
// newBrowserWindow.close();
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// public void onSuccess(GeoNaItemRef result) {
|
|
||||||
// String theURL = result.getRestrictedLink().getShortURL() != null
|
|
||||||
// ? result.getRestrictedLink().getShortURL()
|
|
||||||
// : result.getRestrictedLink().getCompleteURL();
|
|
||||||
// newBrowserWindow.setUrl(theURL);
|
|
||||||
// modal.hide();
|
|
||||||
// }
|
|
||||||
// });
|
|
||||||
//
|
|
||||||
// modal.show();
|
|
||||||
//
|
|
||||||
// break;
|
|
||||||
//
|
|
||||||
// case VIEW_REPORT:
|
|
||||||
//
|
|
||||||
// final Modal modal2 = new Modal(true, true);
|
|
||||||
// modal2.setTitle(
|
|
||||||
// "<span style='font-size:20px;'>Report: <span style='color:#555; font-size:20px;'>"
|
|
||||||
// + concessione.getNome() + "</span></span>");
|
|
||||||
// modal2.setWidth(800);
|
|
||||||
// modal2.setCloseVisible(true);
|
|
||||||
// if (concessione.getValidationReport() == null) {
|
|
||||||
// modal2.add(new HTML("No report available for: " + concessione.getNome()));
|
|
||||||
// } else {
|
|
||||||
// BuildValidationReport buildValidationReport = new BuildValidationReport(
|
|
||||||
// concessione.getValidationReport());
|
|
||||||
// modal2.add(buildValidationReport);
|
|
||||||
// }
|
|
||||||
// modal2.show();
|
|
||||||
//
|
|
||||||
// break;
|
|
||||||
//
|
|
||||||
// case EDIT_PROJECT:
|
// case EDIT_PROJECT:
|
||||||
// final Modal modal3 = new Modal(true, true);
|
// final Modal modal3 = new Modal(true, true);
|
||||||
// modal3.setTitle(
|
// modal3.setTitle(
|
||||||
|
@ -1036,11 +1053,11 @@ public class GeoPortalDataEntryApp implements EntryPoint {
|
||||||
// modal3.add(emr);
|
// modal3.add(emr);
|
||||||
// modal3.show();
|
// modal3.show();
|
||||||
// break;
|
// break;
|
||||||
//
|
|
||||||
//// case UPDATED_PROJECT:
|
// case UPDATED_PROJECT:
|
||||||
//// appManagerBus.fireEvent(new GetListOfRecordsEvent(RECORD_TYPE.CONCESSIONE,
|
// appManagerBus.fireEvent(new GetListOfRecordsEvent(RECORD_TYPE.CONCESSIONE,
|
||||||
//// mainTabPanel.getCurrentSortFilter()));
|
// mainTabPanel.getCurrentSortFilter()));
|
||||||
//// break;
|
// break;
|
||||||
// case DELETE_PROJECT:
|
// case DELETE_PROJECT:
|
||||||
//
|
//
|
||||||
// String htmlMsg = "Going to delete the project with:";
|
// String htmlMsg = "Going to delete the project with:";
|
||||||
|
@ -1098,11 +1115,10 @@ public class GeoPortalDataEntryApp implements EntryPoint {
|
||||||
// modal.show();
|
// modal.show();
|
||||||
// }
|
// }
|
||||||
// });
|
// });
|
||||||
//
|
|
||||||
// default:
|
default:
|
||||||
// break;
|
break;
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1153,7 +1169,7 @@ public class GeoPortalDataEntryApp implements EntryPoint {
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean checkAccessToOperationType(GcubeUserRole userRole, OPERATION_TYPE allowedAction,
|
private boolean checkAccessToOperationType(GcubeUserRole userRole, OPERATION_TYPE allowedAction,
|
||||||
ConcessioneDV concessione) {
|
String creatorUsername) {
|
||||||
|
|
||||||
boolean writeAnyAPassed = false;
|
boolean writeAnyAPassed = false;
|
||||||
boolean writeOwnPassed = false;
|
boolean writeOwnPassed = false;
|
||||||
|
@ -1166,11 +1182,11 @@ public class GeoPortalDataEntryApp implements EntryPoint {
|
||||||
// Case EDITOR
|
// Case EDITOR
|
||||||
// Going to check if the user can RW the record is owner of.
|
// Going to check if the user can RW the record is owner of.
|
||||||
if (userRole.isWriteOwn()) {
|
if (userRole.isWriteOwn()) {
|
||||||
String ownerUser = concessione.getCreationUser();
|
String ownerUser = creatorUsername;
|
||||||
if (ownerUser == null || ownerUser.isEmpty()) {
|
if (ownerUser == null || ownerUser.isEmpty()) {
|
||||||
writeOwnPassed = false;
|
writeOwnPassed = false;
|
||||||
} else if (ownerUser.compareTo(myRights.getMyUsername()) == 0) {
|
} else if (ownerUser.compareTo(myRights.getMyUsername()) == 0) {
|
||||||
// if my username is equal the owner of the concessione
|
// if my username is equal the owner of the project
|
||||||
writeOwnPassed = true;
|
writeOwnPassed = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,6 +5,7 @@ import java.util.List;
|
||||||
import org.gcube.application.geoportalcommon.shared.GeoNaItemRef;
|
import org.gcube.application.geoportalcommon.shared.GeoNaItemRef;
|
||||||
import org.gcube.application.geoportalcommon.shared.ResultSetPaginatedData;
|
import org.gcube.application.geoportalcommon.shared.ResultSetPaginatedData;
|
||||||
import org.gcube.application.geoportalcommon.shared.SearchingFilter;
|
import org.gcube.application.geoportalcommon.shared.SearchingFilter;
|
||||||
|
import org.gcube.application.geoportalcommon.shared.geoportal.project.LifecycleInformationDV;
|
||||||
import org.gcube.application.geoportalcommon.shared.geoportal.ucd.UseCaseDescriptorDV;
|
import org.gcube.application.geoportalcommon.shared.geoportal.ucd.UseCaseDescriptorDV;
|
||||||
import org.gcube.application.geoportalcommon.shared.products.ConcessioneDV;
|
import org.gcube.application.geoportalcommon.shared.products.ConcessioneDV;
|
||||||
import org.gcube.application.geoportalcommon.shared.products.content.WorkspaceContentDV;
|
import org.gcube.application.geoportalcommon.shared.products.content.WorkspaceContentDV;
|
||||||
|
@ -136,4 +137,14 @@ public interface GeoportalDataEntryService extends RemoteService {
|
||||||
*/
|
*/
|
||||||
List<UseCaseDescriptorDV> getListUseCaseDescriptors(List<String> handlersIds) throws Exception;
|
List<UseCaseDescriptorDV> getListUseCaseDescriptors(List<String> handlersIds) throws Exception;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the lifecycle info for project id.
|
||||||
|
*
|
||||||
|
* @param profileID the profile ID
|
||||||
|
* @param projectID the project ID
|
||||||
|
* @return the lifecycle info for project id
|
||||||
|
* @throws Exception the exception
|
||||||
|
*/
|
||||||
|
LifecycleInformationDV getLifecycleInfoForProjectId(String profileID, String projectID) throws Exception;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,6 +5,7 @@ import java.util.List;
|
||||||
import org.gcube.application.geoportalcommon.shared.GeoNaItemRef;
|
import org.gcube.application.geoportalcommon.shared.GeoNaItemRef;
|
||||||
import org.gcube.application.geoportalcommon.shared.ResultSetPaginatedData;
|
import org.gcube.application.geoportalcommon.shared.ResultSetPaginatedData;
|
||||||
import org.gcube.application.geoportalcommon.shared.SearchingFilter;
|
import org.gcube.application.geoportalcommon.shared.SearchingFilter;
|
||||||
|
import org.gcube.application.geoportalcommon.shared.geoportal.project.LifecycleInformationDV;
|
||||||
import org.gcube.application.geoportalcommon.shared.geoportal.ucd.UseCaseDescriptorDV;
|
import org.gcube.application.geoportalcommon.shared.geoportal.ucd.UseCaseDescriptorDV;
|
||||||
import org.gcube.application.geoportalcommon.shared.products.ConcessioneDV;
|
import org.gcube.application.geoportalcommon.shared.products.ConcessioneDV;
|
||||||
import org.gcube.application.geoportalcommon.shared.products.content.WorkspaceContentDV;
|
import org.gcube.application.geoportalcommon.shared.products.content.WorkspaceContentDV;
|
||||||
|
@ -67,4 +68,7 @@ public interface GeoportalDataEntryServiceAsync {
|
||||||
|
|
||||||
void getListUseCaseDescriptors(List<String> handlersIds, AsyncCallback<List<UseCaseDescriptorDV>> callback);
|
void getListUseCaseDescriptors(List<String> handlersIds, AsyncCallback<List<UseCaseDescriptorDV>> callback);
|
||||||
|
|
||||||
|
void getLifecycleInfoForProjectId(String profileID, String projectID,
|
||||||
|
AsyncCallback<LifecycleInformationDV> callback);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,7 +19,6 @@ public class ActionOnItemEvent<T extends DocumentDV> extends GwtEvent<ActionOnIt
|
||||||
public static Type<ActionOnItemEventHandler> TYPE = new Type<ActionOnItemEventHandler>();
|
public static Type<ActionOnItemEventHandler> TYPE = new Type<ActionOnItemEventHandler>();
|
||||||
private List<T> selectItems;
|
private List<T> selectItems;
|
||||||
private ACTION_ON_ITEM action;
|
private ACTION_ON_ITEM action;
|
||||||
private String profileID;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Instantiates a new action on item event.
|
* Instantiates a new action on item event.
|
||||||
|
@ -28,10 +27,9 @@ public class ActionOnItemEvent<T extends DocumentDV> extends GwtEvent<ActionOnIt
|
||||||
* @param doAction the do action
|
* @param doAction the do action
|
||||||
* @param profileID the profile ID
|
* @param profileID the profile ID
|
||||||
*/
|
*/
|
||||||
public ActionOnItemEvent(List<T> selectItems, ACTION_ON_ITEM doAction, String profileID) {
|
public ActionOnItemEvent(List<T> selectItems, ACTION_ON_ITEM doAction) {
|
||||||
this.selectItems = selectItems;
|
this.selectItems = selectItems;
|
||||||
this.action = doAction;
|
this.action = doAction;
|
||||||
this.profileID = profileID;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -84,10 +82,6 @@ public class ActionOnItemEvent<T extends DocumentDV> extends GwtEvent<ActionOnIt
|
||||||
return action;
|
return action;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getProfileID() {
|
|
||||||
return profileID;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
StringBuilder builder = new StringBuilder();
|
StringBuilder builder = new StringBuilder();
|
||||||
|
@ -95,8 +89,6 @@ public class ActionOnItemEvent<T extends DocumentDV> extends GwtEvent<ActionOnIt
|
||||||
builder.append(selectItems);
|
builder.append(selectItems);
|
||||||
builder.append(", action=");
|
builder.append(", action=");
|
||||||
builder.append(action);
|
builder.append(action);
|
||||||
builder.append(", profileID=");
|
|
||||||
builder.append(profileID);
|
|
||||||
builder.append("]");
|
builder.append("]");
|
||||||
return builder.toString();
|
return builder.toString();
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,6 +10,7 @@ import org.gcube.application.geoportalcommon.shared.SearchingFilter;
|
||||||
import org.gcube.application.geoportalcommon.shared.SearchingFilter.LOGICAL_OP;
|
import org.gcube.application.geoportalcommon.shared.SearchingFilter.LOGICAL_OP;
|
||||||
import org.gcube.application.geoportalcommon.shared.SearchingFilter.ORDER;
|
import org.gcube.application.geoportalcommon.shared.SearchingFilter.ORDER;
|
||||||
import org.gcube.application.geoportalcommon.shared.WhereClause;
|
import org.gcube.application.geoportalcommon.shared.WhereClause;
|
||||||
|
import org.gcube.application.geoportalcommon.shared.config.ACTION_ON_ITEM;
|
||||||
import org.gcube.application.geoportalcommon.shared.geoportal.ConfigurationDV;
|
import org.gcube.application.geoportalcommon.shared.geoportal.ConfigurationDV;
|
||||||
import org.gcube.application.geoportalcommon.shared.geoportal.DocumentDV;
|
import org.gcube.application.geoportalcommon.shared.geoportal.DocumentDV;
|
||||||
import org.gcube.application.geoportalcommon.shared.geoportal.config.GcubeProfileDV;
|
import org.gcube.application.geoportalcommon.shared.geoportal.config.GcubeProfileDV;
|
||||||
|
@ -18,6 +19,7 @@ import org.gcube.application.geoportalcommon.shared.geoportal.ucd.GEOPORTAL_DATA
|
||||||
import org.gcube.application.geoportalcommon.shared.geoportal.ucd.HandlerDeclarationDV;
|
import org.gcube.application.geoportalcommon.shared.geoportal.ucd.HandlerDeclarationDV;
|
||||||
import org.gcube.application.geoportalcommon.shared.geoportal.ucd.UseCaseDescriptorDV;
|
import org.gcube.application.geoportalcommon.shared.geoportal.ucd.UseCaseDescriptorDV;
|
||||||
import org.gcube.portlets.user.geoportaldataentry.client.GeoPortalClientCaches.CacheSearchingFilterParametersFromConfig;
|
import org.gcube.portlets.user.geoportaldataentry.client.GeoPortalClientCaches.CacheSearchingFilterParametersFromConfig;
|
||||||
|
import org.gcube.portlets.user.geoportaldataentry.client.events.ActionOnItemEvent;
|
||||||
import org.gcube.portlets.user.geoportaldataentry.client.events.CreateNewProjectEvent;
|
import org.gcube.portlets.user.geoportaldataentry.client.events.CreateNewProjectEvent;
|
||||||
import org.gcube.portlets.user.geoportaldataentry.client.events.GetListOfRecordsEvent;
|
import org.gcube.portlets.user.geoportaldataentry.client.events.GetListOfRecordsEvent;
|
||||||
import org.gcube.portlets.user.geoportaldataentry.client.ui.form.GeonaDataEntryMainForm;
|
import org.gcube.portlets.user.geoportaldataentry.client.ui.form.GeonaDataEntryMainForm;
|
||||||
|
@ -353,17 +355,14 @@ public class GeonaMainTabPanel extends Composite {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onClick(ClickEvent event) {
|
public void onClick(ClickEvent event) {
|
||||||
List<DocumentDV> listConcessioni = null;
|
List<DocumentDV> listDocuments = null;
|
||||||
if (grpw != null && grpw.getSelectItems() != null) {
|
if (grpw != null && grpw.getSelectItems() != null) {
|
||||||
listConcessioni = grpw.getSelectItems();
|
listDocuments = grpw.getSelectItems();
|
||||||
}
|
}
|
||||||
|
|
||||||
Window.alert("ACTION_ON_ITEM.VIEW_REPORT must be implemented");
|
appManagerBus
|
||||||
/*
|
.fireEvent(new ActionOnItemEvent<DocumentDV>(listDocuments, ACTION_ON_ITEM.VIEW_REPORT));
|
||||||
* appManagerBus .fireEvent(new
|
|
||||||
* ActionOnItemEvent<ConcessioneDV>(listConcessioni,
|
|
||||||
* ACTION_ON_ITEM.VIEW_REPORT));
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -1,57 +0,0 @@
|
||||||
package org.gcube.portlets.user.geoportaldataentry.client.ui.report;
|
|
||||||
|
|
||||||
import org.gcube.application.geoportalcommon.shared.products.model.ValidationReportDV;
|
|
||||||
import org.gcube.application.geoportalcommon.shared.products.model.ValidationReportDV.ValidationStatus;
|
|
||||||
import org.gcube.portlets.user.geoportaldataentry.client.ui.utils.HTMLUtil;
|
|
||||||
import org.gcube.portlets.user.geoportaldataentry.client.ui.utils.HTMLUtil.HTML_TAG;
|
|
||||||
|
|
||||||
import com.google.gwt.user.client.ui.FlowPanel;
|
|
||||||
import com.google.gwt.user.client.ui.HTML;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The Class BuildValidationReport.
|
|
||||||
*
|
|
||||||
* @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
|
|
||||||
*
|
|
||||||
* Sep 14, 2021
|
|
||||||
*/
|
|
||||||
public class BuildValidationReport extends FlowPanel {
|
|
||||||
private HTML recordPublished = new HTML();
|
|
||||||
private ReportTemplateToHTML rTToHTML;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Instantiates a new builds the validation report.
|
|
||||||
*
|
|
||||||
* @param validationReport the validation report
|
|
||||||
*/
|
|
||||||
public BuildValidationReport(ValidationReportDV validationReport) {
|
|
||||||
|
|
||||||
if(validationReport==null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
ValidationStatus status = validationReport.getStatus();
|
|
||||||
switch (status) {
|
|
||||||
case PASSED:
|
|
||||||
String success = HTMLUtil.getHTMLElement(HTML_TAG.span, 14, "32CD32", null, "SUCCESS");
|
|
||||||
recordPublished.setHTML("Record Published with " + success);
|
|
||||||
break;
|
|
||||||
case WARNING:
|
|
||||||
String warning = HTMLUtil.getHTMLElement(HTML_TAG.span, 14, "FF8000", null, "WARNING");
|
|
||||||
recordPublished.setHTML("Record Published with " + warning);
|
|
||||||
|
|
||||||
break;
|
|
||||||
case ERROR:
|
|
||||||
String error = HTMLUtil.getHTMLElement(HTML_TAG.span, 14, "FF0000", "bold", "ERROR");
|
|
||||||
recordPublished.setHTML(error + " on publishing the Record");
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
rTToHTML = new ReportTemplateToHTML(validationReport.getAsJSONString(), true);
|
|
||||||
|
|
||||||
add(recordPublished);
|
|
||||||
add(rTToHTML);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -0,0 +1,134 @@
|
||||||
|
package org.gcube.portlets.user.geoportaldataentry.client.ui.report;
|
||||||
|
|
||||||
|
import org.gcube.application.geoportalcommon.shared.GeoNaItemRef;
|
||||||
|
import org.gcube.application.geoportalcommon.shared.geoportal.project.LifecycleInformationDV;
|
||||||
|
import org.gcube.portlets.user.geoportaldataentry.client.GeoportalDataEntryServiceAsync;
|
||||||
|
import org.gcube.portlets.user.geoportaldataentry.client.ui.utils.HTMLUtil;
|
||||||
|
import org.gcube.portlets.user.geoportaldataentry.client.ui.utils.HTMLUtil.HTML_TAG;
|
||||||
|
import org.gcube.portlets.user.geoportaldataentry.client.ui.utils.LoaderIcon;
|
||||||
|
|
||||||
|
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.HorizontalPanel;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Class LifecycleInformationPanel.
|
||||||
|
*
|
||||||
|
* @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
|
||||||
|
*
|
||||||
|
* Sep 1, 2022
|
||||||
|
*/
|
||||||
|
public class LifecycleInformationPanel extends FlowPanel {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instantiates a new lifecycle information panel.
|
||||||
|
*
|
||||||
|
* @param projectID the project ID
|
||||||
|
* @param profileID the profile ID
|
||||||
|
* @param projectAsJSON the project as JSON
|
||||||
|
* @param lcDV the lc DV
|
||||||
|
* @param showGoToProject the show go to project
|
||||||
|
*/
|
||||||
|
public LifecycleInformationPanel(String projectID, String profileID, String projectAsJSON,
|
||||||
|
LifecycleInformationDV lcDV, boolean showGoToProject) {
|
||||||
|
|
||||||
|
add(new HTML("Project id: " + (projectID)));
|
||||||
|
|
||||||
|
HTML htmlPhase = new HTML();
|
||||||
|
htmlPhase.setHTML("Current phase: <b>" + lcDV.getPhase() + "</b>");
|
||||||
|
|
||||||
|
HTML htmlStep = new HTML();
|
||||||
|
htmlStep.setHTML("Last invoked step: <b>" + lcDV.getLastInvokedStep() + "</b>");
|
||||||
|
|
||||||
|
HTML lastOperationStatus = new HTML();
|
||||||
|
String lastOperationMsg = "Last operation status: ";
|
||||||
|
switch (lcDV.getLastOperationStatus()) {
|
||||||
|
case OK: {
|
||||||
|
lastOperationMsg += HTMLUtil.getHTMLElement(HTML_TAG.span, 14, "32CD32", null,
|
||||||
|
lcDV.getLastOperationStatus().toString());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case WARNING: {
|
||||||
|
lastOperationMsg += HTMLUtil.getHTMLElement(HTML_TAG.span, 14, "FF8000", null,
|
||||||
|
lcDV.getLastOperationStatus().toString());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case ERROR: {
|
||||||
|
lastOperationMsg += HTMLUtil.getHTMLElement(HTML_TAG.span, 14, "FF0000", "bold",
|
||||||
|
lcDV.getLastOperationStatus().toString());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
lastOperationMsg += HTMLUtil.getHTMLElement(HTML_TAG.span, 14, "FF0000", "bold",
|
||||||
|
lcDV.getLastOperationStatus().toString());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
lastOperationStatus.setHTML(lastOperationMsg);
|
||||||
|
|
||||||
|
// switch (lcDV.getLastOperationStatus()) {
|
||||||
|
// case OK: {
|
||||||
|
// String success = HTMLUtil.getHTMLElement(HTML_TAG.span, 14, "32CD32", null, "SUCCESS");
|
||||||
|
// String msg = lcDV.getLastInvokedStep() + " terminated with: " + success;
|
||||||
|
// lastOperationStatus.setHTML(msg);
|
||||||
|
// break;
|
||||||
|
// }
|
||||||
|
// case WARNING: {
|
||||||
|
// String warning = HTMLUtil.getHTMLElement(HTML_TAG.span, 14, "FF8000", null, "WARNING");
|
||||||
|
// String msg = lcDV.getLastInvokedStep() + " terminated with: " + warning;
|
||||||
|
// lastOperationStatus.setHTML(msg);
|
||||||
|
// break;
|
||||||
|
// }
|
||||||
|
// case ERROR: {
|
||||||
|
// String error = HTMLUtil.getHTMLElement(HTML_TAG.span, 14, "FF0000", "bold", "ERROR");
|
||||||
|
// String msg = lcDV.getLastInvokedStep() + " terminated with: " + error;
|
||||||
|
// lastOperationStatus.setHTML(msg);
|
||||||
|
// break;
|
||||||
|
// }
|
||||||
|
// default:
|
||||||
|
// break;
|
||||||
|
// }
|
||||||
|
|
||||||
|
add(htmlPhase);
|
||||||
|
add(htmlStep);
|
||||||
|
add(lastOperationStatus);
|
||||||
|
|
||||||
|
HTML htmlEvent = new HTML();
|
||||||
|
htmlEvent.setHTML("Last event step: <b>" + lcDV.getLastEvent() + "</b>");
|
||||||
|
|
||||||
|
if (showGoToProject) {
|
||||||
|
final HorizontalPanel hpGetLink = new HorizontalPanel();
|
||||||
|
final LoaderIcon lc = new LoaderIcon("Get link...");
|
||||||
|
hpGetLink.add(lc);
|
||||||
|
add(hpGetLink);
|
||||||
|
GeoportalDataEntryServiceAsync.Util.getInstance().getLinksFor(projectID, profileID,
|
||||||
|
new AsyncCallback<GeoNaItemRef>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFailure(Throwable caught) {
|
||||||
|
hpGetLink.clear();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSuccess(GeoNaItemRef result) {
|
||||||
|
hpGetLink.clear();
|
||||||
|
String theURL = result.getRestrictedLink().getShortURL() != null
|
||||||
|
? result.getRestrictedLink().getShortURL()
|
||||||
|
: result.getRestrictedLink().getCompleteURL();
|
||||||
|
String htmlLink = "<div>Go to project on Map: <a href=" + theURL + " target=\"_blank\">"
|
||||||
|
+ theURL + "</a></div>";
|
||||||
|
HTML html = new HTML(htmlLink);
|
||||||
|
hpGetLink.add(html);
|
||||||
|
// modal.add(html);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if (projectAsJSON != null)
|
||||||
|
add(new ReportTemplateToHTML("Project", projectAsJSON, false));
|
||||||
|
if (lcDV.getAsJSONString() != null)
|
||||||
|
add(new ReportTemplateToHTML("Lifecycle Report", lcDV.getAsJSONString(), false));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -3,6 +3,7 @@ package org.gcube.portlets.user.geoportaldataentry.client.ui.report;
|
||||||
import org.gcube.portlets.user.geoportaldataentry.client.ui.utils.ExternalLib;
|
import org.gcube.portlets.user.geoportaldataentry.client.ui.utils.ExternalLib;
|
||||||
|
|
||||||
import com.github.gwtbootstrap.client.ui.AccordionGroup;
|
import com.github.gwtbootstrap.client.ui.AccordionGroup;
|
||||||
|
import com.github.gwtbootstrap.client.ui.Label;
|
||||||
import com.github.gwtbootstrap.client.ui.Paragraph;
|
import com.github.gwtbootstrap.client.ui.Paragraph;
|
||||||
import com.github.gwtbootstrap.client.ui.constants.IconType;
|
import com.github.gwtbootstrap.client.ui.constants.IconType;
|
||||||
import com.github.gwtbootstrap.client.ui.event.HiddenEvent;
|
import com.github.gwtbootstrap.client.ui.event.HiddenEvent;
|
||||||
|
@ -54,17 +55,24 @@ public class ReportTemplateToHTML extends Composite {
|
||||||
@UiField
|
@UiField
|
||||||
Paragraph reportJSON;
|
Paragraph reportJSON;
|
||||||
|
|
||||||
|
@UiField
|
||||||
|
Label labelToReport;
|
||||||
|
|
||||||
boolean toJSONERROR = false;
|
boolean toJSONERROR = false;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Instantiates a new report template to HTML.
|
* Instantiates a new report template to HTML.
|
||||||
*
|
*
|
||||||
* @param reportAsJSON the report as JSON
|
* @param documentLabel the document label
|
||||||
|
* @param theJSONDocument the the JSON document
|
||||||
|
* @param openJSONReport the open JSON report
|
||||||
*/
|
*/
|
||||||
public ReportTemplateToHTML(String reportAsJSON, boolean openJSONReport) {
|
public ReportTemplateToHTML(String documentLabel, String theJSONDocument, boolean openJSONReport) {
|
||||||
initWidget(uiBinder.createAndBindUi(this));
|
initWidget(uiBinder.createAndBindUi(this));
|
||||||
vpContainer.setVisible(false);
|
vpContainer.setVisible(false);
|
||||||
showReportAsJSON.setDefaultOpen(openJSONReport);
|
showReportAsJSON.setDefaultOpen(openJSONReport);
|
||||||
|
documentLabel = documentLabel == null ? "Document" : documentLabel;
|
||||||
|
labelToReport.setText(documentLabel);
|
||||||
// showReportAsJSON.setIconPosition(IconPosition.RIGHT);
|
// showReportAsJSON.setIconPosition(IconPosition.RIGHT);
|
||||||
|
|
||||||
if (openJSONReport) {
|
if (openJSONReport) {
|
||||||
|
@ -91,13 +99,12 @@ public class ReportTemplateToHTML extends Composite {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (theJSONDocument != null) {
|
||||||
if (reportAsJSON != null) {
|
GWT.log("report is: " + theJSONDocument);
|
||||||
GWT.log("report is: " + reportAsJSON);
|
|
||||||
vpContainer.setVisible(true);
|
vpContainer.setVisible(true);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
JSONValue jsonObj = JSONParser.parse(reportAsJSON);
|
JSONValue jsonObj = JSONParser.parse(theJSONDocument);
|
||||||
JSONObject json = (JSONObject) jsonObj;
|
JSONObject json = (JSONObject) jsonObj;
|
||||||
JSONValue valueChildren = json.get("children");
|
JSONValue valueChildren = json.get("children");
|
||||||
JSONArray jsonChildren = (JSONArray) valueChildren;
|
JSONArray jsonChildren = (JSONArray) valueChildren;
|
||||||
|
@ -119,7 +126,7 @@ public class ReportTemplateToHTML extends Composite {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
GWT.log("error: " + e.getMessage());
|
GWT.log("error: " + e.getMessage());
|
||||||
}
|
}
|
||||||
reportJSON.add(new HTML("<pre>" + ExternalLib.toPrettyPrintJSON(reportAsJSON) + "</pre>"));
|
reportJSON.add(new HTML("<pre>" + ExternalLib.toPrettyPrintJSON(theJSONDocument) + "</pre>"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -14,10 +14,10 @@
|
||||||
<g:HTMLPanel>
|
<g:HTMLPanel>
|
||||||
<g:VerticalPanel ui:field="vpContainer"
|
<g:VerticalPanel ui:field="vpContainer"
|
||||||
addStyleNames="{style.margin-top-10}">
|
addStyleNames="{style.margin-top-10}">
|
||||||
<b:Label>Publication Report: </b:Label>
|
<b:Label ui:field="labelToReport">Report: </b:Label>
|
||||||
<g:VerticalPanel ui:field="htmlContainer"
|
<g:VerticalPanel ui:field="htmlContainer"
|
||||||
addStyleNames="{style.margin-top-10}"></g:VerticalPanel>
|
addStyleNames="{style.margin-top-10}"></g:VerticalPanel>
|
||||||
<b:AccordionGroup heading="Show Report as JSON" ui:field="showReportAsJSON">
|
<b:AccordionGroup heading="Show as JSON" ui:field="showReportAsJSON">
|
||||||
<b:Paragraph ui:field="reportJSON"></b:Paragraph>
|
<b:Paragraph ui:field="reportJSON"></b:Paragraph>
|
||||||
</b:AccordionGroup>
|
</b:AccordionGroup>
|
||||||
|
|
||||||
|
|
|
@ -157,7 +157,9 @@ public class GeoportalDataEntryServiceImpl extends RemoteServiceServlet implemen
|
||||||
try {
|
try {
|
||||||
LifecycleInformation lifecycleInfo = theProject.getLifecycleInformation();
|
LifecycleInformation lifecycleInfo = theProject.getLifecycleInformation();
|
||||||
LifecycleInformationDV liDV = ConvertToDataValueObjectModel.toLifecycleInformationDV(lifecycleInfo);
|
LifecycleInformationDV liDV = ConvertToDataValueObjectModel.toLifecycleInformationDV(lifecycleInfo);
|
||||||
return new CommitReport(theProject.getId(), liDV);
|
|
||||||
|
return new CommitReport(theProject.getId(), theProject.getProfileID(), theProject.getTheDocument().toJson(),
|
||||||
|
liDV);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new Exception("Error occurred on loading LifecycleInformation for the project: " + theProject.getId()
|
throw new Exception("Error occurred on loading LifecycleInformation for the project: " + theProject.getId()
|
||||||
+ ". Error: " + e.getMessage());
|
+ ". Error: " + e.getMessage());
|
||||||
|
@ -401,8 +403,8 @@ public class GeoportalDataEntryServiceImpl extends RemoteServiceServlet implemen
|
||||||
|
|
||||||
searchedData.setData(toReturnList);
|
searchedData.setData(toReturnList);
|
||||||
|
|
||||||
|
// TODO BUGGY WORKAROUND. BLOCKED BY #22487 IT MUST BE REMOVE AFTER THE QUERY
|
||||||
// TODO BUGGY WORKAROUND. BLOCKED BY #22487 IT MUST BE REMOVE AFTER THE QUERY COUNT
|
// COUNT
|
||||||
// AND LIST.SIZE BY QUERY WILL BE AVAILABLE IN THE SERVICE
|
// AND LIST.SIZE BY QUERY WILL BE AVAILABLE IN THE SERVICE
|
||||||
if (filter.getConditions() != null) {
|
if (filter.getConditions() != null) {
|
||||||
searchedData.setTotalItems(toReturnList.size());
|
searchedData.setTotalItems(toReturnList.size());
|
||||||
|
@ -745,7 +747,7 @@ public class GeoportalDataEntryServiceImpl extends RemoteServiceServlet implemen
|
||||||
// DEV MODE
|
// DEV MODE
|
||||||
if (!SessionUtil.isIntoPortal()) {
|
if (!SessionUtil.isIntoPortal()) {
|
||||||
LOG.warn("OUT OF PORTAL - DEV MODE detected");
|
LOG.warn("OUT OF PORTAL - DEV MODE detected");
|
||||||
GcubeUserRole myRole = GcubeUserRole.DATA_EDITOR;
|
GcubeUserRole myRole = GcubeUserRole.DATA_MANAGER;
|
||||||
|
|
||||||
for (RoleRights roleRight : listUserRightsForRole) {
|
for (RoleRights roleRight : listUserRightsForRole) {
|
||||||
if (roleRight.getUserRole().equals(myRole)) {
|
if (roleRight.getUserRole().equals(myRole)) {
|
||||||
|
@ -945,4 +947,24 @@ public class GeoportalDataEntryServiceImpl extends RemoteServiceServlet implemen
|
||||||
throw new Exception("An error occurred when getting list of Use Case Descriptors", e);
|
throw new Exception("An error occurred when getting list of Use Case Descriptors", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public LifecycleInformationDV getLifecycleInfoForProjectId(String profileID, String projectID) throws Exception {
|
||||||
|
LOG.info("getLifecycleInfoForProjectId called for profileID {}, projectID {} " + profileID, projectID);
|
||||||
|
|
||||||
|
ProjectsCaller client = GeoportalClientCaller.projects();
|
||||||
|
SessionUtil.getCurrentContext(getThreadLocalRequest(), true);
|
||||||
|
try {
|
||||||
|
|
||||||
|
Project project = client.getProjectByID(profileID, projectID);
|
||||||
|
return ConvertToDataValueObjectModel.toLifecycleInformationDV(project.getLifecycleInformation());
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
String error = "Error on retrieving the LifecycleInfo for profileID " + profileID + " and projectID "
|
||||||
|
+ projectID;
|
||||||
|
LOG.error(error, e);
|
||||||
|
throw new Exception(error + ". Refresh and try again or contact the support");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,6 +19,8 @@ public class CommitReport implements Serializable {
|
||||||
private static final long serialVersionUID = -3606902201347318287L;
|
private static final long serialVersionUID = -3606902201347318287L;
|
||||||
public String projectID;
|
public String projectID;
|
||||||
private LifecycleInformationDV lifecycleInformation;
|
private LifecycleInformationDV lifecycleInformation;
|
||||||
|
private String profileID;
|
||||||
|
private String projectAsJSON;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Instantiates a new commit report.
|
* Instantiates a new commit report.
|
||||||
|
@ -27,8 +29,11 @@ public class CommitReport implements Serializable {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public CommitReport(String projectID, LifecycleInformationDV lifecycleInfo) {
|
public CommitReport(String projectID, String profileID, String projectAsJSON,
|
||||||
|
LifecycleInformationDV lifecycleInfo) {
|
||||||
this.projectID = projectID;
|
this.projectID = projectID;
|
||||||
|
this.profileID = profileID;
|
||||||
|
this.projectAsJSON = projectAsJSON;
|
||||||
this.lifecycleInformation = lifecycleInfo;
|
this.lifecycleInformation = lifecycleInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -41,12 +46,29 @@ public class CommitReport implements Serializable {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setProjectID(String projectID) {
|
public void setProjectID(String projectID) {
|
||||||
|
this.projectID = projectID;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setLifecycleInformation(LifecycleInformationDV lifecycleInformation) {
|
public void setLifecycleInformation(LifecycleInformationDV lifecycleInformation) {
|
||||||
this.lifecycleInformation = lifecycleInformation;
|
this.lifecycleInformation = lifecycleInformation;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getProfileID() {
|
||||||
|
return profileID;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setProfileID(String profileID) {
|
||||||
|
this.profileID = profileID;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getProjectAsJSON() {
|
||||||
|
return projectAsJSON;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setProjectAsJSON(String projectAsJSON) {
|
||||||
|
this.projectAsJSON = projectAsJSON;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
StringBuilder builder = new StringBuilder();
|
StringBuilder builder = new StringBuilder();
|
||||||
|
@ -54,6 +76,10 @@ public class CommitReport implements Serializable {
|
||||||
builder.append(projectID);
|
builder.append(projectID);
|
||||||
builder.append(", lifecycleInformation=");
|
builder.append(", lifecycleInformation=");
|
||||||
builder.append(lifecycleInformation);
|
builder.append(lifecycleInformation);
|
||||||
|
builder.append(", profileID=");
|
||||||
|
builder.append(profileID);
|
||||||
|
builder.append(", projectAsJSON=");
|
||||||
|
builder.append(projectAsJSON);
|
||||||
builder.append("]");
|
builder.append("]");
|
||||||
return builder.toString();
|
return builder.toString();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue