blob: f3484ce4b30e6de20175d8655ce5c062e2cfc117 [file] [log] [blame]
/**
*
* Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
*/
package org.eclipse.osbp.ui.api.useraccess;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
// TODO: Auto-generated Javadoc
/**
* The Class ASubOrganization.
*/
public class AbstractSubOrganization extends AbstractOrgElement implements ISubOrganization {
/** The title of an organization. */
private String title;
/** The position map of all positions including of its sub organizations. */
private Map<String, IPosition> positionMap = new HashMap<String, IPosition>();
/**
* The position map only of the own positions without its sub organizations
* .
*/
private Map<String, IPosition> ownPositionMap = new HashMap<String, IPosition>();
/** The sub organization map. */
private Map<String, ISubOrganization> subOrgMap = new HashMap<String, ISubOrganization>();
/*
* (non-Javadoc)
*
* @see
* org.eclipse.osbp.authentication.provider.ISubOrganization#getFilterValueList
* ()
*/
@Override
public List<String> getFilterValueList() {
return null;
}
/**
* Gets the title.
*
* @return the title
*/
public String getTitle() {
return title;
}
/**
* Sets the title.
*
* @param title
* the new title
*/
public void setTitle(String title) {
this.title = title;
}
/*
* (non-Javadoc)
*
* @see
* org.eclipse.osbp.ui.api.useraccess.IOrganizationService#getPosition(java
* .lang.String)
*/
@Override
public IPosition getPosition(String name) {
addSubOrgPositions();
return positionMap.get(name);
}
/*
* (non-Javadoc)
*
* @see
* org.eclipse.osbp.ui.api.useraccess.IOrganizationService#getPositions()
*/
@Override
final public Collection<IPosition> getPositions() {
addSubOrgPositions();
return positionMap.values();
}
/**
* Maintains the position map up to date.
*/
private void addSubOrgPositions() {
for (ISubOrganization subOrg : getSubOrganizations()) {
if(subOrg instanceof AbstractSubOrganization) {
((AbstractSubOrganization)subOrg).addSubOrgPositions();
}
for (IPosition subOrgPosition : subOrg.getOwnPositions()) {
positionMap.put(subOrgPosition.getName(), subOrgPosition);
}
}
}
@Override
final public Collection<IPosition> getOwnPositions() {
return ownPositionMap.values();
}
final public void setPosition(IPosition position) {
positionMap.put(position.getName(), position);
ownPositionMap.put(position.getName(), position);
}
final public Collection<ISubOrganization> getSubOrganizations() {
return subOrgMap.values();
}
public void setSubOrganization(ISubOrganization subOrg) {
subOrgMap.put(subOrg.getName(), subOrg);
}
}