Skip to content
Merged
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
Expand Up @@ -59,13 +59,15 @@
import cwms.cda.api.errors.CdaError;
import cwms.cda.api.errors.DeleteConflictException;
import cwms.cda.api.errors.NotFoundException;
import cwms.cda.data.dao.JooqDao;
import cwms.cda.data.dao.LocationsDao;
import cwms.cda.data.dao.LocationsDaoImpl;
import cwms.cda.data.dto.Location;
import cwms.cda.data.dto.StatusResponse;
import cwms.cda.formatters.ContentType;
import cwms.cda.formatters.Formats;
import cwms.cda.formatters.UnsupportedFormatException;
import cwms.cda.helpers.ZoneIdHelper;
import io.javalin.apibuilder.CrudHandler;
import io.javalin.core.util.Header;
import io.javalin.http.Context;
Expand All @@ -77,7 +79,6 @@
import io.javalin.plugin.openapi.annotations.OpenApiResponse;
import java.io.IOException;
import java.sql.SQLException;
import java.time.ZoneId;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
Expand Down Expand Up @@ -508,7 +509,7 @@ private Location getUpdatedLocation(Location existingLocation, Location updatedL
String updatedOfficeId = updatedLocation.getOfficeId() == null
? existingLocation.getOfficeId() : updatedLocation.getOfficeId();
return new Location.Builder(updatedName, updatedLocationKind,
ZoneId.of(updatedTimeZoneId), updatedLatitude, updatedLongitude,
ZoneIdHelper.parseZoneIdWithAliases(updatedTimeZoneId), updatedLatitude, updatedLongitude,
updatedHorizontalDatum, updatedOfficeId)
.withActive(updatedIsActive)
.withPublicName(updatedPublicName)
Expand Down
12 changes: 11 additions & 1 deletion cwms-data-api/src/main/java/cwms/cda/data/dao/JooqDao.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,11 @@

package cwms.cda.data.dao;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Timestamp;
import java.time.Instant;

import static org.jooq.SQLDialect.ORACLE;

import com.google.common.flogger.FluentLogger;
Expand All @@ -48,8 +53,11 @@
import java.time.ZoneId;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Properties;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.servlet.http.HttpServletResponse;
Expand Down Expand Up @@ -112,6 +120,7 @@ public DeleteRule getRule() {
}
}


protected JooqDao(DSLContext dsl) {
super(dsl);
}
Expand Down Expand Up @@ -182,7 +191,7 @@ private static Connection setClientInfo(Context ctx, Connection connection) {
try {
final String apiVersion = ApiServlet.getApiVersion();
connection.setClientInfo("OCSID.ECID",
ApiServlet.APPLICATION_TITLE + " " +
ApiServlet.APPLICATION_TITLE + " " +
apiVersion.substring(0,Math.min(ORACLE_ECID_MAX_LENGTH,apiVersion.length())));
if (ctx.handlerType() == HandlerType.BEFORE) {
connection.setClientInfo("OCSID.MODULE", "BEFORE-HANDLER");
Expand Down Expand Up @@ -787,4 +796,5 @@ public static BigDecimal toBigDecimal(Number number) {
public static double buildDouble(BigDecimal bigDecimal) {
return (bigDecimal == null) ? 0.0 : bigDecimal.doubleValue();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
import cwms.cda.helpers.ZoneIdHelper;
import org.geojson.Feature;
import org.geojson.FeatureCollection;
import org.geojson.Point;
Expand Down Expand Up @@ -92,6 +93,8 @@ public class LocationsDaoImpl extends JooqDao<Location> implements LocationsDao
private static final Logger logger = Logger.getLogger(LocationsDaoImpl.class.getName());
private static final long DELETED_TS_MARKER = 0L;



public LocationsDaoImpl(DSLContext dsl) {
super(dsl);
}
Expand Down Expand Up @@ -148,7 +151,7 @@ private Location buildLocation(Record loc) {
String timeZoneName = loc.get(AV_LOC.TIME_ZONE_NAME); // may be null...
ZoneId zone = null;
if (timeZoneName != null) {
zone = ZoneId.of(timeZoneName);
zone = ZoneIdHelper.parseZoneIdWithAliases(timeZoneName);
}

Double latDouble = null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,12 @@
package cwms.cda.data.dao.location.kind;

import cwms.cda.api.enums.Nation;
import cwms.cda.data.dao.JooqDao;
import cwms.cda.data.dto.Location;
import cwms.cda.data.dto.CwmsId;
import cwms.cda.data.dto.LookupType;
import java.time.ZoneId;
import java.util.Optional;
import cwms.cda.helpers.ZoneIdHelper;
import usace.cwms.db.jooq.codegen.udt.records.LOCATION_OBJ_T;
import usace.cwms.db.jooq.codegen.udt.records.LOCATION_REF_T;
import usace.cwms.db.jooq.codegen.udt.records.LOOKUP_TYPE_OBJ_T;
Expand Down Expand Up @@ -128,7 +129,7 @@ public static Location getLocation(LOCATION_OBJ_T location) {
if (location != null) {
retval = new Location.Builder(getLocationId(location.getLOCATION_REF()),
location.getLOCATION_KIND_ID(),
ZoneId.of(location.getTIME_ZONE_NAME()),
ZoneIdHelper.parseZoneIdWithAliases(location.getTIME_ZONE_NAME()),
buildDouble(location.getLATITUDE()),
buildDouble(location.getLONGITUDE()),
location.getHORIZONTAL_DATUM(),
Expand Down
18 changes: 11 additions & 7 deletions cwms-data-api/src/main/java/cwms/cda/formatters/json/JsonV1.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import cwms.cda.data.dto.CwmsDTOBase;
import cwms.cda.data.dto.Office;
Expand All @@ -14,9 +15,11 @@
import cwms.cda.formatters.OfficeFormatV1;
import cwms.cda.formatters.OutputFormatter;
import cwms.cda.formatters.annotations.FormattableWith;
import cwms.cda.formatters.json.adapters.ZoneIdDeserializer;
import io.javalin.http.BadRequestResponse;
import java.io.IOException;
import java.io.InputStream;
import java.time.ZoneId;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
Expand All @@ -30,12 +33,8 @@ public class JsonV1 implements OutputFormatter {
private final ObjectMapper om;

public JsonV1() {
this.om = new ObjectMapper();
this.om.setPropertyNamingStrategy(PropertyNamingStrategies.KEBAB_CASE);
this.om.setSerializationInclusion(JsonInclude.Include.NON_NULL);
this.om.disable(SerializationFeature.WRITE_DATE_TIMESTAMPS_AS_NANOSECONDS);
this.om.disable(DeserializationFeature.READ_DATE_TIMESTAMPS_AS_NANOSECONDS);
this.om.registerModule(new JavaTimeModule());
this.om = buildObjectMapper();

}

@NotNull
Expand All @@ -47,6 +46,11 @@ public static ObjectMapper buildObjectMapper() {
retVal.disable(SerializationFeature.WRITE_DATE_TIMESTAMPS_AS_NANOSECONDS);
retVal.disable(DeserializationFeature.READ_DATE_TIMESTAMPS_AS_NANOSECONDS);
retVal.registerModule(new JavaTimeModule());

SimpleModule module = new SimpleModule();
module.addDeserializer(ZoneId.class, new ZoneIdDeserializer());
retVal.registerModule(module);

return retVal;
}

Expand Down Expand Up @@ -130,7 +134,7 @@ private Object buildFormatting(CwmsDTOBase dto) {
private boolean isFormattableWith(Class<?> klass) {
FormattableWith[] formats = klass.getAnnotationsByType(FormattableWith.class);
for (FormattableWith format : formats) {
/**
/*
* Compare against the actual formatter not the name
*/
if (format.formatter().equals(JsonV1.class)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,15 +30,18 @@
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import cwms.cda.data.dto.CwmsDTOBase;
import cwms.cda.formatters.Formats;
import cwms.cda.formatters.FormattingException;
import cwms.cda.formatters.OutputFormatter;
import cwms.cda.formatters.json.adapters.ZoneIdDeserializer;
import org.jetbrains.annotations.NotNull;

import java.io.IOException;
import java.io.InputStream;
import java.time.ZoneId;
import java.util.List;

/**
Expand All @@ -64,6 +67,11 @@ public static ObjectMapper buildObjectMapper() {
retVal.setPropertyNamingStrategy(PropertyNamingStrategies.KEBAB_CASE);
retVal.setSerializationInclusion(JsonInclude.Include.NON_NULL);
retVal.registerModule(new JavaTimeModule());

SimpleModule module = new SimpleModule();
module.addDeserializer(ZoneId.class, new ZoneIdDeserializer());
retVal.registerModule(module);

return retVal;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package cwms.cda.formatters.json.adapters;

import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import cwms.cda.helpers.ZoneIdHelper;
import java.io.IOException;
import java.time.ZoneId;

public class ZoneIdDeserializer extends JsonDeserializer<ZoneId> {

@Override
public ZoneId deserialize(JsonParser p, DeserializationContext deserializationContext) throws IOException {
return ZoneIdHelper.parseZoneIdWithAliases(p.getValueAsString());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import cwms.cda.data.dto.CwmsDTOBase;
Expand All @@ -12,11 +13,13 @@
import cwms.cda.formatters.Formats;
import cwms.cda.formatters.FormattingException;
import cwms.cda.formatters.OutputFormatter;
import cwms.cda.formatters.json.adapters.ZoneIdDeserializer;
import io.javalin.http.InternalServerErrorResponse;
import org.jetbrains.annotations.NotNull;

import java.io.IOException;
import java.io.InputStream;
import java.time.ZoneId;
import java.util.Collections;
import java.util.List;
import java.util.logging.Level;
Expand Down Expand Up @@ -100,6 +103,10 @@ public <T extends CwmsDTOBase> T parseContent(InputStream content, Class<T> type
retval.registerModule(new JavaTimeModule());
retval.addMixIn(VerticalDatumInfo.class, VerticalDatumInfoMixin.class);
retval.addMixIn(VerticalDatumInfo.Builder.class, VerticalDatumInfoMixin.Builder.class);

SimpleModule module = new SimpleModule();
module.addDeserializer(ZoneId.class, new ZoneIdDeserializer());
retval.registerModule(module);
return retval;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,21 @@
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import cwms.cda.data.dto.CwmsDTOBase;
import cwms.cda.data.dto.TimeSeries;
import cwms.cda.formatters.Formats;
import cwms.cda.formatters.FormattingException;
import cwms.cda.formatters.OutputFormatter;
import cwms.cda.formatters.json.adapters.ZoneIdDeserializer;
import io.javalin.http.InternalServerErrorResponse;
import org.jetbrains.annotations.NotNull;

import java.io.IOException;
import java.io.InputStream;
import java.time.ZoneId;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
Expand Down Expand Up @@ -90,6 +93,10 @@ public <T extends CwmsDTOBase> T parseContent(InputStream content, Class<T> type
retval.setSerializationInclusion(JsonInclude.Include.NON_NULL);
retval.registerModule(new JavaTimeModule());
retval.addMixIn(TimeSeries.class, TimeSeriesXmlMixin.class);

SimpleModule module = new SimpleModule();
module.addDeserializer(ZoneId.class, new ZoneIdDeserializer());
retval.registerModule(module);
return retval;
}
}
Loading
Loading