cmda-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From xingwei...@apache.org
Subject [28/51] [partial] incubator-cmda git commit: Update ApacheCMDA_1.0
Date Fri, 16 Oct 2015 23:12:02 GMT
http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/app/models/Parameter.java
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/app/models/Parameter.java b/ApacheCMDA_Backend_1.0/app/models/Parameter.java
new file mode 100644
index 0000000..f7db4ae
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/app/models/Parameter.java
@@ -0,0 +1,101 @@
+package models;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+
+@Entity
+public class Parameter {
+	@Id
+	@GeneratedValue(strategy = GenerationType.AUTO)
+	private long id;
+	@ManyToOne(optional = false)
+	@JoinColumn(name = "serviceId", referencedColumnName = "id")
+	private ClimateService climateService;
+	private long indexInService;
+	private String name;
+	private String dataRange;
+	private String rule;
+	private String purpose;
+	
+	public Parameter() {
+	}
+
+	public Parameter(ClimateService climateService, long indexInService,
+			String name, String dataRange,
+			String rule, String purpose) {
+		super();
+		this.climateService = climateService;
+		this.indexInService = indexInService;
+		this.name = name;
+		this.dataRange = dataRange;
+		this.rule = rule;
+		this.purpose = purpose;
+	}
+
+	public long getId() {
+		return id;
+	}
+
+	public ClimateService getClimateService() {
+		return climateService;
+	}
+
+	public void setClimateService(ClimateService climateService) {
+		this.climateService = climateService;
+	}
+
+	public long getIndexInService() {
+		return indexInService;
+	}
+
+	public void setIndexInService(long indexInService) {
+		this.indexInService = indexInService;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public String getDataRange() {
+		return dataRange;
+	}
+
+	public void setDataRange(String dataRange) {
+		this.dataRange = dataRange;
+	}
+	
+	public String getRule() {
+		return rule;
+	}
+
+	public void setRule(String rule) {
+		this.rule = rule;
+	}
+
+	public String getPurpose() {
+		return purpose;
+	}
+
+	public void setPurpose(String purpose) {
+		this.purpose = purpose;
+	}
+
+	@Override
+	public String toString() {
+		return "Parameter [id=" + id + ", climateService=" + climateService
+				+ ", indexInService=" + indexInService + ", name=" + name
+				+ ", dataRange=" + dataRange
+				+ ", rule=" + rule + ", purpose=" + purpose + "]";
+	}
+
+	
+	
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/app/models/ParameterRepository.java
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/app/models/ParameterRepository.java b/ApacheCMDA_Backend_1.0/app/models/ParameterRepository.java
new file mode 100644
index 0000000..16a187b
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/app/models/ParameterRepository.java
@@ -0,0 +1,15 @@
+package models;
+
+import org.springframework.data.repository.CrudRepository;
+
+import javax.inject.Named;
+import javax.inject.Singleton;
+import java.util.List;
+
+@Named
+@Singleton
+public interface ParameterRepository extends CrudRepository<Parameter, Long> {
+	List<Parameter> findByName(String name);
+	Parameter findByNameAndClimateService(String name, ClimateService climateService);
+	Parameter findByNameAndClimateService_Id(String name, long serviceId);
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/app/models/Publication.java
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/app/models/Publication.java b/ApacheCMDA_Backend_1.0/app/models/Publication.java
new file mode 100644
index 0000000..cbaddf7
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/app/models/Publication.java
@@ -0,0 +1,83 @@
+package models;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+
+@Entity
+@Inheritance(strategy=InheritanceType.JOINED)
+public class Publication {
+
+    @Id
+    @GeneratedValue(strategy=GenerationType.AUTO)
+    private long id;
+    private String paperTitle;
+    @ManyToOne(optional = false)
+	@JoinColumn(name = "authorId", referencedColumnName = "id")//using another table is better
+    private User author;
+    private String publicationChannel;
+    private int year;
+    
+	public Publication() {
+	}
+
+	public Publication(String paperTitle, User author,
+			String publicationChannel, int year) {
+		super();
+		this.paperTitle = paperTitle;
+		this.author = author;
+		this.publicationChannel = publicationChannel;
+		this.year = year;
+	}
+
+	public String getPaperTitle() {
+		return paperTitle;
+	}
+
+	public void setPaperTitle(String paperTitle) {
+		this.paperTitle = paperTitle;
+	}
+
+	public User getAuthor() {
+		return author;
+	}
+
+	public void setAuthor(User author) {
+		this.author = author;
+	}
+
+	public String getPublicationChannel() {
+		return publicationChannel;
+	}
+
+	public void setPublicationChannel(String publicationChannel) {
+		this.publicationChannel = publicationChannel;
+	}
+
+	public int getYear() {
+		return year;
+	}
+
+	public void setYear(int year) {
+		this.year = year;
+	}
+
+	public long getId() {
+		return id;
+	}
+
+	@Override
+	public String toString() {
+		return "Publication [id=" + id + ", paperTitle=" + paperTitle
+				+ ", author=" + author + ", publicationChannel="
+				+ publicationChannel + ", year=" + year + "]";
+	}
+    
+    
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/app/models/ServiceConfiguration.java
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/app/models/ServiceConfiguration.java b/ApacheCMDA_Backend_1.0/app/models/ServiceConfiguration.java
new file mode 100644
index 0000000..7ea96bf
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/app/models/ServiceConfiguration.java
@@ -0,0 +1,117 @@
+package models;
+
+import java.util.Date;
+import java.util.List;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToMany;
+
+
+@Entity
+public class ServiceConfiguration {
+	@Id
+	@GeneratedValue(strategy = GenerationType.AUTO)
+	private long id;
+	@ManyToOne(optional = false)
+	@JoinColumn(name = "serviceId", referencedColumnName = "id")
+	private ClimateService climateservice;
+	@ManyToOne(optional = false)
+	@JoinColumn(name = "userId", referencedColumnName = "id")
+	private User user;
+	private String runTime;
+
+//	@OneToMany(mappedBy="serviceConfiguration")
+//	private List<ServiceConfigurationItem> serviceConfigurationItems;
+
+	public ServiceConfiguration() {
+	}
+	
+	public ServiceConfiguration(ClimateService climateservice,
+			User user,String runtime){
+		super();
+		this.climateservice = climateservice;
+		this.user = user;
+		this.runTime = runtime;
+	}
+
+	public long getId() {
+		return id;
+	}
+
+	public ClimateService getClimateservice() {
+		return climateservice;
+	}
+
+	public User getUser() {
+		return user;
+	}
+
+	public String getRunTime() {
+		return runTime;
+	}
+
+	public void setId(long id) {
+		this.id = id;
+	}
+
+	public void setClimateservice(ClimateService climateservice) {
+		this.climateservice = climateservice;
+	}
+
+	public void setUser(User user) {
+		this.user = user;
+	}
+
+	public void setRunTime(String runTime) {
+		this.runTime = runTime;
+	}
+
+//	public List<ServiceConfigurationItem> getServiceConfigurationItems() {
+//		return serviceConfigurationItems;
+//	}
+//
+//	public void setServiceConfigurationItems(
+//			List<ServiceConfigurationItem> serviceConfigurationItems) {
+//		this.serviceConfigurationItems = serviceConfigurationItems;
+//	}
+
+	@Override
+	public String toString() {
+		return "ServiceConfiguration [id=" + id + ", climateservice="
+				+ climateservice + ", user=" + user + ", runTime=" + runTime
+				+ "]";
+	}
+
+
+    @Override
+    public boolean equals(Object o) {
+        // If the object is compared with itself then return true
+        if (o == this) {
+            return true;
+        }
+
+        /* Check if o is an instance of ServiceConfiguration or not
+          "null instanceof [type]" also returns false */
+        if (!(o instanceof ServiceConfiguration)) {
+            return false;
+        }
+
+        // typecast o to ServiceConfiguration so that we can compare data members
+        ServiceConfiguration c = (ServiceConfiguration) o;
+
+        if (this.getId() == c.getId())
+            return true;
+        else
+            return false;
+    }
+
+    @Override
+    public int hashCode(){
+        return (int)id;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/app/models/ServiceConfigurationItem.java
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/app/models/ServiceConfigurationItem.java b/ApacheCMDA_Backend_1.0/app/models/ServiceConfigurationItem.java
new file mode 100644
index 0000000..613e865
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/app/models/ServiceConfigurationItem.java
@@ -0,0 +1,68 @@
+package models;
+
+import javax.persistence.CascadeType;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+
+
+@Entity
+public class ServiceConfigurationItem {
+	@Id
+	@GeneratedValue(strategy = GenerationType.AUTO)
+	private long id;
+	
+	@ManyToOne(optional = false)
+	@JoinColumn(name = "serviceConfigurationId", referencedColumnName = "id")
+	private ServiceConfiguration serviceConfiguration;
+	
+	@ManyToOne(optional = false)
+	@JoinColumn(name = "parameterId", referencedColumnName = "id")
+	private Parameter parameter;
+	
+	private String value;
+
+	public ServiceConfigurationItem() {
+	}
+	
+	public ServiceConfigurationItem(ServiceConfiguration serviceConfiguration, Parameter parameter
+			, String value) {
+		super();
+		this.serviceConfiguration = serviceConfiguration;
+		this.parameter = parameter;
+		this.value = value;
+	}
+
+	public long getId() {
+		return id;
+	}
+
+	public ServiceConfiguration getServiceConfiguration() {
+		return serviceConfiguration;
+	}
+	public void setServiceConfiguration(ServiceConfiguration serviceConfiguration) {
+		this.serviceConfiguration = serviceConfiguration;
+	}
+	public Parameter getParameter() {
+		return parameter;
+	}
+	public void setParameter(Parameter parameter) {
+		this.parameter = parameter;
+	}
+	public String getValue() {
+		return value;
+	}
+	public void setValue(String value) {
+		this.value = value;
+	}	
+
+	@Override
+	public String toString() {
+		return "ServiceConfigurationItem [id=" + id + ", serviceConfiguration="
+				+ serviceConfiguration + ", parameter=" + parameter
+				+ ", value=" + value + "]";
+	}
+}

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/app/models/ServiceConfigurationItemRepository.java
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/app/models/ServiceConfigurationItemRepository.java b/ApacheCMDA_Backend_1.0/app/models/ServiceConfigurationItemRepository.java
new file mode 100644
index 0000000..2421a20
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/app/models/ServiceConfigurationItemRepository.java
@@ -0,0 +1,23 @@
+package models;
+
+import java.util.List;
+
+import org.springframework.data.repository.CrudRepository;
+
+import javax.inject.Named;
+import javax.inject.Singleton;
+
+@Named
+@Singleton
+public interface ServiceConfigurationItemRepository extends CrudRepository<ServiceConfigurationItem, Long> {
+	
+	List<ServiceConfigurationItem> findByServiceConfiguration_Id (long serviceConfigurationId);
+    
+	List<ServiceConfigurationItem> findByParameter (Parameter parameter);
+	List<ServiceConfigurationItem> findByParameter_Id (long parameterId);
+
+	List<ServiceConfigurationItem> findByParameterInAndValue (List<Parameter> parameter, String value);
+	
+	ServiceConfigurationItem findFirstByParameterAndServiceConfiguration(Parameter parameter, ServiceConfiguration serviceConfiguration);
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/app/models/ServiceConfigurationRepository.java
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/app/models/ServiceConfigurationRepository.java b/ApacheCMDA_Backend_1.0/app/models/ServiceConfigurationRepository.java
new file mode 100644
index 0000000..2884746
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/app/models/ServiceConfigurationRepository.java
@@ -0,0 +1,14 @@
+package models;
+
+import java.util.List;
+
+import org.springframework.data.repository.CrudRepository;
+
+import javax.inject.Named;
+import javax.inject.Singleton;
+
+@Named
+@Singleton
+public interface ServiceConfigurationRepository extends CrudRepository<ServiceConfiguration, Long> {
+	List<ServiceConfiguration> findAllByUser(User user);
+}

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/app/models/ServiceEntry.java
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/app/models/ServiceEntry.java b/ApacheCMDA_Backend_1.0/app/models/ServiceEntry.java
new file mode 100644
index 0000000..73e28dc
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/app/models/ServiceEntry.java
@@ -0,0 +1,116 @@
+package models;
+
+import javax.persistence.*;
+import java.util.Date;
+
+/**
+ * Created by xing on 4/15/15.
+ */
+@Entity
+public class ServiceEntry {
+    @Id
+    @GeneratedValue(strategy = GenerationType.AUTO)
+    private long id;
+    @ManyToOne(fetch = FetchType.EAGER, cascade = {CascadeType.MERGE})
+    @JoinColumn(name = "serviceId", referencedColumnName = "id")
+    private ClimateService climateService;
+    private String versionNo;
+    @ManyToOne(fetch = FetchType.EAGER, cascade = {CascadeType.MERGE})
+    @JoinColumn(name = "registorId", referencedColumnName = "id")
+    private User user;
+    @Temporal(TemporalType.TIMESTAMP)
+    private Date registerTimeStamp;
+    private String registerNote;
+    private int count;
+    @Temporal(TemporalType.TIMESTAMP)
+    private Date latestAccessTimeStamp;
+
+    public ServiceEntry(){
+    }
+
+    public ServiceEntry(Date latestAccessTimestamp, String versionNo, User user, Date registerTimeStamp, String registerNote, int count, ClimateService climateService) {
+        super();
+        if (latestAccessTimestamp == null)
+            latestAccessTimestamp = new Date();
+        this.latestAccessTimeStamp = latestAccessTimestamp;
+        this.versionNo = versionNo;
+        this.user = user;
+        if (registerTimeStamp == null)
+            registerTimeStamp = new Date();
+        this.registerTimeStamp = registerTimeStamp;
+        this.registerNote = registerNote;
+        this.count = count;
+        this.climateService = climateService;
+    }
+
+    public long getId() {
+        return id;
+    }
+
+    public void setId(long id) {
+        this.id = id;
+    }
+
+    public ClimateService getClimateService() {
+        return climateService;
+    }
+
+    public void setClimateService(ClimateService climateService) {
+        this.climateService = climateService;
+    }
+
+    public String getVersionNo() {
+        return versionNo;
+    }
+
+    public void setVersionNo(String versionNo) {
+        this.versionNo = versionNo;
+    }
+
+    public User getUser() {
+        return user;
+    }
+
+    public void setUser(User user) {
+        this.user = user;
+    }
+
+    public Date getRegisterTimeStamp() {
+        return registerTimeStamp;
+    }
+
+    public void setRegisterTimeStamp(Date registerTimeStamp) {
+        this.registerTimeStamp = registerTimeStamp;
+    }
+
+    public String getRegisterNote() {
+        return registerNote;
+    }
+
+    public void setRegisterNote(String registerNote) {
+        this.registerNote = registerNote;
+    }
+
+    public int getCount() {
+        return count;
+    }
+
+    public void setCount(int count) {
+        this.count = count;
+    }
+
+    public Date getLatestAccessTimestamp() {
+        return latestAccessTimeStamp;
+    }
+
+    public void setLatestAccessTimestamp(Date latestAccessTimestamp) {
+        this.latestAccessTimeStamp = latestAccessTimestamp;
+    }
+
+    public String toString(){
+        return "ServiceEntry [id=" + id + ", service=" + climateService
+                + ", version=" + versionNo + ", user=" + user + ", registerTimeStamp=" + registerTimeStamp
+                + ", registerNote=" + registerNote + ", count=" + count + ", latestAccessTimeStamp="
+                + latestAccessTimeStamp + "]";
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/app/models/ServiceEntryRepository.java
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/app/models/ServiceEntryRepository.java b/ApacheCMDA_Backend_1.0/app/models/ServiceEntryRepository.java
new file mode 100644
index 0000000..77b298e
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/app/models/ServiceEntryRepository.java
@@ -0,0 +1,25 @@
+package models;
+
+
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.CrudRepository;
+import org.springframework.data.repository.Repository;
+
+import javax.inject.Named;
+import javax.inject.Singleton;
+import java.util.List;
+
+/**
+ * Created by xing on 4/15/15.
+ */
+
+@Named
+@Singleton
+public interface ServiceEntryRepository extends CrudRepository<ServiceEntry, Long> {
+	List<ServiceEntry> findByClimateServiceAndVersionNo(ClimateService climateService, String versionNo);
+}
+
+
+
+

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/app/models/ServiceExecutionLog.java
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/app/models/ServiceExecutionLog.java b/ApacheCMDA_Backend_1.0/app/models/ServiceExecutionLog.java
new file mode 100644
index 0000000..c35c6c4
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/app/models/ServiceExecutionLog.java
@@ -0,0 +1,188 @@
+package models;
+
+import java.util.Date;
+
+import javax.persistence.CascadeType;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToOne;
+import javax.persistence.Temporal;
+import javax.persistence.TemporalType;
+
+@Entity
+public class ServiceExecutionLog {
+
+	@Id
+	@GeneratedValue(strategy = GenerationType.AUTO)
+	private long id;
+	@ManyToOne(optional = false)
+	@JoinColumn(name = "serviceId", referencedColumnName = "id")
+	private ClimateService climateService;
+	@ManyToOne(optional = false)
+	@JoinColumn(name = "userId", referencedColumnName = "id")
+	private User user;
+	@OneToOne(cascade=CascadeType.ALL)
+	@JoinColumn(name = "serviceConfigurationId", referencedColumnName = "id")
+	private ServiceConfiguration serviceConfiguration;
+//	@ManyToOne(optional = false)
+//	@JoinColumn(name = "datasetLogId", referencedColumnName = "id")
+//	private DatasetLog datasetLog;
+	private String purpose;
+	@Temporal(TemporalType.TIMESTAMP)
+	private Date executionStartTime;
+	@Temporal(TemporalType.TIMESTAMP)
+	private Date executionEndTime;
+	private String plotUrl;
+	private String dataUrl;
+	private Date datasetStudyStartTime;
+	private Date datasetStudyEndTime;
+	
+
+	public ServiceExecutionLog(
+			ClimateService climateService, User user,
+			ServiceConfiguration serviceConfiguration, // DatasetLog datasetLog,
+			String purpose, Date executionStartTime, Date executionEndTime,
+			String dataUrl, String plotUrl,
+			Date datasetStudyStartTime, Date datasetStudyEndTime) {
+	this.climateService = climateService;
+		this.user = user;
+		this.serviceConfiguration = serviceConfiguration;
+		//this.datasetLog = datasetLog;
+		this.purpose = purpose;
+		this.executionStartTime = executionStartTime;
+		this.executionEndTime = executionEndTime;
+		this.plotUrl = plotUrl;
+		this.dataUrl = dataUrl;
+		this.datasetStudyStartTime = datasetStudyStartTime;
+		this.datasetStudyEndTime = datasetStudyEndTime;
+	}
+	
+	public ServiceExecutionLog() {
+
+	}
+	
+	public long getId() {
+		return id;
+	}
+
+	public ClimateService getClimateService() {
+		return climateService;
+	}
+
+	public User getUser() {
+		return user;
+	}
+
+	public ServiceConfiguration getServiceConfiguration() {
+		return serviceConfiguration;
+	}
+
+//	public DatasetLog getDatasetLog() {
+//		return datasetLog;
+//	}
+
+	public String getPurpose() {
+		return purpose;
+	}
+
+	public Date getExecutionStartTime() {
+		return executionStartTime;
+	}
+
+	public Date getExecutionEndTime() {
+		return executionEndTime;
+	}
+
+	public String getPlotUrl() {
+		return plotUrl;
+	}
+
+	public String getDataUrl() {
+		return dataUrl;
+	}
+	
+	public Date getDatasetStudyStartTime() {
+		return datasetStudyStartTime;
+	}
+	
+	public Date getDatasetStudyEndTime() {
+		return datasetStudyEndTime;
+	}
+	
+	public void setId(long id) {
+		this.id = id;
+	}
+
+	public void setClimateService(ClimateService climateService) {
+		this.climateService = climateService;
+	}
+
+	public void setUser(User user) {
+		this.user = user;
+	}
+
+	public void setServiceConfiguration(ServiceConfiguration serviceConfiguration) {
+		this.serviceConfiguration = serviceConfiguration;
+	}
+
+//	public void setDatasetLog(DatasetLog datasetLog) {
+//		this.datasetLog = datasetLog;
+//	}
+
+	public void setPurpose(String purpose) {
+		this.purpose = purpose;
+	}
+
+	public void setExecutionStartTime(Date executionStartTime) {
+		this.executionStartTime = executionStartTime;
+	}
+
+	public void setExecutionEndTime(Date executionEndTime) {
+		this.executionEndTime = executionEndTime;
+	}
+
+	public void setPlotUrl(String plotUrl) {
+		this.plotUrl = plotUrl;
+	}
+
+	public void setDataUrl(String dataUrl) {
+		this.dataUrl = dataUrl;
+	}
+	
+	public void setDatasetStudyStartTime(Date datasetStudyStartTime) {
+		this.datasetStudyStartTime = datasetStudyStartTime;
+	}
+
+	public void setDatasetStudyEndTime(Date datasetStudyEndTime) {
+		this.datasetStudyEndTime  = datasetStudyEndTime;
+	}
+
+	@Override
+	public String toString() {
+		return "ServiceExecutionLog [id=" + id + ", climateService="
+				+ climateService + ", user=" + user + ", serviceConfiguration="
+				+ serviceConfiguration + ", purpose=" + purpose
+				+ ", executionStartTime=" + executionStartTime
+				+ ", executionEndTime=" + executionEndTime + ", plotUrl="
+				+ plotUrl + ", dataUrl=" + dataUrl 
+				+ ", datasetStudyStartTime=" + datasetStudyStartTime
+				+ ", datasetStudyEndTime=" + datasetStudyEndTime
+				+ "]";
+	}
+
+	
+//	@Override
+//	public String toString() {
+//		return "ServiceExecutionLog [id=" + id + ", climateService="
+//				+ climateService + ", user=" + user
+//				+ ", serviceConfiguration=" + serviceConfiguration
+//				+ ", datasetLog=" + datasetLog + ", purpose=" + purpose
+//				+ ", executionStartTime=" + executionStartTime
+//				+ ", executionEndTime=" + executionEndTime + "]";
+//	}
+	
+}

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/app/models/ServiceExecutionLogRepository.java
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/app/models/ServiceExecutionLogRepository.java b/ApacheCMDA_Backend_1.0/app/models/ServiceExecutionLogRepository.java
new file mode 100644
index 0000000..ee99f46
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/app/models/ServiceExecutionLogRepository.java
@@ -0,0 +1,39 @@
+package models;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Set;
+
+import org.springframework.data.repository.CrudRepository;
+
+import com.google.gson.JsonElement;
+
+import javax.inject.Named;
+import javax.inject.Singleton;
+
+@Named
+@Singleton
+public interface ServiceExecutionLogRepository extends CrudRepository<ServiceExecutionLog, Long> {
+    
+	List<ServiceExecutionLog> findByUser_Id(long userId);
+
+//    List<ServiceExecutionLog> findByExecutionStartTimeBetweenAndExecutionEndTimeBetweenAndPurposeLikeAndUser_IdAndServiceConfigurationIn(Date startA, Date startB, Date endA, Date endB, String purpose, long userId, Set<ServiceConfiguration> serviceConfigurations);
+//
+//    List<ServiceExecutionLog> findByExecutionStartTimeBetweenAndExecutionEndTimeBetweenAndPurposeLikeAndServiceConfigurationIn(Date startA, Date startB, Date endA, Date endB, String purpose, Set<ServiceConfiguration> serviceConfigurations);
+//
+//    List<ServiceExecutionLog> findByExecutionStartTimeBetweenAndExecutionEndTimeBetweenAndPurposeLikeAndUser_Id(Date startA, Date startB, Date endA, Date endB, String purpose, long userId);
+//
+//    List<ServiceExecutionLog> findByExecutionStartTimeBetweenAndExecutionEndTimeBetweenAndPurposeLike(Date startA, Date startB, Date endA, Date endB, String purpose);
+
+    List<ServiceExecutionLog> findByServiceConfigurationIn(List<ServiceConfiguration> serviceConfigurations);
+
+    List<ServiceExecutionLog> findByExecutionStartTimeGreaterThanEqualAndExecutionEndTimeLessThanEqualAndPurposeLikeAndUser_IdAndServiceConfigurationIn(Date start, Date end, String purpose, long userId, Set<ServiceConfiguration> serviceConfigurations);
+
+    List<ServiceExecutionLog> findByExecutionStartTimeGreaterThanEqualAndExecutionEndTimeLessThanEqualAndPurposeLikeAndServiceConfigurationIn(Date start, Date end, String purpose, Set<ServiceConfiguration> serviceConfigurations);
+
+    List<ServiceExecutionLog> findByExecutionStartTimeGreaterThanEqualAndExecutionEndTimeLessThanEqualAndPurposeLikeAndUser_Id(Date start, Date end, String purpose, long userId);
+
+    List<ServiceExecutionLog> findByExecutionStartTimeGreaterThanEqualAndExecutionEndTimeLessThanEqualAndPurposeLike(Date start, Date end, String purpose);
+
+    List<ServiceExecutionLog> findAllByOrderByExecutionStartTimeDesc();
+}

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/app/models/User.java
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/app/models/User.java b/ApacheCMDA_Backend_1.0/app/models/User.java
new file mode 100644
index 0000000..a17bef8
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/app/models/User.java
@@ -0,0 +1,177 @@
+package models;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+
+@Entity
+public class User {
+
+	@Id
+	@GeneratedValue(strategy = GenerationType.AUTO)
+	private long id;
+	private String userName;
+	private String password;
+	private String firstName;
+	private String lastName;
+	private String middleInitial;
+	private String affiliation;
+	private String title;
+	private String email;
+	private String mailingAddress;
+	private String phoneNumber;
+	private String faxNumber;
+	private String researchFields;
+	private String highestDegree;
+
+	// @OneToMany(mappedBy = "user", cascade={CascadeType.ALL})
+	// private Set<ClimateService> climateServices = new
+	// HashSet<ClimateService>();
+
+	public User() {
+	}
+
+	public User(String userName, String password, String firstName,
+			String lastName, String middleInitial, String affiliation,
+			String title, String email, String mailingAddress,
+			String phoneNumber, String faxNumber, String researchFields,
+			String highestDegree) {
+		super();
+		this.userName = userName;
+		this.password = password;
+		this.firstName = firstName;
+		this.lastName = lastName;
+		this.middleInitial = middleInitial;
+		this.affiliation = affiliation;
+		this.title = title;
+		this.email = email;
+		this.mailingAddress = mailingAddress;
+		this.phoneNumber = phoneNumber;
+		this.faxNumber = faxNumber;
+		this.researchFields = researchFields;
+		this.highestDegree = highestDegree;
+	}
+
+	public long getId() {
+		return id;
+	}
+
+	public String getUserName() {
+		return userName;
+	}
+
+	public String getPassword() {
+		return password;
+	}
+
+	public String getFirstName() {
+		return firstName;
+	}
+
+	public String getLastName() {
+		return lastName;
+	}
+
+	public String getMiddleInitial() {
+		return middleInitial;
+	}
+
+	public String getAffiliation() {
+		return affiliation;
+	}
+
+	public String getTitle() {
+		return title;
+	}
+
+	public String getEmail() {
+		return email;
+	}
+
+	public String getMailingAddress() {
+		return mailingAddress;
+	}
+
+	public String getPhoneNumber() {
+		return phoneNumber;
+	}
+
+	public String getFaxNumber() {
+		return faxNumber;
+	}
+
+	public String getResearchFields() {
+		return researchFields;
+	}
+
+	public String getHighestDegree() {
+		return highestDegree;
+	}
+
+	public void setUserName(String userName) {
+		this.userName = userName;
+	}
+
+	public void setPassword(String password) {
+		this.password = password;
+	}
+
+	public void setFirstName(String firstName) {
+		this.firstName = firstName;
+	}
+
+	public void setLastName(String lastName) {
+		this.lastName = lastName;
+	}
+
+	public void setMiddleInitial(String middleInitial) {
+		this.middleInitial = middleInitial;
+	}
+
+	public void setAffiliation(String affiliation) {
+		this.affiliation = affiliation;
+	}
+
+	public void setTitle(String title) {
+		this.title = title;
+	}
+
+	public void setEmail(String email) {
+		this.email = email;
+	}
+
+	public void setMailingAddress(String mailingAddress) {
+		this.mailingAddress = mailingAddress;
+	}
+
+	public void setPhoneNumber(String phoneNumber) {
+		this.phoneNumber = phoneNumber;
+	}
+
+	public void setFaxNumber(String faxNumber) {
+		this.faxNumber = faxNumber;
+	}
+
+	public void setResearchFields(String researchFields) {
+		this.researchFields = researchFields;
+	}
+
+	public void setHighestDegree(String highestDegree) {
+		this.highestDegree = highestDegree;
+	}
+
+	@Override
+	public String toString() {
+		return "User [id=" + id + ", userName=" + userName + ", password="
+				+ password + ", firstName=" + firstName + ", lastName="
+				+ lastName + ", middleInitial=" + middleInitial
+				+ ", affiliation=" + affiliation + ", title=" + title
+				+ ", email=" + email + ", mailingAddress=" + mailingAddress
+				+ ", phoneNumber=" + phoneNumber + ", faxNumber=" + faxNumber
+				+ ", researchFields=" + researchFields + ", highestDegree="
+				+ highestDegree + "]";
+	}
+
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/app/models/UserRepository.java
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/app/models/UserRepository.java b/ApacheCMDA_Backend_1.0/app/models/UserRepository.java
new file mode 100644
index 0000000..10a389b
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/app/models/UserRepository.java
@@ -0,0 +1,19 @@
+package models;
+
+import java.util.List;
+
+import org.springframework.data.repository.CrudRepository;
+
+import javax.inject.Named;
+import javax.inject.Singleton;
+
+/**
+ * Provides CRUD functionality for accessing people. Spring Data auto-magically takes care of many standard
+ * operations here.
+ */
+@Named
+@Singleton
+public interface UserRepository extends CrudRepository<User, Long> {
+	List<User> findByUserName(String userName);
+	User findByEmail(String email);
+}

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/app/models/Workflow.java
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/app/models/Workflow.java b/ApacheCMDA_Backend_1.0/app/models/Workflow.java
new file mode 100644
index 0000000..f79002c
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/app/models/Workflow.java
@@ -0,0 +1,120 @@
+package models;
+
+import java.util.Date;
+import java.util.List;
+
+import javax.persistence.CascadeType;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.JoinTable;
+import javax.persistence.ManyToMany;
+
+
+@Entity
+public class Workflow {
+	
+	@Id
+	@GeneratedValue(strategy = GenerationType.AUTO)
+	private long id;
+	private String name;
+	private String purpose;
+	private Date createTime;
+	private String versionNo;
+	private long rootWorkflowId;
+	@ManyToMany(fetch = FetchType.EAGER, cascade = {CascadeType.MERGE})
+	@JoinTable(name = "WorkflowAndUser", joinColumns = { @JoinColumn(name ="workflowId", referencedColumnName = "id")}, inverseJoinColumns = { @JoinColumn(name = "userId", referencedColumnName = "id") })
+	private List<User> userSet;
+	@ManyToMany(fetch = FetchType.EAGER, cascade = {CascadeType.MERGE})
+	@JoinTable(name = "WorkflowAndClimateService", joinColumns = { @JoinColumn(name ="workflowId", referencedColumnName = "id")}, inverseJoinColumns = { @JoinColumn(name = "climateServiceId", referencedColumnName = "id") })
+	private List<ClimateService> climateServiceSet;
+
+	public Workflow() {
+	}
+
+	public Workflow(String name, String purpose, Date createTime,
+			String versionNo, long rootWorkflowId, List<User> userSet,
+			List<ClimateService> climateServiceSet) {
+		super();
+		this.name = name;
+		this.purpose = purpose;
+		this.createTime = createTime;
+		this.versionNo = versionNo;
+		this.rootWorkflowId = rootWorkflowId;
+		this.userSet = userSet;
+		this.climateServiceSet = climateServiceSet;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public String getPurpose() {
+		return purpose;
+	}
+
+	public void setPurpose(String purpose) {
+		this.purpose = purpose;
+	}
+
+	public Date getCreateTime() {
+		return createTime;
+	}
+
+	public void setCreateTime(Date createTime) {
+		this.createTime = createTime;
+	}
+
+	public String getVersionNo() {
+		return versionNo;
+	}
+
+	public void setVersionNo(String versionNo) {
+		this.versionNo = versionNo;
+	}
+
+	public long getRootWorkflowId() {
+		return rootWorkflowId;
+	}
+
+	public void setRootWorkflowId(long rootWorkflowId) {
+		this.rootWorkflowId = rootWorkflowId;
+	}
+
+	public List<User> getUserSet() {
+		return userSet;
+	}
+
+	public void setUserSet(List<User> userSet) {
+		this.userSet = userSet;
+	}
+
+	public List<ClimateService> getClimateServiceSet() {
+		return climateServiceSet;
+	}
+
+	public void setClimateServiceSet(List<ClimateService> climateServiceSet) {
+		this.climateServiceSet = climateServiceSet;
+	}
+
+	public long getId() {
+		return id;
+	}
+
+	@Override
+	public String toString() {
+		return "Workflow [id=" + id + ", name=" + name + ", purpose=" + purpose
+				+ ", createTime=" + createTime + ", versionNo=" + versionNo
+				+ ", rootWorkflowId=" + rootWorkflowId + ", userSet=" + userSet
+				+ ", climateServiceSet=" + climateServiceSet + "]";
+	}
+	
+	
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/app/models/WorkflowRepository.java
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/app/models/WorkflowRepository.java b/ApacheCMDA_Backend_1.0/app/models/WorkflowRepository.java
new file mode 100644
index 0000000..f937bfb
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/app/models/WorkflowRepository.java
@@ -0,0 +1,12 @@
+package models;
+
+import org.springframework.data.repository.CrudRepository;
+
+import javax.inject.Named;
+import javax.inject.Singleton;
+
+@Named
+@Singleton
+public interface WorkflowRepository extends CrudRepository<Workflow, Long> {
+
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/app/util/Common.java
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/app/util/Common.java b/ApacheCMDA_Backend_1.0/app/util/Common.java
new file mode 100644
index 0000000..39bab5b
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/app/util/Common.java
@@ -0,0 +1,9 @@
+package util;
+
+import java.text.SimpleDateFormat;
+
+public class Common {
+	public static final String DATE_PATTERN = "yyyy-MM-dd'T'HH:mm:ssz";
+	public static final String DATASET_DATE_PATTERN = "yyyyMM";
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/app/util/Constants.java
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/app/util/Constants.java b/ApacheCMDA_Backend_1.0/app/util/Constants.java
new file mode 100644
index 0000000..962e1ed
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/app/util/Constants.java
@@ -0,0 +1,9 @@
+package util;
+
+public class Constants {
+	
+	public static final String htmlHead = "<head>\r\n    <meta charset=\"utf-8\">\r\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\r\n    <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->\r\n    <title>Climate Service</title>\r\n\r\n    <!-- Bootstrap -->\r\n    <link href=\"css/bootstrap.min.css\" rel=\"stylesheet\">\r\n\r\n    <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->\r\n    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->\r\n    <!--[if lt IE 9]>\r\n    <script src=\"https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js\"></script>\r\n    <script src=\"https://oss.maxcdn.com/respond/1.4.2/respond.min.js\"></script>\r\n    <![endif]-->\r\n</head>\r\n<body>\r\n\r\n<h2 class=\"text-center\">Service: 2-D Variable Map</h2>\r\n\r\n<p class=\"text-center col-md
 -8 col-md-offset-2\">This service generates a map of a 2-dimensional variable with time\r\n    averaging and spatial\r\n    subsetting. Select a data source (model or observation), a variable name, a time range, and a spatial range\r\n    (lat-lon box) below.\r\n</p>\r\n\r\n<div class=\"container col-md-6\">\r\n    <form>\r\n        <table class=\"table table-bordered table-striped\">\r\n            <thead>\r\n            <tr>\r\n                <th class=\"col-md-2\">Parameter Name</th>\r\n                <th class=\"col-md-4\">Value</th>\r\n            </tr>\r\n            </thead>\r\n            <tbody>\r\n";
+	
+	public static final String htmlTail = "</tbody>\r\n        </table>\r\n        <div class=\"text-center\">\r\n            <button type=\"submit\" class=\"btn btn-success btn-lg\">Get Plot</button>\r\n        </div>\r\n    </form>\r\n</div>\r\n\r\n<div class=\"container col-md-6\">\r\n    <form>\r\n        <table class=\"table table-bordered table-striped\">\r\n            <thead>\r\n            <tr>\r\n                <th>Output</th>\r\n            </tr>\r\n            </thead>\r\n            <tbody>\r\n            <tr>\r\n                <td>\r\n                    <a href=\"http://einstein.sv.cmu.edu:9002/static/twoDimMap/6879a2eedd1910f4c45e6213d342e066/nasa_modis_clt_200401_200412_Annual.jpeg\">\r\n                        <img src=\"http://einstein.sv.cmu.edu:9002/static/twoDimMap/6879a2eedd1910f4c45e6213d342e066/nasa_modis_clt_200401_200412_Annual.jpeg\"\r\n                             class=\"img-responsive\">\r\n                    </a>\r\n                </td>\r\n          
   </tr>\r\n            <tr>\r\n                <td>\r\n                    <a href=\"http://einstein.sv.cmu.edu:9002/static/twoDimMap/6879a2eedd1910f4c45e6213d342e066/nasa_modis_clt_200401_200412_Annual.jpeg\">\r\n                        <textarea class=\"form-control\" rows=\"3\" id=\"comment\">http://einstein.sv.cmu.edu:9002/static/twoDimMap/6879a2eedd1910f4c45e6213d342e066/nasa_modis_clt_200401_200412_Annual.jpeg</textarea>\r\n                    </a>\r\n                </td>\r\n            </tr>\r\n            <tr>\r\n                <td>\r\n                    <textarea class=\"form-control\" rows=\"10\" id=\"comment\">\r\n                        {\r\n    \"dataUrl\": \"http://einstein.sv.cmu.edu:9002/static/twoDimMap/3cce4d6630dd6a3f9b9b2155a2d95ff6/nasa_modis_clt_200401_200412_JFMAJASOND.nc\",\r\n    \"message\": \"program name: octaveWrapper\\nsourceName: nasa_modis\\nvarName: clt\\nstartTimeStr: 200401\\nstopTimeStr: 200412\\nlonRange: 0,360\\nlonRange: 0.000000\\nlonRange:
  360.000000\\nlatRange: -90,90\\n1. NASA_MODIS\\n2. clt\\n3. 200401\\n4. 200412\\n5. 0,360\\n6. -90,90\\n7. 1,2,3,4,7,8,9,10,11,12\\n8. /media/sdb/trunk/services/svc/svc/static/twoDimMap/3cce4d6630dd6a3f9b9b2155a2d95ff6\\n9. 0\\nstart year = 2000.000000\\n, month = 3.000000\\nstop year = 2011.000000\\n, month = 9.000000\\nfigFile: nasa_modis_clt_200401_200412_JFMAJASOND.jpeg\\nfigFilePath: /media/sdb/trunk/services/svc/svc/static/twoDimMap/3cce4d6630dd6a3f9b9b2155a2d95ff6/nasa_modis_clt_200401_200412_JFMAJASOND.jpeg\\ndataFile: nasa_modis_clt_200401_200412_JFMAJASOND.nc\\ndataFilePath: /media/sdb/trunk/services/svc/svc/static/twoDimMap/3cce4d6630dd6a3f9b9b2155a2d95ff6/nasa_modis_clt_200401_200412_JFMAJASOND.nc\\nnumber of month = 12\\nnumber of files = 1\\n+-----------------------------------------------------------------------------+\\n|                                                                             |\\n|       Total Cloud Fraction, 2004/01-2004/12 climatology (%), JFM
 AJASOND     |\\n|   latitude(deg)                                                             |\\n|         +-----------------------------------------------------------+       |\\n|         | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++|       |\\n|      50 |+++++++         ++    +++++++++++++++++++++++++++++++  ++++|       |\\n|         |++++++++++ ++      ++++++             ++    +++++++   ++ ++|       |\\n|         | +++++++++++ +++ +++++          ++     +++++++++++      ++ |       |\\n|       0 |+++ +++++  +++++++++++                     +++++++++    +++|       |\\n|         |++  ++++       +++++++++++++ +              ++++  ++++     |       |\\n|         | ++ ++++++        ++++++++++ +    +            +  +++      |       |\\n|         |  +++     ++      +++++++  ++++               +++++        |       |\\n|     -50 |+         ++                                  ++++++ +    +|       |\\n|         |++++++++++++++++++++++++++++    +++++++++++++++++++++++++++|       |
 \\n|         +-----------------------------------------------------------+       |\\n|         0      50       100     150     200      250     300     350        |\\n|                                longitude(deg)                               |\\n|         +-----------------------------------------------------------+       |\\n|         +-----------------------------------------------------------+       |\\n|            10    20     30    40     50    60    70     80    90            |\\n|                           Total Cloud Fraction (%)                          |\\n|                                                                             |\\n+-----------------------------------------------------------------------------+\\n\\n  scalar structure containing the fields:\\n\\n    Name = /\\n    Format = classic\\n    Dimensions =\\n\\n      1x2 struct array containing the fields:\\n\\n        Name\\n        Length\\n        Unlimited\\n\\n    Variables =\\n\\n      1x3 struct ar
 ray containing the fields:\\n\\n        Name\\n        Datatype\\n        Dimensions\\n        Attributes\\n\\n\",\r\n    \"success\": true,\r\n    \"url\": \"http://einstein.sv.cmu.edu:9002/static/twoDimMap/3cce4d6630dd6a3f9b9b2155a2d95ff6/nasa_modis_clt_200401_200412_JFMAJASOND.jpeg\"\r\n}\r\n                    </textarea>\r\n                </td>\r\n            </tr>\r\n            </tbody>\r\n        </table>\r\n        <div class=\"text-center\">\r\n            <button type=\"submit\" class=\"btn btn-success btn-lg\">Download Data</button>\r\n        </div>\r\n    </form>\r\n</div>\r\n\r\n<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->\r\n<script src=\"https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js\"></script>\r\n<!-- Include all compiled plugins (below), or include individual files as needed -->\r\n<script src=\"js/bootstrap.min.js\"></script>\r\n</body>\r\n</html>\r\n";
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/app/views/index.scala.html
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/app/views/index.scala.html b/ApacheCMDA_Backend_1.0/app/views/index.scala.html
new file mode 100644
index 0000000..9fb293c
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/app/views/index.scala.html
@@ -0,0 +1,7 @@
+@(message: String)
+
+@main("Welcome to Play") {
+
+    @play20.welcome(message, style = "Java")
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/app/views/main.scala.html
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/app/views/main.scala.html b/ApacheCMDA_Backend_1.0/app/views/main.scala.html
new file mode 100644
index 0000000..5025aa5
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/app/views/main.scala.html
@@ -0,0 +1,15 @@
+@(title: String)(content: Html)
+
+<!DOCTYPE html>
+
+<html>
+    <head>
+        <title>@title</title>
+        <link rel="stylesheet" media="screen" href="@routes.Assets.at("stylesheets/main.css")">
+        <link rel="shortcut icon" type="image/png" href="@routes.Assets.at("images/favicon.png")">
+        <script src="@routes.Assets.at("javascripts/hello.js")" type="text/javascript"></script>
+    </head>
+    <body>
+        @content
+    </body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/app/workflow/Connection.java
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/app/workflow/Connection.java b/ApacheCMDA_Backend_1.0/app/workflow/Connection.java
new file mode 100644
index 0000000..7008c52
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/app/workflow/Connection.java
@@ -0,0 +1,50 @@
+package workflow;
+
+public class Connection {
+	private long id;
+	private long from_node;
+	private String from;
+	private long to_node;
+	private String to;
+	
+	public long getId() {
+		return id;
+	}
+	
+	public void setId(long id) {
+		this.id = id;
+	}
+	
+	public long getFrom_node() {
+		return from_node;
+	}
+	
+	public void setFrom_node(long from_node) {
+		this.from_node = from_node;
+	}
+	
+	public String getFrom() {
+		return from;
+	}
+	
+	public void setFrom(String from) {
+		this.from = from;
+	}
+	
+	public long getTo_node() {
+		return to_node;
+	}
+	
+	public void setTo_node(long to_node) {
+		this.to_node = to_node;
+	}
+	
+	public String getTo() {
+		return to;
+	}
+	
+	public void setTo(String to) {
+		this.to = to;
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/app/workflow/FieldIn.java
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/app/workflow/FieldIn.java b/ApacheCMDA_Backend_1.0/app/workflow/FieldIn.java
new file mode 100644
index 0000000..c2caaaf
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/app/workflow/FieldIn.java
@@ -0,0 +1,23 @@
+package workflow;
+
+public class FieldIn {
+	private String name;
+	private String value;
+	
+	public String getName() {
+		return name;
+	}
+	
+	public void setName(String name) {
+		this.name = name;
+	}
+	
+	public String getValue() {
+		return value;
+	}
+	
+	public void setValue(String value) {
+		this.value = value;
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/app/workflow/FieldOut.java
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/app/workflow/FieldOut.java b/ApacheCMDA_Backend_1.0/app/workflow/FieldOut.java
new file mode 100644
index 0000000..c341a32
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/app/workflow/FieldOut.java
@@ -0,0 +1,23 @@
+package workflow;
+
+public class FieldOut {
+	private String name;
+	private String value;
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+	
+	public String getValue() {
+		return value;
+	}
+
+	public void setValue(String value) {
+		this.value = value;
+	}
+	
+}

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/app/workflow/Fields.java
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/app/workflow/Fields.java b/ApacheCMDA_Backend_1.0/app/workflow/Fields.java
new file mode 100644
index 0000000..91448e7
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/app/workflow/Fields.java
@@ -0,0 +1,23 @@
+package workflow;
+
+public class Fields {
+	private FieldIn[] in;
+	private FieldOut[] out;
+	
+	public FieldIn[] getIn() {
+		return in;
+	}
+	
+	public void setIn(FieldIn[] in) {
+		this.in = in;
+	}
+	
+	public FieldOut[] getOut() {
+		return out;
+	}
+	
+	public void setOut(FieldOut[] out) {
+		this.out = out;
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/app/workflow/Group.java
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/app/workflow/Group.java b/ApacheCMDA_Backend_1.0/app/workflow/Group.java
new file mode 100644
index 0000000..670eda3
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/app/workflow/Group.java
@@ -0,0 +1,5 @@
+package workflow;
+
+public class Group {
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/app/workflow/Node.java
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/app/workflow/Node.java b/ApacheCMDA_Backend_1.0/app/workflow/Node.java
new file mode 100644
index 0000000..27c97bd
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/app/workflow/Node.java
@@ -0,0 +1,68 @@
+package workflow;
+
+public class Node {
+	private long nid;
+	private String name;
+	private String type;
+	private boolean anim;
+	private double x;
+	private double y;
+	private Fields fields;
+	
+	public long getNid() {
+		return nid;
+	}
+	
+	public void setNid(long nid) {
+		this.nid = nid;
+	}
+	
+	public String getName() {
+		return name;
+	}
+	
+	public void setName(String name) {
+		this.name = name;
+	}
+	
+	public String getType() {
+		return type;
+	}
+	
+	public void setType(String type) {
+		this.type = type;
+	}
+	
+	public boolean isAnim() {
+		return anim;
+	}
+	
+	public void setAnim(boolean anim) {
+		this.anim = anim;
+	}
+	
+	public double getX() {
+		return x;
+	}
+	
+	public void setX(double x) {
+		this.x = x;
+	}
+	
+	public double getY() {
+		return y;
+	}
+	
+	public void setY(double y) {
+		this.y = y;
+	}
+	
+	public Fields getFields() {
+		return fields;
+	}
+	
+	public void setFields(Fields fields) {
+		this.fields = fields;
+	}
+	
+}

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/app/workflow/ServiceWorkFlow.java
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/app/workflow/ServiceWorkFlow.java b/ApacheCMDA_Backend_1.0/app/workflow/ServiceWorkFlow.java
new file mode 100644
index 0000000..2e875be
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/app/workflow/ServiceWorkFlow.java
@@ -0,0 +1,51 @@
+package workflow;
+
+import java.util.Arrays;
+
+public class ServiceWorkFlow {
+	private long uid;
+	private Node[] nodes;
+	private Connection[] connections;
+	private Group[] groups;
+	
+	public long getUid() {
+		return uid;
+	}
+	
+	public void setUid(long uid) {
+		this.uid = uid;
+	}
+	
+	public Node[] getNodes() {
+		return nodes;
+	}
+	
+	public void setNodes(Node[] nodes) {
+		this.nodes = nodes;
+	}
+	
+	public Connection[] getConnections() {
+		return connections;
+	}
+	
+	public void setConnections(Connection[] connections) {
+		this.connections = connections;
+	}
+	
+	public Group[] getGroups() {
+		return groups;
+	}
+	
+	public void setGroups(Group[] groups) {
+		this.groups = groups;
+	}
+
+	@Override
+	public String toString() {
+		return "ServiceWorkFlow [uid=" + uid + ", nodes="
+				+ Arrays.toString(nodes) + ", connections="
+				+ Arrays.toString(connections) + ", groups="
+				+ Arrays.toString(groups) + "]";
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/app/workflow/VisTrailJson.java
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/app/workflow/VisTrailJson.java b/ApacheCMDA_Backend_1.0/app/workflow/VisTrailJson.java
new file mode 100644
index 0000000..f0c287d
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/app/workflow/VisTrailJson.java
@@ -0,0 +1,170 @@
+package workflow;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import models.ServiceExecutionLog;
+
+import com.google.gson.Gson;
+
+public class VisTrailJson {
+	
+	public static String getVisTrailJson(List<ServiceExecutionLog> list) {
+		
+		ServiceWorkFlow serviceWorkFlow = new ServiceWorkFlow();
+		
+		serviceWorkFlow.setUid(list.get(0).getUser().getId());
+		
+		long nodeIdGenerator = 1;
+		List<Node> nodeList = new ArrayList<Node>();
+		
+		for (int i = 0; i < list.size(); i++) {
+			FieldIn fieldIn = new FieldIn();
+			fieldIn.setName("in");
+			fieldIn.setValue("execution" + nodeIdGenerator);
+			
+			FieldOut fieldOut = new FieldOut();
+			fieldOut.setName("out");
+			fieldOut.setValue(null);
+			
+			Fields fields = new Fields();
+			fields.setIn(new FieldIn[] {fieldIn});
+			fields.setOut(new FieldOut[] {fieldOut});
+			
+			Node node = new Node();
+			node.setNid(nodeIdGenerator);
+			node.setName(list.get(i).getClimateService().getName());
+			node.setType("Service");
+			node.setAnim(false);
+			node.setX(56.800006091594696);
+			node.setY(230.8000060915947);
+			node.setFields(fields);
+			
+			nodeList.add(node);
+			
+			nodeIdGenerator++;
+		}
+		
+		FieldIn[] fieldInArray = new FieldIn[list.size()];
+		for (int i = 0; i < list.size(); i++) {
+			FieldIn fieldIn = new FieldIn();
+			fieldIn.setName("in" + i);
+			fieldIn.setValue("");
+			fieldInArray[i] = fieldIn;
+		}
+		
+		FieldOut fieldOut = new FieldOut();
+		fieldOut.setName("out");
+		fieldOut.setValue(null);
+		
+		Fields fields = new Fields();
+		fields.setIn(fieldInArray);
+		fields.setOut(new FieldOut[] {fieldOut});
+		
+		Node node = new Node();
+		node.setNid(nodeIdGenerator);
+		node.setName("Aggregation");
+		node.setType("Aggregation");
+		node.setAnim(false);
+		node.setX(56.800006091594696);
+		node.setY(230.8000060915947);
+		node.setFields(fields);
+		
+		nodeList.add(node);
+		
+		nodeIdGenerator++;
+		
+		FieldIn fieldInWriteFile = new FieldIn();
+		fieldInWriteFile.setName("in");
+		fieldInWriteFile.setValue("");
+		
+		FieldOut fieldOutWriteFile = new FieldOut();
+		fieldOut.setName("out");
+		fieldOut.setValue(null);
+		
+		Fields fieldsWriteFile = new Fields();
+		fieldsWriteFile.setIn(new FieldIn[] {fieldInWriteFile});
+		fieldsWriteFile.setOut(new FieldOut[] {fieldOutWriteFile});
+		
+		Node nodeWriteFile = new Node();
+		nodeWriteFile.setNid(nodeIdGenerator);
+		nodeWriteFile.setName("WriteFile");
+		nodeWriteFile.setType("WriteFile");
+		nodeWriteFile.setAnim(false);
+		nodeWriteFile.setX(56.800006091594696);
+		nodeWriteFile.setY(230.8000060915947);
+		nodeWriteFile.setFields(fields);
+		
+		nodeList.add(nodeWriteFile);
+		
+		nodeIdGenerator++;
+		
+		FieldIn fieldInFileSink1 = new FieldIn();
+		fieldInFileSink1.setName("in");
+		fieldInFileSink1.setValue(null);
+		
+		FieldIn fieldInFileSink2 = new FieldIn();
+		fieldInFileSink2.setName("in0");
+		fieldInFileSink2.setValue(null);
+		
+		FieldOut fieldOutFileSink = new FieldOut();
+		fieldOutFileSink.setName(null);
+		fieldOutFileSink.setValue(null);
+		
+		Fields fieldsFileSink = new Fields();
+		fieldsFileSink.setIn(new FieldIn[] {fieldInFileSink1, fieldInFileSink2});
+		fieldsFileSink.setOut(new FieldOut[] {fieldOutFileSink});
+		
+		Node nodeFileSink = new Node();
+		nodeFileSink.setNid(nodeIdGenerator);
+		nodeFileSink.setName("FileSink");
+		nodeFileSink.setType("FileSink");
+		nodeFileSink.setAnim(false);
+		nodeFileSink.setX(716.0);
+		nodeFileSink.setY(156.07);
+		nodeFileSink.setFields(fields);
+		
+		nodeList.add(nodeFileSink);
+		
+		nodeIdGenerator++;
+		
+		serviceWorkFlow.setNodes(nodeList.toArray(new Node[nodeList.size()]));
+		
+		List<Connection> connectionList = new ArrayList<Connection>();
+		for (int i = 0; i < list.size(); i++) {
+			Connection connection = new Connection();
+			connection.setId(nodeIdGenerator);
+			connection.setFrom_node(i + 1);
+			connection.setFrom("out");
+			connection.setTo_node(list.size() + 1);
+			connection.setTo("in" + i);
+			
+			connectionList.add(connection);
+
+			nodeIdGenerator++;
+		}
+		
+		for (int i = 0; i < 2; i++) {
+			Connection connection = new Connection();
+			connection.setId(nodeIdGenerator);
+			connection.setFrom_node(list.size() + i + 1);
+			connection.setFrom("out");
+			connection.setTo_node(list.size() + i + 2);
+			connection.setTo("in");
+			
+			connectionList.add(connection);
+
+			nodeIdGenerator++;
+		}
+		
+		serviceWorkFlow.setConnections(connectionList.toArray
+				(new Connection[connectionList.size()]));
+		
+		serviceWorkFlow.setGroups(new Group[0]);
+		
+		Gson gson = new Gson();
+
+		return gson.toJson(serviceWorkFlow);
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/build.sbt
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/build.sbt b/ApacheCMDA_Backend_1.0/build.sbt
new file mode 100644
index 0000000..e1d17a5
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/build.sbt
@@ -0,0 +1,26 @@
+name := """climate-service-backend"""
+
+version := "1.0-SNAPSHOT"
+
+lazy val root = (project in file(".")).enablePlugins(PlayJava)
+
+scalaVersion := "2.11.4"
+
+jacoco.settings
+
+libraryDependencies ++= Seq(
+  cache,
+  javaWs,
+  javaCore,
+  "org.springframework" % "spring-context" % "4.1.4.RELEASE",
+  "javax.inject" % "javax.inject" % "1",
+  "org.springframework.data" % "spring-data-jpa" % "1.7.1.RELEASE",
+  "org.springframework" % "spring-expression" % "4.1.4.RELEASE",
+  "org.hibernate" % "hibernate-entitymanager" % "4.3.7.Final",
+  "org.mockito" % "mockito-core" % "1.10.19" % "test",
+  "mysql" % "mysql-connector-java" % "5.1.34",
+  "com.google.code.gson" % "gson" % "2.3.1",
+  "org.hibernate" % "hibernate-c3p0" % "4.3.7.Final"
+)
+
+

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/conf/META-INF/persistence.xml
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/conf/META-INF/persistence.xml b/ApacheCMDA_Backend_1.0/conf/META-INF/persistence.xml
new file mode 100644
index 0000000..8147039
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/conf/META-INF/persistence.xml
@@ -0,0 +1,33 @@
+<persistence xmlns="http://java.sun.com/xml/ns/persistence"
+             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
+             version="2.0">
+
+    <persistence-unit name="default" transaction-type="RESOURCE_LOCAL">
+        <provider>org.hibernate.ejb.HibernatePersistence</provider>
+        
+        <properties>
+            
+            <!-- Configuring JDBC properties -->
+        	<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
+            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/climateService" />
+            <property name="javax.persistence.jdbc.user" value="root" />
+            <property name="javax.persistence.jdbc.password" value="" />
+        	
+            <!-- Hibernate properties -->
+            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
+            <property name="hibernate.show_sql" value="true" />
+            <property name="hibernate.hbm2ddl.auto" value="update" />
+            
+            <!-- Configuring Connection Pool -->
+	        <property name="hibernate.c3p0.min_size" value="5" />
+	        <property name="hibernate.c3p0.max_size" value="20" />
+	        <property name="hibernate.c3p0.timeout" value="500" />
+	        <property name="hibernate.c3p0.max_statements" value="50" />
+	        <property name="hibernate.c3p0.idle_test_period" value="2000" />
+	        
+        </properties>
+        
+    </persistence-unit>
+
+</persistence>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/conf/application.conf
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/conf/application.conf b/ApacheCMDA_Backend_1.0/conf/application.conf
new file mode 100644
index 0000000..8b6fdc9
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/conf/application.conf
@@ -0,0 +1,72 @@
+# This is the main configuration file for the application.
+# ~~~~~
+
+# Secret key
+# ~~~~~
+# The secret key is used to secure cryptographics functions.
+#
+# This must be changed for production, but we recommend not changing it in this file.
+#
+# See http://www.playframework.com/documentation/latest/ApplicationSecret for more details.
+application.secret="/A=PmUSp=kNy2o6Pb8CJ[ZJAHcAbtWGCK[JQuN[[xb;u;FsIM1Z8ARQDOhpjKRvF"
+
+# The application languages
+# ~~~~~
+application.langs="en"
+
+# Global object class
+# ~~~~~
+# Define the Global object class for this application.
+# Default to Global in the root package.
+# application.global=Global
+
+# Router
+# ~~~~~
+# Define the Router object to use for this application.
+# This router will be looked up first when the application is starting up,
+# so make sure this is the entry point.
+# Furthermore, it's assumed your route file is named properly.
+# So for an application router like `conf/my.application.Router`,
+# you may need to define a router file `my.application.routes`.
+# Default to Routes in the root package (and `conf/routes`)
+# application.router=my.application.Routes
+
+# Database configuration
+# ~~~~~
+# You can declare as many datasources as you want.
+# By convention, the default datasource is named `default`
+#
+  db.default.driver=org.h2.Driver
+  db.default.url="jdbc:h2:mem:play"
+# db.default.user=sa
+# db.default.password=""
+#
+# You can expose this datasource via JNDI if needed (Useful for JPA)
+  db.default.jndiName=DefaultDS
+
+# Evolutions
+# ~~~~~
+# You can disable evolutions if needed
+# evolutionplugin=disabled
+
+# Ebean configuration
+# ~~~~~
+# You can declare as many Ebean servers as you want.
+# By convention, the default server is named `default`
+#
+# ebean.default="models.*"
+
+# Logger
+# ~~~~~
+# You can also configure logback (http://logback.qos.ch/),
+# by providing an application-logger.xml file in the conf directory.
+
+# Root logger:
+logger.root=ERROR
+
+# Logger used by the framework:
+logger.play=INFO
+
+# Logger provided to your application:
+logger.application=DEBUG
+

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/conf/routes
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/conf/routes b/ApacheCMDA_Backend_1.0/conf/routes
new file mode 100644
index 0000000..ff3d46c
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/conf/routes
@@ -0,0 +1,140 @@
+# Routes
+# This file defines all application routes (Higher priority routes first)
+# ~~~~
+
+# Home page - we use the @controllers syntax here so that the router knows we are referring to a class. In turn it
+# will call on the GlobalSettings.getController method to resolve the actual controller instance.
+# GET     /                           @controllers.Application.index
+
+# Climate Service
+GET           /climateService/getClimateService/:name/json                                              @controllers.ClimateServiceController.getClimateService(name: String, format: String="json")
+GET           /climateService/getClimateService/id/:id                                                  @controllers.ClimateServiceController.getClimateServiceById(id: Long)
+GET           /climateService/getAllClimateServices/json                                                @controllers.ClimateServiceController.getAllClimateServices(format: String="json")
+GET           /climateService/getAllMostRecentClimateServicesByCreateTime/json                          @controllers.ClimateServiceController.getAllClimateServicesOrderByCreateTime(format: String="json")
+GET           /climateService/getAllMostRecentClimateServicesByLatestAccessTime/json                    @controllers.ClimateServiceController.getAllClimateServicesOrderByLatestAccessTime(format: String="json")
+GET           /climateService/getAllMostUsedClimateServices/json                                        @controllers.ClimateServiceController.getAllClimateServicesOrderByCount(format: String="json")
+POST          /climateService/addClimateService                                                         @controllers.ClimateServiceController.addClimateService
+GET           /climateService/getAllServiceEntries/json                                                 @controllers.ClimateServiceController.getAllServiceEntries(format: String="json")
+POST          /climateService/addServiceEntry                                                           @controllers.ClimateServiceController.addServiceEntry
+PUT           /climateService/updateClimateService/id/:id                                               @controllers.ClimateServiceController.updateClimateServiceById(id: Long)
+PUT           /climateService/updateClimateService/name/:oldName                                        @controllers.ClimateServiceController.updateClimateServiceByName(oldName: String)
+DELETE        /climateService/deleteClimateService/id/:id                                               @controllers.ClimateServiceController.deleteClimateServiceById(id: Long)
+DELETE        /climateService/deleteClimateService/name/:name                                           @controllers.ClimateServiceController.deleteClimateServiceByName(name: String)
+
+# Save Climate Service Page
+POST          /climateService/savePage                                                         			@controllers.ClimateServiceController.savePage
+
+# Bug Report
+GET           /bugReport/getBugReport/id/:id                                                            @controllers.BugReportController.getBugReport(id: Long, format: String="json")
+GET           /bugReport/getAllBugReports/json                                                          @controllers.BugReportController.getAllBugReports
+GET           /bugReport/getAllUnsolvedBugReports/json                                                  @controllers.BugReportController.getAllUnsolvedBugReports
+GET           /bugReport/getAllSolvedBugReports/json                                                    @controllers.BugReportController.getAllSolvedBugReports
+POST          /bugReport/addBugReport                                                                   @controllers.BugReportController.addBugReport
+PUT           /bugReport/updateBugReport/id/:id                                                         @controllers.BugReportController.updateBugReportById(id: Long)
+DELETE        /bugReport/deleteBugReport/id/:id                                                         @controllers.BugReportController.deleteBugReport(id: Long)
+
+# Service Configuration
+GET           /serviceConfiguration/getServiceConfiguration/id/:id/json                                 @controllers.ServiceConfigurationController.getServiceConfiguration(id: Long, format: String="json")
+POST          /serviceConfiguration/addServiceConfiguration                                             @controllers.ServiceConfigurationController.addServiceConfiguration
+PUT           /serviceConfiguration/updateServiceConfiguration/id/:id                                   @controllers.ServiceConfigurationController.updateServiceConfigurationById(id: Long)
+DELETE        /serviceConfiguration/deleteServiceConfiguration/:id                                      @controllers.ServiceConfigurationController.deleteServiceConfiguration(id: Long)
+GET           /serviceConfiguration/getAllServiceConfigurationsByUserId/:userId/json                    @controllers.ServiceConfigurationController.getServiceConfigurationsByUser(userId: Long, format: String="json")
+
+# Service Configuration Item
+GET           /serviceConfigurationItem/serviceConfigurationItemById/:id                                @controllers.ServiceConfigurationItemController.getServiceConfigurationItemById(id: Long)
+GET           /serviceConfigurationItem/serviceConfigurationItemByServiceConfig/:serviceConfigId        @controllers.ServiceConfigurationItemController.getServiceConfigurationItemsInServiceConfig(serviceConfigId: Long)
+GET           /serviceConfigurationItem/serviceConfigurationItemByParamId/:paramId                      @controllers.ServiceConfigurationItemController.getServiceConfigurationItemByParameterId(paramId : Long)
+POST          /serviceConfigurationItem/addServiceConfigurationItem                                     @controllers.ServiceConfigurationItemController.addServiceConfigurationItem
+PUT           /serviceConfigurationItem/updateServiceConfigurationItem/id/:id                           @controllers.ServiceConfigurationItemController.updateServiceConfigurationItemById(id:Long)
+DELETE        /serviceConfigurationItem/deleteServiceConfigurationItemById/:id                          @controllers.ServiceConfigurationItemController.deleteServiceConfigurationItemById(id: Long)
+
+# Service Execution Log
+GET           /serviceExecutionLog/getAllServiceExecutionLog                                            @controllers.ServiceExecutionLogController.getAllServiceExecutionLogs(format: String="json")
+GET           /serviceExecutionLog/getServiceExecutionLog/:id                                           @controllers.ServiceExecutionLogController.getServiceExecutionLog(id: Long, format: String="json")
+POST          /serviceExecutionLog/addServiceExecutionLog                                               @controllers.ServiceExecutionLogController.addServiceExecutionLog()
+POST          /serviceExecutionLog/queryServiceExecutionLogs                                            @controllers.ServiceExecutionLogController.queryServiceExecutionLogs()
+PUT           /serviceExecutionLog/updateServiceExecutionLogs/:id                                       @controllers.ServiceExecutionLogController.updateServiceExecutionLog(id: Long)
+DELETE        /serviceExecutionLog/deleteServiceExecutionLogs/:id                                       @controllers.ServiceExecutionLogController.deleteServiceExecutionLog(id: Long)
+# Temp: replace service log
+#GET           /serviceExecutionLog/replaceUser                                                          @controllers.ServiceExecutionLogController.replaceUserWithPurpose()
+
+# DatasetLog
+GET           /datasetLog/getAllDatasetLogs/json                                                        @controllers.DatasetLogController.getAllDatasetLogs(format: String="json")
+GET           /datasetLog/getDatasetLog/id/:id/json                                                     @controllers.DatasetLogController.getDatasetLog(id: Long, format: String="json")
+POST          /datasetLog/addDatasetLog                                                                 @controllers.DatasetLogController.addDatasetLog
+PUT           /datasetLog/updateDatasetLog/id/:id                                                       @controllers.DatasetLogController.updateDatasetLogById(id: Long)
+DELETE        /datasetLog/deleteDatasetLog/id/:id                                                       @controllers.DatasetLogController.deleteDatasetLog(id: Long)
+
+# Workflow
+GET           /workflow/getAllWorkflows/json                                                          	@controllers.WorkflowController.getAllWorkflows(format: String="json")
+GET           /workflow/getWorkflowById/id/:id/json                                                     @controllers.WorkflowController.getWorkflowById(id: Long, format: String="json")
+POST          /workflow/addWorkflow                                                                   	@controllers.WorkflowController.addWorkflow
+PUT           /workflow/updateWorkflowById/id/:id                                                       @controllers.WorkflowController.updateWorkflowById(id: Long)
+DELETE        /workflow/deleteWorkflowById/id/:id/                                                     	@controllers.WorkflowController.deleteWorkflowById(id:Long)
+POST          /workflow/generateWorkflowJson                                                            @controllers.WorkflowController.generateWorkflowJson
+
+# Instrument
+GET           /instrument/getAllInstruments/json                                                        @controllers.InstrumentController.getAllInstruments(format: String="json")
+GET           /instrument/getInstrument/id/:id/json                                                     @controllers.InstrumentController.getInstrument(id: Long, format: String="json")
+POST          /instrument/addInstrument                                                                 @controllers.InstrumentController.addInstrument
+PUT           /instrument/updateInstrument/id/:id                                                       @controllers.InstrumentController.updateInstrumentById(id: Long)
+DELETE        /instrument/deleteInstrument/id/:id                                                       @controllers.InstrumentController.deleteInstrument(id: Long)
+
+# Dataset
+GET           /dataset/getAllDatasets/json                                                              @controllers.DatasetController.getAllDatasets(format: String="json")
+GET           /dataset/getDataset/id/:id/json                                                           @controllers.DatasetController.getDataset(id: Long, format: String="json")
+POST          /dataset/addDataset                                                                       @controllers.DatasetController.addDataset
+PUT           /dataset/updateDataset/id/:id                                                             @controllers.DatasetController.updateDatasetById(id: Long)
+DELETE        /dataset/deleteDataset/id/:id                                                             @controllers.DatasetController.deleteDataset(id: Long)
+POST		  /dataset/queryDataset																		@controllers.DatasetController.queryDatasets
+POST		  /dataset/getMostKPopularDatasets															@controllers.DatasetController.getMostKPopularDatasets
+
+# Parameter
+GET           /parameter/getAllParameters/json                                                          @controllers.ParameterController.getAllParameters(format: String="json")
+GET           /parameter/getParameter/service/:id/name/:name/json                                       @controllers.ParameterController.getParameterByName(id:Long, name: String, format: String="json")
+GET           /parameter/getParameter/id/:id/json                                                       @controllers.ParameterController.getParameterById(id: Long, format: String="json")
+POST          /parameter/addParameter                                                                   @controllers.ParameterController.addParameter
+PUT           /parameter/updateParameter/id/:id                                                         @controllers.ParameterController.updateParameterById(id: Long)
+PUT           /parameter/updateParameter/name/:oldName                                                  @controllers.ParameterController.updateParameterByName(oldName: String)
+DELETE        /parameter/deleteParameter/service/:id/name/:name                                         @controllers.ParameterController.deleteParameterByName(id:Long, name: String)
+
+# JournalPublication
+GET           /journalPublication/getAllJournalPublications/json                                        @controllers.JournalPublicationController.getAllJournalPublications(format: String="json")
+GET           /journalPublication/getJournalPublication/id/:id/json                                     @controllers.JournalPublicationController.getJournalPublicationById(id: Long, format: String="json")
+POST          /journalPublication/addJournalPublication                                                 @controllers.JournalPublicationController.addJournalPublication
+PUT           /journalPublication/updateJournalPublication/id/:id                                       @controllers.JournalPublicationController.updateJournalPublicationById(id: Long)
+DELETE        /journalPublication/deleteJournalPublication/id/:id                                       @controllers.JournalPublicationController.deleteJournalPublicationById(id: Long)
+
+# BookPublication
+GET           /BookPublication/getAllBookPublications/json                                              @controllers.BookPublicationController.getAllBookPublications(format: String="json")
+GET           /BookPublication/getBookPublication/id/:id/json                                           @controllers.BookPublicationController.getBookPublicationById(id: Long, format: String="json")
+POST          /BookPublication/addBookPublication                                                       @controllers.BookPublicationController.addBookPublication
+PUT           /BookPublication/updateBookPublication/id/:id                                             @controllers.BookPublicationController.updateBookPublicationById(id: Long)
+DELETE        /BookPublication/deleteBookPublication/id/:id                                             @controllers.BookPublicationController.deleteBookPublicationById(id: Long)
+
+# BookChapterPublication
+GET           /BookChapterPublication/getAllBookPublications/json                                       @controllers.BookChapterPublicationController.getAllBookChapterPublications(format: String="json")
+GET           /BookChapterPublication/getBookPublication/id/:id/json                                    @controllers.BookChapterPublicationController.getBookChapterPublication(id: Long, format: String="json")
+POST          /BookChapterPublication/addBookPublication                                                @controllers.BookChapterPublicationController.addBookChapterPublication
+PUT           /BookChapterPublication/updateBookPublication/id/:id                                      @controllers.BookChapterPublicationController.updateBookChapterPublication(id: Long)
+DELETE        /BookChapterPublication/deleteBookPublication/id/:id                                      @controllers.BookChapterPublicationController.deleteBookChapterPublication(id: Long)
+
+# ConferencePublication
+GET           /ConferencePublication/getAllBookPublications/json                                        @controllers.ConferencePublicationController.getAllConferencePublications(format: String="json")
+GET           /ConferencePublication/getBookPublication/id/:id/json                                     @controllers.ConferencePublicationController.getConferencePublication(id: Long, format: String="json")
+POST          /ConferencePublication/addBookPublication                                                 @controllers.ConferencePublicationController.addConferencePublication
+PUT           /ConferencePublication/updateBookPublication/id/:id                                       @controllers.ConferencePublicationController.updateConferencePublication(id: Long)
+DELETE        /ConferencePublication/deleteBookPublication/id/:id                                       @controllers.ConferencePublicationController.deleteConferencePublication(id: Long)
+
+# Users
+GET           /users/:id                                                                                @controllers.UserController.getUser(id: Long, format: String="json")
+POST          /users/add                                                                                @controllers.UserController.addUser
+PUT           /users/update/:id                                                                         @controllers.UserController.updateUser(id: Long)
+DELETE        /users/delete/:id                                                                         @controllers.UserController.deleteUser(id: Long)
+GET			  /users/getAllUsers/json																	@controllers.UserController.getAllUsers(format: String="json")
+POST		  /users/isUserValid																		@controllers.UserController.isUserValid
+POST		  /users/isEmailExisted																		@controllers.UserController.isEmailExisted
+DELETE		  /users/delete/userName/:userName/password/:password										@controllers.UserController.deleteUserByUserNameandPassword(userName: String, password: String)
+
+# Map static resources from the /public folder to the /assets URL path
+GET           /assets/*file                                                                             controllers.Assets.at(path="/public", file)

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/logs/application.log
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/logs/application.log b/ApacheCMDA_Backend_1.0/logs/application.log
new file mode 100644
index 0000000..0aff73b
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/logs/application.log
@@ -0,0 +1,6 @@
+2015-10-15 15:08:11,760 - [INFO] - from play in pool-4-thread-1 
+Listening for HTTP on /0:0:0:0:0:0:0:0:9035
+
+2015-10-15 15:09:06,973 - [INFO] - from play in play-internal-execution-context-1 
+Application started (Dev)
+

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/.DS_Store
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/.DS_Store b/ApacheCMDA_Backend_1.0/project/.DS_Store
new file mode 100644
index 0000000..ec88fc9
Binary files /dev/null and b/ApacheCMDA_Backend_1.0/project/.DS_Store differ

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/activator-sbt-echo-shim.sbt
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/activator-sbt-echo-shim.sbt b/ApacheCMDA_Backend_1.0/project/activator-sbt-echo-shim.sbt
new file mode 100644
index 0000000..99d5973
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/activator-sbt-echo-shim.sbt
@@ -0,0 +1 @@
+addSbtPlugin("com.typesafe.sbt" % "sbt-echo" % "0.1.6.2")
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/activator-sbt-eclipse-shim.sbt
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/activator-sbt-eclipse-shim.sbt b/ApacheCMDA_Backend_1.0/project/activator-sbt-eclipse-shim.sbt
new file mode 100644
index 0000000..8734fe2
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/activator-sbt-eclipse-shim.sbt
@@ -0,0 +1 @@
+addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "2.3.0")
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/activator-sbt-idea-shim.sbt
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/activator-sbt-idea-shim.sbt b/ApacheCMDA_Backend_1.0/project/activator-sbt-idea-shim.sbt
new file mode 100644
index 0000000..3023480
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/activator-sbt-idea-shim.sbt
@@ -0,0 +1 @@
+addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.5.2")
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/build.properties
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/build.properties b/ApacheCMDA_Backend_1.0/project/build.properties
new file mode 100644
index 0000000..6b6a42a
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/build.properties
@@ -0,0 +1,4 @@
+#Activator-generated Properties
+#Wed Jan 07 15:18:11 PST 2015
+template.uuid=30665618-b7de-4174-aeaa-edf647fee712
+sbt.version=0.13.5

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/plugins.sbt
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/plugins.sbt b/ApacheCMDA_Backend_1.0/project/plugins.sbt
new file mode 100644
index 0000000..f7d6433
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/plugins.sbt
@@ -0,0 +1,20 @@
+resolvers += "Typesafe repository" at "https://repo.typesafe.com/typesafe/releases/"
+
+// The Play plugin
+addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.3.7")
+
+// web plugins
+
+addSbtPlugin("com.typesafe.sbt" % "sbt-coffeescript" % "1.0.0")
+
+addSbtPlugin("com.typesafe.sbt" % "sbt-less" % "1.0.0")
+
+addSbtPlugin("com.typesafe.sbt" % "sbt-jshint" % "1.0.1")
+
+addSbtPlugin("com.typesafe.sbt" % "sbt-rjs" % "1.0.1")
+
+addSbtPlugin("com.typesafe.sbt" % "sbt-digest" % "1.0.0")
+
+addSbtPlugin("com.typesafe.sbt" % "sbt-mocha" % "1.0.0")
+
+addSbtPlugin("de.johoop" % "jacoco4sbt" % "2.1.6")

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/project/target/config-classes/$13508f75e77971774c8d$.class
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/project/target/config-classes/$13508f75e77971774c8d$.class b/ApacheCMDA_Backend_1.0/project/project/target/config-classes/$13508f75e77971774c8d$.class
new file mode 100644
index 0000000..10a5313
Binary files /dev/null and b/ApacheCMDA_Backend_1.0/project/project/target/config-classes/$13508f75e77971774c8d$.class differ

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/project/target/config-classes/$13508f75e77971774c8d.cache
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/project/target/config-classes/$13508f75e77971774c8d.cache b/ApacheCMDA_Backend_1.0/project/project/target/config-classes/$13508f75e77971774c8d.cache
new file mode 100644
index 0000000..07eb409
--- /dev/null
+++ b/ApacheCMDA_Backend_1.0/project/project/target/config-classes/$13508f75e77971774c8d.cache
@@ -0,0 +1 @@
+sbt.Def.SettingsDefinition
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/project/target/config-classes/$13508f75e77971774c8d.class
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/project/target/config-classes/$13508f75e77971774c8d.class b/ApacheCMDA_Backend_1.0/project/project/target/config-classes/$13508f75e77971774c8d.class
new file mode 100644
index 0000000..ef733db
Binary files /dev/null and b/ApacheCMDA_Backend_1.0/project/project/target/config-classes/$13508f75e77971774c8d.class differ

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/a9a83675/ApacheCMDA_Backend_1.0/project/project/target/config-classes/$1e89f37f3ef61beb10c8$.class
----------------------------------------------------------------------
diff --git a/ApacheCMDA_Backend_1.0/project/project/target/config-classes/$1e89f37f3ef61beb10c8$.class b/ApacheCMDA_Backend_1.0/project/project/target/config-classes/$1e89f37f3ef61beb10c8$.class
new file mode 100644
index 0000000..6826af7
Binary files /dev/null and b/ApacheCMDA_Backend_1.0/project/project/target/config-classes/$1e89f37f3ef61beb10c8$.class differ



Mime
View raw message