http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/37774c92/ApacheCMDA-Backend/app/models/DatasetLog.java
----------------------------------------------------------------------
diff --git a/ApacheCMDA-Backend/app/models/DatasetLog.java 
b/ApacheCMDA-Backend/app/models/DatasetLog.java
new file mode 100644
index 0000000..aa6d49c
--- /dev/null
+++ b/ApacheCMDA-Backend/app/models/DatasetLog.java
@@ -0,0 +1,124 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+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;
+import javax.persistence.OneToOne;
+
+@Entity
+public class DatasetLog {
+       @Id
+       @GeneratedValue(strategy = GenerationType.AUTO)
+       private long id;
+       @ManyToOne(optional = false)
+       @JoinColumn(name = "serviceExecutionLogId", referencedColumnName = "id")
+       private ServiceExecutionLog serviceExecutionLog;
+       @ManyToOne(optional = false)
+       @JoinColumn(name = "dataSetId", referencedColumnName = "id")
+       private Dataset dataset;
+       private String plotUrl;
+       private String dataUrl;
+       @ManyToOne(optional = false)
+       @JoinColumn(name = "originalDatasetId", referencedColumnName = "id")
+       private Dataset originalDataset;
+       @ManyToOne(optional = false)
+       @JoinColumn(name = "outputDatasetId", referencedColumnName = "id")
+       private Dataset outputDataset;
+       
+       public DatasetLog() {
+               
+       }
+       
+       public DatasetLog(ServiceExecutionLog serviceExecutionLog, Dataset 
dataset,
+                       String plotUrl, String dataUrl, Dataset originalDataset,
+                       Dataset outputDataset) {
+               super();
+               this.serviceExecutionLog = serviceExecutionLog;
+               this.dataset = dataset;
+               this.plotUrl = plotUrl;
+               this.dataUrl = dataUrl;
+               this.originalDataset = originalDataset;
+               this.outputDataset = outputDataset;
+       }
+
+       public ServiceExecutionLog getServiceExecutionLog() {
+               return serviceExecutionLog;
+       }
+
+       public void setServiceExecutionLog(ServiceExecutionLog 
serviceExecutionLog) {
+               this.serviceExecutionLog = serviceExecutionLog;
+       }
+
+       public Dataset getDataset() {
+               return dataset;
+       }
+
+       public void setDataSet(Dataset dataset) {
+               this.dataset = dataset;
+       }
+
+       public String getPlotUrl() {
+               return plotUrl;
+       }
+
+       public void setPlotUrl(String plotUrl) {
+               this.plotUrl = plotUrl;
+       }
+
+       public String getDataUrl() {
+               return dataUrl;
+       }
+
+       public void setDataUrl(String dataUrl) {
+               this.dataUrl = dataUrl;
+       }
+
+       public Dataset getOriginalDataset() {
+               return originalDataset;
+       }
+
+       public void setOriginalDataset(Dataset originalDataset) {
+               this.originalDataset = originalDataset;
+       }
+
+       public Dataset getOutputDataset() {
+               return outputDataset;
+       }
+
+       public void setOutputDataset(Dataset outputDataset) {
+               this.outputDataset = outputDataset;
+       }
+
+       public long getId() {
+               return id;
+       }
+
+       @Override
+       public String toString() {
+               return "DatasetLog [id=" + id + ", serviceExecutionLog="
+                               + serviceExecutionLog + ", dataSet=" + dataset 
+ ", plotUrl="
+                               + plotUrl + ", dataUrl=" + dataUrl + ", 
originalDataSet="
+                               + originalDataset + ", outputDataSet=" + 
outputDataset + "]";
+       }
+       
+       
+}

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/37774c92/ApacheCMDA-Backend/app/models/DatasetLogRepository.java
----------------------------------------------------------------------
diff --git a/ApacheCMDA-Backend/app/models/DatasetLogRepository.java 
b/ApacheCMDA-Backend/app/models/DatasetLogRepository.java
new file mode 100644
index 0000000..3d70292
--- /dev/null
+++ b/ApacheCMDA-Backend/app/models/DatasetLogRepository.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package models;
+
+import org.springframework.data.repository.CrudRepository;
+
+import javax.inject.Named;
+import javax.inject.Singleton;
+
+@Named
+@Singleton
+public interface DatasetLogRepository extends CrudRepository<DatasetLog, Long> 
{
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/37774c92/ApacheCMDA-Backend/app/models/DatasetRepository.java
----------------------------------------------------------------------
diff --git a/ApacheCMDA-Backend/app/models/DatasetRepository.java 
b/ApacheCMDA-Backend/app/models/DatasetRepository.java
new file mode 100644
index 0000000..7b9bdeb
--- /dev/null
+++ b/ApacheCMDA-Backend/app/models/DatasetRepository.java
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package models;
+
+import java.util.Date;
+import java.util.List;
+
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.CrudRepository;
+
+import javax.inject.Named;
+import javax.inject.Singleton;
+
+@Named
+@Singleton
+public interface DatasetRepository extends CrudRepository<Dataset, Long> {
+       List<Dataset> 
findByNameLikeAndAgencyIdLikeAndGridDimensionLikeAndPhysicalVariableLikeAndInstrument_Id(String
 name, String agencyId, String gridDimension, String physicalVariable,long 
instrumentId);
+       List<Dataset> 
findByNameLikeAndAgencyIdLikeAndGridDimensionLikeAndPhysicalVariableLike(String 
name, String agencyId, String gridDimension, String physicalVariable);
+       List<Dataset> findByvariableNameInWebInterface(String 
variableNameInWebInterface);
+       List<Dataset> 
findByNameLikeAndAgencyIdLikeAndGridDimensionLikeAndPhysicalVariableLikeAndInstrument_IdAndStartTimeLessThanEqualOrEndTimeGreaterThanEqual(String
 name, String agencyId, String gridDimension, String physicalVariable, long 
instrumentId, Date startTime, Date endTime);
+       List<Dataset> 
findByNameLikeAndAgencyIdLikeAndGridDimensionLikeAndPhysicalVariableLikeAndStartTimeLessThanEqualOrEndTimeGreaterThanEqual(String
 name, String agencyId, String gridDimension, String physicalVariable, Date 
startTime, Date endTime);
+       
+       //New Dataset Search 
+       @Query(value = "select d.* from Dataset d where ((d.name like ?1) and 
(d.agencyId like ?2) and (d.gridDimension like ?3) and (d.physicalVariable like 
?4) and (d.instrumentId = ?5)) and ((d.startTime between ?6 and ?7) or 
(d.endTime between ?6 and ?7) or (d.startTime <= ?6 and d.endTime >= ?7))", 
nativeQuery = true)
+       List<Dataset> findDatasetWithInstrument_Id(String name, String 
agencyId, String gridDimension, String physicalVariable, long instrumentId, 
Date startTime, Date endTime);
+       
+       @Query(value = "select d.* from Dataset d where ((d.name like ?1) and 
(d.agencyId like ?2) and (d.gridDimension like ?3) and (d.physicalVariable like 
?4)) and ((d.startTime between ?5 and ?6) or (d.endTime between ?5 and ?6) or 
(d.startTime <= ?5 and d.endTime >= ?6))", nativeQuery = true)
+       List<Dataset> findDataset(String name, String agencyId, String 
gridDimension, String physicalVariable, Date startTime, Date endTime);
+       
+       @Query(value = "select d.* from Dataset d where ((d.name like ?1) and 
(d.agencyId like ?2) and (d.gridDimension like ?3) and (d.physicalVariable like 
?4) and (d.source like ?5)) and ((d.startTime between ?6 and ?7) or (d.endTime 
between ?6 and ?7) or (d.startTime <= ?6 and d.endTime >= ?7))", nativeQuery = 
true)
+       List<Dataset> findDatasetWithInstrument(String name, String agencyId, 
String gridDimension, String physicalVariable, String source, Date startTime, 
Date endTime);
+       
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/37774c92/ApacheCMDA-Backend/app/models/Instrument.java
----------------------------------------------------------------------
diff --git a/ApacheCMDA-Backend/app/models/Instrument.java 
b/ApacheCMDA-Backend/app/models/Instrument.java
new file mode 100644
index 0000000..bb083a1
--- /dev/null
+++ b/ApacheCMDA-Backend/app/models/Instrument.java
@@ -0,0 +1,85 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package models;
+
+import java.util.Date;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+
+@Entity
+public class Instrument {
+       @Id
+       @GeneratedValue(strategy = GenerationType.AUTO)
+       private long id;
+       private String name;
+       private String description;
+       private Date launchDate;
+       
+       public Instrument() {
+       }
+       
+       public Instrument (String name, String description, Date launchDate) {
+               super();
+               this.name = name;
+               this.description = description;
+               this.launchDate = launchDate;
+       }
+
+       public long getId() {
+               return id;
+       }
+
+       public String getName() {
+               return name;
+       }
+
+       public String getDescription() {
+               return description;
+       }
+
+       public Date getLaunchDate() {
+               return launchDate;
+       }
+
+       public void setId(long id) {
+               this.id = id;
+       }
+
+       public void setName(String name) {
+               this.name = name;
+       }
+
+       public void setDescription(String description) {
+               this.description = description;
+       }
+
+       public void setLaunchDate(Date launchDate) {
+               this.launchDate = launchDate;
+       }
+
+       @Override
+       public String toString() {
+               return "Instrument [id=" + id + ", name=" + name + ", 
description="
+                               + description + ", launchDate=" + launchDate + 
"]";
+       }
+
+       
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/37774c92/ApacheCMDA-Backend/app/models/InstrumentRepository.java
----------------------------------------------------------------------
diff --git a/ApacheCMDA-Backend/app/models/InstrumentRepository.java 
b/ApacheCMDA-Backend/app/models/InstrumentRepository.java
new file mode 100644
index 0000000..e2b61ae
--- /dev/null
+++ b/ApacheCMDA-Backend/app/models/InstrumentRepository.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package models;
+
+import org.springframework.data.repository.CrudRepository;
+
+import javax.inject.Named;
+import javax.inject.Singleton;
+
+@Named
+@Singleton
+public interface InstrumentRepository extends CrudRepository<Instrument, Long> 
{
+
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/37774c92/ApacheCMDA-Backend/app/models/JournalPublication.java
----------------------------------------------------------------------
diff --git a/ApacheCMDA-Backend/app/models/JournalPublication.java 
b/ApacheCMDA-Backend/app/models/JournalPublication.java
new file mode 100644
index 0000000..4a8590c
--- /dev/null
+++ b/ApacheCMDA-Backend/app/models/JournalPublication.java
@@ -0,0 +1,73 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package models;
+
+import javax.persistence.Entity;
+import javax.persistence.PrimaryKeyJoinColumn;
+
+@Entity
+@PrimaryKeyJoinColumn(name = "journalPublicationId", referencedColumnName = 
"id")//referencedColumnName
+public class JournalPublication extends Publication {
+       private String journalName;
+       private int volume;
+       private int qcolumn;//naming problem
+       private String page;
+       
+       public JournalPublication() {
+       }
+       public JournalPublication(String paperTitle, User author,
+                       String publicationChannel, int year, String 
journalName, int volume,
+                       int column, String page) {
+               super(paperTitle, author, publicationChannel, year);
+               this.journalName = journalName;
+               this.volume = volume;
+               this.qcolumn = column;
+               this.page = page;
+       }
+       
+       public String getJournalName() {
+               return journalName;
+       }
+       public void setJournalName(String journalName) {
+               this.journalName = journalName;
+       }
+       public int getVolume() {
+               return volume;
+       }
+       public void setVolume(int volume) {
+               this.volume = volume;
+       }
+       public int getColumn() {
+               return qcolumn;
+       }
+       public void setColumn(int column) {
+               this.qcolumn = column;
+       }
+       public String getPage() {
+               return page;
+       }
+       public void setPage(String page) {
+               this.page = page;
+       }
+       
+       @Override
+       public String toString() {
+               return "JournalPublication [journalName=" + journalName + ", 
volume="
+                               + volume + ", column=" + qcolumn + ", page=" + 
page
+                               + ", toString()=" + super.toString() + "]";
+       }
+}

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/37774c92/ApacheCMDA-Backend/app/models/JournalPublicationRepository.java
----------------------------------------------------------------------
diff --git a/ApacheCMDA-Backend/app/models/JournalPublicationRepository.java 
b/ApacheCMDA-Backend/app/models/JournalPublicationRepository.java
new file mode 100644
index 0000000..01ffac1
--- /dev/null
+++ b/ApacheCMDA-Backend/app/models/JournalPublicationRepository.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package models;
+
+import org.springframework.data.repository.CrudRepository;
+
+import javax.inject.Named;
+import javax.inject.Singleton;
+
+@Named
+@Singleton
+public interface JournalPublicationRepository extends 
CrudRepository<JournalPublication, Long> {
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/37774c92/ApacheCMDA-Backend/app/models/Parameter.java
----------------------------------------------------------------------
diff --git a/ApacheCMDA-Backend/app/models/Parameter.java 
b/ApacheCMDA-Backend/app/models/Parameter.java
new file mode 100644
index 0000000..d9ada61
--- /dev/null
+++ b/ApacheCMDA-Backend/app/models/Parameter.java
@@ -0,0 +1,117 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+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/37774c92/ApacheCMDA-Backend/app/models/ParameterRepository.java
----------------------------------------------------------------------
diff --git a/ApacheCMDA-Backend/app/models/ParameterRepository.java 
b/ApacheCMDA-Backend/app/models/ParameterRepository.java
new file mode 100644
index 0000000..9b1865a
--- /dev/null
+++ b/ApacheCMDA-Backend/app/models/ParameterRepository.java
@@ -0,0 +1,31 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+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/37774c92/ApacheCMDA-Backend/app/models/Publication.java
----------------------------------------------------------------------
diff --git a/ApacheCMDA-Backend/app/models/Publication.java 
b/ApacheCMDA-Backend/app/models/Publication.java
new file mode 100644
index 0000000..5373fb3
--- /dev/null
+++ b/ApacheCMDA-Backend/app/models/Publication.java
@@ -0,0 +1,99 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+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/37774c92/ApacheCMDA-Backend/app/models/ServiceConfiguration.java
----------------------------------------------------------------------
diff --git a/ApacheCMDA-Backend/app/models/ServiceConfiguration.java 
b/ApacheCMDA-Backend/app/models/ServiceConfiguration.java
new file mode 100644
index 0000000..4f9762f
--- /dev/null
+++ b/ApacheCMDA-Backend/app/models/ServiceConfiguration.java
@@ -0,0 +1,129 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+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 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/37774c92/ApacheCMDA-Backend/app/models/ServiceConfigurationItem.java
----------------------------------------------------------------------
diff --git a/ApacheCMDA-Backend/app/models/ServiceConfigurationItem.java 
b/ApacheCMDA-Backend/app/models/ServiceConfigurationItem.java
new file mode 100644
index 0000000..2d54f50
--- /dev/null
+++ b/ApacheCMDA-Backend/app/models/ServiceConfigurationItem.java
@@ -0,0 +1,83 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+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 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/37774c92/ApacheCMDA-Backend/app/models/ServiceConfigurationItemRepository.java
----------------------------------------------------------------------
diff --git 
a/ApacheCMDA-Backend/app/models/ServiceConfigurationItemRepository.java 
b/ApacheCMDA-Backend/app/models/ServiceConfigurationItemRepository.java
new file mode 100644
index 0000000..79c230a
--- /dev/null
+++ b/ApacheCMDA-Backend/app/models/ServiceConfigurationItemRepository.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+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/37774c92/ApacheCMDA-Backend/app/models/ServiceConfigurationRepository.java
----------------------------------------------------------------------
diff --git a/ApacheCMDA-Backend/app/models/ServiceConfigurationRepository.java 
b/ApacheCMDA-Backend/app/models/ServiceConfigurationRepository.java
new file mode 100644
index 0000000..7c0ed94
--- /dev/null
+++ b/ApacheCMDA-Backend/app/models/ServiceConfigurationRepository.java
@@ -0,0 +1,30 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+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/37774c92/ApacheCMDA-Backend/app/models/ServiceEntry.java
----------------------------------------------------------------------
diff --git a/ApacheCMDA-Backend/app/models/ServiceEntry.java 
b/ApacheCMDA-Backend/app/models/ServiceEntry.java
new file mode 100644
index 0000000..1bf19a8
--- /dev/null
+++ b/ApacheCMDA-Backend/app/models/ServiceEntry.java
@@ -0,0 +1,132 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+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/37774c92/ApacheCMDA-Backend/app/models/ServiceEntryRepository.java
----------------------------------------------------------------------
diff --git a/ApacheCMDA-Backend/app/models/ServiceEntryRepository.java 
b/ApacheCMDA-Backend/app/models/ServiceEntryRepository.java
new file mode 100644
index 0000000..4438b34
--- /dev/null
+++ b/ApacheCMDA-Backend/app/models/ServiceEntryRepository.java
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package models;
+
+
+import org.springframework.data.repository.CrudRepository;
+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/37774c92/ApacheCMDA-Backend/app/models/ServiceExecutionLog.java
----------------------------------------------------------------------
diff --git a/ApacheCMDA-Backend/app/models/ServiceExecutionLog.java 
b/ApacheCMDA-Backend/app/models/ServiceExecutionLog.java
new file mode 100644
index 0000000..b8c6f07
--- /dev/null
+++ b/ApacheCMDA-Backend/app/models/ServiceExecutionLog.java
@@ -0,0 +1,204 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+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/37774c92/ApacheCMDA-Backend/app/models/ServiceExecutionLogRepository.java
----------------------------------------------------------------------
diff --git a/ApacheCMDA-Backend/app/models/ServiceExecutionLogRepository.java 
b/ApacheCMDA-Backend/app/models/ServiceExecutionLogRepository.java
new file mode 100644
index 0000000..158d530
--- /dev/null
+++ b/ApacheCMDA-Backend/app/models/ServiceExecutionLogRepository.java
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package models;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Set;
+
+import org.springframework.data.repository.CrudRepository;
+
+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/37774c92/ApacheCMDA-Backend/app/models/User.java
----------------------------------------------------------------------
diff --git a/ApacheCMDA-Backend/app/models/User.java 
b/ApacheCMDA-Backend/app/models/User.java
new file mode 100644
index 0000000..9079f34
--- /dev/null
+++ b/ApacheCMDA-Backend/app/models/User.java
@@ -0,0 +1,193 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+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/37774c92/ApacheCMDA-Backend/app/models/UserRepository.java
----------------------------------------------------------------------
diff --git a/ApacheCMDA-Backend/app/models/UserRepository.java 
b/ApacheCMDA-Backend/app/models/UserRepository.java
new file mode 100644
index 0000000..2547dff
--- /dev/null
+++ b/ApacheCMDA-Backend/app/models/UserRepository.java
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+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/37774c92/ApacheCMDA-Backend/app/models/Workflow.java
----------------------------------------------------------------------
diff --git a/ApacheCMDA-Backend/app/models/Workflow.java 
b/ApacheCMDA-Backend/app/models/Workflow.java
new file mode 100644
index 0000000..d4ca7be
--- /dev/null
+++ b/ApacheCMDA-Backend/app/models/Workflow.java
@@ -0,0 +1,136 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+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/37774c92/ApacheCMDA-Backend/app/models/WorkflowRepository.java
----------------------------------------------------------------------
diff --git a/ApacheCMDA-Backend/app/models/WorkflowRepository.java 
b/ApacheCMDA-Backend/app/models/WorkflowRepository.java
new file mode 100644
index 0000000..79e1e11
--- /dev/null
+++ b/ApacheCMDA-Backend/app/models/WorkflowRepository.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+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/37774c92/ApacheCMDA-Backend/app/util/Common.java
----------------------------------------------------------------------
diff --git a/ApacheCMDA-Backend/app/util/Common.java 
b/ApacheCMDA-Backend/app/util/Common.java
new file mode 100644
index 0000000..212f765
--- /dev/null
+++ b/ApacheCMDA-Backend/app/util/Common.java
@@ -0,0 +1,25 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+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/37774c92/ApacheCMDA-Backend/app/util/Constants.java
----------------------------------------------------------------------
diff --git a/ApacheCMDA-Backend/app/util/Constants.java 
b/ApacheCMDA-Backend/app/util/Constants.java
new file mode 100644
index 0000000..d282644
--- /dev/null
+++ b/ApacheCMDA-Backend/app/util/Constants.java
@@ -0,0 +1,25 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+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/37774c92/ApacheCMDA-Backend/app/views/index.scala.html
----------------------------------------------------------------------
diff --git a/ApacheCMDA-Backend/app/views/index.scala.html 
b/ApacheCMDA-Backend/app/views/index.scala.html
new file mode 100644
index 0000000..9fb293c
--- /dev/null
+++ b/ApacheCMDA-Backend/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/37774c92/ApacheCMDA-Backend/app/views/main.scala.html
----------------------------------------------------------------------
diff --git a/ApacheCMDA-Backend/app/views/main.scala.html 
b/ApacheCMDA-Backend/app/views/main.scala.html
new file mode 100644
index 0000000..5025aa5
--- /dev/null
+++ b/ApacheCMDA-Backend/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/37774c92/ApacheCMDA-Backend/app/workflow/Connection.java
----------------------------------------------------------------------
diff --git a/ApacheCMDA-Backend/app/workflow/Connection.java 
b/ApacheCMDA-Backend/app/workflow/Connection.java
new file mode 100644
index 0000000..ae4e7b2
--- /dev/null
+++ b/ApacheCMDA-Backend/app/workflow/Connection.java
@@ -0,0 +1,66 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+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/37774c92/ApacheCMDA-Backend/app/workflow/FieldIn.java
----------------------------------------------------------------------
diff --git a/ApacheCMDA-Backend/app/workflow/FieldIn.java 
b/ApacheCMDA-Backend/app/workflow/FieldIn.java
new file mode 100644
index 0000000..2b5bdb2
--- /dev/null
+++ b/ApacheCMDA-Backend/app/workflow/FieldIn.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+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/37774c92/ApacheCMDA-Backend/app/workflow/FieldOut.java
----------------------------------------------------------------------
diff --git a/ApacheCMDA-Backend/app/workflow/FieldOut.java 
b/ApacheCMDA-Backend/app/workflow/FieldOut.java
new file mode 100644
index 0000000..926ed4d
--- /dev/null
+++ b/ApacheCMDA-Backend/app/workflow/FieldOut.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+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/37774c92/ApacheCMDA-Backend/app/workflow/Fields.java
----------------------------------------------------------------------
diff --git a/ApacheCMDA-Backend/app/workflow/Fields.java 
b/ApacheCMDA-Backend/app/workflow/Fields.java
new file mode 100644
index 0000000..a072094
--- /dev/null
+++ b/ApacheCMDA-Backend/app/workflow/Fields.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+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/37774c92/ApacheCMDA-Backend/app/workflow/Group.java
----------------------------------------------------------------------
diff --git a/ApacheCMDA-Backend/app/workflow/Group.java 
b/ApacheCMDA-Backend/app/workflow/Group.java
new file mode 100644
index 0000000..a63fb87
--- /dev/null
+++ b/ApacheCMDA-Backend/app/workflow/Group.java
@@ -0,0 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package workflow;
+
+public class Group {
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/37774c92/ApacheCMDA-Backend/app/workflow/Node.java
----------------------------------------------------------------------
diff --git a/ApacheCMDA-Backend/app/workflow/Node.java 
b/ApacheCMDA-Backend/app/workflow/Node.java
new file mode 100644
index 0000000..7cc4f35
--- /dev/null
+++ b/ApacheCMDA-Backend/app/workflow/Node.java
@@ -0,0 +1,84 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+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;
+       }
+       
+}


Reply via email to