package com.tandbergtv.workflow.auth;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

public class Module {

	private String name, displayName;
	private Map<String, Permission> permissions;
	private boolean isExternal = false;
	
	/**
	 * @return Returns the name.
	 */
	public String getName() {
		return this.name;
	}

	/**
	 * @param name The name to set.
	 */
	public void setName(String name) {
		this.name = name;
	}

	/**
	 * @return Returns the display name.
	 */
	public String getDisplayName() {
		return displayName;
	}

	/**
	 * @param displayName	The display name to set.
	 */
	public void setDisplayName(String displayName) {
		this.displayName = displayName;
	}

	/**
	 * @return Returns the permissions.
	 */
	public Collection<Permission> getPermissions() {
		return this.permissions.values();
	}

	public Permission getPermission(String name) {
		return permissions.get(name);
	}
	
	/**
	 * @param permission The permission to add to this module.
	 */
	public void addPermission(Permission permission) {
		if(permissions == null)
			permissions = new HashMap<String, Permission>();
		permissions.put(permission.getName(), permission);
	}
	
	/* (non-Javadoc)
	 * @see java.lang.Object#toString()
	 */
	@Override
	public String toString() {
		return "Name: " + name
				+ ", Display Name: " + displayName
				+ "\nPermissions: \n" + permissions.values();
	}

	/**
	 * @return the isExternal
	 */
	public boolean isExternal() {
		return isExternal;
	}

	/**
	 * @param isExternal the isExternal to set
	 */
	public void setExternal(boolean isExternal) {
		this.isExternal = isExternal;
	}
}
