diff --git a/doc/README.md b/doc/README.md
index c0401cf..e43ce35 100644
--- a/doc/README.md
+++ b/doc/README.md
@@ -1,5 +1,13 @@
# SETUP
+## Requirements
+
+- Mongo DB
+- MySql DB
+
+## Docker
+
+ docker run -d -p 27017:27017 --name test-mongo mongo:latest
- Add following in settings.xml (MAVEN)
@@ -8,7 +16,9 @@
root
0cscadmin1
-
+ 27017
+ localhost
+ vehownserver
## Shell
i_set_loc C:\Users\yanni\Desktop\dev\priv\ODP-AppVehOwnServer\doc\data
diff --git a/doc/data/languages.json b/doc/data/languages.json
new file mode 100644
index 0000000..319c482
--- /dev/null
+++ b/doc/data/languages.json
@@ -0,0 +1,7 @@
+[
+ {
+ "locale": "en",
+ "name": "English",
+ "isStandard": true
+ }
+]
\ No newline at end of file
diff --git a/doc/generated/AppVehOwnServerDto.jar b/doc/generated/AppVehOwnServerDto.jar
index 1798ef1..7af9c53 100644
Binary files a/doc/generated/AppVehOwnServerDto.jar and b/doc/generated/AppVehOwnServerDto.jar differ
diff --git a/persistence/src/main/java/eu/csc/ODPAppVehOwnServer/persistence/entity/UserEntity.java b/persistence/src/main/java/eu/csc/ODPAppVehOwnServer/persistence/entity/UserEntity.java
index 1400f46..7cc2b4a 100644
--- a/persistence/src/main/java/eu/csc/ODPAppVehOwnServer/persistence/entity/UserEntity.java
+++ b/persistence/src/main/java/eu/csc/ODPAppVehOwnServer/persistence/entity/UserEntity.java
@@ -21,6 +21,8 @@ public class UserEntity extends AbstractEntity{
private String firstname;
private String lastname;
+ private String phone;
+ private String street;
@Column(nullable = false, unique = true)
private String email;
diff --git a/persistence/src/main/java/eu/csc/ODPAppVehOwnServer/persistence/entity/customer/CustomerConfigurationFileEntity.java b/persistence/src/main/java/eu/csc/ODPAppVehOwnServer/persistence/entity/customer/CustomerConfigurationFileEntity.java
new file mode 100644
index 0000000..a8a1108
--- /dev/null
+++ b/persistence/src/main/java/eu/csc/ODPAppVehOwnServer/persistence/entity/customer/CustomerConfigurationFileEntity.java
@@ -0,0 +1,4 @@
+package eu.csc.ODPAppVehOwnServer.persistence.entity.customer;
+
+public class CustomerConfigurationFileEntity {
+}
diff --git a/persistence/src/main/java/eu/csc/ODPAppVehOwnServer/persistence/entity/customer/CustomerMobilePhoneEntity.java b/persistence/src/main/java/eu/csc/ODPAppVehOwnServer/persistence/entity/customer/CustomerMobilePhoneEntity.java
new file mode 100644
index 0000000..9b4064d
--- /dev/null
+++ b/persistence/src/main/java/eu/csc/ODPAppVehOwnServer/persistence/entity/customer/CustomerMobilePhoneEntity.java
@@ -0,0 +1,27 @@
+package eu.csc.ODPAppVehOwnServer.persistence.entity.customer;
+
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Table;
+
+@Getter
+@Setter
+@NoArgsConstructor
+
+@Entity
+@Table(name = "tcustomer_mobile_phones")
+public class CustomerMobilePhoneEntity extends AbstractCustomerEntity{
+
+ @Column(unique = true, nullable = false)
+ private String identifier;
+
+ @Column(nullable = true)
+ private String name;
+
+ @Column(unique = true, nullable = true)
+ private String accessToken;
+}
diff --git a/persistence/src/main/java/eu/csc/ODPAppVehOwnServer/persistence/entity/data/DeviceEntity.java b/persistence/src/main/java/eu/csc/ODPAppVehOwnServer/persistence/entity/data/DeviceEntity.java
index f68dcea..6e7d275 100644
--- a/persistence/src/main/java/eu/csc/ODPAppVehOwnServer/persistence/entity/data/DeviceEntity.java
+++ b/persistence/src/main/java/eu/csc/ODPAppVehOwnServer/persistence/entity/data/DeviceEntity.java
@@ -27,6 +27,7 @@ public class DeviceEntity extends AbstractEntity {
@Column(nullable = false)
private String name;
+
@Column(nullable = true)
private String manufacturer;
diff --git a/persistence/src/main/java/eu/csc/ODPAppVehOwnServer/persistence/entity/data/LanguageEntity.java b/persistence/src/main/java/eu/csc/ODPAppVehOwnServer/persistence/entity/data/LanguageEntity.java
new file mode 100644
index 0000000..0ace667
--- /dev/null
+++ b/persistence/src/main/java/eu/csc/ODPAppVehOwnServer/persistence/entity/data/LanguageEntity.java
@@ -0,0 +1,26 @@
+package eu.csc.ODPAppVehOwnServer.persistence.entity.data;
+
+import eu.csc.ODPAppVehOwnServer.persistence.entity.AbstractEntity;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Table;
+
+@Getter
+@Setter
+@NoArgsConstructor
+
+@Entity
+@Table(name = "tlanguages")
+public class LanguageEntity extends AbstractEntity {
+
+ private String locale;
+
+ private String name;
+ @Column(nullable = false, name = "is_standard")
+ private boolean isStandard;
+
+}
diff --git a/persistence/src/main/java/eu/csc/ODPAppVehOwnServer/persistence/entity/data/VehicleModelEntity.java b/persistence/src/main/java/eu/csc/ODPAppVehOwnServer/persistence/entity/data/VehicleModelEntity.java
index 5d4069b..f8dd4b6 100644
--- a/persistence/src/main/java/eu/csc/ODPAppVehOwnServer/persistence/entity/data/VehicleModelEntity.java
+++ b/persistence/src/main/java/eu/csc/ODPAppVehOwnServer/persistence/entity/data/VehicleModelEntity.java
@@ -28,6 +28,8 @@ public class VehicleModelEntity extends AbstractEntity {
@Column(nullable = false)
private String name;
+ @Column(nullable = true)
+ private String imageName;
public void setBrand(VehicleBrandEntity brand) {
this.brand = brand;
diff --git a/persistence/src/main/java/eu/csc/ODPAppVehOwnServer/persistence/entity/mongo/FilesMongo.java b/persistence/src/main/java/eu/csc/ODPAppVehOwnServer/persistence/entity/mongo/FilesMongo.java
new file mode 100644
index 0000000..c18af33
--- /dev/null
+++ b/persistence/src/main/java/eu/csc/ODPAppVehOwnServer/persistence/entity/mongo/FilesMongo.java
@@ -0,0 +1,31 @@
+package eu.csc.ODPAppVehOwnServer.persistence.entity.mongo;
+
+import eu.csc.ODPAppVehOwnServer.persistence.entity.pub.FilesTypes;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import org.bson.types.Binary;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+import javax.persistence.Id;
+@Getter
+@Setter
+@NoArgsConstructor
+@Document(collection = "files")
+public class FilesMongo {
+ @Id
+ private String id;
+
+ private String title;
+
+ private Binary image;
+
+ @Enumerated(EnumType.STRING)
+ private FilesTypes imageType;
+
+ public FilesMongo(String title) {
+ this.title = title;
+ }
+}
diff --git a/persistence/src/main/java/eu/csc/ODPAppVehOwnServer/persistence/entity/pub/FilesTypes.java b/persistence/src/main/java/eu/csc/ODPAppVehOwnServer/persistence/entity/pub/FilesTypes.java
new file mode 100644
index 0000000..883b0db
--- /dev/null
+++ b/persistence/src/main/java/eu/csc/ODPAppVehOwnServer/persistence/entity/pub/FilesTypes.java
@@ -0,0 +1,9 @@
+package eu.csc.ODPAppVehOwnServer.persistence.entity.pub;
+
+public enum FilesTypes {
+
+ PNG,
+ JPEG,
+
+
+}
diff --git a/persistence/src/main/java/eu/csc/ODPAppVehOwnServer/persistence/respository/CustomerMobilePhoneRepository.java b/persistence/src/main/java/eu/csc/ODPAppVehOwnServer/persistence/respository/CustomerMobilePhoneRepository.java
new file mode 100644
index 0000000..ce1261c
--- /dev/null
+++ b/persistence/src/main/java/eu/csc/ODPAppVehOwnServer/persistence/respository/CustomerMobilePhoneRepository.java
@@ -0,0 +1,13 @@
+package eu.csc.ODPAppVehOwnServer.persistence.respository;
+
+import eu.csc.ODPAppVehOwnServer.persistence.entity.customer.CustomerMobilePhoneEntity;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+
+@Repository
+public interface CustomerMobilePhoneRepository extends JpaRepository {
+
+
+
+}
diff --git a/persistence/src/main/java/eu/csc/ODPAppVehOwnServer/persistence/respository/LanguageRepository.java b/persistence/src/main/java/eu/csc/ODPAppVehOwnServer/persistence/respository/LanguageRepository.java
new file mode 100644
index 0000000..52d46e5
--- /dev/null
+++ b/persistence/src/main/java/eu/csc/ODPAppVehOwnServer/persistence/respository/LanguageRepository.java
@@ -0,0 +1,14 @@
+package eu.csc.ODPAppVehOwnServer.persistence.respository;
+
+import eu.csc.ODPAppVehOwnServer.persistence.entity.data.DeviceEntity;
+import eu.csc.ODPAppVehOwnServer.persistence.entity.data.LanguageEntity;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+import java.util.Optional;
+
+@Repository
+public interface LanguageRepository extends JpaRepository {
+
+
+}
diff --git a/persistence/src/main/java/eu/csc/ODPAppVehOwnServer/persistence/respository/mongo/FilesRepository.java b/persistence/src/main/java/eu/csc/ODPAppVehOwnServer/persistence/respository/mongo/FilesRepository.java
new file mode 100644
index 0000000..c1bc825
--- /dev/null
+++ b/persistence/src/main/java/eu/csc/ODPAppVehOwnServer/persistence/respository/mongo/FilesRepository.java
@@ -0,0 +1,8 @@
+package eu.csc.ODPAppVehOwnServer.persistence.respository.mongo;
+
+import eu.csc.ODPAppVehOwnServer.persistence.entity.mongo.FilesMongo;
+import org.springframework.data.mongodb.repository.MongoRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface FilesRepository extends MongoRepository { }
\ No newline at end of file
diff --git a/persistence/src/main/java/eu/csc/ODPAppVehOwnServer/persistence/services/CustomerService.java b/persistence/src/main/java/eu/csc/ODPAppVehOwnServer/persistence/services/CustomerService.java
index 48acdaa..da55de1 100644
--- a/persistence/src/main/java/eu/csc/ODPAppVehOwnServer/persistence/services/CustomerService.java
+++ b/persistence/src/main/java/eu/csc/ODPAppVehOwnServer/persistence/services/CustomerService.java
@@ -2,12 +2,13 @@ package eu.csc.ODPAppVehOwnServer.persistence.services;
import eu.csc.ODPAppVehOwnServer.persistence.entity.UserEntity;
import eu.csc.ODPAppVehOwnServer.persistence.entity.customer.CustomerDeviceEntity;
+import eu.csc.ODPAppVehOwnServer.persistence.entity.customer.CustomerMobilePhoneEntity;
import eu.csc.ODPAppVehOwnServer.persistence.entity.customer.CustomerVehicleEntity;
-import eu.csc.ODPAppVehOwnServer.persistence.entity.data.DeviceArticleEntity;
-import eu.csc.ODPAppVehOwnServer.persistence.entity.data.DeviceEntity;
-import eu.csc.ODPAppVehOwnServer.persistence.respository.*;
+import eu.csc.ODPAppVehOwnServer.persistence.respository.CustomerDeviceRepository;
+import eu.csc.ODPAppVehOwnServer.persistence.respository.CustomerMobilePhoneRepository;
+import eu.csc.ODPAppVehOwnServer.persistence.respository.CustomerVehicleRepository;
+import eu.csc.ODPAppVehOwnServer.persistence.respository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.autoconfigure.security.SecurityProperties;
import org.springframework.stereotype.Service;
import java.util.List;
@@ -25,18 +26,19 @@ public class CustomerService {
@Autowired
private DeviceService deviceService;
+ @Autowired
+ private CustomerMobilePhoneRepository customerMobilePhoneRepository;
@Autowired
private CustomerVehicleRepository customerVehicleRepository;
+
@Autowired
private CustomerDeviceRepository customerDeviceRepository;
public List findAll() {
-
-
- return userRepository.findAll();
+ return userRepository.findAll();
}
public UserEntity addCustomer(String email, String password) {
@@ -50,7 +52,7 @@ public class CustomerService {
}
- private UserEntity mapUser(String email, String password, String firstname, String lastname){
+ private UserEntity mapUser(String email, String password, String firstname, String lastname) {
var user = new UserEntity();
user.setEmail(email);
@@ -69,7 +71,7 @@ public class CustomerService {
return customerDeviceRepository.findAllByUser_id(userId);
}
- public CustomerDeviceEntity registerDevice(Long userId, String serialnumber){
+ public CustomerDeviceEntity registerDevice(Long userId, String serialnumber) {
var deviceArticle = deviceService.findOrThrowBySerialnumber(serialnumber);
@@ -89,4 +91,17 @@ public class CustomerService {
public Optional findByEmail(String email) {
return userRepository.findOneByEmail(email);
}
+
+ public CustomerMobilePhoneEntity registerMobilePhone(String name, String identifier, Long customerId) {
+
+ CustomerMobilePhoneEntity item = new CustomerMobilePhoneEntity();
+ item.setIdentifier(identifier);
+ item.setName(name);
+ item.setUser_id(customerId);
+
+ item.setAccessToken(utilsService.generateAccessToken());
+
+
+ return customerMobilePhoneRepository.save(item);
+ }
}
diff --git a/persistence/src/main/java/eu/csc/ODPAppVehOwnServer/persistence/services/FilesService.java b/persistence/src/main/java/eu/csc/ODPAppVehOwnServer/persistence/services/FilesService.java
new file mode 100644
index 0000000..6505137
--- /dev/null
+++ b/persistence/src/main/java/eu/csc/ODPAppVehOwnServer/persistence/services/FilesService.java
@@ -0,0 +1,29 @@
+package eu.csc.ODPAppVehOwnServer.persistence.services;
+
+import eu.csc.ODPAppVehOwnServer.persistence.entity.mongo.FilesMongo;
+import eu.csc.ODPAppVehOwnServer.persistence.respository.mongo.FilesRepository;
+import org.bson.BsonBinarySubType;
+import org.bson.types.Binary;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+
+@Service
+public class FilesService {
+
+ @Autowired
+ private FilesRepository photoRepo;
+
+ public String addPhoto(String title, MultipartFile file) throws IOException {
+ var photo = new FilesMongo(title);
+ photo.setImage(
+ new Binary(BsonBinarySubType.BINARY, file.getBytes()));
+ photo = photoRepo.insert(photo); return photo.getId();
+ }
+
+ public FilesMongo getPhoto(String id) {
+ return photoRepo.findById(id).get();
+ }
+}
diff --git a/persistence/src/main/java/eu/csc/ODPAppVehOwnServer/persistence/services/UtilsService.java b/persistence/src/main/java/eu/csc/ODPAppVehOwnServer/persistence/services/UtilsService.java
index 77340c9..474ae00 100644
--- a/persistence/src/main/java/eu/csc/ODPAppVehOwnServer/persistence/services/UtilsService.java
+++ b/persistence/src/main/java/eu/csc/ODPAppVehOwnServer/persistence/services/UtilsService.java
@@ -30,6 +30,8 @@ return ""+year + month + date + serialNo;
}
+ public String generateAccessToken() {
-
+ throw new UnsupportedOperationException();
+ }
}
diff --git a/pom.xml b/pom.xml
index 713e45a..c3098ba 100644
--- a/pom.xml
+++ b/pom.xml
@@ -50,6 +50,22 @@
3.12.0
+
+
+ org.springframework
+ spring-web
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-mail
+
+
+ org.springframework.boot
+ spring-boot-starter-data-mongodb
+
+
org.springframework.boot
spring-boot-starter-log4j2
diff --git a/server/resources/application.properties b/server/resources/application.properties
index 148c5ad..f81e73d 100644
--- a/server/resources/application.properties
+++ b/server/resources/application.properties
@@ -2,6 +2,13 @@ spring.profiles.active=@profiles.active@
spring.datasource.username=@mysql.user@
spring.datasource.password=@mysql.password@
+
+#Mongo Db
+spring.data.mongodb.host=@mongo.host@
+spring.data.mongodb.port=@mongo.port@
+spring.data.mongodb.database=@mongo.database@
+spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
+
spring.datasource.hikari.maximum-pool-size=100
server.port=8081
spring.datasource.hikari.auto-commit=true
diff --git a/server/restserver/src/main/java/eu/csc/ODPAppVehOwnServer/controller/AbstractRestController.java b/server/restserver/src/main/java/eu/csc/ODPAppVehOwnServer/controller/AbstractRestController.java
index 1b5cff8..08cb723 100644
--- a/server/restserver/src/main/java/eu/csc/ODPAppVehOwnServer/controller/AbstractRestController.java
+++ b/server/restserver/src/main/java/eu/csc/ODPAppVehOwnServer/controller/AbstractRestController.java
@@ -41,6 +41,12 @@ public abstract class AbstractRestController {
return (LoggedInWebUserDetails) getLoggedInUser().getPrincipal();
}
+ protected Long getLoggedInWebUserId(){
+ LoggedInWebUserDetails user = (LoggedInWebUserDetails) getLoggedInUser().getPrincipal();
+
+ return user.getUserId();
+ }
+
//region ExceptionHandling
@@ -59,6 +65,10 @@ public abstract class AbstractRestController {
public ResponseEntity handlePersistenceNotFoundException(PersistenceException ex) {
return new ResponseEntity<>(ex.getMessage(), HttpStatus.BAD_REQUEST);
}
+ @ExceptionHandler(UnsupportedOperationException.class)
+ public ResponseEntity handleUnsupportedOperationException(UnsupportedOperationException ex) {
+ return new ResponseEntity<>(ex.getMessage(), HttpStatus.BAD_REQUEST);
+ }
//endregion
diff --git a/server/restserver/src/main/java/eu/csc/ODPAppVehOwnServer/controller/customer/CustomerController.java b/server/restserver/src/main/java/eu/csc/ODPAppVehOwnServer/controller/customer/CustomerController.java
new file mode 100644
index 0000000..e3db58c
--- /dev/null
+++ b/server/restserver/src/main/java/eu/csc/ODPAppVehOwnServer/controller/customer/CustomerController.java
@@ -0,0 +1,19 @@
+package eu.csc.ODPAppVehOwnServer.controller.customer;
+
+import eu.csc.ODPAppVehOwnServer.controller.AbstractRestController;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.logging.Logger;
+
+
+@RestController
+@RequestMapping("/customer/")
+public class CustomerController extends AbstractRestController {
+
+ private static final Logger logger = Logger.getLogger(CustomerController.class.getSimpleName());
+
+
+
+
+}
diff --git a/server/restserver/src/main/java/eu/csc/ODPAppVehOwnServer/controller/customer/MobilePhoneController.java b/server/restserver/src/main/java/eu/csc/ODPAppVehOwnServer/controller/customer/MobilePhoneController.java
new file mode 100644
index 0000000..0fc7aa9
--- /dev/null
+++ b/server/restserver/src/main/java/eu/csc/ODPAppVehOwnServer/controller/customer/MobilePhoneController.java
@@ -0,0 +1,34 @@
+package eu.csc.ODPAppVehOwnServer.controller.customer;
+
+import eu.csc.ODPAppVehOwnServer.controller.AbstractRestController;
+import eu.csc.ODPAppVehOwnServer.models.regist.CustomerMobilePhoneDto;
+import eu.csc.ODPAppVehOwnServer.persistence.services.CustomerService;
+import eu.csc.ODPAppVehOwnServer.persistence.services.DeviceService;
+import lombok.var;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.logging.Logger;
+
+@RestController
+@RequestMapping("customer/mobilephones")
+public class MobilePhoneController extends AbstractRestController {
+
+ private static final Logger logger = Logger.getLogger(MobilePhoneController.class.getSimpleName());
+
+ @Autowired
+ private CustomerService customerService;
+
+ @PostMapping
+ public ResponseEntity registerCustomerDevice(@RequestBody CustomerMobilePhoneDto body) {
+
+
+ var entity = customerService.registerMobilePhone(body.getName(), body.getIdentifier(), getLoggedInWebUserId());
+
+
+
+
+ throw new UnsupportedOperationException();
+ }
+}
diff --git a/server/restserver/src/main/java/eu/csc/ODPAppVehOwnServer/controller/data/VehicleController.java b/server/restserver/src/main/java/eu/csc/ODPAppVehOwnServer/controller/data/VehicleController.java
index d0929f1..e76f320 100644
--- a/server/restserver/src/main/java/eu/csc/ODPAppVehOwnServer/controller/data/VehicleController.java
+++ b/server/restserver/src/main/java/eu/csc/ODPAppVehOwnServer/controller/data/VehicleController.java
@@ -65,8 +65,11 @@ public class VehicleController {
produces = MediaType.IMAGE_JPEG_VALUE)
public void getImage(HttpServletResponse response, @PathVariable String brandId) throws IOException {
+
+
var imgFile = storageService.loadAsResource("images", "ford.jpeg");
+ //if(imgFile.)
response.setContentType(MediaType.IMAGE_JPEG_VALUE);
StreamUtils.copy(imgFile.getInputStream(), response.getOutputStream());
}
diff --git a/server/restserver/src/main/java/eu/csc/ODPAppVehOwnServer/controller/registration/RegistrationController.java b/server/restserver/src/main/java/eu/csc/ODPAppVehOwnServer/controller/registration/RegistrationController.java
index ccd7563..81405f2 100644
--- a/server/restserver/src/main/java/eu/csc/ODPAppVehOwnServer/controller/registration/RegistrationController.java
+++ b/server/restserver/src/main/java/eu/csc/ODPAppVehOwnServer/controller/registration/RegistrationController.java
@@ -40,9 +40,14 @@ public class RegistrationController {
user.setEmail(signUpDto.getEmail());
user.setPassword(passwordEncoder.encode(signUpDto.getPassword()));
+ user.setPhone(signUpDto.getPhone());
+ user.setStreet(signUpDto.getStreet());
+
userRepository.save(user);
- return new ResponseEntity<>("User registered successfully", HttpStatus.OK);
+
+
+ return new ResponseEntity<>(user.getId(), HttpStatus.OK);
}
diff --git a/server/restserver/src/main/java/eu/csc/ODPAppVehOwnServer/controller/registration/VehicleRegistrationController.java b/server/restserver/src/main/java/eu/csc/ODPAppVehOwnServer/controller/registration/VehicleRegistrationController.java
index eb39d9a..df8c4a7 100644
--- a/server/restserver/src/main/java/eu/csc/ODPAppVehOwnServer/controller/registration/VehicleRegistrationController.java
+++ b/server/restserver/src/main/java/eu/csc/ODPAppVehOwnServer/controller/registration/VehicleRegistrationController.java
@@ -43,7 +43,6 @@ public class VehicleRegistrationController extends AbstractRestController {
result.add(mapped);
-
}
return ResponseEntity.ok(result);
diff --git a/server/restserver/src/main/java/eu/csc/ODPAppVehOwnServer/services/JwtTokenService.java b/server/restserver/src/main/java/eu/csc/ODPAppVehOwnServer/services/JwtTokenService.java
index cfd70c4..6c3fa72 100644
--- a/server/restserver/src/main/java/eu/csc/ODPAppVehOwnServer/services/JwtTokenService.java
+++ b/server/restserver/src/main/java/eu/csc/ODPAppVehOwnServer/services/JwtTokenService.java
@@ -16,6 +16,7 @@ import java.util.function.Function;
public class JwtTokenService {
private final String secret;
+
private final Long expiration;
@Autowired
diff --git a/server/restserver/src/test/java/eu/csc/ODPAppVehOwnServer/web/clients/AbstractClientTester.java b/server/restserver/src/test/java/eu/csc/ODPAppVehOwnServer/web/clients/AbstractClientTester.java
index 370071d..7b3694f 100644
--- a/server/restserver/src/test/java/eu/csc/ODPAppVehOwnServer/web/clients/AbstractClientTester.java
+++ b/server/restserver/src/test/java/eu/csc/ODPAppVehOwnServer/web/clients/AbstractClientTester.java
@@ -1,6 +1,8 @@
package eu.csc.ODPAppVehOwnServer.web.clients;
+import eu.csc.ODPAppVehOwnServer.client.ClientFactory;
import eu.csc.ODPAppVehOwnServer.client.clients.VehOwnAppClient;
+import eu.csc.ODPAppVehOwnServer.client.service.AuthenticationService;
import eu.csc.ODPAppVehOwnServer.models.regist.UserVehicleRegistrationDto;
import eu.csc.ODPAppVehOwnServer.persistence.entity.data.DeviceArticleEntity;
import eu.csc.ODPAppVehOwnServer.persistence.entity.data.DeviceEntity;
@@ -24,6 +26,8 @@ public abstract class AbstractClientTester {
protected String url;
protected VehOwnAppClient client;
+ protected AuthenticationService authenticationService;
+
@Autowired
protected GsonService gsonService;
diff --git a/server/restserver/src/test/java/eu/csc/ODPAppVehOwnServer/web/clients/CustomerClientTester.java b/server/restserver/src/test/java/eu/csc/ODPAppVehOwnServer/web/clients/CustomerClientTester.java
index bdee1d7..1b876cc 100644
--- a/server/restserver/src/test/java/eu/csc/ODPAppVehOwnServer/web/clients/CustomerClientTester.java
+++ b/server/restserver/src/test/java/eu/csc/ODPAppVehOwnServer/web/clients/CustomerClientTester.java
@@ -1,7 +1,9 @@
package eu.csc.ODPAppVehOwnServer.web.clients;
+import com.mysql.cj.xdevapi.Client;
import eu.csc.ODPAppVehOwnServer.ODPAppVehOwnServerApplication;
import eu.csc.ODPAppVehOwnServer.client.ClientFactory;
+import eu.csc.ODPAppVehOwnServer.models.UserRegistrationDto;
import eu.csc.ODPAppVehOwnServer.models.regist.UserVehicleRegistrationDto;
import lombok.var;
import org.junit.jupiter.api.*;
@@ -25,6 +27,9 @@ public class CustomerClientTester extends AbstractClientTester{
this.initUser();
this.url = "http://localhost:" + port;
+
+ this.authenticationService =
+ ClientFactory.createAuthenticationService(this.url);
this.token = ClientFactory.authenticate(url, this.user, this.password).body().getToken();
client = ClientFactory.createVehOwnAppClient(this.url, this.token);
@@ -38,6 +43,25 @@ public class CustomerClientTester extends AbstractClientTester{
Assertions.assertNotNull(this.client);
+ }
+ @Test
+ void testRegistration() throws IOException {
+ UserRegistrationDto customerA = new UserRegistrationDto();
+ customerA.setEmail("A@A.A");
+ customerA.setPassword("yannyann1");
+
+ var result = Assertions.assertDoesNotThrow(() -> authenticationService.registerCustomer(customerA).execute());
+
+ Assertions.assertNotNull(result.body());
+ var result2 = Assertions.assertDoesNotThrow(() -> authenticationService.registerCustomer(customerA).execute());
+
+ Assertions.assertNull(result2.body());
+
+
+ System.out.println(result2.errorBody().string());
+
+
+
}
diff --git a/server/shell/src/main/java/eu/csc/ODPAppVehOwnServer/shell/InitCommands.java b/server/shell/src/main/java/eu/csc/ODPAppVehOwnServer/shell/InitCommands.java
new file mode 100644
index 0000000..e0619c6
--- /dev/null
+++ b/server/shell/src/main/java/eu/csc/ODPAppVehOwnServer/shell/InitCommands.java
@@ -0,0 +1,11 @@
+package eu.csc.ODPAppVehOwnServer.shell;
+
+
+import org.springframework.shell.standard.ShellComponent;
+
+@ShellComponent
+public class InitCommands extends BaseCommands{
+
+
+
+}
diff --git a/web-dir/images/hyundai.png b/web-dir/images/hyundai.png
new file mode 100644
index 0000000..439f801
Binary files /dev/null and b/web-dir/images/hyundai.png differ
diff --git a/webcoreroot/client/src/main/java/eu/csc/ODPAppVehOwnServer/client/clients/VehOwnAppClient.java b/webcoreroot/client/src/main/java/eu/csc/ODPAppVehOwnServer/client/clients/VehOwnAppClient.java
index f76a23f..532f526 100644
--- a/webcoreroot/client/src/main/java/eu/csc/ODPAppVehOwnServer/client/clients/VehOwnAppClient.java
+++ b/webcoreroot/client/src/main/java/eu/csc/ODPAppVehOwnServer/client/clients/VehOwnAppClient.java
@@ -4,6 +4,7 @@ package eu.csc.ODPAppVehOwnServer.client.clients;
import eu.csc.ODPAppVehOwnServer.client.ClientFactory;
import eu.csc.ODPAppVehOwnServer.client.exceptions.NotAuthenticatedException;
import eu.csc.ODPAppVehOwnServer.client.models.CallResponse;
+import eu.csc.ODPAppVehOwnServer.client.service.AuthenticationService;
import eu.csc.ODPAppVehOwnServer.client.service.ClientService;
import eu.csc.ODPAppVehOwnServer.client.service.CustomerService;
import eu.csc.ODPAppVehOwnServer.models.VehicleBrandDto;
@@ -26,6 +27,8 @@ public class VehOwnAppClient extends AbstractClient implements IDataClient {
private final CustomerService customerService;
+
+
//region Constructors
@@ -40,6 +43,7 @@ public class VehOwnAppClient extends AbstractClient implements IDataClient {
}
public VehOwnAppClient(String url, String user, String password) {
+
this.customerService = ClientFactory.createService(url, CustomerService.class, user, password);
this.clientService = ClientFactory.createService(url, ClientService.class, user, password);
diff --git a/webcoreroot/client/src/main/java/eu/csc/ODPAppVehOwnServer/client/service/AuthenticationService.java b/webcoreroot/client/src/main/java/eu/csc/ODPAppVehOwnServer/client/service/AuthenticationService.java
index 1844a95..017bcf2 100644
--- a/webcoreroot/client/src/main/java/eu/csc/ODPAppVehOwnServer/client/service/AuthenticationService.java
+++ b/webcoreroot/client/src/main/java/eu/csc/ODPAppVehOwnServer/client/service/AuthenticationService.java
@@ -11,6 +11,10 @@ import retrofit2.http.POST;
public interface AuthenticationService {
@POST("/api/login")
- Call login(@Body AuthenticationRequest request);
+ Call login(@Body AuthenticationRequest body);
+
+
+ @POST("/api/signup")
+ Call registerCustomer(@Body UserRegistrationDto body);
}
diff --git a/webcoreroot/dto/src/main/java/eu/csc/ODPAppVehOwnServer/models/AbstractBaseDto.java b/webcoreroot/dto/src/main/java/eu/csc/ODPAppVehOwnServer/models/AbstractBaseDto.java
index 4883dab..0881c01 100644
--- a/webcoreroot/dto/src/main/java/eu/csc/ODPAppVehOwnServer/models/AbstractBaseDto.java
+++ b/webcoreroot/dto/src/main/java/eu/csc/ODPAppVehOwnServer/models/AbstractBaseDto.java
@@ -1,6 +1,17 @@
package eu.csc.ODPAppVehOwnServer.models;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import lombok.ToString;
+
import java.io.Serializable;
+@Getter
+@Setter
+@NoArgsConstructor
+@ToString
public class AbstractBaseDto implements Serializable {
+
+
}
diff --git a/webcoreroot/dto/src/main/java/eu/csc/ODPAppVehOwnServer/models/UserRegistrationDto.java b/webcoreroot/dto/src/main/java/eu/csc/ODPAppVehOwnServer/models/UserRegistrationDto.java
index 5c97371..2c03e01 100644
--- a/webcoreroot/dto/src/main/java/eu/csc/ODPAppVehOwnServer/models/UserRegistrationDto.java
+++ b/webcoreroot/dto/src/main/java/eu/csc/ODPAppVehOwnServer/models/UserRegistrationDto.java
@@ -15,5 +15,8 @@ public class UserRegistrationDto extends AbstractBaseDto{
private String firstname;
private String lastname;
private String email;
+ private String phone;
+ private String street;
+ private String city;
}
diff --git a/webcoreroot/dto/src/main/java/eu/csc/ODPAppVehOwnServer/models/base/AbstractServerDto.java b/webcoreroot/dto/src/main/java/eu/csc/ODPAppVehOwnServer/models/base/AbstractServerDto.java
index aef9aeb..b34a27e 100644
--- a/webcoreroot/dto/src/main/java/eu/csc/ODPAppVehOwnServer/models/base/AbstractServerDto.java
+++ b/webcoreroot/dto/src/main/java/eu/csc/ODPAppVehOwnServer/models/base/AbstractServerDto.java
@@ -1,11 +1,15 @@
package eu.csc.ODPAppVehOwnServer.models.base;
+import lombok.AllArgsConstructor;
import lombok.Getter;
+import lombok.NoArgsConstructor;
import lombok.Setter;
@Getter
@Setter
+@NoArgsConstructor
+@AllArgsConstructor
public abstract class AbstractServerDto {
private Long id;
diff --git a/webcoreroot/dto/src/main/java/eu/csc/ODPAppVehOwnServer/models/data/PropulsionTypeDto.java b/webcoreroot/dto/src/main/java/eu/csc/ODPAppVehOwnServer/models/data/PropulsionTypeDto.java
index f8aad09..4301b04 100644
--- a/webcoreroot/dto/src/main/java/eu/csc/ODPAppVehOwnServer/models/data/PropulsionTypeDto.java
+++ b/webcoreroot/dto/src/main/java/eu/csc/ODPAppVehOwnServer/models/data/PropulsionTypeDto.java
@@ -13,4 +13,10 @@ public class PropulsionTypeDto extends AbstractServerDto {
private String propulsionId;
private String name;
+ public PropulsionTypeDto(Long id, String propulsionId, String name){
+ super(id);
+ this.propulsionId = propulsionId;
+ this.name = name;
+ }
+
}
diff --git a/webcoreroot/dto/src/main/java/eu/csc/ODPAppVehOwnServer/models/regist/CustomerMobilePhoneDto.java b/webcoreroot/dto/src/main/java/eu/csc/ODPAppVehOwnServer/models/regist/CustomerMobilePhoneDto.java
new file mode 100644
index 0000000..178f1a8
--- /dev/null
+++ b/webcoreroot/dto/src/main/java/eu/csc/ODPAppVehOwnServer/models/regist/CustomerMobilePhoneDto.java
@@ -0,0 +1,20 @@
+package eu.csc.ODPAppVehOwnServer.models.regist;
+
+import eu.csc.ODPAppVehOwnServer.models.AbstractBaseDto;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import lombok.ToString;
+
+@Getter
+@Setter
+@NoArgsConstructor
+
+@ToString
+public class CustomerMobilePhoneDto extends AbstractBaseDto {
+
+ private String identifier;
+ private String name;
+ private String token;
+
+}