Skip to content
Snippets Groups Projects
Commit 96d52bb8 authored by Simon Spinner's avatar Simon Spinner
Browse files

Add DelegateConnectors and CompositeComponent + various fixes.

parent dad2a86e
No related branches found
No related tags found
No related merge requests found
package tools.descartes.prisma.core.commands.repository;
import java.util.LinkedList;
import java.util.List;
import edu.kit.ipd.descartes.mm.applicationlevel.repository.CompositeComponent;
import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryFactory;
import tools.descartes.prisma.core.commands.ModelCommand;
public class CompositeComponentCommand extends RepositoryComponentCommand<CompositeComponent> {
private final List<AssemblyContextCommand> assemblyContexts = new LinkedList<>();
private final List<AssemblyConnectorCommand> assemblyConnectors = new LinkedList<>();
private final List<ProvidingDelegationConnectorCommand> providingDelegationConnectors = new LinkedList<>();
private final List<RequiringDelegationConnectorCommand> requiringDelegationConnectors = new LinkedList<>();
public CompositeComponentCommand(String componentName) {
super(componentName, CompositeComponent.class);
}
@Override
protected CompositeComponent createRepositoryComponent() {
return RepositoryFactory.eINSTANCE.createCompositeComponent();
}
@Override
public List<ModelCommand<? super CompositeComponent, ?>> getChildCommands() {
List<ModelCommand<? super CompositeComponent, ?>> children = super.getChildCommands();
children.addAll(assemblyContexts);
children.addAll(assemblyConnectors);
children.addAll(providingDelegationConnectors);
children.addAll(requiringDelegationConnectors);
return children;
}
public void add(AssemblyContextCommand assemblyContext) {
assemblyContexts.add(assemblyContext);
}
public void add(AssemblyConnectorCommand assemblyConnector) {
assemblyConnectors.add(assemblyConnector);
}
public void add(ProvidingDelegationConnectorCommand providingDelegationConnector) {
providingDelegationConnectors.add(providingDelegationConnector);
}
public void add(RequiringDelegationConnectorCommand requiringDelegationConnector) {
requiringDelegationConnectors.add(requiringDelegationConnector);
}
}
package tools.descartes.prisma.core.commands.repository;
import edu.kit.ipd.descartes.mm.applicationlevel.repository.AssemblyContext;
import edu.kit.ipd.descartes.mm.applicationlevel.repository.ComposedProvidingRequiringEntity;
import edu.kit.ipd.descartes.mm.applicationlevel.repository.InterfaceProvidingRole;
import edu.kit.ipd.descartes.mm.applicationlevel.repository.ProvidingDelegationConnector;
import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryFactory;
import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryPackage;
import tools.descartes.prisma.core.commands.ModelCommand;
public class ProvidingDelegationConnectorCommand extends ModelCommand<ComposedProvidingRequiringEntity, ProvidingDelegationConnector> {
private final InterfaceProvidingRoleCommand outerRoleCmd;
private final InterfaceProvidingRoleCommand innerRoleCmd;
private final AssemblyContextCommand assemblyContextCmd;
public ProvidingDelegationConnectorCommand(InterfaceProvidingRoleCommand outerRoleCmd, InterfaceProvidingRoleCommand innerRoleCmd, AssemblyContextCommand assemblyContextCmd) {
super(RepositoryPackage.Literals.COMPOSED_STRUCTURE__PROVIDING_DELEGATION_CONNECTORS, ProvidingDelegationConnector.class);
this.outerRoleCmd = outerRoleCmd;
this.innerRoleCmd = innerRoleCmd;
this.assemblyContextCmd = assemblyContextCmd;
}
@Override
public boolean matches(ProvidingDelegationConnector object) {
return outerRoleCmd.matches(object.getOuterInterfaceProvidingRole())
&& innerRoleCmd.matches(object.getInnerInterfaceProvidingRole());
}
@Override
protected ProvidingDelegationConnector create(ComposedProvidingRequiringEntity parent) {
AssemblyContext assemblyContext = assemblyContextCmd.get(parent);
InterfaceProvidingRole outerRole = outerRoleCmd.get(parent);
InterfaceProvidingRole innerRole = innerRoleCmd.get(assemblyContext.getEncapsulatedComponent());
ProvidingDelegationConnector connector = RepositoryFactory.eINSTANCE.createProvidingDelegationConnector();
connector.setAssemblyContext(assemblyContext);
connector.setInnerInterfaceProvidingRole(innerRole);
connector.setOuterInterfaceProvidingRole(outerRole);
connector.setName(outerRole.getName() + " -> " + innerRole.getName());
return connector;
}
}
package tools.descartes.prisma.core.commands.repository;
import edu.kit.ipd.descartes.mm.applicationlevel.repository.AssemblyContext;
import edu.kit.ipd.descartes.mm.applicationlevel.repository.ComposedProvidingRequiringEntity;
import edu.kit.ipd.descartes.mm.applicationlevel.repository.InterfaceRequiringRole;
import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryFactory;
import edu.kit.ipd.descartes.mm.applicationlevel.repository.RepositoryPackage;
import edu.kit.ipd.descartes.mm.applicationlevel.repository.RequiringDelegationConnector;
import tools.descartes.prisma.core.commands.ModelCommand;
public class RequiringDelegationConnectorCommand extends ModelCommand<ComposedProvidingRequiringEntity, RequiringDelegationConnector>{
private final InterfaceRequiringRoleCommand outerRoleCmd;
private final InterfaceRequiringRoleCommand innerRoleCmd;
private final AssemblyContextCommand assemblyContextCmd;
public RequiringDelegationConnectorCommand(InterfaceRequiringRoleCommand outerRoleCmd, InterfaceRequiringRoleCommand innerRoleCmd, AssemblyContextCommand assemblyContextCmd) {
super(RepositoryPackage.Literals.COMPOSED_STRUCTURE__REQUIRING_DELEGATION_CONNECTORS, RequiringDelegationConnector.class);
this.innerRoleCmd = innerRoleCmd;
this.outerRoleCmd = outerRoleCmd;
this.assemblyContextCmd = assemblyContextCmd;
}
@Override
public boolean matches(RequiringDelegationConnector object) {
return innerRoleCmd.matches(object.getInnerInterfaceRequiringRole())
&& outerRoleCmd.matches(object.getOuterInterfaceRequiringRole());
}
@Override
protected RequiringDelegationConnector create(ComposedProvidingRequiringEntity parent) {
AssemblyContext assemblyContext = assemblyContextCmd.get(parent);
InterfaceRequiringRole outerRole = outerRoleCmd.get(parent);
InterfaceRequiringRole innerRole = innerRoleCmd.get(assemblyContext.getEncapsulatedComponent());
RequiringDelegationConnector connector = RepositoryFactory.eINSTANCE.createRequiringDelegationConnector();
connector.setAssemblyContext(assemblyContext);
connector.setInnerInterfaceRequiringRole(innerRole);
connector.setOuterInterfaceRequiringRole(outerRole);
connector.setName(innerRole.getName() + " -> " + outerRole.getName());
return connector;
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment