/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.smartitengineering.user.client.impl;
import com.smartitengineering.user.client.api.UserGroup;
import com.smartitengineering.user.client.api.UserGroupPrivilegesResource;
import com.smartitengineering.user.client.api.UserGroupResource;
import com.smartitengineering.user.client.api.UserGroupRolesResource;
import com.smartitengineering.user.client.api.UserGroupUsersResource;
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.config.ClientConfig;
import org.apache.abdera.model.Feed;
import org.apache.abdera.model.Link;
/**
*
* @author modhu7
*/
public class UserGroupResourceImpl extends AbstractFeedClientResource<Resource<? extends Feed>> implements UserGroupResource{
public final String REL_USER_GROUP = "usergroup";
public final String REL_USERS = "users";
public final String REL_ROLES = "roles";
public final String REL_PRIVILEGES = "privileges";
public UserGroupResourceImpl(ResourceLink link, Resource referrer) {
super(referrer, link);
final ResourceLink altLink = getRelatedResourceUris().getFirst(Link.REL_ALTERNATE);
addNestedResource(REL_USER_GROUP, new SimpleResourceImpl<com.smartitengineering.user.client.impl.domain.UserGroup>(
this, altLink.getUri(), altLink.getMimeType(), com.smartitengineering.user.client.impl.domain.UserGroup.class,
null, false, null, null));
}
@Override
protected void processClientConfig(ClientConfig clientConfig) {
}
@Override
protected Resource<? extends Feed> instantiatePageableResource(ResourceLink link) {
return null;
}
@Override
public UserGroup getUserGroup() {
return getUserGroup(false);
}
@Override
public UserGroupUsersResource getUserGroupUsersResource() {
return new UserGroupUsersResouceImpl(getRelatedResourceUris().getFirst(REL_USERS), this);
}
@Override
public UserGroupPrivilegesResource getUserGroupPrivilegesResource() {
return new UserGroupPrivilegesResourceImpl(getRelatedResourceUris().getFirst(REL_PRIVILEGES), this);
}
protected UserGroup getUserGroup(boolean reload) {
Resource<UserGroup> userGroup = super.<UserGroup>getNestedResource(REL_USER_GROUP);
if(reload){
return userGroup.get();
}
else{
return userGroup.getLastReadStateOfEntity();
}
}
@Override
public UserGroupRolesResource getUserGroupRolesResource() {
return new UserGroupRolesResourceImpl(getRelatedResourceUris().getFirst(REL_ROLES), this);
}
}