#23390 Implementing facility: "Clone Project"
This commit is contained in:
parent
0cd6880a54
commit
eb6a8ff587
|
@ -1,6 +1,6 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<classpath>
|
<classpath>
|
||||||
<classpathentry including="**/*.java" kind="src" output="target/geoportal-data-entry-app-2.1.0-SNAPSHOT/WEB-INF/classes" path="src/main/java">
|
<classpathentry including="**/*.java" kind="src" output="target/geoportal-data-entry-app-2.2.0-SNAPSHOT/WEB-INF/classes" path="src/main/java">
|
||||||
<attributes>
|
<attributes>
|
||||||
<attribute name="optional" value="true"/>
|
<attribute name="optional" value="true"/>
|
||||||
<attribute name="maven.pomderived" value="true"/>
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
|
@ -30,5 +30,5 @@
|
||||||
<attribute name="maven.pomderived" value="true"/>
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
</attributes>
|
</attributes>
|
||||||
</classpathentry>
|
</classpathentry>
|
||||||
<classpathentry kind="output" path="target/geoportal-data-entry-app-2.1.0-SNAPSHOT/WEB-INF/classes"/>
|
<classpathentry kind="output" path="target/geoportal-data-entry-app-2.2.0-SNAPSHOT/WEB-INF/classes"/>
|
||||||
</classpath>
|
</classpath>
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
eclipse.preferences.version=1
|
eclipse.preferences.version=1
|
||||||
jarsExcludedFromWebInfLib=
|
jarsExcludedFromWebInfLib=
|
||||||
lastWarOutDir=/home/francescomangiacrapa/git/geoportal-data-entry-app/target/geoportal-data-entry-app-2.1.0-SNAPSHOT
|
lastWarOutDir=/home/francescomangiacrapa/git/geoportal-data-entry-app/target/geoportal-data-entry-app-2.2.0-SNAPSHOT
|
||||||
warSrcDir=src/main/webapp
|
warSrcDir=src/main/webapp
|
||||||
warSrcDirIsOutput=false
|
warSrcDirIsOutput=false
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?><project-modules id="moduleCoreId" project-version="1.5.0">
|
<?xml version="1.0" encoding="UTF-8"?><project-modules id="moduleCoreId" project-version="1.5.0">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -22,8 +22,10 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<wb-module deploy-name="geoportal-data-entry-app-2.1.0-SNAPSHOT">
|
|
||||||
|
<wb-module deploy-name="geoportal-data-entry-app-2.2.0-SNAPSHOT">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -47,7 +49,8 @@
|
||||||
|
|
||||||
|
|
||||||
<wb-resource deploy-path="/" source-path="/target/m2e-wtp/web-resources"/>
|
<wb-resource deploy-path="/" source-path="/target/m2e-wtp/web-resources"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -71,7 +74,8 @@
|
||||||
|
|
||||||
|
|
||||||
<wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/>
|
<wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -95,10 +99,11 @@
|
||||||
|
|
||||||
|
|
||||||
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
|
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
|
||||||
<dependent-module archiveName="geoportal-data-common-1.3.0.jar" deploy-path="/WEB-INF/lib" handle="module:/resource/geoportal-data-common/geoportal-data-common">
|
<dependent-module archiveName="metadata-profile-discovery-1.0.0.jar" deploy-path="/WEB-INF/lib" handle="module:/resource/metadata-profile-discovery/metadata-profile-discovery">
|
||||||
<dependency-type>uses</dependency-type>
|
<dependency-type>uses</dependency-type>
|
||||||
</dependent-module>
|
</dependent-module>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -122,7 +127,8 @@
|
||||||
|
|
||||||
|
|
||||||
<property name="context-root" value="geoportal-data-entry-app"/>
|
<property name="context-root" value="geoportal-data-entry-app"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -146,7 +152,8 @@
|
||||||
|
|
||||||
|
|
||||||
<property name="java-output-path" value="/geoportal-data-entry-app/target/geoportal-data-entry-app-2.0.0-SNAPSHOT/WEB-INF/classes"/>
|
<property name="java-output-path" value="/geoportal-data-entry-app/target/geoportal-data-entry-app-2.0.0-SNAPSHOT/WEB-INF/classes"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -170,7 +177,8 @@
|
||||||
|
|
||||||
|
|
||||||
</wb-module>
|
</wb-module>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,12 @@
|
||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
|
## [v2.2.0-SNAPSHOT] - 2022-05-25
|
||||||
|
|
||||||
|
#### Enhancements
|
||||||
|
|
||||||
|
- [#23390] Implemented facility: "Clone Project"
|
||||||
|
|
||||||
## [v2.1.0] - 2021-11-24
|
## [v2.1.0] - 2021-11-24
|
||||||
|
|
||||||
#### Enhancements
|
#### Enhancements
|
||||||
|
|
28
pom.xml
28
pom.xml
|
@ -14,7 +14,7 @@
|
||||||
<groupId>org.gcube.portlets.user</groupId>
|
<groupId>org.gcube.portlets.user</groupId>
|
||||||
<artifactId>geoportal-data-entry-app</artifactId>
|
<artifactId>geoportal-data-entry-app</artifactId>
|
||||||
<packaging>war</packaging>
|
<packaging>war</packaging>
|
||||||
<version>2.1.0</version>
|
<version>2.2.0-SNAPSHOT</version>
|
||||||
<name>GeoPortal Data Entry App</name>
|
<name>GeoPortal Data Entry App</name>
|
||||||
<description>The GeoPortal Data Entry App is an application to build the web forms for data entries needed to GeoNa project</description>
|
<description>The GeoPortal Data Entry App is an application to build the web forms for data entries needed to GeoNa project</description>
|
||||||
<scm>
|
<scm>
|
||||||
|
@ -25,7 +25,7 @@
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<!-- Convenience property to set the GWT version -->
|
<!-- Convenience property to set the GWT version -->
|
||||||
<gwtVersion>2.9.0</gwtVersion>
|
<gwtVersion>2.8.2</gwtVersion>
|
||||||
<!-- GWT needs at least java 1.6 -->
|
<!-- GWT needs at least java 1.6 -->
|
||||||
<webappDirectory>${project.build.directory}/${project.build.finalName}</webappDirectory>
|
<webappDirectory>${project.build.directory}/${project.build.finalName}</webappDirectory>
|
||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
@ -98,6 +98,9 @@
|
||||||
<artifactId>gwt-bootstrap</artifactId>
|
<artifactId>gwt-bootstrap</artifactId>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.gcube.portlets.widgets</groupId>
|
<groupId>org.gcube.portlets.widgets</groupId>
|
||||||
<artifactId>metadata-profile-form-builder-widget</artifactId>
|
<artifactId>metadata-profile-form-builder-widget</artifactId>
|
||||||
|
@ -136,16 +139,31 @@
|
||||||
<version>[1.0.0, 2.0.0-SNAPSHOT)</version>
|
<version>[1.0.0, 2.0.0-SNAPSHOT)</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- FORCING THESE DEPENDENCIES IN ORDER TO USE THE "OLD" CONCESSIONI CLIENT/MODEL -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.gcube.application</groupId>
|
||||||
|
<artifactId>geoportal-common</artifactId>
|
||||||
|
<version>[1.0.0,1.0.8-SNAPSHOT)</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.gcube.common</groupId>
|
||||||
|
<artifactId>metadata-profile-discovery</artifactId>
|
||||||
|
<version>[1.0.0-SNAPSHOT, 1.1.0-SNAPSHOT)</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.gcube.application</groupId>
|
<groupId>org.gcube.application</groupId>
|
||||||
<artifactId>geoportal-data-common</artifactId>
|
<artifactId>geoportal-data-common</artifactId>
|
||||||
<version>[1.0.0-SNAPSHOT, 2.0.0-SNAPSHOT)</version>
|
<version>[1.0.0-SNAPSHOT, 1.5.0-SNAPSHOT)</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.gcube.application</groupId>
|
<groupId>org.gcube.application</groupId>
|
||||||
<artifactId>geoportal-client</artifactId>
|
<artifactId>geoportal-client</artifactId>
|
||||||
<version>[1.0.0, 2.0.0-SNAPSHOT)</version>
|
<version>[1.0.0, 1.0.7-SNAPSHOT)</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
<exclusions>
|
<exclusions>
|
||||||
<exclusion>
|
<exclusion>
|
||||||
|
@ -154,6 +172,8 @@
|
||||||
</exclusion>
|
</exclusion>
|
||||||
</exclusions>
|
</exclusions>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<!-- END FORCING -->
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.gcube.portlets.user</groupId>
|
<groupId>org.gcube.portlets.user</groupId>
|
||||||
<artifactId>gcube-widgets</artifactId>
|
<artifactId>gcube-widgets</artifactId>
|
||||||
|
|
|
@ -108,7 +108,7 @@ public class GeoPortalDataEntryApp implements EntryPoint {
|
||||||
private UserRights myRights = null;
|
private UserRights myRights = null;
|
||||||
|
|
||||||
private LoaderIcon loader = new LoaderIcon("Loading Application...");
|
private LoaderIcon loader = new LoaderIcon("Loading Application...");
|
||||||
|
|
||||||
private List<ItemField> displayFields = new ArrayList<ItemField>();
|
private List<ItemField> displayFields = new ArrayList<ItemField>();
|
||||||
private List<ItemField> sortByFields = new ArrayList<ItemField>();
|
private List<ItemField> sortByFields = new ArrayList<ItemField>();
|
||||||
private List<ItemField> searchByFields = new ArrayList<ItemField>();
|
private List<ItemField> searchByFields = new ArrayList<ItemField>();
|
||||||
|
@ -120,152 +120,148 @@ public class GeoPortalDataEntryApp implements EntryPoint {
|
||||||
|
|
||||||
RootPanel.get(DIV_PORTLET_ID).add(loader);
|
RootPanel.get(DIV_PORTLET_ID).add(loader);
|
||||||
|
|
||||||
/*GeoportalDataEntryServiceAsync.Util.getInstance().listDisplayFields(new AsyncCallback<List<ItemField>>() {
|
/*
|
||||||
|
* GeoportalDataEntryServiceAsync.Util.getInstance().listDisplayFields(new
|
||||||
|
* AsyncCallback<List<ItemField>>() {
|
||||||
|
*
|
||||||
|
* @Override public void onFailure(Throwable caught) {
|
||||||
|
* Window.alert(caught.getMessage());
|
||||||
|
*
|
||||||
|
* }
|
||||||
|
*
|
||||||
|
* @Override public void onSuccess(List<ItemField> result) {
|
||||||
|
*
|
||||||
|
* for (ItemField itemField : result) { if(itemField.isDisplayAsResult()) {
|
||||||
|
* displayFields.add(itemField); }
|
||||||
|
*
|
||||||
|
* if(itemField.isSearchable()) { searchByFields.add(itemField); }
|
||||||
|
*
|
||||||
|
* if(itemField.isSortable()) { sortByFields.add(itemField); } }
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* GWT.log("List display fields: "+result); SearchingFilter initialSortFilter =
|
||||||
|
* new SearchingFilter(); initialSortFilter.setOrder(ORDER.ASC);
|
||||||
|
* initialSortFilter.setOrderByFields(Arrays.asList(new ItemField("Name",
|
||||||
|
* Arrays.asList("name"), true, true, true)));
|
||||||
|
*
|
||||||
|
* displayFields = result; mainTabPanel = new GeonaMainTabPanel(appManagerBus,
|
||||||
|
* displayFields, sortByFields, searchByFields, initialSortFilter);
|
||||||
|
* mainTabPanel.setLoaderVisible("Loading...", true);
|
||||||
|
*
|
||||||
|
* geoNaMainForm = new GeonaDataEntryMainForm(appManagerBus);
|
||||||
|
* mainTabPanel.addFormPanel(geoNaMainForm);
|
||||||
|
*
|
||||||
|
* } });
|
||||||
|
*/
|
||||||
|
|
||||||
@Override
|
GeoportalDataEntryServiceAsync.Util.getInstance()
|
||||||
public void onFailure(Throwable caught) {
|
.readDataViewerConfig(new AsyncCallback<GNADataEntryExtConfigProfile>() {
|
||||||
Window.alert(caught.getMessage());
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onSuccess(List<ItemField> result) {
|
|
||||||
|
|
||||||
for (ItemField itemField : result) {
|
|
||||||
if(itemField.isDisplayAsResult()) {
|
|
||||||
displayFields.add(itemField);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(itemField.isSearchable()) {
|
|
||||||
searchByFields.add(itemField);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(itemField.isSortable()) {
|
|
||||||
sortByFields.add(itemField);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
GWT.log("List display fields: "+result);
|
|
||||||
SearchingFilter initialSortFilter = new SearchingFilter();
|
|
||||||
initialSortFilter.setOrder(ORDER.ASC);
|
|
||||||
initialSortFilter.setOrderByFields(Arrays.asList(new ItemField("Name", Arrays.asList("name"), true, true, true)));
|
|
||||||
|
|
||||||
displayFields = result;
|
|
||||||
mainTabPanel = new GeonaMainTabPanel(appManagerBus, displayFields, sortByFields, searchByFields, initialSortFilter);
|
|
||||||
mainTabPanel.setLoaderVisible("Loading...", true);
|
|
||||||
|
|
||||||
geoNaMainForm = new GeonaDataEntryMainForm(appManagerBus);
|
|
||||||
mainTabPanel.addFormPanel(geoNaMainForm);
|
|
||||||
|
|
||||||
}
|
|
||||||
});*/
|
|
||||||
|
|
||||||
GeoportalDataEntryServiceAsync.Util.getInstance().readDataViewerConfig(new AsyncCallback<GNADataEntryExtConfigProfile>() {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onFailure(Throwable caught) {
|
|
||||||
String errorMsg = "Sorry, an error occurrend on istancing the application. Please, contact the support";
|
|
||||||
Alert alert = new Alert(errorMsg, AlertType.ERROR);
|
|
||||||
alert.setClose(false);
|
|
||||||
try {
|
|
||||||
RootPanel.get(DIV_PORTLET_ID).remove(loader);
|
|
||||||
} catch (Exception e) {
|
|
||||||
|
|
||||||
}
|
|
||||||
RootPanel.get(DIV_PORTLET_ID).add(alert);
|
|
||||||
Window.alert(errorMsg);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onSuccess(GNADataEntryExtConfigProfile gNADataEntryConfig) {
|
|
||||||
|
|
||||||
try {
|
|
||||||
RootPanel.get(DIV_PORTLET_ID).remove(loader);
|
|
||||||
} catch (Exception e) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
List<ItemField> itemFields = gNADataEntryConfig.getListItemFields();
|
|
||||||
|
|
||||||
for (ItemField itemField : itemFields) {
|
|
||||||
if(itemField.isDisplayAsResult()) {
|
|
||||||
displayFields.add(itemField);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(itemField.isSearchable()) {
|
|
||||||
searchByFields.add(itemField);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(itemField.isSortable()) {
|
|
||||||
sortByFields.add(itemField);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
GWT.log("List display fields: "+itemFields);
|
|
||||||
SearchingFilter initialSortFilter = new SearchingFilter();
|
|
||||||
initialSortFilter.setOrder(ORDER.ASC);
|
|
||||||
initialSortFilter.setOrderByFields(Arrays.asList(new ItemField("Name", Arrays.asList("name"), true, true, true)));
|
|
||||||
|
|
||||||
displayFields = itemFields;
|
|
||||||
mainTabPanel = new GeonaMainTabPanel(appManagerBus, displayFields, sortByFields, searchByFields, initialSortFilter);
|
|
||||||
mainTabPanel.setLoaderVisible("Loading...", true);
|
|
||||||
|
|
||||||
geoNaMainForm = new GeonaDataEntryMainForm(appManagerBus);
|
|
||||||
mainTabPanel.addFormPanel(geoNaMainForm);
|
|
||||||
|
|
||||||
//PERMISSIONS
|
|
||||||
myRights = gNADataEntryConfig.getUserRights();
|
|
||||||
initGUI();
|
|
||||||
GcubeUserRole userRole = myRights.getRoleRights().getUserRole();
|
|
||||||
String msg = "Logged in as ";
|
|
||||||
if(userRole != null && userRole.getName()!=null) {
|
|
||||||
msg+= userRole.getName().substring(userRole.getName().indexOf("-")+1, userRole.getName().length());
|
|
||||||
}else
|
|
||||||
msg+="Member";
|
|
||||||
|
|
||||||
mainTabPanel.setRoleLabel(msg);
|
|
||||||
|
|
||||||
|
|
||||||
RoleRights roleRights = myRights.getRoleRights();
|
|
||||||
boolean canCreateNewItem = roleRights.getListPermessions().keySet().contains(ACTION_ON_ITEM.CREATE_NEW_PROJECT);
|
|
||||||
|
|
||||||
if (!canCreateNewItem) {
|
|
||||||
// removing Tab "Create New Project"
|
|
||||||
mainTabPanel.removeTab(0);
|
|
||||||
// activating Tab "List of Project"
|
|
||||||
mainTabPanel.setTabActive(0);
|
|
||||||
mainTabPanel.instanceAndShowListOfConcessioni();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
GeoportalDataEntryServiceAsync.Util.getInstance().getGeonaInitConfig(new AsyncCallback<GeonaISConfig>() {
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable caught) {
|
public void onFailure(Throwable caught) {
|
||||||
Window.alert(
|
String errorMsg = "Sorry, an error occurrend on istancing the application. Please, contact the support";
|
||||||
"Sorry, an error occurrend when loading configurations. Please, contact the support");
|
Alert alert = new Alert(errorMsg, AlertType.ERROR);
|
||||||
|
alert.setClose(false);
|
||||||
|
try {
|
||||||
|
RootPanel.get(DIV_PORTLET_ID).remove(loader);
|
||||||
|
} catch (Exception e) {
|
||||||
|
|
||||||
|
}
|
||||||
|
RootPanel.get(DIV_PORTLET_ID).add(alert);
|
||||||
|
Window.alert(errorMsg);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(GeonaISConfig result) {
|
public void onSuccess(GNADataEntryExtConfigProfile gNADataEntryConfig) {
|
||||||
|
|
||||||
if (result != null && result.getGenericResourceSecondaryType() != null
|
try {
|
||||||
&& result.getScope() != null) {
|
RootPanel.get(DIV_PORTLET_ID).remove(loader);
|
||||||
callGetMetadataProfiles(result.getScope(), result.getGenericResourceSecondaryType());
|
} catch (Exception e) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
List<ItemField> itemFields = gNADataEntryConfig.getListItemFields();
|
||||||
|
|
||||||
|
for (ItemField itemField : itemFields) {
|
||||||
|
if (itemField.isDisplayAsResult()) {
|
||||||
|
displayFields.add(itemField);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (itemField.isSearchable()) {
|
||||||
|
searchByFields.add(itemField);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (itemField.isSortable()) {
|
||||||
|
sortByFields.add(itemField);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
GWT.log("List display fields: " + itemFields);
|
||||||
|
SearchingFilter initialSortFilter = new SearchingFilter();
|
||||||
|
initialSortFilter.setOrder(ORDER.ASC);
|
||||||
|
initialSortFilter.setOrderByFields(
|
||||||
|
Arrays.asList(new ItemField("Name", Arrays.asList("name"), true, true, true)));
|
||||||
|
|
||||||
|
displayFields = itemFields;
|
||||||
|
mainTabPanel = new GeonaMainTabPanel(appManagerBus, displayFields, sortByFields, searchByFields,
|
||||||
|
initialSortFilter);
|
||||||
|
mainTabPanel.setLoaderVisible("Loading...", true);
|
||||||
|
|
||||||
|
geoNaMainForm = new GeonaDataEntryMainForm(appManagerBus);
|
||||||
|
mainTabPanel.addFormPanel(geoNaMainForm);
|
||||||
|
|
||||||
|
// PERMISSIONS
|
||||||
|
myRights = gNADataEntryConfig.getUserRights();
|
||||||
|
initGUI();
|
||||||
|
GcubeUserRole userRole = myRights.getRoleRights().getUserRole();
|
||||||
|
String msg = "Logged in as ";
|
||||||
|
if (userRole != null && userRole.getName() != null) {
|
||||||
|
msg += userRole.getName().substring(userRole.getName().indexOf("-") + 1,
|
||||||
|
userRole.getName().length());
|
||||||
} else
|
} else
|
||||||
Window.alert(
|
msg += "Member";
|
||||||
"Sorry, no configuration found in the context. Please, contact the support");
|
|
||||||
|
mainTabPanel.setRoleLabel(msg);
|
||||||
|
|
||||||
|
RoleRights roleRights = myRights.getRoleRights();
|
||||||
|
boolean canCreateNewItem = roleRights.getListPermessions().keySet()
|
||||||
|
.contains(ACTION_ON_ITEM.CREATE_NEW_PROJECT);
|
||||||
|
|
||||||
|
if (!canCreateNewItem) {
|
||||||
|
// removing Tab "Create New Project"
|
||||||
|
mainTabPanel.removeTab(0);
|
||||||
|
// activating Tab "List of Project"
|
||||||
|
mainTabPanel.setTabActive(0);
|
||||||
|
mainTabPanel.instanceAndShowListOfConcessioni();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
GeoportalDataEntryServiceAsync.Util.getInstance()
|
||||||
|
.getGeonaInitConfig(new AsyncCallback<GeonaISConfig>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFailure(Throwable caught) {
|
||||||
|
Window.alert(
|
||||||
|
"Sorry, an error occurrend when loading configurations. Please, contact the support");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSuccess(GeonaISConfig result) {
|
||||||
|
|
||||||
|
if (result != null && result.getGenericResourceSecondaryType() != null
|
||||||
|
&& result.getScope() != null) {
|
||||||
|
callGetMetadataProfiles(result.getScope(),
|
||||||
|
result.getGenericResourceSecondaryType());
|
||||||
|
} else
|
||||||
|
Window.alert(
|
||||||
|
"Sorry, no configuration found in the context. Please, contact the support");
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// GeoportalDataEntryServiceAsync.Util.getInstance().getMyRightsInTheContext(new AsyncCallback<UserRights>() {
|
// GeoportalDataEntryServiceAsync.Util.getInstance().getMyRightsInTheContext(new AsyncCallback<UserRights>() {
|
||||||
//
|
//
|
||||||
|
@ -657,7 +653,7 @@ public class GeoPortalDataEntryApp implements EntryPoint {
|
||||||
mainTabPanel.showListOfConcessioniView(grpw);
|
mainTabPanel.showListOfConcessioniView(grpw);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
appManagerBus.addHandler(ActionPerformedOnItemEvent.TYPE, new ActionPerformedOnItemEventHandler() {
|
appManagerBus.addHandler(ActionPerformedOnItemEvent.TYPE, new ActionPerformedOnItemEventHandler() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -731,40 +727,44 @@ public class GeoPortalDataEntryApp implements EntryPoint {
|
||||||
|
|
||||||
final ConcessioneDV concessione = (ConcessioneDV) item;
|
final ConcessioneDV concessione = (ConcessioneDV) item;
|
||||||
GWT.log("onDoActionFired item: " + concessione);
|
GWT.log("onDoActionFired item: " + concessione);
|
||||||
|
|
||||||
// Checking if the user is NOT authorized to perform this action in two ways:
|
// 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;
|
// 1. the map of actions allowed for the user does not contain the action;
|
||||||
RoleRights roleRights = myRights.getRoleRights();
|
RoleRights roleRights = myRights.getRoleRights();
|
||||||
OPERATION_TYPE operationType = roleRights.getListPermessions().get(action);
|
OPERATION_TYPE operationType = roleRights.getListPermessions().get(action);
|
||||||
boolean allowedOperationForUser = operationType != null? true:false;
|
boolean allowedOperationForUser = operationType != null ? true : false;
|
||||||
if (!allowedOperationForUser) {
|
if (!allowedOperationForUser) {
|
||||||
|
|
||||||
String msg = "You are not authorized to perform the action: "+ action.getLabel();
|
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);
|
ModalWindow modalW = new ModalWindow(new Image(Images.ICONS.accessDenied()),
|
||||||
|
"Forbidden: " + action, msg, AlertType.WARNING);
|
||||||
modalW.show();
|
modalW.show();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// 2. the user cannot access to action (e.g. the user cannot write an item of another user)
|
// 2. the user cannot access to action (e.g. the user cannot write an item of
|
||||||
|
// another user)
|
||||||
// if so an error is shown
|
// if so an error is shown
|
||||||
GcubeUserRole userRole = myRights.getRoleRights().getUserRole();
|
GcubeUserRole userRole = myRights.getRoleRights().getUserRole();
|
||||||
boolean allowedWriteActionOnItem = checkAccessToOperationType(userRole, operationType, concessione);
|
boolean allowedWriteActionOnItem = checkAccessToOperationType(userRole, operationType,
|
||||||
|
concessione);
|
||||||
if (!allowedWriteActionOnItem) {
|
if (!allowedWriteActionOnItem) {
|
||||||
String title = "Forbidden: missing write access";
|
String title = "Forbidden: missing write access";
|
||||||
String msg = "You do not have write access to item: "+ concessione.getNome();
|
String msg = "You do not have write access to item: " + concessione.getNome();
|
||||||
if(!userRole.isWriteOwn()) {
|
if (!userRole.isWriteOwn()) {
|
||||||
msg = "You do not have write access to item: "+ concessione.getNome();
|
msg = "You do not have write access to item: " + concessione.getNome();
|
||||||
}else if (!userRole.isWriteAny()){
|
} else if (!userRole.isWriteAny()) {
|
||||||
title = "Forbidden: missing ownership";
|
title = "Forbidden: missing ownership";
|
||||||
msg = "You are not the creator of: "+ concessione.getNome() +". You cannot access to it";
|
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);
|
ModalWindow modalW = new ModalWindow(new Image(Images.ICONS.accessDenied()), title, msg,
|
||||||
|
AlertType.WARNING);
|
||||||
modalW.show();
|
modalW.show();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
switch (action) {
|
switch (action) {
|
||||||
case VIEW_ON_MAP:
|
case VIEW_ON_MAP: {
|
||||||
final Modal modal = new Modal(true, true);
|
final Modal modal = new Modal(true, true);
|
||||||
modal.setCloseVisible(true);
|
modal.setCloseVisible(true);
|
||||||
final HorizontalPanel hpGetLink = new HorizontalPanel();
|
final HorizontalPanel hpGetLink = new HorizontalPanel();
|
||||||
|
@ -798,8 +798,9 @@ public class GeoPortalDataEntryApp implements EntryPoint {
|
||||||
modal.show();
|
modal.show();
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case VIEW_REPORT:
|
case VIEW_REPORT: {
|
||||||
|
|
||||||
final Modal modal2 = new Modal(true, true);
|
final Modal modal2 = new Modal(true, true);
|
||||||
modal2.setTitle(
|
modal2.setTitle(
|
||||||
|
@ -817,8 +818,9 @@ public class GeoPortalDataEntryApp implements EntryPoint {
|
||||||
modal2.show();
|
modal2.show();
|
||||||
|
|
||||||
break;
|
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(
|
||||||
"<span style='font-size:20px;'>Edit: <span style='color:#555; font-size:20px;'>"
|
"<span style='font-size:20px;'>Edit: <span style='color:#555; font-size:20px;'>"
|
||||||
|
@ -833,12 +835,43 @@ 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 CLONE_PROJECT: {
|
||||||
|
|
||||||
|
String htmlMsg = "Going to create a copy of the project with:";
|
||||||
|
htmlMsg += "<ul>";
|
||||||
|
htmlMsg += "<li>id: " + concessione.getItemId() + "</li>";
|
||||||
|
htmlMsg += "<li>name: " + concessione.getNome() + "</li>";
|
||||||
|
htmlMsg += "</ul>";
|
||||||
|
htmlMsg += "<br>";
|
||||||
|
htmlMsg += "Would you like to proceed?";
|
||||||
|
|
||||||
|
final DialogConfirm dialog = new DialogConfirm(null, "Cloning Confirm?", htmlMsg);
|
||||||
|
dialog.center();
|
||||||
|
|
||||||
|
dialog.getYesButton().addClickHandler(new ClickHandler() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onClick(ClickEvent event) {
|
||||||
|
dialog.hide();
|
||||||
|
final Modal modal = new Modal(true, true);
|
||||||
|
modal.setCloseVisible(true);
|
||||||
|
final HorizontalPanel hp = new HorizontalPanel();
|
||||||
|
final LoaderIcon lc = new LoaderIcon("Creating a copy of the project...");
|
||||||
|
hp.add(lc);
|
||||||
|
modal.add(hp);
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case DELETE_PROJECT: {
|
||||||
|
|
||||||
String htmlMsg = "Going to delete the project with:";
|
String htmlMsg = "Going to delete the project with:";
|
||||||
htmlMsg += "<ul>";
|
htmlMsg += "<ul>";
|
||||||
|
@ -895,6 +928,7 @@ public class GeoPortalDataEntryApp implements EntryPoint {
|
||||||
modal.show();
|
modal.show();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
@ -907,8 +941,9 @@ public class GeoPortalDataEntryApp implements EntryPoint {
|
||||||
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean checkAccessToOperationType(GcubeUserRole userRole, OPERATION_TYPE allowedAction, ConcessioneDV concessione) {
|
private boolean checkAccessToOperationType(GcubeUserRole userRole, OPERATION_TYPE allowedAction,
|
||||||
|
ConcessioneDV concessione) {
|
||||||
|
|
||||||
boolean writeAnyAPassed = false;
|
boolean writeAnyAPassed = false;
|
||||||
boolean writeOwnPassed = false;
|
boolean writeOwnPassed = false;
|
||||||
|
@ -924,37 +959,37 @@ public class GeoPortalDataEntryApp implements EntryPoint {
|
||||||
String ownerUser = concessione.getCreationUser();
|
String ownerUser = concessione.getCreationUser();
|
||||||
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 concessione
|
||||||
writeOwnPassed = true;
|
writeOwnPassed = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean operationAllowed = false;
|
boolean operationAllowed = false;
|
||||||
switch (allowedAction) {
|
switch (allowedAction) {
|
||||||
case READ:
|
case READ:
|
||||||
//Access to READ operation is allowed to everyone
|
// Access to READ operation is allowed to everyone
|
||||||
operationAllowed = true;
|
operationAllowed = true;
|
||||||
GWT.log(OPERATION_TYPE.READ+ " ALLOWED? "+operationAllowed);
|
GWT.log(OPERATION_TYPE.READ + " ALLOWED? " + operationAllowed);
|
||||||
break;
|
break;
|
||||||
case READ_WRITE:
|
case READ_WRITE:
|
||||||
//Access to READ_WRITE operation
|
// Access to READ_WRITE operation
|
||||||
operationAllowed = writeAnyAPassed || writeOwnPassed;
|
operationAllowed = writeAnyAPassed || writeOwnPassed;
|
||||||
GWT.log(OPERATION_TYPE.READ_WRITE+ " ALLOWED? "+operationAllowed);
|
GWT.log(OPERATION_TYPE.READ_WRITE + " ALLOWED? " + operationAllowed);
|
||||||
break;
|
break;
|
||||||
case WRITE:
|
case WRITE:
|
||||||
//Access to WRITE operation
|
// Access to WRITE operation
|
||||||
operationAllowed = writeAnyAPassed || writeOwnPassed;
|
operationAllowed = writeAnyAPassed || writeOwnPassed;
|
||||||
GWT.log(OPERATION_TYPE.WRITE+ " ALLOWED? "+operationAllowed);
|
GWT.log(OPERATION_TYPE.WRITE + " ALLOWED? " + operationAllowed);
|
||||||
break;
|
break;
|
||||||
case UNKNOWN:
|
case UNKNOWN:
|
||||||
operationAllowed = false;
|
operationAllowed = false;
|
||||||
GWT.log(OPERATION_TYPE.UNKNOWN+ " ALLOWED? "+operationAllowed);
|
GWT.log(OPERATION_TYPE.UNKNOWN + " ALLOWED? " + operationAllowed);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return operationAllowed;
|
return operationAllowed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -125,6 +125,9 @@ public class GeonaMainTabPanel extends Composite {
|
||||||
@UiField
|
@UiField
|
||||||
NavLink navEditMode;
|
NavLink navEditMode;
|
||||||
|
|
||||||
|
@UiField
|
||||||
|
NavLink navCloneProject;
|
||||||
|
|
||||||
@UiField
|
@UiField
|
||||||
NavLink navDelete;
|
NavLink navDelete;
|
||||||
|
|
||||||
|
@ -133,7 +136,7 @@ public class GeonaMainTabPanel extends Composite {
|
||||||
|
|
||||||
@UiField
|
@UiField
|
||||||
Button resetSearch;
|
Button resetSearch;
|
||||||
|
|
||||||
@UiField
|
@UiField
|
||||||
Label roleLabel;
|
Label roleLabel;
|
||||||
|
|
||||||
|
@ -173,7 +176,7 @@ public class GeonaMainTabPanel extends Composite {
|
||||||
|
|
||||||
alertSearchFor.setText(searchForFields.get(0).getDisplayName());
|
alertSearchFor.setText(searchForFields.get(0).getDisplayName());
|
||||||
alertSortBy.setText(toLabelFilter((initialSortFilter.getOrderByFields().get(0)), initialSortFilter.getOrder()));
|
alertSortBy.setText(toLabelFilter((initialSortFilter.getOrderByFields().get(0)), initialSortFilter.getOrder()));
|
||||||
|
|
||||||
bindEvents();
|
bindEvents();
|
||||||
resetSearch.setIconSize(IconSize.TWO_TIMES);
|
resetSearch.setIconSize(IconSize.TWO_TIMES);
|
||||||
resetSearch.setType(ButtonType.LINK);
|
resetSearch.setType(ButtonType.LINK);
|
||||||
|
@ -310,6 +313,20 @@ public class GeonaMainTabPanel extends Composite {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
navCloneProject.addClickHandler(new ClickHandler() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onClick(ClickEvent event) {
|
||||||
|
|
||||||
|
List<ConcessioneDV> listConcessioni = null;
|
||||||
|
if (grpw != null && grpw.getSelectItems() != null) {
|
||||||
|
listConcessioni = grpw.getSelectItems();
|
||||||
|
}
|
||||||
|
appManagerBus
|
||||||
|
.fireEvent(new ActionOnItemEvent<ConcessioneDV>(listConcessioni, ACTION_ON_ITEM.CLONE_PROJECT));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
navDelete.addClickHandler(new ClickHandler() {
|
navDelete.addClickHandler(new ClickHandler() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -347,7 +364,7 @@ public class GeonaMainTabPanel extends Composite {
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setRoleLabel(String msg) {
|
public void setRoleLabel(String msg) {
|
||||||
roleLabel.setText(msg);
|
roleLabel.setText(msg);
|
||||||
}
|
}
|
||||||
|
|
|
@ -90,6 +90,8 @@
|
||||||
title="Show Publication Report" icon="FILE_TEXT_ALT">Publication Report</b:NavLink>
|
title="Show Publication Report" icon="FILE_TEXT_ALT">Publication Report</b:NavLink>
|
||||||
<b:NavLink ui:field="navEditMode" title="Edit"
|
<b:NavLink ui:field="navEditMode" title="Edit"
|
||||||
icon="PENCIL">Edit</b:NavLink>
|
icon="PENCIL">Edit</b:NavLink>
|
||||||
|
<b:NavLink ui:field="navCloneProject" title="Clone Project"
|
||||||
|
icon="TRASH">Clone Project</b:NavLink>
|
||||||
<b:NavLink ui:field="navDelete" title="Delete Project"
|
<b:NavLink ui:field="navDelete" title="Delete Project"
|
||||||
icon="TRASH">Delete Project</b:NavLink>
|
icon="TRASH">Delete Project</b:NavLink>
|
||||||
</b:NavPills>
|
</b:NavPills>
|
||||||
|
|
Loading…
Reference in New Issue