blob: 468ba6a2bbb09fe96a44740079ce0c57aace406a [file] [log] [blame]
/*
* Copyright (c) 2011, 2021 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.tools.model;
/**
* The abstract definition
*
* @version 2.4
* @since 2.4
* @author Pascal Filion
*/
@SuppressWarnings("nls")
public abstract class AbstractStateObjectTest2_0 extends AbstractStateObjectTest {
public static StateObjectTester stateObject_014() {
// SELECT ENTRY(addr) FROM Alias a JOIN a.addresses addr
return selectStatement(
select(entry("addr")),
from("Alias", "a", join("a.addresses", "addr"))
);
}
public static StateObjectTester stateObject_139() {
// SELECT p
// FROM Employee e JOIN e.projects p
// WHERE e.id = :id AND INDEX(p) = 1
return selectStatement(
select(variable("p")),
from("Employee", "e", join("e.projects", "p")),
where(path("e.id").equal(inputParameter(":id")).and(index("p").equal(numeric(1))))
);
}
public static StateObjectTester stateObject_205() {
// UPDATE Employee e
// SET e.salary =
// CASE WHEN e.rating = 1 THEN e.salary * 1.1
// WHEN e.rating = 2 THEN e.salary * 1.05
// ELSE e.salary * 1.01
// END
return updateStatement(
update("Employee", "e", set(
path("e.salary"),
case_(
when(path("e.rating").equal(numeric(1)),
path("e.salary").multiplication(numeric(1.1))
),
when(path("e.rating").equal(numeric(2)),
path("e.salary").multiplication(numeric(1.05))
),
path("e.salary").multiplication(numeric(1.01))
)
))
);
}
public static StateObjectTester stateObject_206() {
// SELECT e.name,
// CASE TYPE(e) WHEN Exempt THEN 'Exempt'
// WHEN Contractor THEN 'Contractor'
// WHEN Intern THEN 'Intern'
// ELSE 'NonExempt'
// END
// FROM Employee e
// WHERE e.dept.name = 'Engineering'
return selectStatement(
select(
path("e.name"),
case_(
type("e"),
new StateObjectTester[] {
when(entity("Exempt"), string("'Exempt'")),
when(entity("Contractor"), string("'Contractor'")),
when(entity("Intern"), string("'Intern'"))
},
string("'NonExempt'")
)
),
from("Employee", "e", "Contractor", "c"),
where(path("e.dept.name").equal(string("'Engineering'")))
);
}
public static StateObjectTester stateObject_207() {
// SELECT e.name,
// f.name,
// CONCAT(CASE WHEN f.annualMiles > 50000 THEN 'Platinum '
// WHEN f.annualMiles > 25000 THEN 'Gold '
// ELSE ''
// END,
// 'Frequent Flyer')
// FROM Employee e JOIN e.frequentFlierPlan f
return selectStatement(
select(
path("e.name"),
path("f.name"),
concat(
case_(
when(path("f.annualMiles").greaterThan(numeric(50000)),
string("'Platinum '")),
when(path("f.annualMiles").greaterThan(numeric(25000)),
string("'Gold '")),
string("''")
),
string("'Frequent Flyer'")
)
),
from("Employee", "e", join("e.frequentFlierPlan", "f"))
);
}
public static StateObjectTester stateObject_208() {
// SELECT e
// FROM Employee e
// WHERE TYPE(e) IN (Exempt, Contractor)
return selectStatement(
select(variable("e")),
from("Employee", "e"),
where(type("e").in(entity("Exempt"), entity("Contractor")))
);
}
public static StateObjectTester stateObject_209() {
// SELECT e
// FROM Employee e
// WHERE TYPE(e) IN (:empType1, :empType2)
return selectStatement(
select(variable("e")),
from("Employee", "e"),
where(type("e").in(inputParameter(":empType1"), inputParameter(":empType2")))
);
}
public static StateObjectTester stateObject_210() {
// SELECT e
// FROM Employee e
// WHERE TYPE(e) IN :empTypes
InExpressionStateObjectTester inExpression = in(
type("e"),
inputParameter(":empTypes")
);
return selectStatement(
select(variable("e")),
from("Employee", "e"),
where(inExpression)
);
}
public static StateObjectTester stateObject_211() {
// SELECT TYPE(employee)
// FROM Employee employee
// WHERE TYPE(employee) <> Exempt
return selectStatement(
select(type("employee")),
from("Employee", "employee"),
where(type("employee").different(variable("Exempt")))
);
}
public static StateObjectTester stateObject_212() {
// SELECT t
// FROM CreditCard c JOIN c.transactionHistory t
// WHERE c.holder.name = 'John Doe' AND INDEX(t) BETWEEN 0 AND 9
return selectStatement(
select(variable("t")),
from("CreditCard", "c", join("c.transactionHistory", "t")),
where(
path("c.holder.name").equal(string("'John Doe'"))
.and(
index("t").between(numeric(0), numeric(9))))
);
}
public static StateObjectTester stateObject_213() {
// SELECT w.name
// FROM Course c JOIN c.studentWaitlist w
// WHERE c.name = 'Calculus'
// AND
// INDEX(w) = 0
return selectStatement(
select(path("w.name")),
from("Course", "c", join("c.studentWaitlist", "w")),
where(
path("c.name").equal(string("'Calculus'"))
.and(
index("w").equal(numeric(0))))
);
}
public static StateObjectTester stateObject_214() {
// UPDATE Employee e
// SET e.salary = CASE e.rating WHEN 1 THEN e.salary * 1.1
// WHEN 2 THEN e.salary * 1.05
// ELSE e.salary * 1.01
// END
return updateStatement(
update(
"Employee", "e",
set("e.salary", case_(
path("e.rating"),
new StateObjectTester[] {
when(numeric(1), path("e.salary").multiplication(numeric(1.1))),
when(numeric(2), path("e.salary").multiplication(numeric(1.05))),
},
path("e.salary").multiplication(numeric(1.01))
))
)
);
}
public static StateObjectTester stateObject_217() {
// SELECT o.quantity, o.cost*1.08 AS taxedCost, a.zipcode
// FROM Customer c JOIN c.orders o JOIN c.address a
// WHERE a.state = 'CA' AND a.county = 'Santa Clara'
// ORDER BY o.quantity, taxedCost, a.zipcode
return selectStatement(
select(
path("o.quantity"),
selectItemAs(path("o.cost").multiplication(numeric(1.08)), "taxedCost"),
path("a.zipcode")
),
from("Customer", "c", join("c.orders", "o"), join("c.address", "a")),
where(
path("a.state").equal(string("'CA'"))
.and(
path("a.county").equal(string("'Santa Clara'"))
)
),
nullExpression(),
nullExpression(),
orderBy(
orderByItem("o.quantity"),
orderByItem(variable("taxedCost")),
orderByItem("a.zipcode")
)
);
}
public static StateObjectTester stateObject_218() {
// SELECT AVG(o.quantity) as q, a.zipcode
// FROM Customer c JOIN c.orders o JOIN c.address a
// WHERE a.state = 'CA'
// GROUP BY a.zipcode
// ORDER BY q DESC";
return selectStatement(
select(
selectItemAs(avg("o.quantity"), "q"),
path("a.zipcode")
),
from("Customer", "c", join("c.orders", "o"), join("c.address", "a")),
where(path("a.state").equal(string("'CA'"))),
groupBy(path("a.zipcode")),
nullExpression(),
orderBy(orderByItemDesc(variable("q")))
);
}
public static StateObjectTester stateObject_222() {
// SELECT e.salary / 1000D n
// From Employee e
return selectStatement(
select(selectItem(path("e.salary").division(numeric("1000D")), "n")),
from("Employee", "e")
);
}
public static StateObjectTester stateObject_223() {
// SELECT MOD(a.id, 2) AS m
// FROM Address a JOIN FETCH a.customerList
// ORDER BY m, a.zipcode
return selectStatement(
select(selectItemAs(mod(path("a.id"), numeric(2)), "m")),
from("Address", "a", joinFetch("a.customerList")),
nullExpression(),
nullExpression(),
nullExpression(),
orderBy(
orderByItem(variable("m")),
orderByItem(path("a.zipcode"))
)
);
}
}