All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.atemsource.atem.utility.common.EntityOperation Maven / Gradle / Ivy

/*******************************************************************************
 * Stefan Meyer, 2012 Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 * in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
 * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
 * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
 * specific language governing permissions and limitations under the License.
 ******************************************************************************/
package org.atemsource.atem.utility.common;

import java.util.List;
import java.util.Set;

import org.atemsource.atem.api.attribute.Attribute;
import org.atemsource.atem.api.type.EntityType;
import org.atemsource.atem.api.view.AttributeVisitor;
import org.atemsource.atem.api.view.View;
import org.atemsource.atem.api.view.ViewVisitor;


public class EntityOperation> implements View
{
	private Set attributeOperations;

	private EntityType entityType;

	private List subOperations;

	private O superOperation;

	public Set getAttributeOperations()
	{
		return attributeOperations;
	}

	public EntityType getEntityType()
	{
		return entityType;
	}

	protected List getSubOperations()
	{
		return subOperations;
	}

	protected O getSuperOperation()
	{
		return superOperation;
	}

	public void setAttributeOperations(Set attributeOperations)
	{
		this.attributeOperations = attributeOperations;
	}

	public void setEntityType(EntityType entityType)
	{
		this.entityType = entityType;
	}

	public void setSubOperations(List subOperations)
	{
		this.subOperations = subOperations;
	}

	public void setSuperOperation(O superOperation)
	{
		this.superOperation = superOperation;
	}

	@Override
	public String toString()

	{
		return toString("");
	}

	public String toString(String indent)
	{
		StringBuilder builder = new StringBuilder();
		indent = indent + "   ";
		builder.append(indent);
		builder.append("type: ");
		builder.append(entityType.getCode());
		builder.append("\n");
		for (A attributeViewing : attributeOperations)
		{
			builder.append(attributeViewing.toString(indent));
			// builder.append("\n");
		}
		return builder.toString();
	}

	@Override
	public  void visit(ViewVisitor visitor, C context)
	{
		if (superOperation != null)
		{
			superOperation.visit(visitor, context);
		}
		for (A attributeViewing : attributeOperations)
		{
			Attribute attribute = attributeViewing.getAttribute();
			if (attributeViewing.getEntityOperation(attribute.getTargetType()) != null)
			{
				visitor.visit(context, attribute,
					new AttributeVisitor(visitor, attributeViewing.getEntityOperation(attribute.getTargetType())));
			}
			else
			{
				visitor.visit(context, attribute);

			}
		}
		if (subOperations != null)
		{
			for (O subOperation : subOperations)
			{
				subOperation.visit(visitor, context);
			}
		}
	}

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy