View Javadoc
1   package org.woehlke.jakartaee.petclinic.owner.db;
2   
3   import jakarta.ejb.EJB;
4   import jakarta.ejb.Stateless;
5   import jakarta.validation.constraints.NotNull;
6   import lombok.extern.java.Log;
7   import org.woehlke.jakartaee.petclinic.pet.db.PetDao;
8   import org.woehlke.jakartaee.petclinic.visit.db.VisitDao;
9   import org.woehlke.jakartaee.petclinic.owner.Owner;
10  import org.woehlke.jakartaee.petclinic.pet.Pet;
11  import org.woehlke.jakartaee.petclinic.visit.Visit;
12  
13  import jakarta.annotation.PostConstruct;
14  import jakarta.annotation.PreDestroy;
15  
16  import java.io.Serializable;
17  import java.util.List;
18  
19  /**
20   * Created by tw on 10.03.14.
21   */
22  @Log
23  @Stateless
24  public class OwnerServiceImpl implements OwnerService, Serializable {
25  
26      private static final long serialVersionUID = -553095693269912269L;
27  
28      @EJB
29      private OwnerDao ownerDao;
30  
31      @EJB
32      private PetDao petDao;
33  
34      @EJB
35      private VisitDao visitDao;
36  
37      @Override
38      public Visit addNewVisit(Visit visit) {
39          log.info("addNew Visit: " + visit.toString());
40          Pet pet = visit.getPet();
41          Owner owner = pet.getOwner();
42          visit.setPet(null);
43          visit = visitDao.addNew(visit);
44          owner = ownerDao.update(owner);
45          pet.setOwner(owner);
46          pet = petDao.update(pet);
47          visit.setPet(pet);
48          visit = visitDao.update(visit);
49          log.info("added new Visit - updated owner: " + owner.toString());
50          log.info("added new Visit - updated pet:   " + pet.toString());
51          log.info("added new Visit:                 " + visit.toString());
52          return visit;
53      }
54  
55      @Override
56      public List<Pet> getPetsAsList(@NotNull Owner owner){
57          return petDao.getPetsAsList(owner);
58      }
59  
60      @Override
61      public String getPetsAsString(@NotNull Owner owner) {
62          StringBuilder s = new StringBuilder();
63          for (Pet pet : this.getPetsAsList(owner)) {
64              s.append(pet.getName())
65                      .append(" (")
66                      .append(pet.getType().getName())
67                      .append(") ");
68          }
69          return s.toString();
70      }
71  
72      @Override
73      public void resetSearchIndex() {
74          for(Owner owner: this.getAll()){
75              for (Pet pet : this.getPetsAsList(owner)) {
76                  for(Visit visit:visitDao.getVisits(pet)){
77                      this.visitDao.update(visit);
78                  }
79                  this.petDao.update(pet);
80              }
81              this.ownerDao.update(owner);
82          }
83      }
84  
85      @Override
86      public List<Owner> getAll() {
87          return this.ownerDao.getAll();
88      }
89  
90      @Override
91      public void delete(long id) {
92          this.ownerDao.delete(id);
93      }
94  
95      @Override
96      public Owner addNew(Owner owner) {
97          //owner = this.updateSearchindex(owner); TODO
98          log.info("addNew Owner: " + owner.toString());
99          return this.ownerDao.addNew(owner);
100     }
101 
102     @Override
103     public Owner findById(long id) {
104         return this.ownerDao.findById(id);
105     }
106 
107     @Override
108     public Owner update(Owner owner) {
109         //owner = this.updateSearchindex(owner); TODO
110         log.info("update Owner: " + owner.toString());
111         return this.ownerDao.update(owner);
112     }
113 
114     private Owner updateSearchindex(Owner owner) {
115         //TODO
116         for(Pet pet:this.petDao.getPetsAsList(owner)){
117             for(Visit visit:visitDao.getVisits(pet)){
118                 this.visitDao.update(visit);
119             }
120             this.petDao.update(pet);
121         }
122         return owner;
123     }
124 
125     @Override
126     public List<Owner> search(String searchterm) {
127         return this.ownerDao.search(searchterm);
128     }
129 
130     @PostConstruct
131     public void postConstruct() {
132         log.info("postConstruct: "+OwnerServiceImpl.class.getSimpleName());
133     }
134 
135     @PreDestroy
136     public void preDestroy() {
137         log.info("preDestroy: "+OwnerServiceImpl.class.getSimpleName());
138     }
139 }