This repository has been archived on 2021-09-09. You can view files and clone it, but cannot push or open issues or pull requests.
geoportal-service/src/main/java/org/gcube/application/geoportal/service/rest/ConcessioniOverMongo.java

173 lines
5.8 KiB
Java
Raw Normal View History

2020-12-17 18:27:45 +01:00
package org.gcube.application.geoportal.service.rest;
2020-12-18 18:24:20 +01:00
import java.time.LocalDateTime;
2020-12-17 18:27:45 +01:00
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.MediaType;
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;
2020-12-17 18:34:53 +01:00
import org.gcube.application.geoportal.common.rest.TempFile;
2020-12-18 18:24:20 +01:00
import org.gcube.application.geoportal.service.engine.WorkspaceManager;
import org.gcube.application.geoportal.service.engine.WorkspaceManager.FolderOptions;
2020-12-17 18:27:45 +01:00
import org.gcube.application.geoportal.service.engine.mongo.ConcessioniMongoManager;
import org.gcube.application.geoportal.service.utils.Serialization;
2020-12-18 18:24:20 +01:00
import org.gcube.common.storagehub.client.dsl.FolderContainer;
2020-12-17 18:27:45 +01:00
import org.json.JSONArray;
import org.json.JSONObject;
import lombok.extern.slf4j.Slf4j;
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+"}")
public void deleteById(@PathParam(InterfaceConstants.Parameters.PROJECT_ID) String id) {
new GuardedMethod<Concessione> () {
@Override
protected Concessione run() throws Exception, WebApplicationException {
ConcessioniMongoManager manager=new ConcessioniMongoManager();
manager.deleteById(id);
return null;
}
}.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
}