/* * Copyright 2017 requery.io * * Licensed 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 io.requery.sql.platform; import io.requery.query.Expression; import io.requery.query.element.LimitedElement; import io.requery.query.element.OrderByElement; import io.requery.sql.GeneratedColumnDefinition; import io.requery.sql.IdentityColumnDefinition; import io.requery.sql.Mapping; import io.requery.sql.Platform; import io.requery.sql.UserVersionColumnDefinition; import io.requery.sql.VersionColumnDefinition; import io.requery.sql.gen.Generator; import io.requery.sql.gen.LimitGenerator; import io.requery.sql.gen.OffsetFetchGenerator; import io.requery.sql.gen.OrderByGenerator; import io.requery.sql.gen.UpsertMergeGenerator; import java.util.Map; /** * Base platform implementation assuming standard ANSI SQL support. */ public class Generic implements Platform { private final GeneratedColumnDefinition generatedColumnDefinition; private final LimitGenerator limitDefinition; private final VersionColumnDefinition versionColumnDefinition; private final Generator<Map<Expression<?>, Object>> upsertDefinition; private final Generator<OrderByElement> orderByDefinition; public Generic() { generatedColumnDefinition = new IdentityColumnDefinition(); limitDefinition = new OffsetFetchGenerator(); versionColumnDefinition = new UserVersionColumnDefinition(); upsertDefinition = new UpsertMergeGenerator(); orderByDefinition = new OrderByGenerator(); } @Override public void addMappings(Mapping mapping) { } @Override public boolean supportsInlineForeignKeyReference() { return false; } @Override public boolean supportsAddingConstraint() { return true; } @Override public boolean supportsIfExists() { return true; } @Override public boolean supportsGeneratedKeysInBatchUpdate() { return false; } @Override public boolean supportsGeneratedColumnsInPrepareStatement() { return true; } @Override public boolean supportsOnUpdateCascade() { return true; } @Override public boolean supportsUpsert() { return true; } @Override public GeneratedColumnDefinition generatedColumnDefinition() { return generatedColumnDefinition; } @Override public Generator<LimitedElement> limitGenerator() { return limitDefinition; } @Override public VersionColumnDefinition versionColumnDefinition() { return versionColumnDefinition; } @Override public Generator<Map<Expression<?>, Object>> upsertGenerator() { return upsertDefinition; } @Override public Generator<OrderByElement> orderByGenerator() { return orderByDefinition; } @Override public String toString() { return getClass().getSimpleName(); } }