package org.fenixedu.bennu.portal.model;
import java.util.Set;
import java.util.TreeSet;
import org.fenixedu.bennu.portal.domain.MenuContainer;
import org.fenixedu.commons.i18n.LocalizedString;
/**
* An {@link Application} represents an aggregation of {@link Functionality}s. This class acts as a model descriptor, which is
* used to create {@link MenuContainer}s.
*
* <p>
* Note that the key of an {@link Application} MUST be unique across your whole application.
* </p>
*
* @see Functionality
*
* @author João Carvalho (joao.pedro.carvalho@tecnico.ulisboa.pt)
*
*/
public final class Application {
private final Set<Functionality> functionalities = new TreeSet<Functionality>();
private final String key;
private final String path;
private final String accessGroup;
private final LocalizedString title;
private final LocalizedString description;
private final String group;
public Application(String key, String path, String accessGroup, LocalizedString title, LocalizedString description,
String group) {
this.key = key;
this.path = path;
this.accessGroup = accessGroup;
this.title = title;
this.description = description;
this.group = group;
}
/**
* An application's key is a logical descriptor, used to uniquely identify an application externally.
* As such, it must be unique across multiple applications.
*
* @return This application's key
*/
public String getKey() {
return key;
}
public String getPath() {
return path;
}
public String getAccessGroup() {
return accessGroup;
}
public LocalizedString getTitle() {
return title;
}
public LocalizedString getDescription() {
return description;
}
public Set<Functionality> getFunctionalities() {
return functionalities;
}
public String getGroup() {
return group;
}
public void addFunctionality(Functionality functionality) {
this.functionalities.add(functionality);
}
}