package org.obeonetwork.dsl.togaf.design.services;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.eclipse.emf.ecore.EObject;
import org.obeonetwork.dsl.togaf.contentfwk.contentfwk.LogicalApplicationComponent;
public class ApplicationArchitecture {
// public List<Location>
// getExternalLocationContainingPhysicalApplicationComponentOrActorTaggedInTheContainer(
// Container container) {
// List<Location> result = new ArrayList<Location>();
// for (Label label : container.getLabels()) {
// for (Element element : label.getOwnedElements()) {
// if (element instanceof Actor) {
// Actor actor = (Actor) element;
// Location location = actor.getOperatesInLocation();
// if (!label.getOwnedElements().contains(location)) {
// result.add(location);
// }
// } else if (element instanceof PhysicalApplicationComponent) {
// PhysicalApplicationComponent pac = (PhysicalApplicationComponent)
// element;
// List<Location> locations = pac.getIsHostedInLocation();
// for (Location location : locations) {
// if (!label.getOwnedElements().contains(location)) {
// result.add(location);
// } else {
//
// }
// }
// }
// }
//
// }
//
// return result;
// }
// public List<Location>
// getExternalLocationContainingPhysicalApplicationComponentOrActorCommunicatingWithTaggedElement(
// Container container) {
// List<Location> result = new ArrayList<Location>();
// org.obeonetwork.dsl.togaf.contentfwk.contentfwk.ApplicationArchitecture
// applicationArchitecture = getApplicationArchitecture(container);
// BusinessArchitecture businessArchitecture =
// getBusinessArchitecture(container);
// for (Label label : container.getLabels()) {
// for (PhysicalApplicationComponent pac : applicationArchitecture
// .getPhysicalApplicationComponents()) {
// if (label.getOwnedElements().contains(pac)) {
// result.addAll(pac.getIsHostedInLocation());
// for (PhysicalApplicationComponent pac2 : pac
// .getCommunicatesWith()) {
// result.addAll(pac2.getIsHostedInLocation());
// }
// }
// }
// for (Actor actor : businessArchitecture.getActors()) {
// if (label.getOwnedElements().contains(actor)) {
// result.add(actor.getOperatesInLocation());
// for (Service service : actor.getConsumesServices()) {
// for (LogicalApplicationComponent lac : service
// .getIsRealizedThroughLogicalApplicationComponent()) {
// for (PhysicalApplicationComponent pac : lac
// .getIsExtendedByPhysicalApplicationComponents()) {
// result.addAll(pac.getIsHostedInLocation());
// }
// }
// }
//
// }
// }
// }
// return result;
// }
// private
// org.obeonetwork.dsl.togaf.contentfwk.contentfwk.ApplicationArchitecture
// getApplicationArchitecture(
// Container container) {
// org.obeonetwork.dsl.togaf.contentfwk.contentfwk.ApplicationArchitecture
// result = null;
// EObject iterator = container;
// while (result == null && iterator != null) {
// if (iterator instanceof EnterpriseArchitecture) {
// EnterpriseArchitecture ea = (EnterpriseArchitecture) iterator;
// iterator = null;
// for (Architecture architecture : ea.getArchitectures())
// if (architecture instanceof
// org.obeonetwork.dsl.togaf.contentfwk.contentfwk.ApplicationArchitecture)
// {
// result =
// (org.obeonetwork.dsl.togaf.contentfwk.contentfwk.ApplicationArchitecture)
// architecture;
// }
// } else {
// iterator = iterator.eContainer();
// }
// }
// return result;
// }
// private BusinessArchitecture getBusinessArchitecture(Container container)
// {
// BusinessArchitecture result = null;
// EObject iterator = container;
// while (result == null && iterator != null) {
// if (iterator instanceof EnterpriseArchitecture) {
// EnterpriseArchitecture ea = (EnterpriseArchitecture) iterator;
// iterator = null;
// for (Architecture architecture : ea.getArchitectures())
// if (architecture instanceof BusinessArchitecture) {
// result = (BusinessArchitecture) architecture;
// }
// } else {
// iterator = iterator.eContainer();
// }
// }
// return result;
// }
}