diff --git a/cars4you/pom.xml b/cars4you/pom.xml
index e68d680..e3222ec 100644
--- a/cars4you/pom.xml
+++ b/cars4you/pom.xml
@@ -49,6 +49,12 @@
provided
+
+ com.vladmihalcea
+ hibernate-types-52
+ 2.8.0
+
+
diff --git a/cars4you/src/main/java/com/cars/car4you/api/CarsController.java b/cars4you/src/main/java/com/cars/car4you/api/CarsController.java
index 792f6b4..350d500 100644
--- a/cars4you/src/main/java/com/cars/car4you/api/CarsController.java
+++ b/cars4you/src/main/java/com/cars/car4you/api/CarsController.java
@@ -1,6 +1,8 @@
package com.cars.car4you.api;
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 org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
@@ -16,6 +18,9 @@ public class CarsController {
@Autowired
private CarRepository carRepository;
+ @Autowired
+ private CarDetailRepository carDetailRepository;
+
@GetMapping("/{id}")
public Car findOne(@PathVariable Long id) {
diff --git a/cars4you/src/main/java/com/cars/car4you/dto/CarDto.java b/cars4you/src/main/java/com/cars/car4you/dto/CarDto.java
new file mode 100644
index 0000000..4fee402
--- /dev/null
+++ b/cars4you/src/main/java/com/cars/car4you/dto/CarDto.java
@@ -0,0 +1,4 @@
+package com.cars.car4you.dto;
+
+public class CarDto {
+}
diff --git a/cars4you/src/main/java/com/cars/car4you/model/Car.java b/cars4you/src/main/java/com/cars/car4you/model/Car.java
index 7bd064a..2930dc7 100644
--- a/cars4you/src/main/java/com/cars/car4you/model/Car.java
+++ b/cars4you/src/main/java/com/cars/car4you/model/Car.java
@@ -2,14 +2,19 @@ package com.cars.car4you.model;
import lombok.Data;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Id;
+import javax.persistence.*;
@Entity
@Data
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
private long id;
diff --git a/cars4you/src/main/java/com/cars/car4you/model/CarDetails.java b/cars4you/src/main/java/com/cars/car4you/model/CarDetails.java
index 35b0a64..9a71e83 100644
--- a/cars4you/src/main/java/com/cars/car4you/model/CarDetails.java
+++ b/cars4you/src/main/java/com/cars/car4you/model/CarDetails.java
@@ -1,10 +1,53 @@
package com.cars.car4you.model;
+import com.vladmihalcea.hibernate.type.array.StringArrayType;
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
@Data
+@Table(name = "car_details")
+@TypeDefs(@TypeDef(name = "string-array", typeClass = StringArrayType.class))
public class CarDetails {
+
+// @OneToMany(mappedBy = "car_details_id")
+// private List 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;
+
}
diff --git a/cars4you/src/main/java/com/cars/car4you/repository/CarDetailRepository.java b/cars4you/src/main/java/com/cars/car4you/repository/CarDetailRepository.java
new file mode 100644
index 0000000..0e624af
--- /dev/null
+++ b/cars4you/src/main/java/com/cars/car4you/repository/CarDetailRepository.java
@@ -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 {
+ List findByModel(String model);
+
+}
diff --git a/cars4you/src/main/java/com/cars/car4you/repository/CarRepositoryImpl.java b/cars4you/src/main/java/com/cars/car4you/repository/CarRepositoryImpl.java
index f6b8cee..c234110 100644
--- a/cars4you/src/main/java/com/cars/car4you/repository/CarRepositoryImpl.java
+++ b/cars4you/src/main/java/com/cars/car4you/repository/CarRepositoryImpl.java
@@ -1,9 +1,6 @@
package com.cars.car4you.repository;
-import com.cars.car4you.model.Car;
-import com.cars.car4you.model.CarType;
-import com.cars.car4you.model.DriveType;
-import com.cars.car4you.model.FuelType;
+import com.cars.car4you.model.*;
import org.springframework.stereotype.Service;
import javax.persistence.EntityManager;
@@ -12,7 +9,6 @@ import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
-import javax.script.ScriptEngine;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
@@ -26,11 +22,12 @@ public class CarRepositoryImpl implements CustomCarRepository {
@Override
public List findByCriterion(int maxPrice, int maxYearsOld,
int seats, CarType carType,
- ArrayList fuelTypes,
- String transmission, int enginePower, DriveType drivetype) {
+ String fuelType,
+ String transmission, int enginePower, String driveType) {
CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder();
CriteriaQuery cq = criteriaBuilder.createQuery(Car.class);
+
Root car = cq.from(Car.class);
List 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("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]));
return em.createQuery(cq).getResultList();
diff --git a/cars4you/src/main/java/com/cars/car4you/repository/CustomCarRepository.java b/cars4you/src/main/java/com/cars/car4you/repository/CustomCarRepository.java
index 76d7d18..823410e 100644
--- a/cars4you/src/main/java/com/cars/car4you/repository/CustomCarRepository.java
+++ b/cars4you/src/main/java/com/cars/car4you/repository/CustomCarRepository.java
@@ -2,16 +2,15 @@ package com.cars.car4you.repository;
import com.cars.car4you.model.Car;
import com.cars.car4you.model.CarType;
-import com.cars.car4you.model.DriveType;
-import com.cars.car4you.model.FuelType;
+import org.springframework.stereotype.Repository;
-import java.util.ArrayList;
import java.util.List;
+@Repository
public interface CustomCarRepository {
List findByCriterion(int maxPrice, int maxYearsOld,
int seats, CarType carType,
- ArrayList fuelTypes,
- String transmission, int enginePower, DriveType drivetype);
+ String fuelTypes,
+ String transmission, int enginePower, String drivetype);
}