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

160 lines
5.4 KiB
Java
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package org.gcube.application.geoportal.client;
import java.io.InputStream;
import java.util.ArrayList;
import javax.ws.rs.client.Entity;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import org.gcube.application.geoportal.client.utils.Serialization;
import org.gcube.application.geoportal.common.model.legacy.Concessione;
import org.gcube.application.geoportal.common.rest.AddSectionToConcessioneRequest;
import org.gcube.application.geoportal.common.rest.InterfaceConstants;
import org.gcube.application.geoportal.common.rest.MongoConcessioni;
import org.gcube.common.clients.Call;
import org.gcube.common.clients.delegates.ProxyDelegate;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@RequiredArgsConstructor
@Slf4j
public class DefaultMongoConcessioni implements MongoConcessioni{
@NonNull
private final ProxyDelegate<WebTarget> delegate;
private ObjectMapper mapper=Serialization.mapper;
@Override
public Concessione createNew(Concessione c) throws Exception {
log.debug("Serializing {} ",c);
final String serialized=mapper.writeValueAsString(c);
Call<WebTarget,Concessione> call= new Call<WebTarget,Concessione>(){
@Override
public Concessione call(WebTarget endpoint) throws Exception {
Response resp= endpoint.request(MediaType.APPLICATION_JSON).post(Entity.entity(serialized, MediaType.APPLICATION_JSON));
return check(resp,Concessione.class);
}
};
Concessione toReturn = delegate.make(call);
log.info("Registered {}",toReturn);
return toReturn;
}
@Override
public void deleteById(String id) throws Exception {
log.debug("Deleting by id {}",id);
delegate.make(new Call<WebTarget,String>(){
@Override
public String call(WebTarget endpoint) throws Exception {
check(endpoint.path(id).request(MediaType.APPLICATION_JSON).delete(),null);
log.info("Deleted by id {}",id);
return null;
}
});
}
@Override
public Concessione getById(String id) throws Exception {
log.debug("Loading by id {}",id);
Call<WebTarget,Concessione> call= new Call<WebTarget,Concessione>(){
@Override
public Concessione call(WebTarget endpoint) throws Exception {
Response resp= endpoint.path(id).request(MediaType.APPLICATION_JSON).get();
return check(resp,Concessione.class);
}
};
Concessione toReturn = delegate.make(call);
log.debug("Loaded {}",toReturn);
return toReturn;
}
@Override
public Iterable<Concessione> getList() throws Exception {
log.debug("Getting list");
Call<WebTarget,Iterable<Concessione>> call=new Call<WebTarget,Iterable<Concessione>>(){
@Override
public Iterable<Concessione> call(WebTarget endpoint) throws Exception {
Iterable<Concessione> toReturn=new ArrayList<Concessione>();
return (Iterable<Concessione>) mapper.readerFor(Concessione.class).readValues(
endpoint.request(MediaType.APPLICATION_JSON).get(InputStream.class));
}
};
return delegate.make(call);
}
@Override
public Concessione publish(String id) throws Exception {
log.info("Publishing {} ",id);
Call<WebTarget,Concessione> call= new Call<WebTarget,Concessione>(){
@Override
public Concessione call(WebTarget endpoint) throws Exception {
Response resp= endpoint.path(InterfaceConstants.Methods.PUBLISH_PATH).
path(id).request(MediaType.APPLICATION_JSON).put(Entity.entity(id, MediaType.APPLICATION_JSON));
return check(resp,Concessione.class);
}
};
Concessione toReturn = delegate.make(call);
log.debug("Published {} ",toReturn);
return toReturn;
}
@Override
public Concessione registerFile(String id, AddSectionToConcessioneRequest request) throws Exception {
log.info("Registering {} in {}",request,id);
Call<WebTarget,Concessione> call= new Call<WebTarget,Concessione>(){
@Override
public Concessione call(WebTarget endpoint) throws Exception {
Response resp= endpoint.path(InterfaceConstants.Methods.REGISTER_FILES_PATH).
path(id).request(MediaType.APPLICATION_JSON).post(Entity.entity(mapper.writeValueAsString(request),
MediaType.APPLICATION_JSON));
return check(resp,Concessione.class);
}
};
Concessione toReturn = delegate.make(call);
log.debug("Published {} ",toReturn);
return toReturn;
}
@Override
public Concessione update(String id, String jsonUpdate) throws Exception {
// TODO Auto-generated method stub
return null;
}
@Override
public Concessione replace(Concessione replacement) throws Exception {
log.info("Replacing {}",replacement);
Call<WebTarget,Concessione> call= new Call<WebTarget,Concessione>(){
@Override
public Concessione call(WebTarget endpoint) throws Exception {
Response resp= endpoint.
request(MediaType.APPLICATION_JSON).
put(Entity.entity(mapper.writeValueAsString(replacement),
MediaType.APPLICATION_JSON));
return check(resp,Concessione.class);
}
};
Concessione toReturn = delegate.make(call);
log.debug("Reloaded {} ",toReturn);
return toReturn;
}
protected static<T> T check(Response resp, Class<T> clazz) throws Exception {
String resString=resp.readEntity(String.class);
if(resp.getStatus()<200||resp.getStatus()>=300)
throw new Exception("RESP STATUS IS "+resp.getStatus()+". Message : "+resString);
System.out.println("Resp String is "+resString);
if(clazz!=null)
return Serialization.read(resString, clazz);
else return null;
}
}