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

Adapt to changes in API.

parent 77d802ad
No related branches found
No related tags found
No related merge requests found
package tools.descartes.prisma.agent.mysql;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.LinkedList;
import java.util.List;
import org.eclipse.equinox.app.IApplication;
import org.eclipse.equinox.app.IApplicationContext;
import edu.kit.ipd.descartes.mm.applicationlevel.repository.AssemblyContext;
import edu.kit.ipd.descartes.mm.applicationlevel.repository.BasicComponent;
import edu.kit.ipd.descartes.mm.applicationlevel.repository.InterfaceProvidingRole;
import edu.kit.ipd.descartes.mm.deployment.DeploymentContext;
import edu.kit.ipd.descartes.mm.resourceconfiguration.SchedulingPolicy;
import tools.descartes.prisma.core.ApplicationModel;
import tools.descartes.prisma.core.RepositoryConnection;
import tools.descartes.prisma.core.templates.ModelTemplate;
import tools.descartes.prisma.core.templates.deployment.DeploymentContextTemplate;
import tools.descartes.prisma.core.templates.deployment.DeploymentTemplate;
import tools.descartes.prisma.core.templates.repository.AssemblyContextTemplate;
import tools.descartes.prisma.core.templates.repository.BasicComponentTemplate;
......@@ -25,6 +20,8 @@ import tools.descartes.prisma.core.templates.repository.InterfaceTemplate;
import tools.descartes.prisma.core.templates.repository.ProvidingDelegationConnectorTemplate;
import tools.descartes.prisma.core.templates.repository.RepositoryTemplate;
import tools.descartes.prisma.core.templates.repository.SignatureTemplate;
import tools.descartes.prisma.core.templates.resourceconfiguration.ActiveResourceSpecificationTemplate;
import tools.descartes.prisma.core.templates.resourceconfiguration.ProcessingResourceSpecificationTemplate;
import tools.descartes.prisma.core.templates.resourcelandscape.ComputingInfrastructureTemplate;
import tools.descartes.prisma.core.templates.resourcelandscape.DataCenterTemplate;
import tools.descartes.prisma.core.templates.resourcelandscape.DistributedDataCenterTemplate;
......@@ -53,8 +50,8 @@ public class Agent implements IApplication {
private void initModel(ApplicationModel model) throws Exception {
ResourceTypeRepositoryTemplate resourceTypes = new ResourceTypeRepositoryTemplate();
resourceTypes.add(new ProcessingResourceTypeTemplate("CPU"));
resourceTypes.add(new ProcessingResourceTypeTemplate("DELAY"));
ProcessingResourceTypeTemplate cpuType =new ProcessingResourceTypeTemplate("CPU");
resourceTypes.add(cpuType);
RepositoryTemplate repository = new RepositoryTemplate();
SystemTemplate system = new SystemTemplate();
DistributedDataCenterTemplate ddc = new DistributedDataCenterTemplate();
......@@ -64,41 +61,36 @@ public class Agent implements IApplication {
// Add a computing infrastructure corresponding to the current machine
String localIp = InetAddress.getLocalHost().getHostName();
ActiveResourceSpecificationTemplate res = new ActiveResourceSpecificationTemplate();
ProcessingResourceSpecificationTemplate cpu = new ProcessingResourceSpecificationTemplate("cpu", cpuType, SchedulingPolicy.PROCESSOR_SHARING, 2);
res.add(cpu);
ComputingInfrastructureTemplate localHost = new ComputingInfrastructureTemplate(localIp);
localHost.add(res);
dataCenter.add(localHost);
InterfaceTemplate jdbc = new InterfaceTemplate("java.sql.Connection");
SignatureTemplate query = new SignatureTemplate("java.sql.Connection#query");
jdbc.add(query);
repository.add(jdbc);
InterfaceTemplate jdbc = repository.defineInterface("java.sql.Connection");
SignatureTemplate query = jdbc.defineSignature("java.sql.Connection#query");
// Add a basic component describing the internal behavior of mysql
BasicComponentTemplate mysql = new BasicComponentTemplate("mysql");
InterfaceProvidingRoleTemplate mysqlProv = new InterfaceProvidingRoleTemplate("mysql#Prov:java.sql.Connection", jdbc);
mysql.add(mysqlProv);
FineGrainedBehaviorTemplate queryBehavior = new FineGrainedBehaviorTemplate(mysqlProv, query);
queryBehavior.addFirst(new InternalActionTemplate(new ProcessingResourceTypeTemplate("CPU")));
mysql.add(queryBehavior);
repository.add(mysql);
BasicComponentTemplate mysql = repository.defineBasicComponent("mysql");
InterfaceProvidingRoleTemplate mysqlProv = mysql.defineInterfaceProvidingRole("mysql#Prov:java.sql.Connection", jdbc);
FineGrainedBehaviorTemplate queryBehavior =mysql.defineFineGrainedBehavior(mysqlProv, query);
if (queryBehavior.getComponentInternalBehavior().getActions().isEmpty()) {
queryBehavior.getComponentInternalBehavior().add(new InternalActionTemplate(new ProcessingResourceTypeTemplate("CPU")));
}
// Add a composite data source representing the interfaces of the database server
CompositeComponentTemplate datasource = new CompositeComponentTemplate("datasource");
repository.add(datasource);
InterfaceProvidingRoleTemplate datasourceProv = new InterfaceProvidingRoleTemplate("datasource/mysql#Prov:java.sql.Connection", jdbc);
datasource.add(datasourceProv);
AssemblyContextTemplate mysqlAssembly = new AssemblyContextTemplate("datasource/mysql", mysql);
datasource.add(mysqlAssembly);
ProvidingDelegationConnectorTemplate delegate = new ProvidingDelegationConnectorTemplate(datasourceProv, mysqlProv, mysqlAssembly);
datasource.add(delegate);
CompositeComponentTemplate datasource = repository.defineCompositeComponent("datasource");
InterfaceProvidingRoleTemplate datasourceProv = datasource.defineInterfaceProvidingRole("datasource/mysql#Prov:java.sql.Connection", jdbc);
AssemblyContextTemplate mysqlAssembly = datasource.defineAssemblyContext("datasource/mysql", mysql);
datasource.defineProvidingDelegationConnector(datasourceProv, mysqlProv, mysqlAssembly);
// Add assembly in system
AssemblyContextTemplate datasourceAssembly = new AssemblyContextTemplate("datasource/mysql", datasource);
system.add(datasourceAssembly);
AssemblyContextTemplate datasourceAssembly = system.defineAssemblyContext("datasource/mysql", datasource);
// Add a deployment context
DeploymentContextTemplate deploymentContext = new DeploymentContextTemplate("datasource/mysql@" + localIp, datasourceAssembly, localHost);
deployment.add(deploymentContext);
deployment.defineDeploymentContext(datasourceAssembly, localHost);
List<ModelTemplate<?,?>> changes = new LinkedList<>();
changes.add(resourceTypes);
......
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