Recommendation model
This commit is contained in:
parent
73c980f8e4
commit
2e12e65fc1
@ -49,6 +49,12 @@
|
|||||||
<scope>provided</scope>
|
<scope>provided</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.vladmihalcea</groupId>
|
||||||
|
<artifactId>hibernate-types-52</artifactId>
|
||||||
|
<version>2.8.0</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
package com.cars.car4you.api;
|
package com.cars.car4you.api;
|
||||||
|
|
||||||
import com.cars.car4you.model.Car;
|
import com.cars.car4you.model.Car;
|
||||||
|
import com.cars.car4you.model.CarDetails;
|
||||||
|
import com.cars.car4you.repository.CarDetailRepository;
|
||||||
import com.cars.car4you.repository.CarRepository;
|
import com.cars.car4you.repository.CarRepository;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
@ -16,6 +18,9 @@ public class CarsController {
|
|||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private CarRepository carRepository;
|
private CarRepository carRepository;
|
||||||
|
@Autowired
|
||||||
|
private CarDetailRepository carDetailRepository;
|
||||||
|
|
||||||
|
|
||||||
@GetMapping("/{id}")
|
@GetMapping("/{id}")
|
||||||
public Car findOne(@PathVariable Long id) {
|
public Car findOne(@PathVariable Long id) {
|
||||||
|
4
cars4you/src/main/java/com/cars/car4you/dto/CarDto.java
Normal file
4
cars4you/src/main/java/com/cars/car4you/dto/CarDto.java
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
package com.cars.car4you.dto;
|
||||||
|
|
||||||
|
public class CarDto {
|
||||||
|
}
|
@ -2,14 +2,19 @@ package com.cars.car4you.model;
|
|||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import javax.persistence.Column;
|
import javax.persistence.*;
|
||||||
import javax.persistence.Entity;
|
|
||||||
import javax.persistence.Id;
|
|
||||||
|
|
||||||
@Entity
|
@Entity
|
||||||
@Data
|
@Data
|
||||||
public class Car {
|
public class Car {
|
||||||
|
|
||||||
|
@ManyToOne
|
||||||
|
// @JoinTable(name = "car_details")
|
||||||
|
private CarDetails carDetails;
|
||||||
|
|
||||||
|
@Column(nullable = false, unique = false, insertable = false, updatable = false)
|
||||||
|
private long car_details_id;
|
||||||
|
|
||||||
@Id
|
@Id
|
||||||
private long id;
|
private long id;
|
||||||
|
|
||||||
|
@ -1,10 +1,53 @@
|
|||||||
package com.cars.car4you.model;
|
package com.cars.car4you.model;
|
||||||
|
|
||||||
|
import com.vladmihalcea.hibernate.type.array.StringArrayType;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import org.hibernate.annotations.Type;
|
||||||
|
import org.hibernate.annotations.TypeDef;
|
||||||
|
import org.hibernate.annotations.TypeDefs;
|
||||||
|
|
||||||
import javax.persistence.Entity;
|
import javax.persistence.*;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@Entity
|
@Entity
|
||||||
@Data
|
@Data
|
||||||
|
@Table(name = "car_details")
|
||||||
|
@TypeDefs(@TypeDef(name = "string-array", typeClass = StringArrayType.class))
|
||||||
public class CarDetails {
|
public class CarDetails {
|
||||||
|
|
||||||
|
// @OneToMany(mappedBy = "car_details_id")
|
||||||
|
// private List<Car> cars;
|
||||||
|
|
||||||
|
@Id
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
@Column(nullable = false, unique = false)
|
||||||
|
private String brand;
|
||||||
|
|
||||||
|
@Column(nullable = false, unique = false)
|
||||||
|
private String model;
|
||||||
|
|
||||||
|
@Column(nullable = false, unique = false)
|
||||||
|
private String version;
|
||||||
|
|
||||||
|
@Column(nullable = true, unique = false)
|
||||||
|
private Long price_from;
|
||||||
|
|
||||||
|
@Column(nullable = true, unique = false)
|
||||||
|
private Long price_to;
|
||||||
|
|
||||||
|
@Column(nullable = true, unique = false)
|
||||||
|
private Double average;
|
||||||
|
|
||||||
|
@Type(type = "string-array" )
|
||||||
|
@Column(name = "car_pros")
|
||||||
|
private String[] car_pros;
|
||||||
|
|
||||||
|
@Type(type = "string-array" )
|
||||||
|
@Column(name = "car_cons")
|
||||||
|
private String[] car_cons;
|
||||||
|
|
||||||
|
@Column(nullable = true, unique = false)
|
||||||
|
private Double rating;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,14 @@
|
|||||||
|
package com.cars.car4you.repository;
|
||||||
|
|
||||||
|
import com.cars.car4you.model.Car;
|
||||||
|
import com.cars.car4you.model.CarDetails;
|
||||||
|
import org.springframework.data.repository.CrudRepository;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Repository
|
||||||
|
public interface CarDetailRepository extends CrudRepository<CarDetails, Long> {
|
||||||
|
List<CarDetails> findByModel(String model);
|
||||||
|
|
||||||
|
}
|
@ -1,9 +1,6 @@
|
|||||||
package com.cars.car4you.repository;
|
package com.cars.car4you.repository;
|
||||||
|
|
||||||
import com.cars.car4you.model.Car;
|
import com.cars.car4you.model.*;
|
||||||
import com.cars.car4you.model.CarType;
|
|
||||||
import com.cars.car4you.model.DriveType;
|
|
||||||
import com.cars.car4you.model.FuelType;
|
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import javax.persistence.EntityManager;
|
import javax.persistence.EntityManager;
|
||||||
@ -12,7 +9,6 @@ import javax.persistence.criteria.CriteriaBuilder;
|
|||||||
import javax.persistence.criteria.CriteriaQuery;
|
import javax.persistence.criteria.CriteriaQuery;
|
||||||
import javax.persistence.criteria.Predicate;
|
import javax.persistence.criteria.Predicate;
|
||||||
import javax.persistence.criteria.Root;
|
import javax.persistence.criteria.Root;
|
||||||
import javax.script.ScriptEngine;
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -26,11 +22,12 @@ public class CarRepositoryImpl implements CustomCarRepository {
|
|||||||
@Override
|
@Override
|
||||||
public List<Car> findByCriterion(int maxPrice, int maxYearsOld,
|
public List<Car> findByCriterion(int maxPrice, int maxYearsOld,
|
||||||
int seats, CarType carType,
|
int seats, CarType carType,
|
||||||
ArrayList<FuelType> fuelTypes,
|
String fuelType,
|
||||||
String transmission, int enginePower, DriveType drivetype) {
|
String transmission, int enginePower, String driveType) {
|
||||||
CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder();
|
CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder();
|
||||||
CriteriaQuery<Car> cq = criteriaBuilder.createQuery(Car.class);
|
CriteriaQuery<Car> cq = criteriaBuilder.createQuery(Car.class);
|
||||||
|
|
||||||
|
|
||||||
Root<Car> car = cq.from(Car.class);
|
Root<Car> car = cq.from(Car.class);
|
||||||
List<Predicate> predicates = new ArrayList<>();
|
List<Predicate> predicates = new ArrayList<>();
|
||||||
|
|
||||||
@ -42,6 +39,11 @@ public class CarRepositoryImpl implements CustomCarRepository {
|
|||||||
|
|
||||||
predicates.add(criteriaBuilder.greaterThanOrEqualTo(car.get("year"),localDateTime.getYear() - maxYearsOld));
|
predicates.add(criteriaBuilder.greaterThanOrEqualTo(car.get("year"),localDateTime.getYear() - maxYearsOld));
|
||||||
|
|
||||||
|
predicates.add(criteriaBuilder.greaterThanOrEqualTo(car.get("engine_power"), enginePower));
|
||||||
|
predicates.add(criteriaBuilder.like(car.get("transmission"), "%" + transmission + "%"));
|
||||||
|
predicates.add(criteriaBuilder.like(car.get("fuel"), "%" + fuelType + "%"));
|
||||||
|
predicates.add(criteriaBuilder.like(car.get("drivetype"), "%" + fuelType + "%"));
|
||||||
|
|
||||||
cq.where(predicates.toArray(new Predicate[0]));
|
cq.where(predicates.toArray(new Predicate[0]));
|
||||||
|
|
||||||
return em.createQuery(cq).getResultList();
|
return em.createQuery(cq).getResultList();
|
||||||
|
@ -2,16 +2,15 @@ package com.cars.car4you.repository;
|
|||||||
|
|
||||||
import com.cars.car4you.model.Car;
|
import com.cars.car4you.model.Car;
|
||||||
import com.cars.car4you.model.CarType;
|
import com.cars.car4you.model.CarType;
|
||||||
import com.cars.car4you.model.DriveType;
|
import org.springframework.stereotype.Repository;
|
||||||
import com.cars.car4you.model.FuelType;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
@Repository
|
||||||
public interface CustomCarRepository {
|
public interface CustomCarRepository {
|
||||||
List<Car> findByCriterion(int maxPrice, int maxYearsOld,
|
List<Car> findByCriterion(int maxPrice, int maxYearsOld,
|
||||||
int seats, CarType carType,
|
int seats, CarType carType,
|
||||||
ArrayList<FuelType> fuelTypes,
|
String fuelTypes,
|
||||||
String transmission, int enginePower, DriveType drivetype);
|
String transmission, int enginePower, String drivetype);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user