2020-12-17 18:27:45 +01:00
|
|
|
|
package org.gcube.application.geoportal.service.rest;
|
|
|
|
|
|
2021-07-30 18:21:29 +02:00
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
2020-12-17 18:27:45 +01:00
|
|
|
|
import org.gcube.application.geoportal.common.model.legacy.Concessione;
|
2020-12-18 18:24:20 +01:00
|
|
|
|
import org.gcube.application.geoportal.common.rest.AddSectionToConcessioneRequest;
|
2020-12-17 18:27:45 +01:00
|
|
|
|
import org.gcube.application.geoportal.common.rest.InterfaceConstants;
|
|
|
|
|
import org.gcube.application.geoportal.service.engine.mongo.ConcessioniMongoManager;
|
2021-08-03 12:50:02 +02:00
|
|
|
|
import org.gcube.application.geoportal.service.model.internal.faults.DeletionException;
|
2020-12-17 18:27:45 +01:00
|
|
|
|
import org.gcube.application.geoportal.service.utils.Serialization;
|
|
|
|
|
import org.json.JSONArray;
|
|
|
|
|
import org.json.JSONObject;
|
|
|
|
|
|
2021-07-30 18:21:29 +02:00
|
|
|
|
import javax.ws.rs.*;
|
|
|
|
|
import javax.ws.rs.core.MediaType;
|
2021-08-03 12:50:02 +02:00
|
|
|
|
import javax.ws.rs.core.Response;
|
2020-12-17 18:27:45 +01:00
|
|
|
|
|
2021-01-04 16:58:40 +01:00
|
|
|
|
@Path(InterfaceConstants.Methods.MONGO_CONCESSIONI)
|
2020-12-17 18:27:45 +01:00
|
|
|
|
@Slf4j
|
|
|
|
|
public class ConcessioniOverMongo {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@PUT
|
|
|
|
|
@Consumes(MediaType.APPLICATION_JSON)
|
|
|
|
|
@Produces(MediaType.APPLICATION_JSON)
|
2020-12-18 18:24:20 +01:00
|
|
|
|
public String replace(String jsonString) {
|
2020-12-17 18:27:45 +01:00
|
|
|
|
return new GuardedMethod<String> () {
|
|
|
|
|
@Override
|
|
|
|
|
protected String run() throws Exception, WebApplicationException {
|
|
|
|
|
Concessione c=Serialization.read(jsonString, Concessione.class);
|
|
|
|
|
ConcessioniMongoManager manager=new ConcessioniMongoManager();
|
2020-12-22 18:22:56 +01:00
|
|
|
|
manager.replace(c);
|
2020-12-17 18:27:45 +01:00
|
|
|
|
|
|
|
|
|
return Serialization.write(manager.getById(c.getMongo_id()));
|
|
|
|
|
}
|
|
|
|
|
}.execute().getResult();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@POST
|
|
|
|
|
@Consumes(MediaType.APPLICATION_JSON)
|
|
|
|
|
@Produces(MediaType.APPLICATION_JSON)
|
|
|
|
|
public String createNew(String jsonString) {
|
|
|
|
|
return new GuardedMethod<String> () {
|
|
|
|
|
@Override
|
|
|
|
|
protected String run() throws Exception, WebApplicationException {
|
|
|
|
|
Concessione c=Serialization.read(jsonString, Concessione.class);
|
|
|
|
|
ConcessioniMongoManager manager=new ConcessioniMongoManager();
|
|
|
|
|
return Serialization.write(manager.registerNew(c));
|
|
|
|
|
}
|
|
|
|
|
}.execute().getResult();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@GET
|
|
|
|
|
@Produces(MediaType.APPLICATION_JSON)
|
|
|
|
|
public String list() {
|
|
|
|
|
return new GuardedMethod<String> () {
|
|
|
|
|
protected String run() throws Exception ,WebApplicationException {
|
|
|
|
|
ConcessioniMongoManager manager=new ConcessioniMongoManager();
|
|
|
|
|
JSONArray toReturn=new JSONArray();
|
|
|
|
|
manager.list().forEach((Concessione c) -> {
|
|
|
|
|
try{
|
|
|
|
|
toReturn.put(new JSONObject(Serialization.write(c)));
|
|
|
|
|
}catch(Throwable t) {
|
|
|
|
|
log.error("Unable to serialize "+c);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
return toReturn.toString();
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
}.execute().getResult();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// BY ID
|
|
|
|
|
@GET
|
|
|
|
|
@Produces(MediaType.APPLICATION_JSON)
|
|
|
|
|
@Path("{"+InterfaceConstants.Parameters.PROJECT_ID+"}")
|
|
|
|
|
public String getById(@PathParam(InterfaceConstants.Parameters.PROJECT_ID) String id) {
|
|
|
|
|
return new GuardedMethod<String> () {
|
|
|
|
|
@Override
|
|
|
|
|
protected String run() throws Exception, WebApplicationException {
|
|
|
|
|
ConcessioniMongoManager manager=new ConcessioniMongoManager();
|
|
|
|
|
return Serialization.write(manager.getById(id));
|
|
|
|
|
}
|
|
|
|
|
}.execute().getResult();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@DELETE
|
|
|
|
|
@Produces(MediaType.APPLICATION_JSON)
|
|
|
|
|
@Path("{"+InterfaceConstants.Parameters.PROJECT_ID+"}")
|
2021-08-02 17:43:30 +02:00
|
|
|
|
public void deleteById(@PathParam(InterfaceConstants.Parameters.PROJECT_ID) String id,
|
|
|
|
|
@QueryParam("force") Boolean forceOption) {
|
2020-12-17 18:27:45 +01:00
|
|
|
|
new GuardedMethod<Concessione> () {
|
|
|
|
|
@Override
|
|
|
|
|
protected Concessione run() throws Exception, WebApplicationException {
|
2021-08-03 12:50:02 +02:00
|
|
|
|
try{
|
|
|
|
|
Boolean force=(forceOption!=null)?forceOption:false;
|
|
|
|
|
ConcessioniMongoManager manager=new ConcessioniMongoManager();
|
|
|
|
|
manager.deleteById(id,force);
|
|
|
|
|
return null;
|
|
|
|
|
}catch(DeletionException e){
|
|
|
|
|
throw new WebApplicationException("Unable to delete "+id,e, Response.Status.EXPECTATION_FAILED);
|
|
|
|
|
}
|
2020-12-17 18:27:45 +01:00
|
|
|
|
}
|
|
|
|
|
}.execute();
|
|
|
|
|
}
|
|
|
|
|
|
2020-12-18 18:24:20 +01:00
|
|
|
|
|
|
|
|
|
@PUT
|
|
|
|
|
@Consumes(MediaType.APPLICATION_JSON)
|
|
|
|
|
@Produces(MediaType.APPLICATION_JSON)
|
|
|
|
|
@Path("{"+InterfaceConstants.Parameters.PROJECT_ID+"}")
|
2020-12-22 18:22:56 +01:00
|
|
|
|
public String update(@PathParam(InterfaceConstants.Parameters.PROJECT_ID) String id,String jsonString) {
|
2020-12-18 18:24:20 +01:00
|
|
|
|
return new GuardedMethod<String> () {
|
|
|
|
|
@Override
|
|
|
|
|
protected String run() throws Exception, WebApplicationException {
|
|
|
|
|
// Concessione c=Serialization.read(jsonString, Concessione.class);
|
|
|
|
|
// ConcessioniMongoManager manager=new ConcessioniMongoManager();
|
|
|
|
|
// manager.update(c);
|
|
|
|
|
//
|
|
|
|
|
// return Serialization.write(manager.getById(c.getMongo_id()));
|
|
|
|
|
throw new RuntimeException("TO IMPLEMENT");
|
|
|
|
|
}
|
|
|
|
|
}.execute().getResult();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2020-12-17 18:27:45 +01:00
|
|
|
|
@PUT
|
|
|
|
|
@Produces(MediaType.APPLICATION_JSON)
|
2021-01-04 16:58:40 +01:00
|
|
|
|
@Path("/{"+InterfaceConstants.Methods.PUBLISH_PATH+"}/{"+InterfaceConstants.Parameters.PROJECT_ID+"}")
|
2020-12-17 18:27:45 +01:00
|
|
|
|
public String publish(@PathParam(InterfaceConstants.Parameters.PROJECT_ID) String id) {
|
|
|
|
|
return new GuardedMethod<String> () {
|
|
|
|
|
@Override
|
|
|
|
|
protected String run() throws Exception, WebApplicationException {
|
|
|
|
|
ConcessioniMongoManager manager=new ConcessioniMongoManager();
|
|
|
|
|
return Serialization.write(manager.publish(id));
|
|
|
|
|
}
|
|
|
|
|
}.execute().getResult();
|
|
|
|
|
}
|
|
|
|
|
|
2020-12-17 18:34:53 +01:00
|
|
|
|
@POST
|
|
|
|
|
@Consumes(MediaType.APPLICATION_JSON)
|
|
|
|
|
@Produces(MediaType.APPLICATION_JSON)
|
2021-01-04 16:58:40 +01:00
|
|
|
|
@Path("/"+InterfaceConstants.Methods.REGISTER_FILES_PATH+"/{"+InterfaceConstants.Parameters.PROJECT_ID+"}")
|
2020-12-18 18:24:20 +01:00
|
|
|
|
public String registerFile(@PathParam(InterfaceConstants.Parameters.PROJECT_ID) String id,String jsonRequest) {
|
2020-12-17 18:34:53 +01:00
|
|
|
|
return new GuardedMethod<String> () {
|
|
|
|
|
@Override
|
|
|
|
|
protected String run() throws Exception, WebApplicationException {
|
2020-12-18 18:24:20 +01:00
|
|
|
|
AddSectionToConcessioneRequest request=Serialization.read(jsonRequest,AddSectionToConcessioneRequest.class);
|
|
|
|
|
log.info("Registering {} file(s) for {} Concessione ID {}",
|
|
|
|
|
request.getStreams().size(),
|
|
|
|
|
request.getDestinationPath(),id);
|
|
|
|
|
ConcessioniMongoManager manager=new ConcessioniMongoManager();
|
|
|
|
|
Concessione toReturn= manager.persistContent(id, request.getDestinationPath(), request.getStreams());
|
2020-12-17 18:34:53 +01:00
|
|
|
|
|
2020-12-18 18:24:20 +01:00
|
|
|
|
log.debug("Returning "+toReturn);
|
|
|
|
|
return Serialization.write(toReturn);
|
2020-12-17 18:34:53 +01:00
|
|
|
|
}
|
|
|
|
|
}.execute().getResult();
|
|
|
|
|
}
|
|
|
|
|
|
2020-12-17 18:27:45 +01:00
|
|
|
|
}
|