Skip to content

Commit

Permalink
#8688: PoC for TaskFacade.getIndexList to reuse joins for Contact & Case
Browse files Browse the repository at this point in the history
  • Loading branch information
StefanKock committed Apr 5, 2022
1 parent 88924c4 commit 40033f8
Show file tree
Hide file tree
Showing 9 changed files with 120 additions and 257 deletions.
Expand Up @@ -21,6 +21,10 @@ public CaseQueryContext(CriteriaBuilder cb, CriteriaQuery<?> query, From<T, Case
super(cb, query, root, new CaseJoins<>(root));
}

public CaseQueryContext(CriteriaBuilder cb, CriteriaQuery<?> query, CaseJoins<T> joins) {
super(cb, query, joins.getRoot(), joins);
}

@Override
protected Expression<?> createExpression(String name) {

Expand Down
Expand Up @@ -32,16 +32,17 @@
import de.symeda.sormas.backend.infrastructure.region.Region;
import de.symeda.sormas.backend.location.Location;
import de.symeda.sormas.backend.person.Person;
import de.symeda.sormas.backend.person.PersonJoins;
import de.symeda.sormas.backend.sample.Sample;
import de.symeda.sormas.backend.symptoms.Symptoms;
import de.symeda.sormas.backend.user.User;
import de.symeda.sormas.backend.util.AbstractDomainObjectJoins;
import de.symeda.sormas.backend.visit.Visit;
import de.symeda.sormas.utils.CaseJoins;

public class ContactJoins<T> extends AbstractDomainObjectJoins<T, Contact> {

private Join<Contact, Person> person;
// private CaseJoins<Contact> caseJoins;
private Join<Contact, Case> caze;
private Join<Contact, Case> resultingCase;
private Join<Case, Person> casePerson;
Expand Down Expand Up @@ -86,10 +87,11 @@ public class ContactJoins<T> extends AbstractDomainObjectJoins<T, Contact> {

private Join<Contact, User> followUpStatusChangeUser;

private CaseJoins<Contact> caseJoins;
private PersonJoins<Contact> personJoins;

public ContactJoins(From<T, Contact> contact) {
super(contact);

// this.caseJoins = new CaseJoins<>(contact.join(Contact.CAZE));
}

public Join<Contact, Person> getPerson() {
Expand Down Expand Up @@ -395,4 +397,20 @@ public Join<Contact, User> getFollowUpStatusChangeUser() {
private void setFollowUpStatusChangeUser(Join<Contact, User> followUpStatusChangeUser) {
this.followUpStatusChangeUser = followUpStatusChangeUser;
}

public CaseJoins<Contact> getCaseJoins() {
return getOrCreate(caseJoins, () -> new CaseJoins<Contact>(getCaze()), this::setCaseJoins);
}

private void setCaseJoins(CaseJoins<Contact> caseJoins) {
this.caseJoins = caseJoins;
}

public PersonJoins<Contact> getPersonJoins() {
return getOrCreate(personJoins, () -> new PersonJoins<Contact>(getPerson()), this::setPersonJoins);
}

private void setPersonJoins(PersonJoins<Contact> personJoins) {
this.personJoins = personJoins;
}
}
Expand Up @@ -20,6 +20,10 @@ public ContactQueryContext(CriteriaBuilder cb, CriteriaQuery<?> query, From<T, C
super(cb, query, root, new ContactJoins(root));
}

public ContactQueryContext(CriteriaBuilder cb, CriteriaQuery<?> query, ContactJoins<T> joins) {
super(cb, query, joins.getRoot(), joins);
}

@Override
protected Expression<?> createExpression(String name) {

Expand Down
Expand Up @@ -678,8 +678,8 @@ public List<TaskExportDto> getExportList(TaskCriteria criteria, Collection<Strin
CaseQueryContext<Task> caseQueryContext = new CaseQueryContext<>(cb, cq, joins.getCaze());
ContactQueryContext<Task> contactQueryContext = new ContactQueryContext<>(cb, cq, joins.getContact());

LocationJoins<Person> casePersonAddressJoins = joins.getCasePersonJoins().getAddressJoins();
LocationJoins<Person> contactPersonAddressJoins = joins.getContactPersonJoins().getAddressJoins();
LocationJoins<Person> casePersonAddressJoins = joins.getCaseJoins().getPersonJoins().getAddressJoins();
LocationJoins<Person> contactPersonAddressJoins = joins.getContactJoins().getPersonJoins().getAddressJoins();

//@formatter:off
cq.multiselect(task.get(Task.UUID), task.get(Task.TASK_CONTEXT),
Expand Down

0 comments on commit 40033f8

Please sign in to comment.