| /* |
| * Copyright (c) 2012, 2020 Oracle and/or its affiliates. All rights reserved. |
| * |
| * This program and the accompanying materials are made available under the |
| * terms of the Eclipse Public License v. 2.0 which is available at |
| * http://www.eclipse.org/legal/epl-2.0, |
| * or the Eclipse Distribution License v. 1.0 which is available at |
| * http://www.eclipse.org/org/documents/edl-v10.php. |
| * |
| * SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause |
| */ |
| |
| // Contributors: |
| // Oracle - initial API and implementation |
| // |
| package org.eclipse.persistence.jpa.tests.jpql.parser; |
| |
| import org.eclipse.persistence.jpa.jpql.EclipseLinkVersion; |
| import org.eclipse.persistence.jpa.jpql.JPAVersion; |
| import org.eclipse.persistence.jpa.jpql.parser.EclipseLinkJPQLGrammar1; |
| import org.eclipse.persistence.jpa.jpql.parser.EclipseLinkJPQLGrammar2_0; |
| import org.eclipse.persistence.jpa.jpql.parser.EclipseLinkJPQLGrammar2_1; |
| import org.eclipse.persistence.jpa.jpql.parser.EclipseLinkJPQLGrammar2_2; |
| import org.eclipse.persistence.jpa.jpql.parser.EclipseLinkJPQLGrammar2_3; |
| import org.eclipse.persistence.jpa.jpql.parser.EclipseLinkJPQLGrammar2_4; |
| import org.eclipse.persistence.jpa.jpql.parser.EclipseLinkJPQLGrammar2_5; |
| import org.eclipse.persistence.jpa.jpql.parser.JPQLGrammar; |
| import org.eclipse.persistence.jpa.jpql.parser.JPQLGrammar1_0; |
| import org.eclipse.persistence.jpa.jpql.parser.JPQLGrammar2_0; |
| import org.eclipse.persistence.jpa.jpql.parser.JPQLGrammar2_1; |
| |
| /** |
| * This utility class provides an easy way of creating a list of {@link JPQLGrammar}, which is |
| * easier to update when a new grammar is added. |
| * |
| * @version 2.5 |
| * @since 2.5 |
| * @author Pascal Filion |
| */ |
| public final class JPQLGrammarTools { |
| |
| /** |
| * Cannot instantiate this <code>JPQLGrammarTools</code>. |
| */ |
| private JPQLGrammarTools() { |
| super(); |
| } |
| |
| public static JPQLGrammar[] allDefaultJPQLGrammars() { |
| return allDefaultJPQLGrammars(JPAVersion.VERSION_1_0); |
| } |
| |
| public static JPQLGrammar[] allDefaultJPQLGrammars(JPAVersion minVersion) { |
| switch (minVersion) { |
| case VERSION_1_0: { |
| return new JPQLGrammar[] { |
| JPQLGrammar1_0.instance(), |
| JPQLGrammar2_0.instance(), |
| JPQLGrammar2_1.instance() |
| }; |
| } |
| case VERSION_2_0: { |
| return new JPQLGrammar[] { |
| JPQLGrammar2_0.instance(), |
| JPQLGrammar2_1.instance() |
| }; |
| } |
| case VERSION_2_1: { |
| return new JPQLGrammar[] { |
| JPQLGrammar2_1.instance() |
| }; |
| } |
| default: { |
| return new JPQLGrammar[0]; |
| } |
| } |
| } |
| |
| public static JPQLGrammar[] allEclipseLinkJPQLGrammars() { |
| return allEclipseLinkJPQLGrammars(EclipseLinkVersion.VERSION_1_x); |
| } |
| |
| public static JPQLGrammar[] allEclipseLinkJPQLGrammars(EclipseLinkVersion minVersion) { |
| switch (minVersion) { |
| case VERSION_1_x: { |
| return new JPQLGrammar[] { |
| EclipseLinkJPQLGrammar1.instance(), |
| EclipseLinkJPQLGrammar2_0.instance(), |
| EclipseLinkJPQLGrammar2_1.instance(), |
| EclipseLinkJPQLGrammar2_2.instance(), |
| EclipseLinkJPQLGrammar2_3.instance(), |
| EclipseLinkJPQLGrammar2_4.instance(), |
| EclipseLinkJPQLGrammar2_5.instance() |
| }; |
| } |
| case VERSION_2_0: { |
| return new JPQLGrammar[] { |
| EclipseLinkJPQLGrammar2_0.instance(), |
| EclipseLinkJPQLGrammar2_2.instance(), |
| EclipseLinkJPQLGrammar2_3.instance(), |
| EclipseLinkJPQLGrammar2_4.instance(), |
| EclipseLinkJPQLGrammar2_5.instance() |
| }; |
| } |
| case VERSION_2_1: { |
| return new JPQLGrammar[] { |
| EclipseLinkJPQLGrammar2_1.instance(), |
| EclipseLinkJPQLGrammar2_2.instance(), |
| EclipseLinkJPQLGrammar2_3.instance(), |
| EclipseLinkJPQLGrammar2_4.instance(), |
| EclipseLinkJPQLGrammar2_5.instance() |
| }; |
| } |
| case VERSION_2_2: { |
| return new JPQLGrammar[] { |
| EclipseLinkJPQLGrammar2_2.instance(), |
| EclipseLinkJPQLGrammar2_3.instance(), |
| EclipseLinkJPQLGrammar2_4.instance(), |
| EclipseLinkJPQLGrammar2_5.instance() |
| }; |
| } |
| case VERSION_2_3: { |
| return new JPQLGrammar[] { |
| EclipseLinkJPQLGrammar2_3.instance(), |
| EclipseLinkJPQLGrammar2_4.instance(), |
| EclipseLinkJPQLGrammar2_5.instance() |
| }; |
| } |
| case VERSION_2_4: { |
| return new JPQLGrammar[] { |
| EclipseLinkJPQLGrammar2_4.instance(), |
| EclipseLinkJPQLGrammar2_5.instance() |
| }; |
| } |
| case VERSION_2_5: { |
| return new JPQLGrammar[] { |
| EclipseLinkJPQLGrammar2_5.instance() |
| }; |
| } |
| default: { |
| return new JPQLGrammar[0]; |
| } |
| } |
| } |
| |
| public static JPQLGrammar[] allJPQLGrammars() { |
| return allJPQLGrammars(JPAVersion.VERSION_1_0); |
| } |
| |
| public static JPQLGrammar[] allJPQLGrammars(JPAVersion minVersion) { |
| switch (minVersion) { |
| case VERSION_1_0: { |
| return new JPQLGrammar[] { |
| JPQLGrammar1_0.instance(), |
| JPQLGrammar2_0.instance(), |
| JPQLGrammar2_1.instance(), |
| EclipseLinkJPQLGrammar1.instance(), |
| EclipseLinkJPQLGrammar2_0.instance(), |
| EclipseLinkJPQLGrammar2_1.instance(), |
| EclipseLinkJPQLGrammar2_2.instance(), |
| EclipseLinkJPQLGrammar2_3.instance(), |
| EclipseLinkJPQLGrammar2_4.instance(), |
| EclipseLinkJPQLGrammar2_5.instance() |
| }; |
| } |
| case VERSION_2_0: { |
| return new JPQLGrammar[] { |
| JPQLGrammar2_0.instance(), |
| JPQLGrammar2_1.instance(), |
| EclipseLinkJPQLGrammar2_0.instance(), |
| EclipseLinkJPQLGrammar2_1.instance(), |
| EclipseLinkJPQLGrammar2_2.instance(), |
| EclipseLinkJPQLGrammar2_3.instance(), |
| EclipseLinkJPQLGrammar2_4.instance(), |
| EclipseLinkJPQLGrammar2_5.instance() |
| }; |
| } |
| case VERSION_2_1: { |
| return new JPQLGrammar[] { |
| JPQLGrammar2_1.instance(), |
| EclipseLinkJPQLGrammar2_4.instance(), |
| EclipseLinkJPQLGrammar2_5.instance() |
| }; |
| } |
| default: { |
| return new JPQLGrammar[0]; |
| } |
| } |
| } |
| } |