Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package cwms.cda.data.dao.timeseriesprofile;

import java.util.List;

import cwms.cda.data.dao.JooqDao;
import cwms.cda.data.dto.timeseriesprofile.TimeSeriesProfile;
import org.jooq.DSLContext;
import org.jooq.impl.DSL;

import usace.cwms.db.jooq.codegen.packages.CWMS_TS_PROFILE_PACKAGE;

public class TimeSeriesProfileDao extends JooqDao<TimeSeriesProfile>
{
public TimeSeriesProfileDao(DSLContext dsl)
{
super(dsl);
}
public void storeTimeSeriesProfile(TimeSeriesProfile timeSeriesProfile, boolean failIfExists) {

connection(dsl, conn -> {
List<String> parameterList = timeSeriesProfile.getParameterList();
String parameterString = parameterList.get(0);
for(int i=1; i<parameterList.size(); i++)
{
parameterString += "," + parameterList.get(i);
}
CWMS_TS_PROFILE_PACKAGE.call_STORE_TS_PROFILE(DSL.using(conn).configuration(),timeSeriesProfile.getLocationId(),
timeSeriesProfile.getKeyParameter(),
parameterString, null, null, "F","T",timeSeriesProfile.getOfficeId());
});
}
public void retrieveTimeSeriesProfile()
{
// TODO
}
public void deleteTimeSeriesProfile()
{
// TODO
}
public void copyTimeSeriesProfile()
{
// TODO
}
public void retrieveTimeSeriesProfiles()
{
// TODO
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package cwms.cda.data.dao.timeseriesprofile;

public class TimeSeriesProfileInstanceDao
{
void storeTimeSeriesProfileInstance()
{
// TODO
}
void retrieveTimeSeriesProfileInstance()
{
// TODO
}
void retrieveTimeSeriesProfileInstances()
{
// TODO
}
void deleteTimeSeriesProfileInstance()
{
// TODO
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
package cwms.cda.data.dto.timeseriesprofile;

import java.util.Objects;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder;
import cwms.cda.api.errors.FieldException;
import cwms.cda.data.dto.CwmsDTOBase;
import cwms.cda.formatters.Formats;
import cwms.cda.formatters.annotations.FormattableWith;
import cwms.cda.formatters.json.JsonV2;

@FormattableWith(contentType = Formats.JSONV2, formatter = JsonV2.class)
@JsonDeserialize(builder = ParameterInfo.Builder.class)
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonNaming(PropertyNamingStrategies.KebabCaseStrategy.class)
public class ParameterInfo implements CwmsDTOBase
{
private final String parameter;
private final String unit;
private final int index;
protected ParameterInfo(ParameterInfo.Builder builder)
{
parameter= builder.parameter;
unit = builder.unit;
index = builder.index;
}
public String getParameter()
{
return parameter;
}
public String getUnit()
{
return unit;
}

public int getIndex(){ return index; }


@Override
public void validate() throws FieldException
{

}
@Override
public int hashCode() {
int result = Objects.hashCode(getParameter());
result = 31 * result + Objects.hashCode(getUnit());
result = 31 * result + Objects.hashCode(getIndex());
return result;
}@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}

ParameterInfo that = (ParameterInfo) o;
return Objects.equals(getParameter(), that.getParameter())
&& Objects.equals(getUnit(), that.getUnit())
&& Objects.equals(getIndex(), that.getIndex());
}
@JsonPOJOBuilder
@JsonNaming(PropertyNamingStrategies.KebabCaseStrategy.class)
public static final class Builder
{
private String parameter;
private String unit;
private int index;


public ParameterInfo.Builder withParameter(String parameter) {
this.parameter = parameter;
return this;
}
public ParameterInfo.Builder withUnit(String unit) {
this.unit = unit;
return this;
}
public ParameterInfo.Builder withIndex(int index)
{
this.index = index;
return this;
}

public ParameterInfo build() {
return new ParameterInfo(this);
}

}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,138 @@
package cwms.cda.data.dto.timeseriesprofile;

import java.util.ArrayList;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder;
import cwms.cda.api.errors.FieldException;
import cwms.cda.data.dto.CwmsDTO;
import cwms.cda.formatters.Formats;
import cwms.cda.formatters.annotations.FormattableWith;
import cwms.cda.formatters.json.JsonV2;
import io.swagger.v3.oas.annotations.media.Schema;

@FormattableWith(contentType = Formats.JSONV2, formatter = JsonV2.class)
@JsonDeserialize(builder = TimeSeriesProfile.Builder.class)
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonNaming(PropertyNamingStrategies.KebabCaseStrategy.class)
public final class TimeSeriesProfile extends CwmsDTO
{
@Schema(description = "Location ID")
// TODO replace with CWMSID
private final String locationId;
@Schema(description = "Description")
private final String description;
@Schema(description = "Parameter List")
private final List<String> parameterList;
@Schema(description = "Key Parameter")
private final String keyParameter;
@Schema(description = "Reference TS")
// TODO replace with CWMSID
private final String refTsId;

private TimeSeriesProfile(Builder builder)
{
super(builder.officeId);
this.locationId = builder.locationId;
this.description = builder.description;
this.keyParameter = builder.keyParameter;
this.parameterList = builder.parameterList;
this.refTsId = builder.refTsId;
}

public String getLocationId()
{
return locationId;
}

public String getDescription()
{
return description;
}

public String getKeyParameter()
{
return keyParameter;
}

public List<String> getParameterList()
{
return parameterList!=null ? new ArrayList<>(parameterList) : null;
}

public String getRefTsId()
{
return refTsId;
}

@Override
public void validate() throws FieldException
{
if (this.parameterList == null) {
throw new FieldException("Parameter list field can't be null");
}
if (this.keyParameter == null) {
throw new FieldException("Key Parameter field can't be null");
}
if (this.officeId == null) {
throw new FieldException("Office Id field can't be null");
}
if (this.locationId == null) {
throw new FieldException("Location Id field can't be null");
}
if (!parameterList.contains(keyParameter))
{
throw new FieldException("Key Parameter must be part of Parameter list");
}
}

@JsonPOJOBuilder
@JsonNaming(PropertyNamingStrategies.KebabCaseStrategy.class)
public static final class Builder {
private String officeId;
private List<String> parameterList;
private String keyParameter;
private String description;
private String locationId;
private String refTsId;

public TimeSeriesProfile.Builder withLocationId(String locationId) {
this.locationId = locationId;
return this;
}

public TimeSeriesProfile.Builder withDescription(String description) {
this.description = description;
return this;
}
public TimeSeriesProfile.Builder withKeyParameter(String keyParameter) {
this.keyParameter = keyParameter;
return this;
}

public TimeSeriesProfile.Builder withParameterList(List<String> parameterList)
{
this.parameterList = parameterList!=null ? new ArrayList<>(parameterList) : null;
return this;
}

public TimeSeriesProfile.Builder withOfficeId(String officeId) {
this.officeId = officeId;
return this;
}

public TimeSeriesProfile.Builder withRefTsId(String refTsId) {
this.refTsId = refTsId;
return this;
}


public TimeSeriesProfile build() {
return new TimeSeriesProfile(this);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package cwms.cda.data.dto.timeseriesprofile;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import cwms.cda.api.errors.FieldException;
import cwms.cda.data.dto.CwmsDTO;
import cwms.cda.formatters.Formats;
import cwms.cda.formatters.annotations.FormattableWith;
import cwms.cda.formatters.json.JsonV2;

@FormattableWith(contentType = Formats.JSONV2, formatter = JsonV2.class)
@JsonDeserialize(builder = TimeSeriesProfile.Builder.class)
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonNaming(PropertyNamingStrategies.KebabCaseStrategy.class)
public final class TimeSeriesProfileInstance extends CwmsDTO
{
protected TimeSeriesProfileInstance(String office)
{
super(office);
}

@Override
public void validate() throws FieldException
{

}
}
Loading