package com.collabinate.server.adminresources;
import org.restlet.data.Status;
import org.restlet.resource.Delete;
import org.restlet.resource.Get;
import org.restlet.resource.Put;
import org.restlet.resource.ServerResource;
import com.collabinate.server.engine.CollabinateAdmin;
/**
* Restful resource representing the data for a tenant.
*
* @author mafuba
*
*/
public class TenantDataResource extends ServerResource
{
@Get("xml")
public String exportTenantData()
{
// extract necessary information from the context
CollabinateAdmin admin = (CollabinateAdmin)getContext()
.getAttributes().get("collabinateAdmin");
String tenantId = getAttribute("tenantId");
// ensure the tenant exists
if (null == admin.getTenant(tenantId))
{
setStatus(Status.CLIENT_ERROR_NOT_FOUND);
return null;
}
// return the tenant data
return admin.exportTenantData(tenantId);
}
@Put("xml")
public void importTenantData(String data)
{
// extract necessary information from the context
CollabinateAdmin admin = (CollabinateAdmin)getContext()
.getAttributes().get("collabinateAdmin");
String tenantId = getAttribute("tenantId");
// ensure the tenant does not exist
if (null != admin.getTenant(tenantId))
{
setStatus(Status.CLIENT_ERROR_CONFLICT);
return;
}
admin.importTenantData(tenantId, data);
}
@Delete
public void deleteTenantData()
{
// extract necessary information from the context
CollabinateAdmin admin = (CollabinateAdmin)getContext()
.getAttributes().get("collabinateAdmin");
String tenantId = getAttribute("tenantId");
// ensure the tenant exists
if (null == admin.getTenant(tenantId))
{
setStatus(Status.CLIENT_ERROR_NOT_FOUND);
return;
}
admin.deleteTenant(tenantId);
}
}