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

Add mysql agent.

parent 77c8680e
No related branches found
No related tags found
No related merge requests found
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
</classpath>
/bin/
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>tools.descartes.prisma.agent.mysql</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.pde.ManifestBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.pde.SchemaBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.pde.PluginNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Mysql
Bundle-SymbolicName: tools.descartes.prisma.agent.mysql;singleton:=true
Bundle-Version: 0.1.0.qualifier
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Require-Bundle: tools.descartes.prisma.core;bundle-version="0.1.0",
org.eclipse.equinox.app,
org.eclipse.emf.ecore;bundle-version="2.11.0",
edu.kit.ipd.descartes.mm.applicationlevel;bundle-version="1.1.0",
edu.kit.ipd.descartes.mm.deployment;bundle-version="1.1.0"
source.. = src/
output.. = bin/
bin.includes = META-INF/,\
.,\
plugin.xml
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
<extension
id="Agent"
point="org.eclipse.core.runtime.applications">
<application
cardinality="singleton-global"
thread="main"
visible="true">
<run
class="tools.descartes.prisma.agent.mysql.Agent">
</run>
</application>
</extension>
</plugin>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<prerequisites>
<maven>3.0</maven>
</prerequisites>
<artifactId>tools.descartes.prisma.agent.mysql</artifactId>
<packaging>eclipse-plugin</packaging>
<parent>
<groupId>tools.descartes.prisma</groupId>
<artifactId>tools.descartes.prisma.releng</artifactId>
<version>0.1.0-SNAPSHOT</version>
<relativePath>../tools.descartes.prisma.releng</relativePath>
</parent>
</project>
\ No newline at end of file
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 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;
import tools.descartes.prisma.core.templates.repository.CompositeComponentTemplate;
import tools.descartes.prisma.core.templates.repository.InterfaceProvidingRoleTemplate;
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.resourcelandscape.ComputingInfrastructureTemplate;
import tools.descartes.prisma.core.templates.resourcelandscape.DataCenterTemplate;
import tools.descartes.prisma.core.templates.resourcelandscape.DistributedDataCenterTemplate;
import tools.descartes.prisma.core.templates.resourcetype.ProcessingResourceTypeTemplate;
import tools.descartes.prisma.core.templates.resourcetype.ResourceTypeRepositoryTemplate;
import tools.descartes.prisma.core.templates.servicebehavior.FineGrainedBehaviorTemplate;
import tools.descartes.prisma.core.templates.servicebehavior.InternalActionTemplate;
import tools.descartes.prisma.core.templates.system.SystemTemplate;
public class Agent implements IApplication {
@Override
public Object start(IApplicationContext context) throws Exception {
RepositoryConnection repo = new RepositoryConnection("10.0.1.148");
repo.open();
ApplicationModel app = new ApplicationModel(repo, "specjent2010");
try {
initModel(app);
} catch(Exception e) {
e.printStackTrace();
}
repo.close();
return null;
}
private void initModel(ApplicationModel model) throws Exception {
ResourceTypeRepositoryTemplate resourceTypes = new ResourceTypeRepositoryTemplate();
resourceTypes.add(new ProcessingResourceTypeTemplate("CPU"));
resourceTypes.add(new ProcessingResourceTypeTemplate("DELAY"));
RepositoryTemplate repository = new RepositoryTemplate();
SystemTemplate system = new SystemTemplate();
DistributedDataCenterTemplate ddc = new DistributedDataCenterTemplate();
DataCenterTemplate dataCenter = new DataCenterTemplate("default");
ddc.add(dataCenter);
DeploymentTemplate deployment = new DeploymentTemplate();
// Add a computing infrastructure corresponding to the current machine
String localIp = InetAddress.getLocalHost().getHostName();
ComputingInfrastructureTemplate localHost = new ComputingInfrastructureTemplate(localIp);
dataCenter.add(localHost);
InterfaceTemplate jdbc = new InterfaceTemplate("java.sql.Connection");
SignatureTemplate query = new SignatureTemplate("query");
jdbc.add(query);
repository.add(jdbc);
// 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);
// 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);
// Add assembly in system
AssemblyContextTemplate datasourceAssembly = new AssemblyContextTemplate("datasource/mysql", datasource);
system.add(datasourceAssembly);
// Add a deployment context
DeploymentContextTemplate deploymentContext = new DeploymentContextTemplate("datasource/mysql@" + localIp, datasourceAssembly, localHost);
deployment.add(deploymentContext);
List<ModelTemplate<?,?>> changes = new LinkedList<>();
changes.add(resourceTypes);
changes.add(repository);
changes.add(ddc);
changes.add(system);
changes.add(deployment);
model.update(changes);
}
@Override
public void stop() {
// TODO Auto-generated method stub
}
}
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