/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.smartitengineering.generetor.engine.webservice.client.api.Impl;
import com.smartitengineering.generator.engine.webservice.domain.ReportConfig;
import com.smartitengineering.generetor.engine.webservice.client.api.ConfigResource;
import com.smartitengineering.util.rest.atom.AbstractFeedClientResource;
import com.smartitengineering.util.rest.client.Resource;
import com.smartitengineering.util.rest.client.ResourceLink;
import com.smartitengineering.util.rest.client.SimpleResourceImpl;
import com.sun.jersey.api.client.ClientResponse;
import com.sun.jersey.api.client.UniformInterfaceException;
import com.sun.jersey.api.client.config.ClientConfig;
import javax.ws.rs.core.MediaType;
import org.apache.abdera.model.Feed;
import org.apache.abdera.model.Link;
/**
*
* @author saumitra
*/
public class ConfigResourceImpl extends AbstractFeedClientResource<Resource<? extends Feed>> implements ConfigResource {
public ConfigResourceImpl(Resource referrer, ResourceLink resouceLink) throws IllegalArgumentException,
UniformInterfaceException {
super(referrer, resouceLink);
final ResourceLink altLink = getRelatedResourceUris().getFirst(Link.REL_ALTERNATE);
addNestedResource("config",
new SimpleResourceImpl<ReportConfig>(this, altLink.getUri(), altLink.getMimeType(),
ReportConfig.class, null,
false,
null,
null));
}
@Override
protected void processClientConfig(ClientConfig cc) {
}
@Override
protected Resource<? extends Feed> instantiatePageableResource(ResourceLink rl) {
return null;
}
@Override
public void updateConfig() {
put(MediaType.APPLICATION_JSON, getConfig(), ClientResponse.Status.OK, ClientResponse.Status.SEE_OTHER,
ClientResponse.Status.FOUND);
}
@Override
public void deleteConfig() {
delete(ClientResponse.Status.OK);
}
@Override
public ReportConfig getConfig() {
return getConfig(false);
}
public ReportConfig getConfig(boolean reload) {
Resource<ReportConfig> config = super.<ReportConfig>getNestedResource("config");
if (reload) {
return config.get();
}
else {
return config.getLastReadStateOfEntity();
}
}
}