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; + +}