You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by la...@apache.org on 2012/09/05 21:49:16 UTC
svn commit: r1381324 [2/2] - in
/incubator/airavata/trunk/modules/commons/provenance-registry/src/main:
java/org/apache/airavata/persistance/
java/org/apache/airavata/persistance/registry/
java/org/apache/airavata/persistance/registry/jpa/ java/org/apa...
Added: incubator/airavata/trunk/modules/commons/provenance-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/PublishWorkflowResource.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/commons/provenance-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/PublishWorkflowResource.java?rev=1381324&view=auto
==============================================================================
--- incubator/airavata/trunk/modules/commons/provenance-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/PublishWorkflowResource.java (added)
+++ incubator/airavata/trunk/modules/commons/provenance-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/PublishWorkflowResource.java Wed Sep 5 19:49:15 2012
@@ -0,0 +1,94 @@
+package org.apache.airavata.persistance.registry.jpa.resources;
+
+import org.apache.airavata.persistance.registry.jpa.Resource;
+import org.apache.airavata.persistance.registry.jpa.ResourceType;
+import org.apache.airavata.persistance.registry.jpa.model.Gateway;
+import org.apache.airavata.persistance.registry.jpa.model.Published_Workflow;
+
+import java.sql.Date;
+import java.util.List;
+
+public class PublishWorkflowResource extends AbstractResource {
+ private String name;
+ private String version;
+ private Date publishedDate;
+ private String content;
+ private int gatewayID;
+
+ public PublishWorkflowResource() {
+ }
+
+ public PublishWorkflowResource(String name) {
+ this.name = name;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String getVersion() {
+ return version;
+ }
+
+ public Date getPublishedDate() {
+ return publishedDate;
+ }
+
+ public String getContent() {
+ return content;
+ }
+
+ public void setVersion(String version) {
+ this.version = version;
+ }
+
+ public void setPublishedDate(Date publishedDate) {
+ this.publishedDate = publishedDate;
+ }
+
+ public void setContent(String content) {
+ this.content = content;
+ }
+
+ public int getGatewayID() {
+ return gatewayID;
+ }
+
+ public void setGatewayID(int gatewayID) {
+ this.gatewayID = gatewayID;
+ }
+
+ public Resource create(ResourceType type) {
+ return null;
+ }
+
+ public void remove(ResourceType type, Object name) {
+
+ }
+
+ public Resource get(ResourceType type, Object name) {
+ return null;
+ }
+
+ public List<Resource> get(ResourceType type) {
+ return null;
+ }
+
+ public void save() {
+ begin();
+ Published_Workflow publishedWorkflow = new Published_Workflow();
+ publishedWorkflow.setPublish_workflow_name(name);
+ publishedWorkflow.setPublished_date(publishedDate);
+ publishedWorkflow.setVersion(version);
+ publishedWorkflow.setWorkflow_content(content);
+ Gateway gateway = new Gateway();
+ gateway.setGateway_ID(gatewayID);
+ publishedWorkflow.setGateway(gateway);
+ em.persist(gateway);
+ end();
+ }
+
+ public boolean isExists(ResourceType type, Object name) {
+ return false;
+ }
+}
Added: incubator/airavata/trunk/modules/commons/provenance-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ServiceDescriptorResource.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/commons/provenance-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ServiceDescriptorResource.java?rev=1381324&view=auto
==============================================================================
--- incubator/airavata/trunk/modules/commons/provenance-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ServiceDescriptorResource.java (added)
+++ incubator/airavata/trunk/modules/commons/provenance-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/ServiceDescriptorResource.java Wed Sep 5 19:49:15 2012
@@ -0,0 +1,138 @@
+package org.apache.airavata.persistance.registry.jpa.resources;
+
+import org.apache.airavata.persistance.registry.jpa.Resource;
+import org.apache.airavata.persistance.registry.jpa.ResourceType;
+import org.apache.airavata.persistance.registry.jpa.model.Application_Descriptor;
+import org.apache.airavata.persistance.registry.jpa.model.Gateway;
+import org.apache.airavata.persistance.registry.jpa.model.Service_Descriptor;
+
+import javax.persistence.Query;
+import java.util.ArrayList;
+import java.util.List;
+
+public class ServiceDescriptorResource extends AbstractResource {
+ private String serviceDescName;
+ private int gatewayID;
+ private int userID;
+ private String content;
+
+
+ public ServiceDescriptorResource(String serviceDescName) {
+ this.serviceDescName = serviceDescName;
+ }
+
+ public ServiceDescriptorResource() {
+
+ }
+
+ public String getServiceDescName() {
+ return serviceDescName;
+ }
+
+ public int getUserID() {
+ return userID;
+ }
+
+ public void setUserID(int userID) {
+ this.userID = userID;
+ }
+
+ public int getGatewayID() {
+ return gatewayID;
+ }
+
+ public String getContent() {
+ return content;
+ }
+
+ public void setGatewayID(int gatewayID) {
+ this.gatewayID = gatewayID;
+ }
+
+ public void setContent(String content) {
+ this.content = content;
+ }
+
+ public Resource create(ResourceType type) {
+ if (type == ResourceType.APPLICATION_DESCRIPTOR) {
+ ApplicationDescriptorResource applicationDescriptorResource = new ApplicationDescriptorResource();
+ applicationDescriptorResource.setGatewayID(gatewayID);
+ applicationDescriptorResource.setHostDescName(serviceDescName);
+ return applicationDescriptorResource;
+ }
+ return null;
+ }
+
+ public void remove(ResourceType type, Object name) {
+ if (type == ResourceType.APPLICATION_DESCRIPTOR) {
+ begin();
+ Query q = em.createQuery("Delete p FROM Application_Descriptor p WHERE p.application_descriptor_ID = :app_desc_id and p.service_descriptor_ID = :service_desc_name and p.gateway_ID = :gate_ID");
+ q.setParameter("app_desc_id", name);
+ q.setParameter("service_desc_name", serviceDescName);
+ q.setParameter("gate_ID", gatewayID);
+ q.executeUpdate();
+ end();
+ }
+
+ }
+
+ public Resource get(ResourceType type, Object name) {
+ if (type == ResourceType.APPLICATION_DESCRIPTOR) {
+ begin();
+ Query q = em.createQuery("SELECT p FROM Application_Descriptor p WHERE p.application_descriptor_ID = :app_desc_id and p.service_descriptor_ID = :service_desc_name and p.gateway_ID =:gate_ID");
+ q.setParameter("app_desc_id", name);
+ q.setParameter("service_desc_name", serviceDescName);
+ q.setParameter("gate_ID", gatewayID);
+ Application_Descriptor eappDesc = (Application_Descriptor) q.getSingleResult();
+ ApplicationDescriptorResource applicationDescriptorResource = new ApplicationDescriptorResource(eappDesc.getApplication_descriptor_ID());
+ applicationDescriptorResource.setGatewayID(eappDesc.getGateway().getGateway_ID());
+ applicationDescriptorResource.setContent(eappDesc.getApplication_descriptor_xml());
+ applicationDescriptorResource.setHostDescName(eappDesc.getHost_descriptor().getHost_descriptor_ID());
+ applicationDescriptorResource.setServiceDescName(serviceDescName);
+ end();
+ return applicationDescriptorResource;
+ }
+ return null;
+ }
+
+ public List<Resource> get(ResourceType type) {
+ List<Resource> resourceList = new ArrayList<Resource>();
+ if (type == ResourceType.APPLICATION_DESCRIPTOR) {
+ begin();
+ Query q = em.createQuery("SELECT p FROM Application_Descriptor p WHERE p.gateway_ID =:gate_ID and p.service_descriptor_ID = :service_desc_name");
+ q.setParameter("gate_ID", gatewayID);
+ q.setParameter("service_desc_name", serviceDescName);
+ List results = q.getResultList();
+ if (results.size() != 0) {
+ for (Object result : results) {
+ Application_Descriptor applicationDescriptor = (Application_Descriptor) result;
+ ApplicationDescriptorResource applicationDescriptorResource = new ApplicationDescriptorResource(applicationDescriptor.getApplication_descriptor_ID());
+ applicationDescriptorResource.setGatewayID(gatewayID);
+ applicationDescriptorResource.setContent(applicationDescriptor.getApplication_descriptor_xml());
+ applicationDescriptorResource.setHostDescName(applicationDescriptor.getHost_descriptor().getHost_descriptor_ID());
+ applicationDescriptorResource.setServiceDescName(serviceDescName);
+ resourceList.add(applicationDescriptorResource);
+ }
+ }
+ end();
+ }
+ return resourceList;
+ }
+
+ public void save() {
+ begin();
+ Service_Descriptor serviceDescriptor = new Service_Descriptor();
+ serviceDescriptor.setService_descriptor_ID(serviceDescName);
+ Gateway gateway = new Gateway();
+ gateway.setGateway_ID(gatewayID);
+ serviceDescriptor.setGateway(gateway);
+ serviceDescriptor.setService_descriptor_xml(content);
+ em.persist(serviceDescriptor);
+ end();
+
+ }
+
+ public boolean isExists(ResourceType type, Object name) {
+ return false;
+ }
+}
Added: incubator/airavata/trunk/modules/commons/provenance-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/UserResource.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/commons/provenance-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/UserResource.java?rev=1381324&view=auto
==============================================================================
--- incubator/airavata/trunk/modules/commons/provenance-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/UserResource.java (added)
+++ incubator/airavata/trunk/modules/commons/provenance-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/UserResource.java Wed Sep 5 19:49:15 2012
@@ -0,0 +1,211 @@
+package org.apache.airavata.persistance.registry.jpa.resources;
+
+import org.apache.airavata.persistance.registry.jpa.Resource;
+import org.apache.airavata.persistance.registry.jpa.ResourceType;
+import org.apache.airavata.persistance.registry.jpa.model.Experiment;
+import org.apache.airavata.persistance.registry.jpa.model.Gateway;
+import org.apache.airavata.persistance.registry.jpa.model.User_Workflow;
+import org.apache.airavata.persistance.registry.jpa.model.Users;
+
+import javax.persistence.Query;
+import java.util.ArrayList;
+import java.util.List;
+
+public class UserResource extends AbstractResource {
+ private int id;
+ private String userName;
+ private String password;
+ private int gatewayID;
+ private ProjectResource projectResource;
+
+
+ public UserResource() {
+ }
+
+ public UserResource(int id) {
+ this.id = id;
+// this.gatewayID = gatewayID;
+// this.projectResource = projectResource;
+ }
+
+ public int getId() {
+ return id;
+ }
+
+ public void setUserName(String userName) {
+ this.userName = userName;
+ }
+
+ public String getUserName() {
+ return userName;
+ }
+
+ public int getGatewayID() {
+ return gatewayID;
+ }
+
+ public void setGatewayID(int gatewayID) {
+ this.gatewayID = gatewayID;
+ }
+
+ public Resource create(ResourceType type) {
+ if (type == ResourceType.USER_WORKFLOW) {
+ UserWorkflowResource userWorkflowResource = new UserWorkflowResource();
+ userWorkflowResource.setUserID(id);
+// userWorkflowResource.setProjectID();
+ return userWorkflowResource;
+ } else if (type == ResourceType.EXPERIMENT) {
+ ExperimentResource experimentResource = new ExperimentResource();
+// experimentResource.setProjectID(id);
+ experimentResource.setUserID(id);
+ return experimentResource;
+ } else {
+ return null;
+ }
+ }
+
+ public void remove(ResourceType type, Object name) {
+ begin();
+ if(type == ResourceType.USER_WORKFLOW){
+ Query q = em.createQuery("Delete p FROM User_Workflow p WHERE p.user_ID = :user_id and p.user_workflow_name = :usrwf_name");
+ q.setParameter("user_id", id);
+ q.setParameter("usrwf_name", name);
+ q.executeUpdate();
+ }else if (type == ResourceType.EXPERIMENT){
+ Query q = em.createQuery("Delete p FROM Experiment p WHERE p.user_ID = :user_id and p.experiment_ID = :ex_name");
+ q.setParameter("user_id", id);
+ q.setParameter("ex_name", name);
+ q.executeUpdate();
+ }
+ end();
+
+ }
+
+ public Resource get(ResourceType type, Object name) {
+ begin();
+ if (type == ResourceType.USER_WORKFLOW) {
+ Query q = em.createQuery("SELECT p FROM User_Workflow p WHERE p.user_ID = :user_id and p.user_workflow_name = :usrwf_name");
+ q.setParameter("user_id", id);
+ q.setParameter("usrwf_name", name);
+ User_Workflow userWorkflow = (User_Workflow) q.getSingleResult();
+ UserWorkflowResource userWorkflowResource = new UserWorkflowResource(userWorkflow.getProject().getProject_ID(), id, userWorkflow.getUser_workflow_name());
+ userWorkflowResource.setContent(userWorkflow.getWorkflow_content());
+ userWorkflowResource.setLastUpdateDate(userWorkflow.getLast_update_date());
+ end();
+ return userWorkflowResource;
+ } else if (type == ResourceType.EXPERIMENT) {
+ Query q = em.createQuery("SELECT p FROM Experiment p WHERE p.user_ID = :user_id and p.experiment_ID = :ex_name");
+ q.setParameter("user_id", id);
+ q.setParameter("ex_name", name);
+ Experiment experiment = (Experiment) q.getSingleResult();
+ ExperimentResource experimentResource = new ExperimentResource(experiment.getExperiment_ID());
+ experimentResource.setProjectID(experiment.getProject().getProject_ID());
+ Users user = new Users();
+ user.setUser_ID(id);
+ user.setUser_name(userName);
+ user.setPassword(password);
+ experiment.setUser(user);
+ experiment.setSubmitted_date(experiment.getSubmitted_date());
+ experiment.setUser(experiment.getUser());
+ end();
+ return experimentResource;
+ }
+ return null;
+ }
+
+ public List<Resource> get(ResourceType type) {
+ List<Resource> resourceList = new ArrayList<Resource>();
+ begin();
+ if (type == ResourceType.USER_WORKFLOW) {
+ Query q = em.createQuery("SELECT p FROM User_Workflow p WHERE p.user_ID =:usr_ID");
+ q.setParameter("usr_ID", id);
+ List results = q.getResultList();
+ if (results.size() != 0) {
+ for (Object result : results) {
+ User_Workflow userWorkflow = (User_Workflow) result;
+ UserWorkflowResource userWorkflowResource = new UserWorkflowResource(userWorkflow.getProject().getProject_ID(), userWorkflow.getUsers().getUser_ID(), userWorkflow.getUser_workflow_name());
+ userWorkflowResource.setContent(userWorkflow.getWorkflow_content());
+ userWorkflowResource.setLastUpdateDate(userWorkflow.getLast_update_date());
+ resourceList.add(userWorkflowResource);
+ }
+ }
+ } else if (type == ResourceType.EXPERIMENT) {
+ Query q = em.createQuery("SELECT p FROM Experiment p WHERE p.user_ID =:usr_ID");
+ q.setParameter("usr_ID", id);
+ List results = q.getResultList();
+ if (results.size() != 0) {
+ for (Object result : results) {
+ Experiment experiment = (Experiment) result;
+ ExperimentResource experimentResource = new ExperimentResource(experiment.getExperiment_ID());
+ experimentResource.setProjectID(experiment.getProject().getProject_ID());
+ experimentResource.setUserID(experiment.getUser().getUser_ID());
+ experimentResource.setSubmittedDate(experiment.getSubmitted_date());
+ resourceList.add(experimentResource);
+ }
+ }
+ }
+ end();
+ return resourceList;
+ }
+
+ public void save() {
+ begin();
+ Users user = new Users();
+ Gateway gateway = new Gateway();
+ gateway.setGateway_ID(gatewayID);
+ user.setGateway(gateway);
+ user.setUser_name(userName);
+ user.setPassword(password);
+ if (id != -1) {
+ user.setUser_ID(id);
+ }
+ em.persist(user);
+ end();
+
+ }
+
+ public boolean isExists(ResourceType type, Object name) {
+ begin();
+ if(type == ResourceType.USER_WORKFLOW){
+ Query q = em.createQuery("SELECT p FROM User_Workflow p WHERE p.gateway_ID =:gate_ID and p.user_ID =:userID and p.user_workflow_name =:usr_wf_name");
+ q.setParameter("gate_ID", gatewayID);
+ q.setParameter("userID",id);
+ q.setParameter("usr_wf_name", name);
+ User_Workflow userWorkflow = (User_Workflow)q.getSingleResult();
+ if(userWorkflow != null){
+ return true;
+ }else {
+ return false;
+ }
+ }else if(type == ResourceType.EXPERIMENT){
+ Query q = em.createQuery("SELECT p FROM Experiment p WHERE p.gateway_ID =:gate_ID and p.user_ID =:userID and p.experiment_ID =:experimentID");
+ q.setParameter("gate_ID", gatewayID);
+ q.setParameter("userID",id);
+ q.setParameter("experimentID", name);
+ Experiment experiment = (Experiment)q.getSingleResult();
+ if(experiment != null){
+ return true;
+ }else {
+ return false;
+ }
+ }
+ end();
+ return false;
+ }
+
+ public ProjectResource getProjectResource() {
+ return projectResource;
+ }
+
+ public void setProjectResource(ProjectResource projectResource) {
+ this.projectResource = projectResource;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+}
Added: incubator/airavata/trunk/modules/commons/provenance-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/UserWorkflowResource.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/commons/provenance-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/UserWorkflowResource.java?rev=1381324&view=auto
==============================================================================
--- incubator/airavata/trunk/modules/commons/provenance-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/UserWorkflowResource.java (added)
+++ incubator/airavata/trunk/modules/commons/provenance-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/UserWorkflowResource.java Wed Sep 5 19:49:15 2012
@@ -0,0 +1,103 @@
+package org.apache.airavata.persistance.registry.jpa.resources;
+
+import org.apache.airavata.persistance.registry.jpa.Resource;
+import org.apache.airavata.persistance.registry.jpa.ResourceType;
+import org.apache.airavata.persistance.registry.jpa.model.Project;
+import org.apache.airavata.persistance.registry.jpa.model.User_Workflow;
+import org.apache.airavata.persistance.registry.jpa.model.Users;
+
+import java.sql.Date;
+import java.util.List;
+
+public class UserWorkflowResource extends AbstractResource {
+ private int projectID;
+ private int userID;
+ private String name;
+ private Date lastUpdateDate;
+ private String content;
+
+ public UserWorkflowResource() {
+ }
+
+ public UserWorkflowResource(int projectID, int userID, String name) {
+ this.projectID = projectID;
+ this.userID = userID;
+ this.name = name;
+ }
+
+ public int getProjectID() {
+ return projectID;
+ }
+
+ public int getUserID() {
+ return userID;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setLastUpdateDate(Date lastUpdateDate) {
+ this.lastUpdateDate = lastUpdateDate;
+ }
+
+ public void setContent(String content) {
+ this.content = content;
+ }
+
+ public Date getLastUpdateDate() {
+ return lastUpdateDate;
+ }
+
+ public String getContent() {
+ return content;
+ }
+
+ public void setProjectID(int projectID) {
+ this.projectID = projectID;
+ }
+
+ public void setUserID(int userID) {
+ this.userID = userID;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public Resource create(ResourceType type) {
+ return null;
+ }
+
+ public void remove(ResourceType type, Object name) {
+
+ }
+
+ public Resource get(ResourceType type, Object name) {
+ return null;
+ }
+
+ public List<Resource> get(ResourceType type) {
+ return null;
+ }
+
+ public void save() {
+ begin();
+ User_Workflow userWorkflow = new User_Workflow();
+ userWorkflow.setUser_workflow_name(name);
+ userWorkflow.setLast_update_date(lastUpdateDate);
+ userWorkflow.setWorkflow_content(content);
+ Project project = new Project();
+ project.setProject_ID(projectID);
+ userWorkflow.setProject(project);
+ Users user = new Users();
+ user.setUser_ID(userID);
+ userWorkflow.setUsers(user);
+ em.persist(userWorkflow);
+ end();
+ }
+
+ public boolean isExists(ResourceType type, Object name) {
+ return false;
+ }
+}
Modified: incubator/airavata/trunk/modules/commons/provenance-registry/src/main/java/org/apache/airavata/provenance/impl/jpa/AiravataJPAProvenanceRegistry.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/commons/provenance-registry/src/main/java/org/apache/airavata/provenance/impl/jpa/AiravataJPAProvenanceRegistry.java?rev=1381324&r1=1381323&r2=1381324&view=diff
==============================================================================
--- incubator/airavata/trunk/modules/commons/provenance-registry/src/main/java/org/apache/airavata/provenance/impl/jpa/AiravataJPAProvenanceRegistry.java (original)
+++ incubator/airavata/trunk/modules/commons/provenance-registry/src/main/java/org/apache/airavata/provenance/impl/jpa/AiravataJPAProvenanceRegistry.java Wed Sep 5 19:49:15 2012
@@ -372,6 +372,7 @@ public class AiravataJPAProvenanceRegist
public List<WorkflowServiceIOData> searchWorkflowExecutionServiceInput(
String arg0, String arg1, String arg2) throws RegistryException {
// TODO Auto-generated method stub
+
return null;
}
Modified: incubator/airavata/trunk/modules/commons/provenance-registry/src/main/resources/META-INF/persistence.xml
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/commons/provenance-registry/src/main/resources/META-INF/persistence.xml?rev=1381324&r1=1381323&r2=1381324&view=diff
==============================================================================
--- incubator/airavata/trunk/modules/commons/provenance-registry/src/main/resources/META-INF/persistence.xml (original)
+++ incubator/airavata/trunk/modules/commons/provenance-registry/src/main/resources/META-INF/persistence.xml Wed Sep 5 19:49:15 2012
@@ -29,7 +29,7 @@
<class>org.apache.airavata.provenance.model.Gram_Data</class>
<properties>
<property name="openjpa.ConnectionURL"
- value="jdbc:mysql://localhost:3306/workflow_provenance" />
+ value="jdbc:mysql://gf7.ucs.indiana.edu:3306/workflow_provenance" />
<property name="openjpa.ConnectionDriverName" value="com.mysql.jdbc.Driver" />
<property name="openjpa.ConnectionUserName" value="airavata" />
<property name="openjpa.ConnectionPassword" value="airavata" />
Added: incubator/airavata/trunk/modules/commons/provenance-registry/src/main/resources/data.sql
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/commons/provenance-registry/src/main/resources/data.sql?rev=1381324&view=auto
==============================================================================
--- incubator/airavata/trunk/modules/commons/provenance-registry/src/main/resources/data.sql (added)
+++ incubator/airavata/trunk/modules/commons/provenance-registry/src/main/resources/data.sql Wed Sep 5 19:49:15 2012
@@ -0,0 +1,115 @@
+create table Gateway
+(
+ gateway_ID int(11) NOT NULL AUTO_INCREMENT,
+ gateway_name varchar(255),
+ PRIMARY KEY (gateway_ID)
+);
+
+create table Configuration
+(
+ config_ID int(11) NOT NULL AUTO_INCREMENT,
+ config_key varchar(255),
+ config_val varchar(255),
+ expire_date date,
+ PRIMARY KEY(config_ID)
+);
+
+create table Gateway_Worker
+(
+ gateway_ID int(11) ,
+ user_ID int(11),
+ PRIMARY KEY (gateway_ID, user_ID)
+);
+
+create table Users
+(
+ user_ID int(11) NOT NULL AUTO_INCREMENT,
+ user_name varchar(255),
+ password varchar(255),
+ PRIMARY KEY(user_ID),
+ FOREIGN KEY (gateway_ID) REFERENCES Gateway(gateway_ID) ON DELETE CASCADE
+);
+
+create table Project
+(
+ project_ID int(11) NOT NULL AUTO_INCREMENT,
+ gateway_ID int(11),
+ user_ID int(11),
+ project_name varchar(255),
+ PRIMARY KEY(project_ID),
+ FOREIGN KEY (gateway_ID) REFERENCES Gateway(gateway_ID) ON DELETE CASCADE,
+ FOREIGN KEY (user_ID) REFERENCES Gateway(user_ID) ON DELETE CASCADE
+);
+
+create table Published_Workflow
+(
+ gateway_ID int(11),
+ publish_workflow_name varchar(255),
+ version varchar(255),
+ published_date DATE,
+ workflow_content varchar(2000),
+ PRIMARY KEY(gateway_ID, publish_workflow_name),
+ FOREIGN KEY (gateway_ID) REFERENCES Gateway(gateway_ID) ON DELETE CASCADE
+);
+
+create table User_Workflow
+(
+ project_ID int(11),
+ user_ID int(11),
+ user_workflow_name varchar(255),
+ last_update_date DATE,
+ workflow_content varchar(2000),
+ PRIMARY KEY(project_ID, user_ID, user_workflow_name),
+ FOREIGN KEY (project_ID) REFERENCES Projects(project_ID) ON DELETE CASCADE,
+ FOREIGN KEY (user_ID) REFERENCES Users(user_ID) ON DELETE CASCADE
+);
+
+
+create table Host_Descriptor
+(
+ gateway_ID int(11),
+ user_ID int(11),
+ host_descriptor_ID varchar(255),
+ host_descriptor_xml varchar(2000),
+ PRIMARY KEY(host_descriptor_ID),
+ FOREIGN KEY (gateway_ID) REFERENCES Gateway(gateway_ID) ON DELETE CASCADE
+ FOREIGN KEY (user_ID) REFERENCES Users(user_ID) ON DELETE CASCADE
+);
+
+create table Service_Descriptor
+(
+ gateway_ID int(11),
+ user_ID int(11),
+ service_descriptor_ID varchar(255),
+ service_descriptor_xml varchar(2000),
+ PRIMARY KEY(service_descriptor_ID),
+ FOREIGN KEY (gateway_ID) REFERENCES Gateway(gateway_ID) ON DELETE CASCADE
+ FOREIGN KEY (user_ID) REFERENCES Users(user_ID) ON DELETE CASCADE
+);
+
+create table Application_Descriptor
+(
+ gateway_ID int(11),
+ user_ID int(11),
+ application_descriptor_ID varchar(255),
+ host_descriptor_ID varchar(255),
+ service_descriptor_ID varchar(255),
+ application_descriptor_xml varchar(2000),
+ PRIMARY KEY(application_descriptor_ID),
+ FOREIGN KEY (gateway_ID) REFERENCES Gateway(gateway_ID) ON DELETE CASCADE,
+ FOREIGN KEY (host_descriptor_ID) REFERENCES Host_Descriptor(host_descriptor_ID) ON DELETE CASCADE,
+ FOREIGN KEY (service_descriptor_ID) REFERENCES Service_Descriptor(service_descriptor_ID) ON DELETE CASCADE
+ FOREIGN KEY (user_ID) REFERENCES Users(user_ID) ON DELETE CASCADE
+);
+
+create table Experiment
+(
+ project_ID int(11),
+ user_ID int(11),
+ experiment_ID varchar(255),
+ submitted_date Date,
+ PRIMARY KEY(experiment_ID),
+ FOREIGN KEY (project_ID) REFERENCES Projects(project_ID) ON DELETE CASCADE,
+ FOREIGN KEY (user_ID) REFERENCES Users(user_ID) ON DELETE CASCADE
+);
+