revisited the business logic to publish on (mongo) server by

geoportal-client
This commit is contained in:
Francesco Mangiacrapa 2021-02-02 15:42:33 +01:00
parent b1696fd356
commit 77968d2835
2 changed files with 125 additions and 60 deletions

View File

@ -74,7 +74,7 @@ public class GeoportalDataEntryServiceImpl extends RemoteServiceServlet implemen
LOG.debug("Built map with form data: " + toMap);
GCubeUser user = SessionUtil.getCurrentUser(this.getThreadLocalRequest());
Concessione concessioneService = null;
Concessione concessioneNew;
String mongoId = null;
ServiceUtil serviceUtil = new ServiceUtil();
MongoConcessioni clientMongo = null;
@ -97,11 +97,11 @@ public class GeoportalDataEntryServiceImpl extends RemoteServiceServlet implemen
LOG.debug(ConcessioniFormCardTitle.INFORMAZIONI_DI_PROGETTO + " building with client obj: " + idp);
Concessione concessione = ConvertToServiceModel.toConcessione(idp, user);
LOG.debug("Built " + ConcessioniFormCardTitle.INFORMAZIONI_DI_PROGETTO + " as server obj: " + concessione);
//Register New Concessione
concessioneService=clientMongo.createNew(concessione);
mongoId = concessioneService.getMongo_id();
//Register New Concessione
concessioneNew=clientMongo.createNew(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)
@ -126,18 +126,10 @@ public class GeoportalDataEntryServiceImpl extends RemoteServiceServlet implemen
LOG.debug(ConcessioniFormCardTitle.RELAZIONE_DI_SCAVO + " building with client obj: " + rds);
RelazioneScavo relazioneDiScavo = ConvertToServiceModel.toRelazioneScavo(abstractRelazioneDiScavo, rds);
LOG.debug("Built " + ConcessioniFormCardTitle.RELAZIONE_DI_SCAVO + " as server obj: " + relazioneDiScavo);
//Setting Relazione
concessioneService.setRelazioneScavo(relazioneDiScavo);
// Building TempFile for Relazione
List<TempFile> files = serviceUtil.toTemFiles(rds.getFilesUploaded());
// Upload file to Concessione
if (files!=null && files.size() > 0) {
// saving into back-end
AddSectionToConcessioneRequest request = new AddSectionToConcessioneRequest(Paths.RELAZIONE, files);
clientMongo.registerFile(mongoId, request);
LOG.info("Registered the mongoId "+mongoId+" request " + Paths.RELAZIONE + "with "+files.size()+" file/s");
}
//Setting Relazione
concessioneNew.setRelazioneScavo(relazioneDiScavo);
// IMMAGINI_RAPPRESENTATIVE
list = toMap.get(ConcessioniFormCardTitle.IMMAGINI_RAPPRESENTATIVE);
@ -146,22 +138,22 @@ public class GeoportalDataEntryServiceImpl extends RemoteServiceServlet implemen
"Error: no data found for " + ConcessioniFormCardTitle.IMMAGINI_RAPPRESENTATIVE.getTitle());
List<GenericDatasetBean> imgRaprsLst = list.get(0).getListGDB();
for (GenericDatasetBean imgRapr : imgRaprsLst) {
LOG.debug("\n\n");
LOG.debug(ConcessioniFormCardTitle.IMMAGINI_RAPPRESENTATIVE + " building with client obj: " + imgRapr);
UploadedImage img = ConvertToServiceModel.toImmaginiRappresentative(imgRapr);
LOG.debug("Built " + ConcessioniFormCardTitle.IMMAGINI_RAPPRESENTATIVE + " as server obj: " + img);
// Building TempFile for Immagini
files = serviceUtil.toTemFiles(imgRapr.getFilesUploaded());
// Upload file to Concessione
if (files!=null && files.size() > 0) {
// saving into back-end
AddSectionToConcessioneRequest request = new AddSectionToConcessioneRequest(Paths.IMMAGINI, files);
clientMongo.registerFile(mongoId, request);
LOG.info("Registered the mongoId "+mongoId+" request " + Paths.IMMAGINI + "with "+files.size()+" file/s");
List<UploadedImage> immaginiRappresentativeService = null;
if(imgRaprsLst.size()>0) {
immaginiRappresentativeService = new ArrayList<UploadedImage>(imgRaprsLst.size());
for (GenericDatasetBean imgRapr : imgRaprsLst) {
LOG.debug("\n\n");
LOG.debug(ConcessioniFormCardTitle.IMMAGINI_RAPPRESENTATIVE + " building with client obj: " + imgRapr);
UploadedImage img = ConvertToServiceModel.toImmaginiRappresentative(imgRapr);
LOG.debug("Built " + ConcessioniFormCardTitle.IMMAGINI_RAPPRESENTATIVE + " as server obj: " + img);
immaginiRappresentativeService.add(img);
}
}
//Setting Immagini Rappresentative
if(immaginiRappresentativeService!=null) {
concessioneNew.setImmaginiRappresentative(immaginiRappresentativeService);
}
// POSIZIONAMENTO_DELL_AREA_DI_INDAGINE
list = toMap.get(ConcessioniFormCardTitle.POSIZIONAMENTO_DELL_AREA_DI_INDAGINE);
@ -171,21 +163,19 @@ public class GeoportalDataEntryServiceImpl extends RemoteServiceServlet implemen
listGDB = list.get(0).getListGDB();
GenericDatasetBean pad = listGDB.get(0);
LOG.debug("\n\n");
LOG.debug(ConcessioniFormCardTitle.POSIZIONAMENTO_DELL_AREA_DI_INDAGINE + " building with client obj: "
+ pad);
LayerConcessione layerPad = ConvertToServiceModel.toLayerConcessione(pad);
LOG.debug("Built " + ConcessioniFormCardTitle.POSIZIONAMENTO_DELL_AREA_DI_INDAGINE + " as server obj: "
+ layerPad);
LayerConcessione layerPad = null;
if(pad!=null) {
LOG.debug("\n\n");
LOG.debug(ConcessioniFormCardTitle.POSIZIONAMENTO_DELL_AREA_DI_INDAGINE + " building with client obj: "
+ pad);
layerPad = ConvertToServiceModel.toLayerConcessione(pad);
LOG.debug("Built " + ConcessioniFormCardTitle.POSIZIONAMENTO_DELL_AREA_DI_INDAGINE + " as server obj: "
+ layerPad);
}
// Building TempFile for POSIZIONAMENTO
files = serviceUtil.toTemFiles(pad.getFilesUploaded());
// Upload file to Concessione
if (files!=null && files.size() > 0) {
// saving into back-end
AddSectionToConcessioneRequest request = new AddSectionToConcessioneRequest(Paths.POSIZIONAMENTO, files);
clientMongo.registerFile(mongoId, request);
LOG.info("Registered the mongoId "+mongoId+" request " + Paths.POSIZIONAMENTO + "with "+files.size()+" file/s");
//Setting Posizionamento Di Scavo
if(layerPad!=null) {
concessioneNew.setPosizionamentoScavo(layerPad);
}
// PIANTA_DI_FINE_SCAVO
@ -195,25 +185,91 @@ public class GeoportalDataEntryServiceImpl extends RemoteServiceServlet implemen
"Error: no data found for " + ConcessioniFormCardTitle.PIANTA_DI_FINE_SCAVO.getTitle());
listGDB = list.get(0).getListGDB();
List<GenericDatasetBean> listPfs = listGDB;
//Managing N:N
for (GenericDatasetBean pfs : listGDB) {
LOG.debug("\n\n");
LOG.debug(ConcessioniFormCardTitle.PIANTA_DI_FINE_SCAVO + " building with client obj: " + pfs);
LayerConcessione layerPfs = ConvertToServiceModel.toLayerConcessione(pfs);
LOG.debug("Built " + ConcessioniFormCardTitle.PIANTA_DI_FINE_SCAVO + " as server obj: " + layerPfs);
List<LayerConcessione> pianteFineScavo = null;
if(listPfs.size()>0) {
pianteFineScavo = new ArrayList<LayerConcessione>(listPfs.size());
for (GenericDatasetBean pfs : listPfs) {
LOG.debug("\n\n");
LOG.debug(ConcessioniFormCardTitle.PIANTA_DI_FINE_SCAVO + " building with client obj: " + pfs);
LayerConcessione layerPfs = ConvertToServiceModel.toLayerConcessione(pfs);
LOG.debug("Built " + ConcessioniFormCardTitle.PIANTA_DI_FINE_SCAVO + " as server obj: " + layerPfs);
pianteFineScavo.add(layerPfs);
}
}
//Setting Piante fine Scavo
if(pianteFineScavo!=null) {
concessioneNew.setPianteFineScavo(pianteFineScavo);
}
//Registering Meta
clientMongo.replace(concessioneNew);
mongoId = concessioneNew.getMongo_id();
LOG.info("Registered the meta. Called mongo.replace for: "+concessioneNew);
//UPLOADING FILES
LOG.info("Now uploading the files...");
// Building TempFile for Relazione
SessionUtil.getCurrentContext(this.getThreadLocalRequest(), true);
List<TempFile> files = serviceUtil.toTemFiles(rds.getFilesUploaded());
// Upload file to Concessione. Should be one file.
if (files!=null && files.size() > 0) {
// saving into back-end
AddSectionToConcessioneRequest request = new AddSectionToConcessioneRequest(Paths.RELAZIONE, files);
clientMongo.registerFile(mongoId, request);
LOG.info("Registered the mongoId "+mongoId+" request " + Paths.RELAZIONE + "with "+files.size()+" file/s");
}
// Building TempFile for PIANTA_DI_FINE_SCAVO
files = serviceUtil.toTemFiles(pfs.getFilesUploaded());
// Upload file to Concessione Section by Path 'Relazione'
//IMMAGINI RAPPRESENTATIVE
for (int i=0; i<imgRaprsLst.size(); i++) {
LOG.debug("\n\n");
GenericDatasetBean imgRapr = imgRaprsLst.get(i);
// Building TempFile for Immagini
SessionUtil.getCurrentContext(this.getThreadLocalRequest(), true);
files = serviceUtil.toTemFiles(imgRapr.getFilesUploaded());
// Upload file to Concessione. The size is always 1 so it is consistent with the 'for' index
if (files!=null && files.size() > 0) {
// saving into back-end
AddSectionToConcessioneRequest request = new AddSectionToConcessioneRequest(Paths.PIANTE, files);
AddSectionToConcessioneRequest request = new AddSectionToConcessioneRequest(Paths.imgByIndex(i), files);
clientMongo.registerFile(mongoId, request);
LOG.info("Registered the mongoId "+mongoId+" request " + Paths.PIANTE + "with "+files.size()+" file/s");
LOG.info("Registered the mongoId "+mongoId+" request " + Paths.IMMAGINI + "with "+files.size()+" file/s");
}
}
//POSIZIONAMENTO
// Building TempFile for POSIZIONAMENTO
SessionUtil.getCurrentContext(this.getThreadLocalRequest(), true);
files = serviceUtil.toTemFiles(pad.getFilesUploaded());
// Upload file to Concessione
if (files!=null && files.size() > 0) {
// saving into back-end
AddSectionToConcessioneRequest request = new AddSectionToConcessioneRequest(Paths.POSIZIONAMENTO, files);
clientMongo.registerFile(mongoId, request);
LOG.info("Registered the mongoId "+mongoId+" request " + Paths.POSIZIONAMENTO + "with "+files.size()+" file/s");
}
//PIANTE FINE SCAVO
if(listPfs.size()>0) {
for (int i=0; i<listPfs.size(); i++) {
// Building TempFile for PIANTA_DI_FINE_SCAVO
GenericDatasetBean pfs = listPfs.get(i);
SessionUtil.getCurrentContext(this.getThreadLocalRequest(), true);
files = serviceUtil.toTemFiles(pfs.getFilesUploaded());
// Upload file to Concessione Section by Path 'Relazione'
if (files!=null && files.size() > 0) {
// saving into back-end
AddSectionToConcessioneRequest request = new AddSectionToConcessioneRequest(Paths.piantaByIndex(i), files);
clientMongo.registerFile(mongoId, request);
LOG.info("Registered the mongoId "+mongoId+" request " + Paths.PIANTE + "with "+files.size()+" file/s");
}
}
}
} catch (Exception e) {
LOG.error("Error on converting form data: ", e);
throw new Exception(
@ -224,6 +280,7 @@ public class GeoportalDataEntryServiceImpl extends RemoteServiceServlet implemen
Concessione concessione;
if(clientMongo!=null && mongoId!=null) {
SessionUtil.getCurrentContext(this.getThreadLocalRequest(), true);
concessione = clientMongo.publish(mongoId);
//server report
ValidationReport report = concessione.getReport();

View File

@ -5,6 +5,7 @@ package org.gcube.portlets.user.geoportaldataentry.server;
import javax.servlet.http.HttpServletRequest;
import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
import org.gcube.common.portal.PortalContext;
import org.gcube.common.scope.api.ScopeProvider;
import org.gcube.vomanagement.usermanagement.GroupManager;
@ -67,20 +68,27 @@ public class SessionUtil {
* Retrieve the current scope by using the portal manager.
*
* @param request the request
* @param setInThread the set in thread
* @param setContextsInThread set the scope and the security token into current thread
* @return a GcubeUser object
*/
public static String getCurrentContext(HttpServletRequest request, boolean setInThread){
public static String getCurrentContext(HttpServletRequest request, boolean setContextsInThread){
if(request == null)
throw new IllegalArgumentException("HttpServletRequest is null!");
PortalContext pContext = PortalContext.getConfiguration();
String context = pContext.getCurrentScope(request);
LOG.debug("Returning context " + context);
if(context != null && setInThread)
ScopeProvider.instance.set(context);
if(setContextsInThread) {
GCubeUser user = getCurrentUser(request);
String token = pContext.getCurrentUserToken(context, user.getUsername());
if(context!=null)
ScopeProvider.instance.set(context);
if(token!=null)
SecurityTokenProvider.instance.set(token);
}
return context;
}