/* * Copyright 2014 - 2017 Blazebit. * * 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 com.blazebit.persistence.impl.openjpa; import com.blazebit.persistence.JoinType; import com.blazebit.persistence.spi.JpaProvider; import javax.persistence.metamodel.Attribute; import javax.persistence.metamodel.ManagedType; /** * * @author Christian Beikov * @since 1.2.0 */ public class OpenJPAJpaProvider implements JpaProvider { @Override public boolean supportsJpa21() { return false; } @Override public boolean supportsEntityJoin() { return false; } @Override public boolean supportsInsertStatement() { return false; } @Override public boolean needsBracketsForListParamter() { return false; } @Override public boolean needsJoinSubqueryRewrite() { return false; } @Override public String getBooleanExpression(boolean value) { return value ? "CASE WHEN 1 = 1 THEN true ELSE false END" : "CASE WHEN 1 = 1 THEN false ELSE true END"; } @Override public String getBooleanConditionalExpression(boolean value) { return value ? "1 = 1" : "1 = 0"; } @Override public String getNullExpression() { return "NULLIF(1,1)"; } @Override public String escapeCharacter(char character) { return Character.toString(character); } @Override public boolean supportsNullPrecedenceExpression() { return false; } @Override public void renderNullPrecedence(StringBuilder sb, String expression, String resolvedExpression, String order, String nulls) { throw new UnsupportedOperationException("Not yet implemented!"); } @Override public String getOnClause() { return "ON"; } @Override public String getCollectionValueFunction() { return null; } @Override public boolean supportsCollectionValueDereference() { return false; } @Override public Class<?> getDefaultQueryResultType() { return Object.class; } @Override public String getCustomFunctionInvocation(String functionName, int argumentCount) { return functionName + "("; } @Override public boolean supportsRootTreat() { return false; } @Override public boolean supportsTreatJoin() { return false; } @Override public boolean supportsTreatCorrelation() { return false; } @Override public boolean supportsRootTreatJoin() { return false; } @Override public boolean supportsRootTreatTreatJoin() { return false; } @Override public boolean supportsSubtypePropertyResolving() { return false; } @Override public boolean supportsSubtypeRelationResolving() { return false; } @Override public boolean supportsCountStar() { return false; } @Override public boolean isForeignJoinColumn(ManagedType<?> ownerType, String attributeName) { // just return true since we don't need that for openjpa anyway return true; } @Override public boolean isColumnShared(ManagedType<?> ownerType, String attributeName) { return false; } @Override public ConstraintType requiresTreatFilter(ManagedType<?> type, String attributeName, JoinType joinType) { return ConstraintType.NONE; } @Override public boolean isJoinTable(Attribute<?, ?> attribute) { // just return false since we don't need that for openjpa anyway return false; } @Override public boolean isBag(Attribute<?, ?> attribute) { return false; } @Override public boolean supportsSingleValuedAssociationIdExpressions() { return true; } @Override public boolean supportsForeignAssociationInOnClause() { return true; } @Override public boolean supportsTransientEntityAsParameter() { return true; } @Override public boolean needsAssociationToIdRewriteInOnClause() { return false; } @Override public boolean needsBrokenAssociationToIdRewriteInOnClause() { return false; } @Override public boolean needsTypeConstraintForColumnSharing() { return false; } }