package edu.asu.spring.quadriga.aspects;
import java.util.HashMap;
import javax.annotation.PostConstruct;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Service;
import edu.asu.spring.quadriga.aspects.annotations.CheckedElementType;
/**
* Service class Implementation of {@link IAuthorizationManager} We can get
* {@link IAuthorization} object for particular type like
* {@link ProjectAuthorization}, {@link WorkspaceAuthorization} etc. So the
* Authorization can be handled by the appropriate service class.
*
* @author Kiran kumar
*
*/
@Service
public class AuthorizationManager implements IAuthorizationManager {
@Autowired
private transient ApplicationContext context;
@Autowired
@Qualifier("projectAuthorization")
private IAuthorization projectAuthorization;
@Autowired
@Qualifier("workspaceAuthorization")
private IAuthorization workspaceAuthorization;
@Autowired
@Qualifier("workspaceRestAuthorization")
private IAuthorization workspaceRestAuthorization;
@Autowired
@Qualifier("conceptCollectionAuthorization")
private IAuthorization conceptCollectionAuthorization;
@Autowired
@Qualifier("conceptCollectionRestAuthorization")
private IAuthorization conceptCollectionRestAuthorization;
@Autowired
@Qualifier("dictionaryAuthorization")
private IAuthorization dictionaryAuthorization;
@Autowired
@Qualifier("networkAuthorization")
private IAuthorization networkAuthorization;
private HashMap<CheckedElementType, IAuthorization> accessManager;
/**
* Init class which runs after the class is loaded in the tomcat container
* Adds the autowired {@link IAuthorization} type of objects in the
* {@link HashMap}
*/
@PostConstruct
public void init() {
accessManager = new HashMap<CheckedElementType, IAuthorization>();
// insert records into the HashMap
accessManager.put(CheckedElementType.PROJECT, projectAuthorization);
accessManager.put(CheckedElementType.WORKSPACE, workspaceAuthorization);
accessManager.put(CheckedElementType.WORKSPACE_REST, workspaceRestAuthorization);
accessManager.put(CheckedElementType.CONCEPTCOLLECTION, conceptCollectionAuthorization);
accessManager.put(CheckedElementType.CONCEPTCOLLECTION_REST, conceptCollectionRestAuthorization);
accessManager.put(CheckedElementType.DICTIONARY, dictionaryAuthorization);
accessManager.put(CheckedElementType.NETWORK, networkAuthorization);
}
@Override
public IAuthorization getAuthorizationObject(CheckedElementType type) {
return accessManager.get(type);
}
}