160 lines
5.4 KiB
Java
160 lines
5.4 KiB
Java
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;
|
||
}
|
||
}
|