Skip to content
Draft
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
23 changes: 20 additions & 3 deletions cwms-data-api/src/main/java/cwms/cda/api/BasinController.java
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@

import com.codahale.metrics.MetricRegistry;
import com.codahale.metrics.Timer;
import com.google.common.flogger.FluentLogger;
import cwms.cda.api.enums.UnitSystem;
import cwms.cda.api.errors.CdaError;
import cwms.cda.api.errors.ExceptionTraceSupport;
Expand All @@ -58,10 +59,10 @@
import io.javalin.plugin.openapi.annotations.OpenApiContent;
import io.javalin.plugin.openapi.annotations.OpenApiParam;
import io.javalin.plugin.openapi.annotations.OpenApiResponse;
import java.io.IOException;
import java.sql.SQLException;
import java.util.Collections;
import java.util.List;
import com.google.common.flogger.FluentLogger;
import javax.servlet.http.HttpServletResponse;
import org.jetbrains.annotations.NotNull;
import org.jooq.DSLContext;
Expand Down Expand Up @@ -141,12 +142,20 @@ public void getAll(@NotNull Context ctx) {
List<cwms.cda.data.dto.basin.Basin> basins = basinDao.getAllBasins(office, units);
result = Formats.format(contentType, basins, cwms.cda.data.dto.basin.Basin.class);
}
ctx.result(result);
ctx.contentType(contentType.toString());
ctx.status(HttpServletResponse.SC_OK);

byte[] bytes = result.getBytes();
ctx.header(Header.CONTENT_LENGTH, String.valueOf(bytes.length));
ctx.res.getOutputStream().write(bytes);
} catch (SQLException ex) {
CdaError error = ExceptionTraceSupport.buildError(ctx, "Error retrieving all basins", ex);
LOGGER.atSevere().withCause(ex).log("Error retrieving all basins");
ctx.status(HttpServletResponse.SC_INTERNAL_SERVER_ERROR).json(error);
} catch (IOException ex) {
CdaError error = ExceptionTraceSupport.buildError(ctx, "Failed to process request to retrieve Basins", ex);
LOGGER.atSevere().withCause(ex).log("Failed to process request to retrieve Basins");
ctx.status(HttpServletResponse.SC_INTERNAL_SERVER_ERROR).json(error);
}
}

Expand Down Expand Up @@ -212,8 +221,16 @@ public void getOne(@NotNull Context ctx, @NotNull String name) {
cwms.cda.data.dto.basin.Basin basin = basinDao.getBasin(basinId, units);
result = Formats.format(contentType, basin);
}
ctx.result(result);
ctx.contentType(contentType.toString());
ctx.status(HttpServletResponse.SC_OK);

byte[] bytes = result.getBytes();
ctx.header(Header.CONTENT_LENGTH, String.valueOf(bytes.length));
ctx.res.getOutputStream().write(bytes);
} catch (IOException ex) {
CdaError error = ExceptionTraceSupport.buildError(ctx, "Failed to process request to retrieve Basin", ex);
LOGGER.atSevere().withCause(ex).log("Failed to process request to retrieve Basin");
ctx.status(HttpServletResponse.SC_INTERNAL_SERVER_ERROR).json(error);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@
import static cwms.cda.api.Controllers.END;
import static cwms.cda.api.Controllers.GET_ALL;
import static cwms.cda.api.Controllers.NAME;
import static cwms.cda.api.Controllers.NOT_SUPPORTED_YET;
import static cwms.cda.api.Controllers.OFFICE;
import static cwms.cda.api.Controllers.STATUS_200;
import static cwms.cda.api.Controllers.TIMEZONE;
Expand All @@ -44,14 +43,14 @@

import com.codahale.metrics.MetricRegistry;
import com.codahale.metrics.Timer;
import com.google.common.flogger.FluentLogger;
import cwms.cda.api.errors.CdaError;
import cwms.cda.api.errors.ExceptionTraceSupport;
import cwms.cda.data.dao.binarytimeseries.TimeSeriesBinaryDao;
import cwms.cda.data.dto.binarytimeseries.BinaryTimeSeries;
import cwms.cda.formatters.ContentType;
import cwms.cda.formatters.Formats;
import cwms.cda.helpers.ReplaceUtils;
import io.javalin.apibuilder.CrudHandler;
import io.javalin.core.util.Header;
import io.javalin.http.Context;
import io.javalin.plugin.openapi.annotations.HttpMethod;
Expand All @@ -60,11 +59,10 @@
import io.javalin.plugin.openapi.annotations.OpenApiParam;
import io.javalin.plugin.openapi.annotations.OpenApiRequestBody;
import io.javalin.plugin.openapi.annotations.OpenApiResponse;
import java.io.UnsupportedEncodingException;
import java.io.IOException;
import java.net.URISyntaxException;
import java.net.URLEncoder;
import java.time.Instant;
import com.google.common.flogger.FluentLogger;
import javax.servlet.http.HttpServletResponse;
import org.apache.http.client.utils.URIBuilder;
import org.jetbrains.annotations.NotNull;
Expand Down Expand Up @@ -160,10 +158,13 @@ public void getAll(@NotNull Context ctx) {
ctx.contentType(contentType.toString());

String result = Formats.format(contentType, binaryTimeSeries);
ctx.result(result);

ctx.status(HttpServletResponse.SC_OK);
} catch (URISyntaxException | UnsupportedEncodingException ex) {

byte[] bytes = result.getBytes();
ctx.header(Header.CONTENT_LENGTH, String.valueOf(bytes.length));
ctx.res.getOutputStream().write(bytes);
} catch (URISyntaxException | IOException ex) {
CdaError re = ExceptionTraceSupport.buildError(ctx,
"Failed to process request: " + ex.getLocalizedMessage(), ex);
logger.atSevere().withCause(ex).log("%s", re);
Expand Down
46 changes: 36 additions & 10 deletions cwms-data-api/src/main/java/cwms/cda/api/BlobController.java
Original file line number Diff line number Diff line change
@@ -1,21 +1,40 @@
package cwms.cda.api;

import static com.codahale.metrics.MetricRegistry.name;
import static cwms.cda.api.Controllers.BLOB_ID;
import static cwms.cda.api.Controllers.CREATE;
import static cwms.cda.api.Controllers.CURSOR;
import static cwms.cda.api.Controllers.DELETE;
import static cwms.cda.api.Controllers.FAIL_IF_EXISTS;
import static cwms.cda.api.Controllers.GET_ALL;
import static cwms.cda.api.Controllers.GET_ONE;
import static cwms.cda.api.Controllers.LIKE;
import static cwms.cda.api.Controllers.OFFICE;
import static cwms.cda.api.Controllers.PAGE;
import static cwms.cda.api.Controllers.PAGE_SIZE;
import static cwms.cda.api.Controllers.STATUS_200;
import static cwms.cda.api.Controllers.UPDATE;
import static cwms.cda.api.Controllers.queryParamAsClass;
import static cwms.cda.api.Controllers.requiredParam;

import static cwms.cda.api.Controllers.*;

import com.codahale.metrics.Histogram;
import com.codahale.metrics.MetricRegistry;
import com.codahale.metrics.Timer;
import com.google.common.flogger.FluentLogger;
import cwms.cda.api.errors.CdaError;
import cwms.cda.data.dao.*;
import cwms.cda.api.errors.ExceptionTraceSupport;
import cwms.cda.data.dao.BlobAccess;
import cwms.cda.data.dao.BlobDao;
import cwms.cda.data.dao.JooqDao;
import cwms.cda.data.dao.ObjectStorageBlobDao;
import cwms.cda.data.dao.ObjectStorageConfig;
import cwms.cda.data.dao.StreamConsumer;
import cwms.cda.data.dto.Blob;
import cwms.cda.data.dto.Blobs;
import cwms.cda.data.dto.CwmsDTOPaginated;
import cwms.cda.features.CdaFeatures;
import cwms.cda.formatters.ContentType;
import cwms.cda.formatters.Formats;
import cwms.cda.formatters.FormattingException;
import io.javalin.apibuilder.CrudHandler;
import io.javalin.core.util.Header;
import io.javalin.http.Context;
import io.javalin.http.HttpCode;
Expand All @@ -25,22 +44,20 @@
import io.javalin.plugin.openapi.annotations.OpenApiParam;
import io.javalin.plugin.openapi.annotations.OpenApiRequestBody;
import io.javalin.plugin.openapi.annotations.OpenApiResponse;

import java.io.IOException;
import java.util.Optional;

import javax.servlet.http.HttpServletResponse;

import org.jetbrains.annotations.NotNull;
import org.jooq.DSLContext;
import org.togglz.core.context.FeatureContext;
import cwms.cda.features.CdaFeatures;
import org.togglz.core.manager.FeatureManager;


/**
*
*/
public class BlobController extends BaseCrudHandler {
private static final FluentLogger LOGGER = FluentLogger.forEnclosingClass();
private static final int DEFAULT_PAGE_SIZE = 20;
public static final String TAG = "Blob";

Expand Down Expand Up @@ -131,9 +148,18 @@ Integer.class, DEFAULT_PAGE_SIZE, getMetrics(),

String result = Formats.format(contentType, blobs);

ctx.result(result);
ctx.contentType(contentType.toString());
updateResultSize(result.length());

ctx.status(HttpServletResponse.SC_OK);

byte[] bytes = result.getBytes();
ctx.header(Header.CONTENT_LENGTH, String.valueOf(bytes.length));
ctx.res.getOutputStream().write(bytes);
} catch (IOException ex) {
CdaError error = ExceptionTraceSupport.buildError(ctx, "Failed to process request to retrieve Blobs", ex);
LOGGER.atSevere().withCause(ex).log("Failed to process request to retrieve Blobs");
ctx.status(HttpServletResponse.SC_INTERNAL_SERVER_ERROR).json(error);
}
}

Expand Down
13 changes: 12 additions & 1 deletion cwms-data-api/src/main/java/cwms/cda/api/CatalogController.java
Original file line number Diff line number Diff line change
Expand Up @@ -48,12 +48,14 @@
import cwms.cda.formatters.ContentType;
import cwms.cda.formatters.Formats;
import io.javalin.apibuilder.CrudHandler;
import io.javalin.core.util.Header;
import io.javalin.http.Context;
import io.javalin.http.HttpCode;
import io.javalin.plugin.openapi.annotations.OpenApi;
import io.javalin.plugin.openapi.annotations.OpenApiContent;
import io.javalin.plugin.openapi.annotations.OpenApiParam;
import io.javalin.plugin.openapi.annotations.OpenApiResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedHashSet;
Expand Down Expand Up @@ -371,15 +373,24 @@ public void getOne(@NotNull Context ctx, @NotNull String dataSet) {
}
if (cat != null) {
String data = Formats.format(contentType, cat);
ctx.result(data).contentType(contentType.toString());
ctx.contentType(contentType.toString());
ctx.status(HttpServletResponse.SC_OK);
requestResultSize.update(data.length());

byte[] bytes = data.getBytes();
ctx.header(Header.CONTENT_LENGTH, String.valueOf(bytes.length));
ctx.res.getOutputStream().write(bytes);
} else {
final CdaError re = new CdaError("Cannot create catalog of requested "
+ "information");

logger.atInfo().log("%s with url:%s", re, ctx.fullUrl());
ctx.json(re).status(HttpCode.NOT_FOUND);
}
} catch (IOException ex) {
CdaError re = new CdaError("Failed to process request to retrieve catalog");
logger.atSevere().withCause(ex).log("Failed to process request to retrieve catalog");
ctx.status(HttpServletResponse.SC_INTERNAL_SERVER_ERROR).json(re);
}
}

Expand Down
16 changes: 15 additions & 1 deletion cwms-data-api/src/main/java/cwms/cda/api/CdaVersionHandler.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,21 +32,27 @@

import com.codahale.metrics.MetricRegistry;
import com.codahale.metrics.Timer;
import com.google.common.flogger.FluentLogger;
import cwms.cda.api.errors.CdaError;
import cwms.cda.api.errors.ExceptionTraceSupport;
import cwms.cda.data.dao.CdaVersionDao;
import cwms.cda.data.dto.CdaVersion;
import cwms.cda.formatters.ContentType;
import cwms.cda.formatters.Formats;
import io.javalin.core.util.Header;
import io.javalin.http.Context;
import io.javalin.http.Handler;
import io.javalin.plugin.openapi.annotations.HttpMethod;
import io.javalin.plugin.openapi.annotations.OpenApi;
import io.javalin.plugin.openapi.annotations.OpenApiContent;
import io.javalin.plugin.openapi.annotations.OpenApiResponse;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
import org.jetbrains.annotations.NotNull;
import org.jooq.DSLContext;

public final class CdaVersionHandler implements Handler {
private static final FluentLogger LOGGER = FluentLogger.forEnclosingClass();
static final String TAG = "Version";
private final MetricRegistry metrics;

Expand Down Expand Up @@ -75,9 +81,17 @@ public void handle(@NotNull Context ctx) throws Exception {
CdaVersionDao dao = new CdaVersionDao(dsl, metrics);
CdaVersion cdaVersion = dao.getCdaVersion();
String serialized = Formats.format(new ContentType(Formats.JSON), cdaVersion);
ctx.result(serialized);
ctx.contentType(Formats.JSON);
ctx.status(HttpServletResponse.SC_OK);

byte[] bytes = serialized.getBytes();
ctx.header(Header.CONTENT_LENGTH, String.valueOf(bytes.length));
ctx.res.getOutputStream().write(bytes);
} catch (IOException ex) {
CdaError error = ExceptionTraceSupport.buildError(ctx,
"Failed to process request to retrieve CWMS Data API version", ex);
LOGGER.atSevere().withCause(ex).log("Failed to process request to retrieve CWMS Data API version");
ctx.status(HttpServletResponse.SC_INTERNAL_SERVER_ERROR).json(error);
}
}
}
24 changes: 21 additions & 3 deletions cwms-data-api/src/main/java/cwms/cda/api/ClobController.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import com.codahale.metrics.Histogram;
import com.codahale.metrics.MetricRegistry;
import com.codahale.metrics.Timer;
import com.google.common.flogger.FluentLogger;
import cwms.cda.api.errors.CdaError;
import cwms.cda.data.dao.ClobDao;
import cwms.cda.data.dao.JooqDao;
Expand All @@ -44,7 +45,7 @@
import io.javalin.plugin.openapi.annotations.OpenApiParam;
import io.javalin.plugin.openapi.annotations.OpenApiRequestBody;
import io.javalin.plugin.openapi.annotations.OpenApiResponse;

import java.io.IOException;
import java.util.Objects;
import java.util.Optional;
import javax.servlet.http.HttpServletResponse;
Expand All @@ -53,6 +54,7 @@


public class ClobController implements CrudHandler {
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
private static final int DEFAULT_PAGE_SIZE = 20;
public static final String TAG = "Clob";
public static final String TEXT_PLAIN = "text/plain";
Expand Down Expand Up @@ -143,9 +145,17 @@ public void getAll(@NotNull Context ctx) {
Clobs clobs = dao.getClobs(cursor, pageSize, office, includeValues, like);
String result = Formats.format(contentType, clobs);

ctx.result(result);
ctx.contentType(contentType.toString());
ctx.status(HttpServletResponse.SC_OK);
requestResultSize.update(result.length());

byte[] bytes = result.getBytes();
ctx.header(Header.CONTENT_LENGTH, String.valueOf(bytes.length));
ctx.res.getOutputStream().write(bytes);
} catch (IOException e) {
CdaError re = new CdaError("Failed to process request to retrieve ");
logger.atSevere().withCause(e).log("Failed to process request to retrieve Basin");
ctx.status(HttpServletResponse.SC_INTERNAL_SERVER_ERROR).json(re);
}
}

Expand Down Expand Up @@ -221,14 +231,22 @@ public void getOne(@NotNull Context ctx, @NotNull String clobId) {
String result = Formats.format(contentType, clob);

ctx.contentType(contentType.toString());
ctx.result(result);
ctx.status(HttpServletResponse.SC_OK);

requestResultSize.update(result.length());

byte[] bytes = result.getBytes();
ctx.header(Header.CONTENT_LENGTH, String.valueOf(bytes.length));
ctx.res.getOutputStream().write(bytes);
} else {
ctx.status(HttpServletResponse.SC_NOT_FOUND).json(new CdaError("Unable to find "
+ "clob based on given parameters"));
}
}
} catch (IOException e) {
CdaError re = new CdaError("Failed to process request to retrieve clob");
logger.atSevere().withCause(e).log("Failed to process request to retrieve clob");
ctx.status(HttpServletResponse.SC_INTERNAL_SERVER_ERROR).json(re);
}
}

Expand Down
Loading
Loading