diff --git a/cars/pom.xml b/cars/pom.xml
index 43b1e4c..77508a0 100644
--- a/cars/pom.xml
+++ b/cars/pom.xml
@@ -49,6 +49,25 @@
spring-boot-starter-test
test
+
+ javax.xml.bind
+ jaxb-api
+ 2.3.0-b170201.1204
+
+
+
+
+ javax.activation
+ activation
+ 1.1
+
+
+
+
+ org.glassfish.jaxb
+ jaxb-runtime
+ 2.3.0-b170127.1453
+
diff --git a/cars/src/main/java/com/mooveit/cars/CarController.java b/cars/src/main/java/com/mooveit/cars/CarController.java
new file mode 100644
index 0000000..885f682
--- /dev/null
+++ b/cars/src/main/java/com/mooveit/cars/CarController.java
@@ -0,0 +1,45 @@
+package com.mooveit.cars;
+
+import java.util.List;
+import java.util.Optional;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.mooveit.cars.domain.Car;
+import com.mooveit.cars.repositories.CarRepository;
+
+@RestController
+public class CarController {
+
+ @Autowired
+ private CarRepository carRepository;
+
+
+ @GetMapping("/cars/{id}")
+ @ResponseBody
+ public Optional findById(@PathVariable Long id)
+ {
+ return carRepository.findById(id);
+ }
+
+// @GetMapping("/cars/{brand}")
+// @ResponseBody
+// public Car findByBrand(@PathVariable String brand)
+// {
+// return carRepository.findByBrand(brand);
+// }
+
+
+
+ @GetMapping("/cars")
+ @ResponseBody
+ public List findAll()
+ {
+ return carRepository.findAll();
+
+ }
+}
\ No newline at end of file
diff --git a/cars/src/main/java/com/mooveit/cars/CarsApplication.java b/cars/src/main/java/com/mooveit/cars/CarsApplication.java
index 9599fc9..58c4f44 100644
--- a/cars/src/main/java/com/mooveit/cars/CarsApplication.java
+++ b/cars/src/main/java/com/mooveit/cars/CarsApplication.java
@@ -10,8 +10,8 @@
@EnableScheduling
public class CarsApplication {
- public static void main(String[] args) {
- SpringApplication.run(CarsApplication.class, args);
- }
+ public static void main(String[] args) {
+ SpringApplication.run(CarsApplication.class, args);
+ }
}
diff --git a/cars/src/main/java/com/mooveit/cars/domain/Car.java b/cars/src/main/java/com/mooveit/cars/domain/Car.java
new file mode 100644
index 0000000..1cfad03
--- /dev/null
+++ b/cars/src/main/java/com/mooveit/cars/domain/Car.java
@@ -0,0 +1,184 @@
+package com.mooveit.cars.domain;
+
+import java.io.Serializable;
+
+import javax.persistence.Column;
+import javax.persistence.Embedded;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+
+
+@Entity
+@Table(name = "Model")
+@XmlRootElement(name = "MODEL")
+//@SecondaryTable(name = "SUBMODEL", pkJoinColumns = @PrimaryKeyJoinColumn(name = "model_name"))
+public class Car implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @Id
+ @GeneratedValue
+ private long id;
+
+ @Column(name = "model_name")
+ @XmlAttribute(name = "name")
+ private String name;
+
+ @Column(name = "model_from")
+ @XmlAttribute(name = "from")
+ private String froom;
+
+ @Column(name = "to")
+ @XmlAttribute(name = "to")
+ private String too;
+
+ @Column(name = "type")
+ @XmlAttribute(name = "type")
+ private String type;
+
+ @Embedded
+ @XmlElement(name = "ENGINE")
+ private Engine engine;
+
+ @Embedded
+ @XmlElement(name = "WHEELS")
+ private Wheel wheel;
+
+// private ArrayList models = new ArrayList<>();
+//
+// @XmlElementWrapper(name = "submodels")
+// @XmlElement(name = "model")
+// public ArrayList getModels() {
+// return models;
+// }
+//
+// public void setModels(ArrayList models) {
+// this.models = models;
+// }
+
+ public Car() {
+ super();
+ }
+
+ public Car(String name, String from, String to, String type, Engine engine, Wheel wheel) {
+ super();
+ this.name = name;
+ this.froom = from;
+ this.too = to;
+ this.type = type;
+ this.engine = engine;
+ this.wheel = wheel;
+ }
+
+ //Setters and Getters
+
+ @Override
+ public String toString() {
+ return "Model [name=" + name + ", from=" + froom + ", to="
+ + too + ", type ="+ type + "]";
+ }
+}
+
+
+@XmlRootElement(name = "WHEELS")
+class Wheel implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @Column(name = "wheel_size")
+ @XmlAttribute(name = "size")
+ String size;
+
+ @Column(name = "wheel_type")
+ @XmlAttribute(name = "type")
+ String type;
+
+ public Wheel() {
+ super();
+ }
+
+ public Wheel(String size, String type) {
+ super();
+ this.size = size;
+ this.type = type;
+ }
+
+ //Setters and Getters
+
+ @Override
+ public String toString() {
+ return "Wheel [size=" + size + ", type=" + type + "]";
+ }
+
+}
+
+
+@XmlRootElement(name = "ENGINE")
+class Engine implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @Column(name = "engine_power")
+ @XmlAttribute(name = "power")
+ String power;
+
+ @Column(name = "engine_type")
+ @XmlAttribute(name = "type")
+ String type;
+
+ public Engine() {
+ super();
+ }
+
+ public Engine(String power, String type) {
+ super();
+ this.power = power;
+ this.type = type;
+ }
+
+ //Setters and Getters
+
+ @Override
+ public String toString() {
+ return "Engine [power=" + power + ", type=" + type + "]";
+ }
+
+}
+
+/*@XmlRootElement(name = "Model")
+class Model implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ //@Column(name = "submodel_name")
+ @XmlAttribute(name = "name")
+ String name;
+
+ //@Column(name = "line")
+ @XmlAttribute(name = "line")
+ String line;
+
+ public Model() {
+ super();
+ }
+
+ public Model(String name, String line) {
+ super();
+ this.name = name;
+ this.line = line;
+ }
+
+ //Setters and Getters
+
+ @Override
+ public String toString() {
+ return "Model [name=" + name + ", line=" + line + "]";
+ }
+}*/
+
+
diff --git a/cars/src/main/java/com/mooveit/cars/domain/Catalogue.java b/cars/src/main/java/com/mooveit/cars/domain/Catalogue.java
new file mode 100644
index 0000000..eb1daea
--- /dev/null
+++ b/cars/src/main/java/com/mooveit/cars/domain/Catalogue.java
@@ -0,0 +1,42 @@
+package com.mooveit.cars.domain;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+
+@XmlRootElement(name = "CATALOGUE")
+public class Catalogue implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @XmlElement(name = "MODEL")
+ private ArrayList models;
+
+ public void setModelsList(ArrayList < Car > modelsList) {
+ this.models = modelsList;
+ }
+
+ public List < Car > getModelsList() {
+ return models;
+ }
+
+ public Catalogue() {
+ super();
+ }
+
+ public Catalogue(ArrayList models) {
+ super();
+
+ this.models = models;
+ }
+
+ //Setters and Getters
+
+ @Override
+ public String toString() {
+ return "Catalogue [number of models =" + models.size() + "]";
+ }
+}
\ No newline at end of file
diff --git a/cars/src/main/java/com/mooveit/cars/repositories/CarRepository.java b/cars/src/main/java/com/mooveit/cars/repositories/CarRepository.java
new file mode 100644
index 0000000..fbeb099
--- /dev/null
+++ b/cars/src/main/java/com/mooveit/cars/repositories/CarRepository.java
@@ -0,0 +1,11 @@
+package com.mooveit.cars.repositories;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+
+import com.mooveit.cars.domain.Car;
+
+public interface CarRepository extends JpaRepository
+{
+ // Car findByBrand(String brand);
+
+}
\ No newline at end of file
diff --git a/cars/src/main/java/com/mooveit/cars/tasks/FordIngesterTask.java b/cars/src/main/java/com/mooveit/cars/tasks/FordIngesterTask.java
index a04f791..32cd736 100644
--- a/cars/src/main/java/com/mooveit/cars/tasks/FordIngesterTask.java
+++ b/cars/src/main/java/com/mooveit/cars/tasks/FordIngesterTask.java
@@ -1,15 +1,57 @@
package com.mooveit.cars.tasks;
-import lombok.extern.slf4j.Slf4j;
+import java.io.File;
+import java.io.IOException;
+
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Unmarshaller;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.io.Resource;
+import org.springframework.core.io.ResourceLoader;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
+import com.mooveit.cars.domain.Catalogue;
+import com.mooveit.cars.repositories.CarRepository;
+
+import lombok.extern.slf4j.Slf4j;
+
@Slf4j
@Service
public class FordIngesterTask {
+ @Autowired
+ ResourceLoader resourceLoader;
+
+ @Autowired
+ private CarRepository carRepository;
+
+ @Scheduled(cron = "${cars.ford.ingester.runCron}")
+ public void ingestFile() throws IOException {
+ System.out.println("*********Ingesting File****************");
+ Resource resource=resourceLoader.getResource("classpath:ford-example.xml");
+ File xmlFile = resource.getFile();
+ JAXBContext jaxbContext;
+ try
+ {
+ jaxbContext = JAXBContext.newInstance(Catalogue.class);
+
+ Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
+
+ Catalogue catalogue = (Catalogue) jaxbUnmarshaller.unmarshal(xmlFile);
+ System.out.println("***Printing Catalogue models count******" + catalogue.getModelsList().size());
+ System.out.println(catalogue.getModelsList().get(0).toString());
+ carRepository.saveAll(catalogue.getModelsList());
+ System.out.println("**********Print inserted data*********" + carRepository.findAll());
+ }
+ catch (JAXBException e)
+ {
+ e.printStackTrace();
+ }
+
- @Scheduled(cron = "${cars.ford.ingester.runCron}")
- public void ingestFile() {
- log.warn("Not implemented yet.");
- }
+ }
}
diff --git a/cars/src/main/resources/application.yml b/cars/src/main/resources/application.yml
index 436f591..70e0ed0 100644
--- a/cars/src/main/resources/application.yml
+++ b/cars/src/main/resources/application.yml
@@ -12,3 +12,4 @@ spring:
jpa:
database-platform: 'org.hibernate.dialect.H2Dialect'
h2.console.enabled: true
+ ddl-auto: create-drop
diff --git a/cars/src/test/java/com/mooveit/cars/CarsApplicationTests.java b/cars/src/test/java/com/mooveit/cars/CarsApplicationTests.java
index 426b96d..678cb30 100644
--- a/cars/src/test/java/com/mooveit/cars/CarsApplicationTests.java
+++ b/cars/src/test/java/com/mooveit/cars/CarsApplicationTests.java
@@ -9,8 +9,8 @@
@SpringBootTest
public class CarsApplicationTests {
- @Test
- public void contextLoads() {
- }
+ @Test
+ public void contextLoads() {
+ }
}