Skip to content
DBBrokerTemplate.java 42.4 KiB
Newer Older
        String query = String.format("UPDATE %s.%s SET %s = ? WHERE table_name = ? and column_name = ?",
                escape(tapSchemaName), escape(TapSchema.COLUMNS_TABLE), escape(key));

        try (Connection conn = dataSource.getConnection();
                PreparedStatement ps = conn.prepareStatement(query)) {

            LOG.debug("Executing query {} [{}, {}, {}]", query, value, completeTableName, columnName);

            ps.setObject(1, value);
            ps.setString(2, completeTableName);
            ps.setString(3, columnName);

            ps.executeUpdate();
        }
    }

    protected String getEnumDefinition(List<String> enumValues) {
        StringBuilder sb = new StringBuilder();

        boolean first = true;
        for (String enumValue : enumValues) {
            if (!first) {
                sb.append(',');
            }
            sb.append(String.format("'%s'", enumValue));
            first = false;
        }

        return sb.toString();
    }

    private String getCheckConstraint(ColumnModel columnModel) {
        if (columnModel.getMinValue() != null && columnModel.getMaxValue() != null) {
            return String.format("CHECK (%s >= %s AND %s <= %s)", columnModel.getName(),
                    columnModel.getMinValue(), columnModel.getName(), columnModel.getMaxValue());
        } else if (columnModel.getMinValue() != null && columnModel.getMaxValue() == null) {
            return String.format("CHECK (%s >= %s)", columnModel.getName(), columnModel.getMinValue());
        } else if (columnModel.getMinValue() == null && columnModel.getMaxValue() != null) {
            return String.format("CHECK (%s <= %s)", columnModel.getName(), columnModel.getMaxValue());
        }
        return null;
    }

    protected void appendCheckConstraints(StringBuilder querySb, TableModel tableModel) {
        for (ColumnModel cm : tableModel.getColumns()) {
            String checkConstraint = getCheckConstraint(cm);
            if (checkConstraint != null) {
                querySb.append(",\n");
                querySb.append(checkConstraint);
            }
        }
    }