diff --git a/.classpath b/.classpath
index a2aaf05..aa74380 100644
--- a/.classpath
+++ b/.classpath
@@ -1,12 +1,12 @@
-
+
-
+
@@ -35,5 +35,5 @@
-
+
diff --git a/.settings/com.gwtplugins.gdt.eclipse.core.prefs b/.settings/com.gwtplugins.gdt.eclipse.core.prefs
index ac58885..149db97 100644
--- a/.settings/com.gwtplugins.gdt.eclipse.core.prefs
+++ b/.settings/com.gwtplugins.gdt.eclipse.core.prefs
@@ -1,5 +1,5 @@
eclipse.preferences.version=1
jarsExcludedFromWebInfLib=
-lastWarOutDir=/home/francescomangiacrapa/git/geoportal-data-entry-app/target/geoportal-data-entry-app-1.1.0-SNAPSHOT
+lastWarOutDir=/home/francescomangiacrapa/git/geoportal-data-entry-app/target/geoportal-data-entry-app-1.2.0-SNAPSHOT
warSrcDir=src/main/webapp
warSrcDirIsOutput=false
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7d728e9..f2ebf7b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,6 +5,13 @@ 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).
+## [v1.2.0-SNAPSHOT] - 2020-12-18
+
+#### Enhancements
+
+[#20357] new requirements
+
+
## [v1.1.0] - 2020-12-1
#### Enhancements
diff --git a/pom.xml b/pom.xml
index c4fa447..d42053b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -14,7 +14,7 @@
org.gcube.portlets.user
geoportal-data-entry-app
war
- 1.1.0
+ 1.2.0-SNAPSHOT
GeoPortal Data Entry App
The GeoPortal Data Entry App is an application to build the web forms for data entries needed to GeoNa project
diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataentry/client/ConcessioniFormCardTitle.java b/src/main/java/org/gcube/portlets/user/geoportaldataentry/client/ConcessioniFormCardTitle.java
index 0811bf1..f75276f 100644
--- a/src/main/java/org/gcube/portlets/user/geoportaldataentry/client/ConcessioniFormCardTitle.java
+++ b/src/main/java/org/gcube/portlets/user/geoportaldataentry/client/ConcessioniFormCardTitle.java
@@ -11,10 +11,11 @@ package org.gcube.portlets.user.geoportaldataentry.client;
public enum ConcessioniFormCardTitle {
INFORMAZIONI_DI_PROGETTO("Informazioni", "Informazioni di Progetto", 1, false, null),
- RELAZIONE_DI_SCAVO("Relazione di Scavo", "Relazione di Scavo", 2, false, null),
- IMMAGINI_RAPPRESENTATIVE("Immagini Rappresentative", "Immagini Rappresentative", 3, true, 8),
- POSIZIONAMENTO_DELL_AREA_DI_INDAGINE("Posizionamento", "Posizionamento dell'Area di Indagine", 4, false, null),
- PIANTA_DI_FINE_SCAVO("Pianta di Fine Scavo", "Pianta di Fine Scavo", 5, true, null);
+ ABSTRACT_RELAZIONE_DI_SCAVO("Abstract Relazione di Scavo", "Abstract Relazione di Scavo", 2, false, null),
+ RELAZIONE_DI_SCAVO("Relazione di Scavo", "Relazione di Scavo", 3, false, null),
+ IMMAGINI_RAPPRESENTATIVE("Immagini Rappresentative", "Immagini Rappresentative", 4, true, 8),
+ POSIZIONAMENTO_DELL_AREA_DI_INDAGINE("Posizionamento", "Posizionamento dell'Area di Indagine", 5, false, null),
+ PIANTA_DI_FINE_SCAVO("Pianta di Fine Scavo", "Pianta di Fine Scavo", 6, true, null);
private String key;
private String title;
diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataentry/client/GeoPortalDataEntryApp.java b/src/main/java/org/gcube/portlets/user/geoportaldataentry/client/GeoPortalDataEntryApp.java
index 7d07bd9..9d16ab8 100644
--- a/src/main/java/org/gcube/portlets/user/geoportaldataentry/client/GeoPortalDataEntryApp.java
+++ b/src/main/java/org/gcube/portlets/user/geoportaldataentry/client/GeoPortalDataEntryApp.java
@@ -109,6 +109,7 @@ public class GeoPortalDataEntryApp implements EntryPoint {
@Override
public void onSuccess(List result) {
+ GWT.log("Returned "+result.size()+ "profile/s");
orderedCards = setGeoNaFormsOrder(result);
//ordered values
buildNewCards(orderedCards);
@@ -130,6 +131,7 @@ public class GeoPortalDataEntryApp implements EntryPoint {
//TODO TO TEST
//if(geonaForm.getFormCardTitle().equals(ConcessioniFormCardTitle.IMMAGINI_RAPPRESENTATIVE)){
+ GWT.log("Adding card: "+geonaForm.getFormCardTitle());
CreateMetadataForm baseForm = new CreateMetadataForm(Arrays.asList(geonaForm.getMetadataProfileBean()),appManagerBus);
geonaForm.setMetadataForm(baseForm);
String key = geonaForm.getMetadataProfileBean().getType();
@@ -159,11 +161,15 @@ public class GeoPortalDataEntryApp implements EntryPoint {
for (MetaDataProfileBean metaDataProfileBean : listMetadataProfilesForGeona) {
String theMetaType = metaDataProfileBean.getType().toLowerCase();
+ GWT.log("Building form card for type: "+theMetaType);
GeoNaFormCardModel geonaForm = new GeoNaFormCardModel(metaDataProfileBean, null, null);
if(theMetaType.contains(ConcessioniFormCardTitle.INFORMAZIONI_DI_PROGETTO.getKey().toLowerCase())) {
geonaForm.setFormCardTitle(ConcessioniFormCardTitle.INFORMAZIONI_DI_PROGETTO);
treemapOrderedGeoNaProfiles.put(ConcessioniFormCardTitle.INFORMAZIONI_DI_PROGETTO.getOrder(), geonaForm);
+ }else if(theMetaType.contains(ConcessioniFormCardTitle.ABSTRACT_RELAZIONE_DI_SCAVO.getKey().toLowerCase())) {
+ geonaForm.setFormCardTitle(ConcessioniFormCardTitle.ABSTRACT_RELAZIONE_DI_SCAVO);
+ treemapOrderedGeoNaProfiles.put(ConcessioniFormCardTitle.ABSTRACT_RELAZIONE_DI_SCAVO.getOrder(), geonaForm);
}else if(theMetaType.contains(ConcessioniFormCardTitle.RELAZIONE_DI_SCAVO.getKey().toLowerCase())) {
geonaForm.setFormCardTitle(ConcessioniFormCardTitle.RELAZIONE_DI_SCAVO);
treemapOrderedGeoNaProfiles.put(ConcessioniFormCardTitle.RELAZIONE_DI_SCAVO.getOrder(), geonaForm);
@@ -249,10 +255,14 @@ public class GeoPortalDataEntryApp implements EntryPoint {
case WARN:
alert.setType(AlertType.WARNING);
geoNaMainForm.enableButtonSave(true);
+ if(result.getReport()!=null)
+ modal.add(new Alert(result.getReport(), AlertType.INFO));
break;
case ERROR:
alert.setType(AlertType.ERROR);
geoNaMainForm.enableButtonSave(true);
+ if(result.getReport()!=null)
+ modal.add(new Alert(result.getReport(), AlertType.INFO));
break;
default:
break;
@@ -343,5 +353,55 @@ public class GeoPortalDataEntryApp implements EntryPoint {
}
});
}
+
+ public static native String jsonToHTML(String jsonTxt)/*-{
+ try
+ {
+ var jsonObj = JSON.parse(jsonTxt);
+
+ if(jsonObj.length==undefined)
+ jsonObj = [jsonObj]
+ //console.log(jsonObj.length)
+
+ // EXTRACT VALUE FOR HTML HEADER.
+ var col = [];
+ for (var i = 0; i < jsonObj.length; i++) {
+ for (var key in jsonObj[i]) {
+ //console.log('key json' +key)
+ if (col.indexOf(key) === -1) {
+ col.push(key);
+ }
+ }
+ }
+
+ // CREATE DYNAMIC TABLE.
+ var table = document.createElement("table");
+ try{
+ table.classList.add("my-html-table");
+
+ }catch(e){
+ console.log('invalid css add', e);
+ }
+
+ // ADD JSON DATA TO THE TABLE AS ROWS.
+ for (var i = 0; i < col.length; i++) {
+ tr = table.insertRow(-1);
+ var firstCell = tr.insertCell(-1);
+ //firstCell.style.cssText="font-weight: bold; text-align: center; vertical-align: middle;";
+ firstCell.innerHTML = col[i];
+ for (var j = 0; j < jsonObj.length; j++) {
+ var tabCell = tr.insertCell(-1);
+ var theValue = jsonObj[j][col[i]];
+ tabCell.innerHTML = theValue;
+ }
+ }
+
+ return table;
+ }
+ catch(e){
+ console.log('invalid json', e);
+ }
+
+ }-*/;
}
diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataentry/client/ui/card/MetadataFormCard.java b/src/main/java/org/gcube/portlets/user/geoportaldataentry/client/ui/card/MetadataFormCard.java
index a8363b9..0f5ff46 100644
--- a/src/main/java/org/gcube/portlets/user/geoportaldataentry/client/ui/card/MetadataFormCard.java
+++ b/src/main/java/org/gcube/portlets/user/geoportaldataentry/client/ui/card/MetadataFormCard.java
@@ -15,6 +15,7 @@ import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.shared.HandlerManager;
import com.google.gwt.user.client.Window;
+import com.google.gwt.user.client.ui.FlowPanel;
/**
@@ -47,6 +48,8 @@ public class MetadataFormCard {
private HandlerManager appManagerBus;
private Integer maxFormRepeatability;
+
+ private FlowPanel tabContainer = new FlowPanel();
/**
* The Class MetadataFormCardEventHandler.
@@ -145,6 +148,7 @@ public class MetadataFormCard {
});
}
+ tab.add(tabContainer);
addNewForm(createMetadataForm);
}
@@ -154,21 +158,21 @@ public class MetadataFormCard {
* @param newForm the new form
*/
private void addNewForm(final CreateMetadataForm newForm) {
- tab.add(newForm);
+ tabContainer.insert(newForm,0);
listForms.add(newForm);
if(listForms.size()>1) {
final Button buttonRemoveLatestForm = new Button("Remove");
buttonRemoveLatestForm.setIcon(IconType.TRASH);
- tab.add(buttonRemoveLatestForm);
+ tabContainer.insert(buttonRemoveLatestForm,1);
buttonRemoveLatestForm.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
- tab.remove(newForm);
+ tabContainer.remove(newForm);
listForms.remove(newForm);
- tab.remove(buttonRemoveLatestForm);
+ tabContainer.remove(buttonRemoveLatestForm);
}
});
diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataentry/server/ConvertToServiceModel.java b/src/main/java/org/gcube/portlets/user/geoportaldataentry/server/ConvertToServiceModel.java
index c1e3989..58b9f52 100644
--- a/src/main/java/org/gcube/portlets/user/geoportaldataentry/server/ConvertToServiceModel.java
+++ b/src/main/java/org/gcube/portlets/user/geoportaldataentry/server/ConvertToServiceModel.java
@@ -187,19 +187,15 @@ public class ConvertToServiceModel {
/**
* To relazione scavo.
*
+ * @param abstractRelazioneScavo the abstract relazione scavo
* @param gdb the gdb
* @return the relazione scavo
*/
- public static RelazioneScavo toRelazioneScavo(GenericDatasetBean gdb){
+ public static RelazioneScavo toRelazioneScavo(RelazioneScavo abstractRelazioneScavo, GenericDatasetBean gdb){
Map> mapFields = gdb.getFormDataEntryFields();
- RelazioneScavo relazioneScavo = new RelazioneScavo();
-
- List abstractLst = mapFields.get("Abstract");
- if(abstractLst!=null && abstractLst.size()>0) {
- relazioneScavo.setAbstractSection(abstractLst.get(0));
- }
+ RelazioneScavo relazioneScavo = abstractRelazioneScavo == null?new RelazioneScavo():abstractRelazioneScavo;
List responsabiliLst = mapFields.get("Responsabile del documento");
if(responsabiliLst!=null) {
@@ -229,6 +225,41 @@ public class ConvertToServiceModel {
return relazioneScavo;
}
+ public static RelazioneScavo toAbstractRelazioneScavo(GenericDatasetBean gdb) {
+
+ Map> mapFields = gdb.getFormDataEntryFields();
+
+ RelazioneScavo relazioneScavo = new RelazioneScavo();
+
+ List abstractLstIta = mapFields.get("Abstract in Italiano");
+ if(abstractLstIta!=null && abstractLstIta.size()>0) {
+ relazioneScavo.setAbstractIta(abstractLstIta.get(0));
+ }
+
+ List abstractLstEng = mapFields.get("Abstract in Inglese");
+ if(abstractLstEng!=null && abstractLstEng.size()>0) {
+ relazioneScavo.setAbstractEng(abstractLstIta.get(0));
+ }
+
+ //TODO IN FUTURE WHEN THE MODEL WILL BE UPDATED
+ /*List politicaDiAccessoLst = mapFields.get("Politica di accesso");
+ if(politicaDiAccessoLst!=null && politicaDiAccessoLst.size()>0) {
+ try {
+ AccessPolicy ap = AccessPolicy.valueOf(politicaDiAccessoLst.get(0));
+ relazioneScavo.setPolicy(ap);
+ }catch (Exception e) {
+ LOG.warn("I cannot cast "+politicaDiAccessoLst.get(0) +" to "+AccessPolicy.values(),e);
+ }
+ }
+
+ List licenzaIdList = mapFields.get("ID Licenza");
+ if(licenzaIdList!=null && licenzaIdList.size()>0) {
+ relazioneScavo.setLicenseID(licenzaIdList.get(0));
+ }*/
+
+ return relazioneScavo;
+ }
+
/**
* To immagini rappresentative.
*
@@ -241,26 +272,27 @@ public class ConvertToServiceModel {
UploadedImage uplaodedImage = new UploadedImage();
- List titoloLst = mapFields.get("Titolo");
- if(titoloLst!=null && titoloLst.size()>0) {
- uplaodedImage.setTitolo(titoloLst.get(0));
- }
-
+// List titoloLst = mapFields.get("Titolo");
+// if(titoloLst!=null && titoloLst.size()>0) {
+// uplaodedImage.setTitolo(titoloLst.get(0));
+// }
+//
List didascaliaLst = mapFields.get("Didascalia");
if(didascaliaLst!=null && didascaliaLst.size()>0) {
uplaodedImage.setDidascalia(didascaliaLst.get(0));
}
-
- List responsabileLst = mapFields.get("Responsabile");
+ //NB here is setResponsabili but should be setAuthor
+ List responsabileLst = mapFields.get("Autore");
if(responsabileLst!=null) {
uplaodedImage.setResponsabili(responsabileLst);
+ //uplaodedImage.setAuthor is missing!!!
}
- List autoreList = mapFields.get("Autore");
- if(autoreList!=null) {
- //TODO
- }
+// List autoreList = mapFields.get("Autore");
+// if(autoreList!=null) {
+// //TODO
+// }
List politicaDiAccessoLst = mapFields.get("Politica di accesso");
if(politicaDiAccessoLst!=null && politicaDiAccessoLst.size()>0) {
@@ -277,12 +309,6 @@ public class ConvertToServiceModel {
uplaodedImage.setLicenseID(licenzaIdList.get(0));
}
- //TODO???
- List autoreLst = mapFields.get("Autore");
- if(autoreLst!=null) {
-
- }
-
return uplaodedImage;
}
diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataentry/server/GeoportalDataEntryServiceImpl.java b/src/main/java/org/gcube/portlets/user/geoportaldataentry/server/GeoportalDataEntryServiceImpl.java
index 8af50b6..5ccc559 100644
--- a/src/main/java/org/gcube/portlets/user/geoportaldataentry/server/GeoportalDataEntryServiceImpl.java
+++ b/src/main/java/org/gcube/portlets/user/geoportaldataentry/server/GeoportalDataEntryServiceImpl.java
@@ -9,14 +9,12 @@ import java.util.Map;
import org.gcube.application.geoportal.managers.ConcessioneManager;
import org.gcube.application.geoportal.managers.ManagerFactory;
import org.gcube.application.geoportal.model.InputStreamDescriptor;
+import org.gcube.application.geoportal.model.Record;
import org.gcube.application.geoportal.model.concessioni.Concessione;
import org.gcube.application.geoportal.model.concessioni.LayerConcessione;
import org.gcube.application.geoportal.model.concessioni.RelazioneScavo;
import org.gcube.application.geoportal.model.content.UploadedImage;
-import org.gcube.application.geoportal.model.content.WorkspaceContent;
-import org.gcube.application.geoportal.model.fault.PublishException;
-import org.gcube.application.geoportal.model.fault.ValidationException;
-import org.gcube.application.geoportal.utils.Serialization;
+import org.gcube.application.geoportal.model.report.PublicationReport;
import org.gcube.application.geoportalcommon.GeoportalCommon;
import org.gcube.application.geoportalcommon.shared.GeoNaItemRef;
import org.gcube.portlets.user.geoportaldataentry.client.ConcessioniFormCardTitle;
@@ -98,6 +96,18 @@ public class GeoportalDataEntryServiceImpl extends RemoteServiceServlet implemen
// saving into back-end
manager = ManagerFactory.registerNew(concessione);
+
+ // ABSTRACT_RELAZIONE_DI_SCAVO
+ list = toMap.get(ConcessioniFormCardTitle.ABSTRACT_RELAZIONE_DI_SCAVO);
+ if (list == null || list.isEmpty() || list.get(0) == null || list.get(0).getListGDB() == null)
+ throw new Exception(
+ "Error: no data found for " + ConcessioniFormCardTitle.ABSTRACT_RELAZIONE_DI_SCAVO.getTitle());
+
+ listGDB = list.get(0).getListGDB();
+ GenericDatasetBean ards = listGDB.get(0);
+ LOG.debug("\n\n");
+ LOG.debug(ConcessioniFormCardTitle.ABSTRACT_RELAZIONE_DI_SCAVO + " building with client obj: " + ards);
+ RelazioneScavo abstractRelazioneDiScavo = ConvertToServiceModel.toAbstractRelazioneScavo(ards);
// RELAZIONE_DI_SCAVO
list = toMap.get(ConcessioniFormCardTitle.RELAZIONE_DI_SCAVO);
@@ -109,7 +119,7 @@ public class GeoportalDataEntryServiceImpl extends RemoteServiceServlet implemen
GenericDatasetBean rds = listGDB.get(0);
LOG.debug("\n\n");
LOG.debug(ConcessioniFormCardTitle.RELAZIONE_DI_SCAVO + " building with client obj: " + rds);
- RelazioneScavo relazioneDiScavo = ConvertToServiceModel.toRelazioneScavo(rds);
+ RelazioneScavo relazioneDiScavo = ConvertToServiceModel.toRelazioneScavo(abstractRelazioneDiScavo, rds);
LOG.debug("Built " + ConcessioniFormCardTitle.RELAZIONE_DI_SCAVO + " as server obj: " + relazioneDiScavo);
// Should be only one
for (FileUploaded fileUploaded : rds.getFilesUploaded()) {
@@ -191,37 +201,45 @@ public class GeoportalDataEntryServiceImpl extends RemoteServiceServlet implemen
// If true -> data are published into the SDI
Boolean publish = true;
- Concessione registered = manager.commit(publish);
- LOG.info("Registered: " + registered);
- String link = null;
- try {
- link = ((WorkspaceContent) registered.getRelazioneScavo().getActualContent().get(0)).getLink();
- } catch (Exception e) {
- LOG.warn("Not able to check public link ", e);
- }
+ PublicationReport report = manager.commitSafely(publish);
+ LOG.info("PublicationReport: " + report);
+ Record registered = report.getTheRecord();
// String link = "toTest";
CommitReport cRep = new CommitReport();
- cRep.setRecordId(registered.getId());
- if (link != null) {
+
+ if(registered!=null)
+ cRep.setRecordId(registered.getId());
+
+ cRep.setReport(report.prettyPrint());
+
+ switch (report.getStatus()) {
+ case PASSED:
cRep.setState(STATE.OK);
- cRep.setMsg("Project saved successfully");
- } else {
+ if(cRep.getRecordId()==null) {
+ LOG.error("The record id is null!!!");
+ throw new Exception("Invalid record id");
+ }
+ break;
+ case WARNING:
cRep.setState(STATE.WARN);
- cRep.setMsg("Project saved with errors");
- }
+ cRep.setMsg(report.getWarningMessages().toString());
+ break;
+ case ERROR:
+ cRep.setState(STATE.ERROR);
+ cRep.setMsg(report.getErrorMessages().toString());
+ break;
+ default:
+ cRep.setState(STATE.UNKNOWN);
+ break;
+ }
+
return cRep;
- } catch (ValidationException e1) {
- LOG.error("Error on validating data: ", e1);
- throw new Exception("Error on validating data: " + Serialization.prettyPrint(e1.getReport()));
- } catch (PublishException e2) {
- LOG.error("Error on publishing data: ", e2);
- throw new Exception("Error on publishing data: " + e2.getMessage());
} catch (Exception e) {
LOG.error("Error on commiting data: ", e);
throw new Exception(
- "Error occurred on saving data, try again or contact the support. Error: " + e.getMessage());
+ "Error occurred on saving data. Error: " + e.getMessage());
} finally {
// if(manager!=null) {
// try {
diff --git a/src/main/java/org/gcube/portlets/user/geoportaldataentry/shared/CommitReport.java b/src/main/java/org/gcube/portlets/user/geoportaldataentry/shared/CommitReport.java
index 38ecc7d..9e0b07c 100644
--- a/src/main/java/org/gcube/portlets/user/geoportaldataentry/shared/CommitReport.java
+++ b/src/main/java/org/gcube/portlets/user/geoportaldataentry/shared/CommitReport.java
@@ -29,7 +29,7 @@ public class CommitReport implements Serializable {
}
public STATE state = STATE.UNKNOWN;
- public long recordId;
+ public Long recordId;
public String msg;
public String report;
@@ -79,7 +79,7 @@ public class CommitReport implements Serializable {
*
* @return the record id
*/
- public long getRecordId() {
+ public Long getRecordId() {
return recordId;
}