fixed bugs added client

This commit is contained in:
yannick.blanken@csc-online.eu 2022-06-15 07:30:37 +02:00
parent 9064a0a9a5
commit c04a69a735
17 changed files with 135 additions and 26 deletions

View File

@ -2,6 +2,8 @@ package eu.csc.ODPAppVehOwnServer.persistence.services.storage;
import eu.csc.ODPAppVehOwnServer.models.VehicleBrandDto;
import eu.csc.ODPAppVehOwnServer.models.VehicleModelDto;
import eu.csc.ODPAppVehOwnServer.models.data.LanguageDto;
import eu.csc.ODPAppVehOwnServer.models.data.PropulsionTypeDto;
import eu.csc.ODPAppVehOwnServer.persistence.services.GsonService;
import eu.csc.ODPAppVehOwnServer.persistence.services.StorageService;
@ -16,6 +18,7 @@ public class MetaDataStorageService {
private static final String FILENAME_PROPULSION_TYPE = "propulsionTypes.json";
private static final String FILENAME_BRANDS = "brands.json";
private static final String FILENAME_DEVICES = "devices.json";
private static final String FILENAME_LANGUAGES = "languages.json";
private static final String FOLDER_MODELS = "models";
@ -29,6 +32,9 @@ public class MetaDataStorageService {
public List<VehicleBrandDto> openBrands() throws FileNotFoundException {
return openBrands(FILENAME_BRANDS);
}
public List<LanguageDto> openLanguages() throws FileNotFoundException {
return openLanguages(FILENAME_LANGUAGES);
}
public List<VehicleModelDto> openModels(String brand) throws FileNotFoundException {
@ -42,4 +48,17 @@ public class MetaDataStorageService {
return gsonService.readJson(gsonService.getTypeTokenList(), storageService.load(filename).toFile());
}
public List<LanguageDto> openLanguages(String filename) throws FileNotFoundException {
return gsonService.readJson(gsonService.getTypeTokenList(), storageService.load(filename).toFile());
}
public List<PropulsionTypeDto> openPropulsionTypes() throws FileNotFoundException {
return openPropulsionTypes(FILENAME_PROPULSION_TYPE);
}
public List<PropulsionTypeDto> openPropulsionTypes(String filename) throws FileNotFoundException {
return gsonService.readJson(gsonService.getTypeTokenList(), storageService.load(filename).toFile());
}
}

View File

@ -2,5 +2,9 @@
{
"brandId": "ford",
"name": "Ford"
},
{
"brandId": "audi",
"name": "Audi"
}
]

View File

@ -2,5 +2,9 @@
{
"propulsionId": "petrol",
"name": "Petrol"
},
{
"propulsionId": "gasol",
"name": "Gasoline"
}
]

View File

@ -26,6 +26,8 @@ public class PropulsionTypeEntity extends AbstractEntity {
private String name;
public PropulsionTypeEntity(String propulsionId, String name) {
this.typeId = propulsionId;
this.name = name;
}
}

View File

@ -11,5 +11,7 @@ import java.util.Optional;
public interface PropulsionTypeRepository extends JpaRepository<PropulsionTypeEntity, Long> {
Optional<PropulsionTypeEntity> findByTypeId(String propulsionId);
PropulsionTypeEntity getByTypeId(String propulsionId);
}

View File

@ -57,6 +57,8 @@ public class CustomerService {
user.setEmail(email);
user.setPassword(password);
user.setFirstname(firstname);
user.setLastname(lastname);
return user;
}

View File

@ -1,7 +1,9 @@
package eu.csc.ODPAppVehOwnServer.persistence.services;
import eu.csc.ODPAppVehOwnServer.persistence.entity.data.LanguageEntity;
import eu.csc.ODPAppVehOwnServer.persistence.entity.data.PropulsionTypeEntity;
import eu.csc.ODPAppVehOwnServer.persistence.respository.LanguageRepository;
import eu.csc.ODPAppVehOwnServer.persistence.respository.PropulsionTypeRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -13,11 +15,23 @@ public class DataService {
@Autowired
private LanguageRepository languageRepository;
@Autowired
private PropulsionTypeRepository propulsionTypeRepository;
public List<LanguageEntity> getLanguages(){
return languageRepository.findAll();
}
public List<PropulsionTypeEntity> getPropulsionTypes(){
return propulsionTypeRepository.findAll();
}
public LanguageEntity getOrAddLanguage(String locale, String name){
return getOrAddLanguage(locale,name, false);
}
public LanguageEntity getOrAddLanguage(String locale, String name, boolean isDefault){
LanguageEntity languageEntity;
@ -30,4 +44,16 @@ public class DataService {
return languageEntity;
}
public PropulsionTypeEntity getOrCreatePropulsionType(String propulsionId, String name) {
PropulsionTypeEntity entity;
if(propulsionTypeRepository.findByTypeId(propulsionId).isPresent())
entity =propulsionTypeRepository.getByTypeId(propulsionId);
else{
entity = new PropulsionTypeEntity(propulsionId, name);
propulsionTypeRepository.save(entity);
}
return entity;
}
}

View File

@ -56,7 +56,6 @@
<artifactId>spring-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>

View File

@ -55,6 +55,7 @@ public abstract class AbstractRestController {
return new ResponseEntity<>(ErrorResultDto.get(ex), HttpStatus.NOT_FOUND);
}
@ExceptionHandler(EntityExistsException.class)
public ResponseEntity<?> handleEntityExistsException(EntityExistsException ex) {
return ResponseEntity.status( HTTP_STATUS_EXISTS).body(ErrorResultDto.get(ex));

View File

@ -25,7 +25,7 @@ public class CustomerController extends AbstractRestController {
@PostMapping
@RequestMapping("/vehicle/unregister/{vin}")
public ResponseEntity<MessageDto> registerCustomerVehicle(@PathVariable String vin){
logger.info("unregistering vin from customer");
boolean done =customerService.unregisterVehicle(getLoggedInWebUserId(), vin);
return getSuccessResponse(new MessageDto(42, "deleted: " + done));

View File

@ -1,5 +1,6 @@
package eu.csc.ODPAppVehOwnServer.controller.registration;
import eu.csc.ODPAppVehOwnServer.controller.AbstractRestController;
import eu.csc.ODPAppVehOwnServer.models.auth.AuthenticationRequest;
import eu.csc.ODPAppVehOwnServer.services.AuthenticationService;
import org.springframework.http.HttpStatus;
@ -14,7 +15,7 @@ import javax.persistence.EntityNotFoundException;
* @see
*/
public class AuthenticationController {
public class AuthenticationController extends AbstractRestController {
private AuthenticationService authenticationService;
@ -27,8 +28,5 @@ public class AuthenticationController {
return new ResponseEntity<>(authenticationService.generateJWTToken(request.getUsername(), request.getPassword()), HttpStatus.OK);
}
@ExceptionHandler(EntityNotFoundException.class)
public ResponseEntity handleEntityNotFoundException(EntityNotFoundException ex) {
return new ResponseEntity<>(ex.getMessage(), HttpStatus.NOT_FOUND);
}
}

View File

@ -74,8 +74,6 @@ public class CustomerClientTester extends AbstractClientTester{
System.out.println(result2.errorBody().string());
}

View File

@ -1,10 +1,9 @@
package eu.csc.ODPAppVehOwnServer.shell;
import eu.csc.ODPAppVehOwnServer.models.VehicleBrandDto;
import eu.csc.ODPAppVehOwnServer.persistence.services.DeviceService;
import eu.csc.ODPAppVehOwnServer.persistence.services.GsonService;
import eu.csc.ODPAppVehOwnServer.persistence.services.StorageService;
import eu.csc.ODPAppVehOwnServer.persistence.services.VehicleService;
import eu.csc.ODPAppVehOwnServer.models.data.LanguageDto;
import eu.csc.ODPAppVehOwnServer.models.data.PropulsionTypeDto;
import eu.csc.ODPAppVehOwnServer.persistence.services.*;
import eu.csc.ODPAppVehOwnServer.persistence.services.storage.MetaDataStorageService;
import lombok.var;
import org.springframework.beans.factory.annotation.Autowired;
@ -27,6 +26,8 @@ public class InfoCommands extends BaseCommands{
@Autowired
private DeviceService deviceService;
@Autowired
private DataService dataService;
@Autowired
private GsonService gsonService;
@ -62,21 +63,37 @@ addMessageString(storageService.load("").toAbsolutePath().toString());
@ShellMethod(value = "import Content", key = {"i_im"})
public String doImport(@ShellOption(defaultValue = ShellOption.NULL) String location) throws FileNotFoundException {
if(this.metaDataStorageService == null){
if(location == null)
return "LOCATION NEEDED";
else
setFolderDir(location);
List<VehicleBrandDto> brands = null;
}
else if(location !=null)
setFolderDir(location);
if(location == null)
brands = metaDataStorageService.openBrands();
else
brands = metaDataStorageService.openBrands(location);
List<LanguageDto> languages = metaDataStorageService.openLanguages();
List<VehicleBrandDto> brands = metaDataStorageService.openBrands();
List<PropulsionTypeDto> propulsionTypes = metaDataStorageService.openPropulsionTypes();
for (var propType:propulsionTypes
) {
dataService.getOrCreatePropulsionType(propType.getPropulsionId(), propType.getName());
}
for (var language:languages
) {
if (language.getId().equals("en"))
dataService.getOrAddLanguage(language.getId(), language.getName(), true);
else
dataService.getOrAddLanguage(language.getId(), language.getName());
}
for (var brand:brands
) {
vehicleService.addVehicleIfNotExists(brand.getBrandId(), brand.getName());
}

View File

@ -1,11 +1,17 @@
package eu.csc.ODPAppVehOwnServer.shell;
import eu.csc.ODPAppVehOwnServer.models.VehicleBrandDto;
import eu.csc.ODPAppVehOwnServer.models.data.LanguageDto;
import org.springframework.shell.standard.ShellComponent;
import org.springframework.shell.standard.ShellMethod;
import org.springframework.shell.standard.ShellOption;
import java.io.FileNotFoundException;
import java.util.List;
@ShellComponent
public class InitCommands extends BaseCommands{
}

View File

@ -0,0 +1,30 @@
package eu.csc.ODPAppVehOwnServer;
import org.springframework.context.annotation.Bean;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import java.util.Properties;
public class CustomJavaMailSender{
@Bean
public JavaMailSender getJavaMailSender() {
JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
mailSender.setHost("smtp.gmail.com");
mailSender.setPort(587);
mailSender.setUsername("my.gmail@gmail.com");
mailSender.setPassword("password");
Properties props = mailSender.getJavaMailProperties();
props.put("mail.transport.protocol", "smtp");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.debug", "true");
return mailSender;
}
}

View File

@ -23,7 +23,6 @@ public interface IDataClient {
List<VehicleModelDto> listVehicleModels() throws IOException;
List<VehicleModelDto> listVehicleModels(String brand) throws IOException;
//region Customer

View File

@ -1,5 +1,6 @@
package eu.csc.ODPAppVehOwnServer.client.service;
import eu.csc.ODPAppVehOwnServer.models.MessageDto;
import eu.csc.ODPAppVehOwnServer.models.regist.CustomerDeviceDto;
import eu.csc.ODPAppVehOwnServer.models.regist.CustomerVehicleDto;
import eu.csc.ODPAppVehOwnServer.models.regist.UserVehicleRegistrationDto;
@ -22,7 +23,8 @@ public interface CustomerService {
Call<CustomerVehicleDto> registerUserVehicle(@Body UserVehicleRegistrationDto body);
@POST("/api/vehicle/unregister/{vin}")
Call<MessageDto> unregisterVehicle(@Path(value = "vin") String vin);
@GET("/api/reg/devices")
Call<List<CustomerDeviceDto>> listCustomerDevices();