Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * OfficeFloor - http://www.officefloor.net
   * Copyright (C) 2005-2011 Daniel Sagenschneider
   *
   * This program is free software: you can redistribute it and/or modify
   * it under the terms of the GNU General Public License as published by
   * the Free Software Foundation, either version 3 of the License, or
   * (at your option) any later version.
   *
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
 package net.officefloor.compile.impl.structure;
 
 import java.util.List;
 import java.util.Map;
 
net.officefloor.compile.internal.structure.AdministratorNode implementation.

Author(s):
Daniel Sagenschneider
 
 public class AdministratorNodeImpl implements AdministratorNode {

 
 	private final String administratorName;

 
 
 	private final PropertyList properties = new PropertyListImpl();

 
 	private final String officeLocation;

 
 	private final NodeContext context;

 
 	private final Map<StringDutyNodeduties = new HashMap<StringDutyNode>();

 
	public AdministratorNodeImpl(String administratorName,
			String administratorSourceClassNameString officeLocation,
			NodeContext context) {
		this. = administratorName;
		this. = administratorSourceClassName;
		this. = officeLocation;
		this. = context;
	}
	/*
	 * ======================= OfficeAdministrator ========================
	 */
		return this.;
	}
	public void addProperty(String nameString value) {
		this..addProperty(name).setValue(value);
	}
	public OfficeDuty getDuty(String dutyName) {
		// Obtain and return the duty for the name
		DutyNode duty = this..get(dutyName);
		if (duty == null) {
			// Add the duty
			duty = new DutyNodeImpl(dutyNamethis);
			this..put(dutyNameduty);
		}
		return duty;
	}
			AdministerableManagedObject managedObject) {
		// Administer the managed object
		this..add(managedObject);
		// Make office object aware of administration
		if (managedObject instanceof OfficeObjectNode) {
			((OfficeObjectNodemanagedObject).addAdministrator(this);
		}
	}
	/*
	 * ===================== AdministratorNode ==============================
	 */

	private AdministratorType<?, ?> administratorType = null;
	@SuppressWarnings({ "unchecked""rawtypes" })
		// Lazy load the administrator type
		if (this. == null) {
			// Obtain the administrator source class
			Class administratorSourceClass = this.
			if (administratorSourceClass == null) {
				return null// must obtain source class
			}
			// Load the administrator type
					administratorSourceClassthis.);
		}
		// Return administrator type
		return this.;
	}
	@SuppressWarnings({ "unchecked""rawtypes" })
	public void buildAdministrator(OfficeBuilder officeBuilder) {
		// Obtain the administrator source class
		Class administratorSourceClass = this.
		if (administratorSourceClass == null) {
			return// must obtain source class
		}
		// Build the administrator
		AdministratorBuilder<?> adminBuilder = officeBuilder
						administratorSourceClass);
		for (Property property : this.) {
			adminBuilder.addProperty(property.getName(), property.getValue());
		}
		// Obtain the office team responsible for this administration
		OfficeTeam officeTeam = LinkUtil.retrieveTarget(thisOfficeTeam.class,
				"Administrator " + this..,
		if (officeTeam != null) {
			// Build the team responsible for the administrator
			adminBuilder.setTeam(officeTeam.getOfficeTeamName());
		}
		// Administer the managed objects
		for (AdministerableManagedObject administerableManagedObject : this.) {
			// Obtain as link object node
			LinkObjectNode linkObject = (LinkObjectNodeadministerableManagedObject;
			// Obtain the managed object
			BoundManagedObjectNode managedObject;
			if (linkObject instanceof BoundManagedObjectNode) {
				// Directly linked to managed object
				managedObject = (BoundManagedObjectNodelinkObject;
else {
				// Locate the managed object
				managedObject = LinkUtil.retrieveTarget(linkObject,
						BoundManagedObjectNode.class"Managed Object "
administerableManagedObject
			}
			if (managedObject == null) {
				continue// must have managed object
			}
			// Build administration of the managed object
			adminBuilder.administerManagedObject(managedObject
		}
		// Build the duties (in deterministic order)
		DutyNode[] duties = CompileUtil.toSortedArray(this..values(),
				new DutyNode[0], new StringExtractor<DutyNode>() {
					public String toString(DutyNode object) {
						return object.getOfficeDutyName();
					}
				});
		for (DutyNode duty : duties) {
			adminBuilder.addDuty(duty.getOfficeDutyName());
		}
	}
	/*
	 * ==================== LinkTeamNode ===================================
	 */

	private LinkTeamNode linkedTeamNode = null;
	public boolean linkTeamNode(LinkTeamNode node) {
		// Ensure not already linked
		if (this. != null) {
			// Team already linked
					this."Team already assigned");
			return false// already linked
		}
		// Link
		this. = node;
		return true;
	}
		return this.;
	}
New to GrepCode? Check out our FAQ X