/*
* Copyright 2013 uaiHebert Solucoes em Informatica
*
* 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.uaihebert.test.easy_legacy.easy;
import com.uaihebert.model.EasyCriteria;
import com.uaihebert.model.test.EmbeddedIdDummy;
import com.uaihebert.model.test.EntityEmbeddedId;
import com.uaihebert.model.test.JoinEntityEmbeddedId;
import com.uaihebert.test.easy_legacy.AbstractTest;
import com.uaihebert.test.easy_legacy.CompositeKeyTests;
import com.uaihebert.uaicriteria.base.element.EasyCriteriaFactory;
import org.junit.Test;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
public class MethodsCompositeKeyTest extends AbstractTest implements CompositeKeyTests {
@Test
public void isAddingOneOrEquals() {
if (isOpenJPA()) {
// there is a OpenJPA bug for this: https://issues.apache.org/jira/browse/OPENJPA-1806
return;
}
final EmbeddedIdDummy idDummy = new EmbeddedIdDummy(1, "01 Key 1");
final EmbeddedIdDummy idDummy2 = new EmbeddedIdDummy(2, "02 Key 2");
final Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("idDummy1", idDummy);
parameters.put("idDummy2", idDummy2);
final String query = "select e from EntityEmbeddedId e " +
"where e.id = :idDummy1 or e.id = :idDummy2";
final List<EntityEmbeddedId> resultFromJPQL = getListFromJPQL(query, EntityEmbeddedId.class, parameters);
assertTrue(resultFromJPQL.size() > 0);
final EasyCriteria<EntityEmbeddedId> easyCriteria = EasyCriteriaFactory.createQueryCriteria(getEntityManager(), EntityEmbeddedId.class);
easyCriteria.orEquals("id", idDummy, idDummy2);
final List<EntityEmbeddedId> resultList = easyCriteria.getResultList();
assertEquals(resultFromJPQL.size(), resultList.size());
assertTrue(resultFromJPQL.containsAll(resultList));
}
@Test
public void isAddingOneWhereEquals() {
if (isOpenJPA()) {
// there is a OpenJPA bug for this: https://issues.apache.org/jira/browse/OPENJPA-1806
return;
}
final EmbeddedIdDummy idDummy = new EmbeddedIdDummy(1, "01 Key 1");
final Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("idDummy", idDummy);
final String query = "select e from EntityEmbeddedId e " +
"where e.id = :idDummy ";
final List<EntityEmbeddedId> resultFromJPQL = getListFromJPQL(query, EntityEmbeddedId.class, parameters);
assertTrue(resultFromJPQL.size() > 0);
final EasyCriteria<EntityEmbeddedId> easyCriteria = EasyCriteriaFactory.createQueryCriteria(getEntityManager(), EntityEmbeddedId.class);
easyCriteria.andEquals("id", idDummy);
final List<EntityEmbeddedId> resultList = easyCriteria.getResultList();
assertEquals(resultFromJPQL.size(), resultList.size());
assertTrue(resultFromJPQL.containsAll(resultList));
}
@Test
public void isAddingSequentialWhereEquals() {
if (isOpenJPA()) {
// there is a OpenJPA bug for this: https://issues.apache.org/jira/browse/OPENJPA-1806
return;
}
final EmbeddedIdDummy idDummy = new EmbeddedIdDummy(1, "01 Key 1");
final Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("idDummy", idDummy);
final String query = "select e from EntityEmbeddedId e " +
"where e.id = :idDummy and e.justString = 'A'";
final List<EntityEmbeddedId> resultFromJPQL = getListFromJPQL(query, EntityEmbeddedId.class, parameters);
assertTrue(resultFromJPQL.size() > 0);
final EasyCriteria<EntityEmbeddedId> easyCriteria = EasyCriteriaFactory.createQueryCriteria(getEntityManager(), EntityEmbeddedId.class);
easyCriteria.andEquals("id", idDummy).andEquals("justString", "A");
final List<EntityEmbeddedId> resultList = easyCriteria.getResultList();
assertEquals(resultFromJPQL.size(), resultList.size());
assertTrue(resultFromJPQL.containsAll(resultList));
}
@Test
public void isBetweenWorking() {
if (isOpenJPA()) {
// there is a OpenJPA bug for this: https://issues.apache.org/jira/browse/OPENJPA-1806
return;
}
final String query = "select e from EntityEmbeddedId e " +
"where e.id.idString between '01 Key 1' and '03 Key 3'";
final List<EntityEmbeddedId> resultFromJPQL = getListFromJPQL(query, EntityEmbeddedId.class);
assertTrue(resultFromJPQL.size() > 0);
final EasyCriteria<EntityEmbeddedId> easyCriteria = EasyCriteriaFactory.createQueryCriteria(getEntityManager(), EntityEmbeddedId.class);
easyCriteria.andBetween("id.idString", "01 Key 1", "03 Key 3");
final List<EntityEmbeddedId> resultList = easyCriteria.getResultList();
assertEquals(resultFromJPQL.size(), resultList.size());
assertTrue(resultFromJPQL.containsAll(resultList));
}
@Test
public void isGreaterOrEqualToWorking() {
if (isOpenJPA()) {
// there is a OpenJPA bug for this: https://issues.apache.org/jira/browse/OPENJPA-1806
return;
}
final String query = "select e from EntityEmbeddedId e " +
"where e.id.idInteger >= 1";
final List<EntityEmbeddedId> resultFromJPQL = getListFromJPQL(query, EntityEmbeddedId.class);
assertTrue(resultFromJPQL.size() > 0);
final EasyCriteria<EntityEmbeddedId> easyCriteria = EasyCriteriaFactory.createQueryCriteria(getEntityManager(), EntityEmbeddedId.class);
easyCriteria.andGreaterOrEqualTo("id.idInteger", 1);
final List<EntityEmbeddedId> resultList = easyCriteria.getResultList();
assertEquals(resultFromJPQL.size(), resultList.size());
assertTrue(resultFromJPQL.containsAll(resultList));
}
@Test
public void isLessThanWorking() {
if (isOpenJPA()) {
// there is a OpenJPA bug for this: https://issues.apache.org/jira/browse/OPENJPA-1806
return;
}
final String query = "select e from EntityEmbeddedId e " +
"where e.id.idInteger < 2";
final List<EntityEmbeddedId> resultFromJPQL = getListFromJPQL(query, EntityEmbeddedId.class);
assertTrue(resultFromJPQL.size() > 0);
final EasyCriteria<EntityEmbeddedId> easyCriteria = EasyCriteriaFactory.createQueryCriteria(getEntityManager(), EntityEmbeddedId.class);
easyCriteria.andLessThan("id.idInteger", 2);
final List<EntityEmbeddedId> resultList = easyCriteria.getResultList();
assertEquals(resultFromJPQL.size(), resultList.size());
assertTrue(resultFromJPQL.containsAll(resultList));
}
@Test
public void isLessOrEqualToWorking() {
if (isOpenJPA()) {
// there is a OpenJPA bug for this: https://issues.apache.org/jira/browse/OPENJPA-1806
return;
}
final String query = "select e from EntityEmbeddedId e " +
"where e.id.idInteger <= 2";
final List<EntityEmbeddedId> resultFromJPQL = getListFromJPQL(query, EntityEmbeddedId.class);
assertTrue(resultFromJPQL.size() > 0);
final EasyCriteria<EntityEmbeddedId> easyCriteria = EasyCriteriaFactory.createQueryCriteria(getEntityManager(), EntityEmbeddedId.class);
easyCriteria.andLessOrEqualTo("id.idInteger", 2);
final List<EntityEmbeddedId> resultList = easyCriteria.getResultList();
assertEquals(resultFromJPQL.size(), resultList.size());
assertTrue(resultFromJPQL.containsAll(resultList));
}
@Test
public void isGreaterThanWorking() {
if (isOpenJPA()) {
// there is a OpenJPA bug for this: https://issues.apache.org/jira/browse/OPENJPA-1806
return;
}
final String query = "select e from EntityEmbeddedId e " +
"where e.id.idInteger > 1";
final List<EntityEmbeddedId> resultFromJPQL = getListFromJPQL(query, EntityEmbeddedId.class);
assertTrue(resultFromJPQL.size() > 0);
final EasyCriteria<EntityEmbeddedId> easyCriteria = EasyCriteriaFactory.createQueryCriteria(getEntityManager(), EntityEmbeddedId.class);
easyCriteria.andGreaterThan("id.idInteger", 1);
final List<EntityEmbeddedId> resultList = easyCriteria.getResultList();
assertEquals(resultFromJPQL.size(), resultList.size());
assertTrue(resultFromJPQL.containsAll(resultList));
}
@Test
public void isJoinBetweenWorking() {
if (isOpenJPA()) {
// there is a OpenJPA bug for this: https://issues.apache.org/jira/browse/OPENJPA-1806
return;
}
final String query = "select j from JoinEntityEmbeddedId j " +
"join j.entityEmbeddedIdList ee " +
" where ee.id.idString between '01' and '03'";
final List<JoinEntityEmbeddedId> resultFromJPQL = getListFromJPQL(query, JoinEntityEmbeddedId.class);
assertTrue(resultFromJPQL.size() > 0);
final EasyCriteria<JoinEntityEmbeddedId> easyCriteria = EasyCriteriaFactory.createQueryCriteria(getEntityManager(), JoinEntityEmbeddedId.class);
easyCriteria.setDistinctTrue();
easyCriteria.innerJoin("entityEmbeddedIdList.id");
easyCriteria.andBetween("entityEmbeddedIdList.id.idString", "01", "03");
final List<JoinEntityEmbeddedId> resultList = easyCriteria.getResultList();
assertEquals(resultFromJPQL.size(), resultList.size());
assertTrue(resultFromJPQL.containsAll(resultList));
}
@Test
public void isJoinGreaterOrEqualToWorking() {
if (isOpenJPA()) {
// there is a OpenJPA bug for this: https://issues.apache.org/jira/browse/OPENJPA-1806
return;
}
final String query = "select e from JoinEntityEmbeddedId e " +
"join fetch e.entityEmbeddedIdList f " +
"where f.id.idInteger >= 2";
final List<JoinEntityEmbeddedId> resultFromJPQL = getListFromJPQL(query, JoinEntityEmbeddedId.class);
assertTrue(resultFromJPQL.size() > 0);
final EasyCriteria<JoinEntityEmbeddedId> easyCriteria = EasyCriteriaFactory.createQueryCriteria(getEntityManager(), JoinEntityEmbeddedId.class);
easyCriteria.innerJoin("entityEmbeddedIdList");
easyCriteria.andGreaterOrEqualTo("entityEmbeddedIdList.id.idInteger", 2);
final List<JoinEntityEmbeddedId> resultList = easyCriteria.getResultList();
assertEquals(resultFromJPQL.size(), resultList.size());
assertTrue(resultFromJPQL.containsAll(resultList));
}
@Test
public void isJoinLessThanWorking() {
if (isOpenJPA()) {
// there is a OpenJPA bug for this: https://issues.apache.org/jira/browse/OPENJPA-1806
return;
}
final String query = "select e from JoinEntityEmbeddedId e " +
"join fetch e.entityEmbeddedIdList f " +
"where f.id.idInteger < 2";
final List<JoinEntityEmbeddedId> resultFromJPQL = getListFromJPQL(query, JoinEntityEmbeddedId.class);
assertTrue(resultFromJPQL.size() > 0);
final EasyCriteria<JoinEntityEmbeddedId> easyCriteria = EasyCriteriaFactory.createQueryCriteria(getEntityManager(), JoinEntityEmbeddedId.class);
easyCriteria.innerJoin("entityEmbeddedIdList");
easyCriteria.andLessThan("entityEmbeddedIdList.id.idInteger", 2);
final List<JoinEntityEmbeddedId> resultList = easyCriteria.getResultList();
assertEquals(resultFromJPQL.size(), resultList.size());
assertTrue(resultFromJPQL.containsAll(resultList));
}
@Test
public void isJoinLessOrEqualToWorking() {
if (isOpenJPA()) {
// there is a OpenJPA bug for this: https://issues.apache.org/jira/browse/OPENJPA-1806
return;
}
final String query = "select e from JoinEntityEmbeddedId e " +
"join fetch e.entityEmbeddedIdList f " +
"where f.id.idInteger <= 2";
final List<JoinEntityEmbeddedId> resultFromJPQL = getListFromJPQL(query, JoinEntityEmbeddedId.class);
assertTrue(resultFromJPQL.size() > 0);
final EasyCriteria<JoinEntityEmbeddedId> easyCriteria = EasyCriteriaFactory.createQueryCriteria(getEntityManager(), JoinEntityEmbeddedId.class);
easyCriteria.innerJoin("entityEmbeddedIdList");
easyCriteria.andLessOrEqualTo("entityEmbeddedIdList.id.idInteger", 2);
final List<JoinEntityEmbeddedId> resultList = easyCriteria.getResultList();
assertEquals(resultFromJPQL.size(), resultList.size());
assertTrue(resultFromJPQL.containsAll(resultList));
}
@Test
public void isJoinGreaterThanWorking() {
if (isOpenJPA()) {
// there is a OpenJPA bug for this: https://issues.apache.org/jira/browse/OPENJPA-1806
return;
}
final String query = "select e from JoinEntityEmbeddedId e " +
"join fetch e.entityEmbeddedIdList f " +
"where f.id.idInteger > 2";
final List<JoinEntityEmbeddedId> resultFromJPQL = getListFromJPQL(query, JoinEntityEmbeddedId.class);
assertTrue(resultFromJPQL.size() > 0);
final EasyCriteria<JoinEntityEmbeddedId> easyCriteria = EasyCriteriaFactory.createQueryCriteria(getEntityManager(), JoinEntityEmbeddedId.class);
easyCriteria.innerJoin("entityEmbeddedIdList");
easyCriteria.andGreaterThan("entityEmbeddedIdList.id.idInteger", 2);
final List<JoinEntityEmbeddedId> resultList = easyCriteria.getResultList();
assertEquals(resultFromJPQL.size(), resultList.size());
assertTrue(resultFromJPQL.containsAll(resultList));
}
@Test
public void isMultipleJoinWithBetweenWorking() {
if (isOpenJPA()) {
// there is a OpenJPA bug for this: https://issues.apache.org/jira/browse/OPENJPA-1806
return;
}
final String query = "select e from EntityEmbeddedId e " +
"join e.joinEntityEmbeddedId j " +
"join j.entityEmbeddedIdList ee " +
" where ee.id.idString between '01' and '03'";
final List<EntityEmbeddedId> resultFromJPQL = getListFromJPQL(query, EntityEmbeddedId.class);
assertTrue(resultFromJPQL.size() > 0);
final EasyCriteria<EntityEmbeddedId> easyCriteria = EasyCriteriaFactory.createQueryCriteria(getEntityManager(), EntityEmbeddedId.class);
easyCriteria.setDistinctTrue();
easyCriteria.innerJoin("joinEntityEmbeddedId.entityEmbeddedIdList");
easyCriteria.andBetween("joinEntityEmbeddedId.entityEmbeddedIdList.id.idString", "01", "03");
final List<EntityEmbeddedId> resultList = easyCriteria.getResultList();
assertEquals(resultFromJPQL.size(), resultList.size());
assertTrue(resultFromJPQL.containsAll(resultList));
}
@Test
public void isMultipleJoinWithGreaterOrEqualToWorking() {
if (isOpenJPA()) {
// there is a OpenJPA bug for this: https://issues.apache.org/jira/browse/OPENJPA-1806
return;
}
final String query = "select e from EntityEmbeddedId e " +
"join e.joinEntityEmbeddedId j " +
"join j.entityEmbeddedIdList ee " +
" where ee.id.idInteger > 2";
final List<EntityEmbeddedId> resultFromJPQL = getListFromJPQL(query, EntityEmbeddedId.class);
assertTrue(resultFromJPQL.size() > 0);
final EasyCriteria<EntityEmbeddedId> easyCriteria = EasyCriteriaFactory.createQueryCriteria(getEntityManager(), EntityEmbeddedId.class);
easyCriteria.setDistinctTrue();
easyCriteria.innerJoin("joinEntityEmbeddedId.entityEmbeddedIdList");
easyCriteria.andGreaterThan("joinEntityEmbeddedId.entityEmbeddedIdList.id.idInteger", 2);
final List<EntityEmbeddedId> resultList = easyCriteria.getResultList();
assertEquals(resultFromJPQL.size(), resultList.size());
assertTrue(resultFromJPQL.containsAll(resultList));
}
@Test
public void isMultipleJoinWithLessThanWorking() {
if (isOpenJPA()) {
// there is a OpenJPA bug for this: https://issues.apache.org/jira/browse/OPENJPA-1806
return;
}
final String query = "select e from EntityEmbeddedId e " +
"join e.joinEntityEmbeddedId j " +
"join j.entityEmbeddedIdList ee " +
" where ee.id.idInteger < 2";
final List<EntityEmbeddedId> resultFromJPQL = getListFromJPQL(query, EntityEmbeddedId.class);
assertTrue(resultFromJPQL.size() > 0);
final EasyCriteria<EntityEmbeddedId> easyCriteria = EasyCriteriaFactory.createQueryCriteria(getEntityManager(), EntityEmbeddedId.class);
easyCriteria.setDistinctTrue();
easyCriteria.innerJoin("joinEntityEmbeddedId.entityEmbeddedIdList");
easyCriteria.andLessThan("joinEntityEmbeddedId.entityEmbeddedIdList.id.idInteger", 2);
final List<EntityEmbeddedId> resultList = easyCriteria.getResultList();
assertEquals(resultFromJPQL.size(), resultList.size());
assertTrue(resultFromJPQL.containsAll(resultList));
}
@Test
public void isMultipleJoinWithLessOrEqualToWorking() {
if (isOpenJPA()) {
// there is a OpenJPA bug for this: https://issues.apache.org/jira/browse/OPENJPA-1806
return;
}
final String query = "select e from EntityEmbeddedId e " +
"join e.joinEntityEmbeddedId j " +
"join j.entityEmbeddedIdList ee " +
" where ee.id.idInteger <= 2";
final List<EntityEmbeddedId> resultFromJPQL = getListFromJPQL(query, EntityEmbeddedId.class);
assertTrue(resultFromJPQL.size() > 0);
final EasyCriteria<EntityEmbeddedId> easyCriteria = EasyCriteriaFactory.createQueryCriteria(getEntityManager(), EntityEmbeddedId.class);
easyCriteria.setDistinctTrue();
easyCriteria.innerJoin("joinEntityEmbeddedId.entityEmbeddedIdList");
easyCriteria.andLessOrEqualTo("joinEntityEmbeddedId.entityEmbeddedIdList.id.idInteger", 2);
final List<EntityEmbeddedId> resultList = easyCriteria.getResultList();
assertEquals(resultFromJPQL.size(), resultList.size());
assertTrue(resultFromJPQL.containsAll(resultList));
}
@Test
public void isMultipleJoinWithGreaterThanWorking() {
if (isOpenJPA()) {
// there is a OpenJPA bug for this: https://issues.apache.org/jira/browse/OPENJPA-1806
return;
}
final String query = "select e from EntityEmbeddedId e " +
"join e.joinEntityEmbeddedId j " +
"join j.entityEmbeddedIdList ee " +
" where ee.id.idInteger >= 2";
final List<EntityEmbeddedId> resultFromJPQL = getListFromJPQL(query, EntityEmbeddedId.class);
assertTrue(resultFromJPQL.size() > 0);
final EasyCriteria<EntityEmbeddedId> easyCriteria = EasyCriteriaFactory.createQueryCriteria(getEntityManager(), EntityEmbeddedId.class);
easyCriteria.setDistinctTrue();
easyCriteria.innerJoin("joinEntityEmbeddedId.entityEmbeddedIdList");
easyCriteria.andGreaterOrEqualTo("joinEntityEmbeddedId.entityEmbeddedIdList.id.idInteger", 2);
final List<EntityEmbeddedId> resultList = easyCriteria.getResultList();
assertEquals(resultFromJPQL.size(), resultList.size());
assertTrue(resultFromJPQL.containsAll(resultList));
}
@Test
public void isMultipleJoinWithOrWorking() {
if (isOpenJPA()) {
// there is a OpenJPA bug for this: https://issues.apache.org/jira/browse/OPENJPA-1806
return;
}
final String query = "select e from EntityEmbeddedId e " +
"join e.joinEntityEmbeddedId j " +
"join j.entityEmbeddedIdList ee " +
" where ee.id.idInteger = 1 or ee.id.idInteger = 3";
final List<EntityEmbeddedId> resultFromJPQL = getListFromJPQL(query, EntityEmbeddedId.class);
assertTrue(resultFromJPQL.size() > 0);
final EasyCriteria<EntityEmbeddedId> easyCriteria = EasyCriteriaFactory.createQueryCriteria(getEntityManager(), EntityEmbeddedId.class);
easyCriteria.setDistinctTrue();
easyCriteria.innerJoin("joinEntityEmbeddedId.entityEmbeddedIdList");
easyCriteria.orEquals("joinEntityEmbeddedId.entityEmbeddedIdList.id.idInteger", 1, 3);
final List<EntityEmbeddedId> resultList = easyCriteria.getResultList();
assertEquals(resultFromJPQL.size(), resultList.size());
assertTrue(resultFromJPQL.containsAll(resultList));
}
@Test
public void isLikeWorking() {
final Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("idDummy", "%ey 3%");
final String query = "select e from EntityEmbeddedId e " +
"where e.id.idString like :idDummy ";
final List<EntityEmbeddedId> resultFromJPQL = getListFromJPQL(query, EntityEmbeddedId.class, parameters);
assertTrue(resultFromJPQL.size() > 0);
final EasyCriteria<EntityEmbeddedId> easyCriteria = EasyCriteriaFactory.createQueryCriteria(getEntityManager(), EntityEmbeddedId.class);
easyCriteria.andStringLike("id.idString", "%ey 3%");
final List<EntityEmbeddedId> resultList = easyCriteria.getResultList();
assertEquals(resultFromJPQL.size(), resultList.size());
assertTrue(resultFromJPQL.containsAll(resultList));
}
}