Implement reached locations query (1.2.2 a)

This commit is contained in:
Tobias Eidelpes 2021-04-05 18:28:18 +02:00
parent 7b2199ea99
commit e715ce7f62
2 changed files with 28 additions and 4 deletions

View File

@ -2,10 +2,16 @@ package dst.ass1.jpa.dao.impl;
import dst.ass1.jpa.dao.ILocationDAO; import dst.ass1.jpa.dao.ILocationDAO;
import dst.ass1.jpa.model.ILocation; import dst.ass1.jpa.model.ILocation;
import dst.ass1.jpa.model.ITrip;
import dst.ass1.jpa.model.impl.Location; import dst.ass1.jpa.model.impl.Location;
import javax.persistence.EntityManager; import javax.persistence.EntityManager;
import javax.persistence.Query;
import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.List;
import static dst.ass1.jpa.util.Constants.Q_REACHED_LOCATIONS;
public class LocationDAO extends GenericDAO<ILocation> implements ILocationDAO { public class LocationDAO extends GenericDAO<ILocation> implements ILocationDAO {
public LocationDAO(EntityManager entityManager) { public LocationDAO(EntityManager entityManager) {
@ -14,6 +20,20 @@ public class LocationDAO extends GenericDAO<ILocation> implements ILocationDAO {
@Override @Override
public Collection<Long> findReachedLocationIds() { public Collection<Long> findReachedLocationIds() {
return null; Query query = super.entityManager.createNamedQuery(Q_REACHED_LOCATIONS);
List<ITrip> trips = query.getResultList();
List<Long> reachedLocationIds = new ArrayList<>();
for (ITrip trip : trips) {
// Add destinations
if (!reachedLocationIds.contains(trip.getDestination().getLocationId()))
reachedLocationIds.add(trip.getDestination().getLocationId());
// Add stops
for (ILocation location : trip.getStops()) {
if (!reachedLocationIds.contains(location.getLocationId()))
reachedLocationIds.add(location.getLocationId());
}
}
return reachedLocationIds;
} }
} }

View File

@ -1,13 +1,17 @@
package dst.ass1.jpa.model.impl; package dst.ass1.jpa.model.impl;
import dst.ass1.jpa.model.ILocation; import dst.ass1.jpa.model.ILocation;
import dst.ass1.jpa.model.ITrip;
import javax.persistence.*; import javax.persistence.*;
import java.util.ArrayList;
import java.util.Collection; import static dst.ass1.jpa.util.Constants.Q_REACHED_LOCATIONS;
@Entity @Entity
@NamedQuery(
name = Q_REACHED_LOCATIONS,
query = "SELECT t FROM Trip t " +
"WHERE t.state = 6"
)
public class Location implements ILocation { public class Location implements ILocation {
@Id @GeneratedValue @Id @GeneratedValue
private Long id; private Long id;