blob: 929dce753a13ec8178ccb9d1417d30e64b3e5eeb [file] [log] [blame]
/*
* 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.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import util.APICall;
import util.Constants;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
public class DataSet {
private String id;
private String dataSetName;
private String agencyId;
private String instrument;
private String physicalVariable;
private String CMIP5VarName;
private String units;
private String gridDimension;
private String source;
private String status;
private String ResponsiblePerson;
private String comments;
private String dataSourceName;
private String variableName;
private String dataSourceInput;
private String variableNameInput;
private String startTime;
private String endTime;
public String getStartTime() {
return startTime;
}
public String getEndTime() {
return endTime;
}
public void setEndTime(String dataSetEndTime) {
this.endTime = dataSetEndTime;
}
public void setStartTime(String dataSetStartTime) {
this.startTime = dataSetStartTime;
}
public String getDataSetName() {
return dataSetName;
}
public void setDataSetName(String dataSetName) {
this.dataSetName = dataSetName;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getAgencyId() {
return agencyId;
}
public void setAgencyId(String agencyId) {
this.agencyId = agencyId;
}
public String getInstrument() {
return instrument;
}
public void setInstrument(String instrument) {
this.instrument = instrument;
}
public String getPhysicalVariable() {
return physicalVariable;
}
public void setPhysicalVariable(String physicalVariable) {
this.physicalVariable = physicalVariable;
}
public String getCMIP5VarName() {
return CMIP5VarName;
}
public void setCMIP5VarName(String cMIP5VarName) {
CMIP5VarName = cMIP5VarName;
}
public String getUnits() {
return units;
}
public void setUnits(String units) {
this.units = units;
}
public String getGridDimension() {
return gridDimension;
}
public void setGridDimension(String gridDimension) {
this.gridDimension = gridDimension;
}
public String getSource() {
return source;
}
public void setSource(String source) {
this.source = source;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getResponsiblePerson() {
return ResponsiblePerson;
}
public void setResponsiblePerson(String responsiblePerson) {
ResponsiblePerson = responsiblePerson;
}
public String getComments() {
return comments;
}
public void setComments(String comments) {
this.comments = comments;
}
public String getDataSourceName() {
return dataSourceName;
}
public void setDataSourceName(String dataSourceName) {
this.dataSourceName = dataSourceName;
}
public String getVariableName() {
return variableName;
}
public void setVariableName(String variableName) {
this.variableName = variableName;
}
public String getDataSourceInput() {
return dataSourceInput;
}
public void setDataSourceInput(String dataSourceInput) {
this.dataSourceInput = dataSourceInput;
}
public String getVariableNameInput() {
return variableNameInput;
}
public void setVariableNameInput(String variableNameInput) {
this.variableNameInput = variableNameInput;
}
private static final String GET_ALL_DATASET = Constants.NEW_BACKEND + "dataset/getAllDatasets/json";
private static final String DATASET_QUERY = Constants.NEW_BACKEND + "dataset/queryDataset";
public static List<DataSet> all() {
List<DataSet> dataSets = new ArrayList<DataSet>();
JsonNode dataSetNode = APICall.callAPI(GET_ALL_DATASET);
if (dataSetNode == null || dataSetNode.has("error")
|| !dataSetNode.isArray()) {
return dataSets;
}
for (int i = 0; i < dataSetNode.size(); i++) {
JsonNode json = dataSetNode.path(i);
DataSet dataset = new DataSet();
dataset.setId(json.get("id").asText());
dataset.setDataSetName(json.get("name").asText());
dataset.setAgencyId(json.get("agencyId").asText());
dataset.setInstrument(json.get("instrument").get("name").asText());
dataset.setPhysicalVariable(json.get("physicalVariable").asText());
dataset.setCMIP5VarName(json.get("CMIP5VarName").asText());
dataset.setUnits(json.get("units").asText());
dataset.setGridDimension(json.get("gridDimension").asText());
dataset.setSource(json.get("source").asText());
dataset.setStatus(json.get("status").asText());
dataset.setResponsiblePerson(json.get("responsiblePerson").asText());
dataset.setDataSourceName(json.get("dataSourceNameinWebInterface").asText());
dataset.setVariableName(json.get("variableNameInWebInterface").asText());
dataset.setDataSourceInput(json.get("dataSourceInputParameterToCallScienceApplicationCode").asText());
dataset.setVariableNameInput(json.get("variableNameInputParameterToCallScienceApplicationCode").asText());
String startTime = json.findPath("startTime").asText();
String endTime = json.findPath("endTime").asText();
Date tmpTime = null;
try {
tmpTime = (new SimpleDateFormat("MMM dd, yyyy hh:mm:ss a")).parse(startTime);
if (tmpTime != null) {
dataset.setStartTime(new SimpleDateFormat("YYYYMM").format(tmpTime));
}
} catch (ParseException e){
}
try {
tmpTime = (new SimpleDateFormat("MMM dd, yyyy hh:mm:ss a")).parse(endTime);
if (tmpTime != null) {
dataset.setEndTime(new SimpleDateFormat("YYYYMM").format(tmpTime));
}
} catch (ParseException e){
}
dataSets.add(dataset);
}
return dataSets;
}
public static List<DataSet> queryDataSet(String dataSetName, String agency, String instrument, String physicalVariable, String gridDimension, Date dataSetStartTime, Date dataSetEndTime) {
List<DataSet> dataset = new ArrayList<DataSet>();
ObjectMapper mapper = new ObjectMapper();
ObjectNode queryJson = mapper.createObjectNode();
queryJson.put("name", dataSetName);
queryJson.put("agencyId", agency);
queryJson.put("instrument", instrument);
queryJson.put("physicalVariable", physicalVariable);
queryJson.put("gridDimension", gridDimension);
if (dataSetEndTime != null) {
queryJson.put("dataSetEndTime", dataSetEndTime.getTime());
}
if (dataSetStartTime != null) {
queryJson.put("dataSetStartTime", dataSetStartTime.getTime());
}
JsonNode dataSetNode = APICall.postAPI(DATASET_QUERY, queryJson);
if (dataSetNode == null || dataSetNode.has("error")
|| !dataSetNode.isArray()) {
return dataset;
}
for (int i = 0; i < dataSetNode.size(); i++) {
JsonNode json = dataSetNode.path(i);
DataSet newDataSet = deserializeJsonToDataSet(json);
dataset.add(newDataSet);
}
return dataset;
}
private static DataSet deserializeJsonToDataSet(JsonNode json) {
DataSet newDataSet = new DataSet();
newDataSet.setId(json.get("id").asText());
newDataSet.setDataSetName(json.get("name").asText());
newDataSet.setAgencyId(json.get("agencyId").asText());
newDataSet.setInstrument(json.get("instrument").get("name").asText());
newDataSet.setPhysicalVariable(json.get("physicalVariable").asText());
newDataSet.setCMIP5VarName(json.get("CMIP5VarName").asText());
newDataSet.setUnits(json.get("units").asText());
newDataSet.setGridDimension(json.get("gridDimension").asText());
newDataSet.setSource(json.get("source").asText());
newDataSet.setStatus(json.get("status").asText());
newDataSet.setResponsiblePerson(json.get("responsiblePerson").asText());
newDataSet.setDataSourceName(json.get("dataSourceNameinWebInterface").asText());
newDataSet.setVariableName(json.get("variableNameInWebInterface").asText());
newDataSet.setDataSourceInput(json.get("dataSourceInputParameterToCallScienceApplicationCode").asText());
newDataSet.setVariableNameInput(json.get("variableNameInputParameterToCallScienceApplicationCode").asText());
String startTime = json.findPath("startTime").asText();
String endTime = json.findPath("endTime").asText();
Date tmpTime = null;
try {
tmpTime = (new SimpleDateFormat("MMM dd, yyyy hh:mm:ss a")).parse(startTime);
if (tmpTime != null) {
newDataSet.setStartTime(new SimpleDateFormat("YYYYMM").format(tmpTime));
}
} catch (ParseException e){
}
try {
tmpTime = (new SimpleDateFormat("MMM dd, yyyy hh:mm:ss a")).parse(endTime);
if (tmpTime != null) {
newDataSet.setEndTime(new SimpleDateFormat("YYYYMM").format(tmpTime));
}
} catch (ParseException e){
}
return newDataSet;
}
}