/** * Aggiorna la visibilità delle schede con l'id passato e restituisce l'esito al client * * @return la serializzazione json dell'esito della richiesta */ protected String bulkUpdateVisibility( UpdateVisibilityParameters updateVisibilityParameters, SPODEngine engine, Publisher publisher) { boolean updateToPublic = updateVisibilityParameters.isToPublic(); try { // Si aggiorna la visibilità della scheda (tramite SP su DB site) // SPOD ha sia visibilità che approvazione, nella API CKAN si considerano i 2 aspetti // equivalenti // e sempre modificati contemporaneamente. engine.updateStatusVisibility( updateVisibilityParameters .getDatasets() .toArray(new String[updateVisibilityParameters.getDatasets().size()]), updateToPublic, updateToPublic); } catch (Exception e2) { SpodLogger.log(LogType.ERROR, e2); return Utils.toJson( Utils.buildActionApiResponseError(help, e2.getMessage(), "Generic Error")); } // Help generico sull'utilizzo del metodo String customGenericHelp = genericHelp; String successMessage = "Bulk Update " + ((updateToPublic) ? "Public" : "Private") + " successfully executed"; SpodLogger.log(LogType.INFO, successMessage); return Utils.toJson(Utils.buildActionApiResponseSuccess(customGenericHelp, successMessage)); }
@Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { if (!enabled) Utils.sendResponse(response, "Method disabled"); else { String servletPath = request.getServletPath(); // Key per autorizzare l'operazione String authorization = request.getHeader("Authorization"); if (servletPath.matches(actionAPIregex + "bulk_update_private$") || servletPath.matches(actionAPIregex + "bulk_update_public$")) { // L'uid passato per l'autorizzazione deve coincidere con quello di un utente publisher boolean checkPublisherExistence = invokeCheckExistenceOnDB(checkPublisherByUid, authorization); if (!checkPublisherExistence) { ActionApiResponseError responseActionApi = Utils.buildActionApiResponseError( "You need authentication api key", "Forbidden", "Authorization Error"); Utils.sendResponse(response, Utils.toJson(responseActionApi)); return; } // L'uid authorization è esattamente quello dell'utente publisher, // per cui si associa direttamente. Publisher publisher = new Publisher(); publisher.setUid(authorization); // Se legge il corpo della POST (richiesta in formato JSON). // Sono i parametri che dovrà avere il package/dataset creato. String jsonUpdateVisibilityParameters = Utils.getPostFullBody(request); // Validazione dei parametri String validationError = updateVisibilityValidation(jsonUpdateVisibilityParameters); if (validationError != null) { Utils.sendResponse( response, Utils.toJson( Utils.buildActionApiResponseError( help, validationError, "Parameters validation error"))); return; } // Esecuzione richiesta di bulk update public if (servletPath.matches(actionAPIregex + "bulk_update_public$")) updateVisibilityParameters.setToPublic(true); else if (servletPath.matches(actionAPIregex + "bulk_update_private$")) { updateVisibilityParameters.setToPublic(false); } String json = bulkUpdateVisibility(updateVisibilityParameters, engine, publisher); Utils.sendResponse(response, json); return; } // Qui non si dovrebbe arrivare, servlet avviata con url errato*/ else { Utils.sendResponse(response, "Url error"); return; } } }