Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

h2 database added #6

Open
wants to merge 7 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,12 @@
<version>7.7.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.sonarsource.scanner.maven</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>5.0.0.4389</version>
</dependency>

</dependencies>

<build>
Expand Down
14 changes: 14 additions & 0 deletions src/main/java/au/com/telstra/simcardactivator/AppConfig.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package au.com.telstra.simcardactivator;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

@Configuration
public class AppConfig {

@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package au.com.telstra.simcardactivator.components;

import au.com.telstra.simcardactivator.entities.ActuationResult;
import au.com.telstra.simcardactivator.entities.SimCard;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;


@Component
public class SimCardActuationHandler {

private final RestTemplate restTemplate;
private final String incentiveApiUrl;

public SimCardActuationHandler(RestTemplateBuilder builder) {
this.restTemplate = builder.build();
this.incentiveApiUrl = "http://localhost:8444/actuate";
}

public ActuationResult actuate(SimCard simCard) {
return restTemplate.postForObject(incentiveApiUrl, simCard, ActuationResult.class);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
package au.com.telstra.simcardactivator.controllers;

import au.com.telstra.simcardactivator.components.SimCardActuationHandler;
import au.com.telstra.simcardactivator.pojos.SimCardDTO;
import au.com.telstra.simcardactivator.entities.SimCard;
import au.com.telstra.simcardactivator.services.SimCardService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@RestController

public class SimCardController {
private final SimCardService simCardService;


private final SimCardActuationHandler simCardActuationHandler;
private static final Logger logger = LoggerFactory.getLogger(SimCardController.class);
@Autowired
public SimCardController(SimCardService simCardService, SimCardActuationHandler simCardActuationHandler) {
this.simCardService = simCardService;
this.simCardActuationHandler = simCardActuationHandler;
}

@PostMapping("/activate")
public ResponseEntity<String> activateSim(@RequestBody SimCardDTO simCardDTO) {
var simCard = new SimCard(simCardDTO.getIccid(), simCardDTO.getCustomerEmail(), false);
var actutaionResult = simCardActuationHandler.actuate(simCard);
logger.info("Actuation success: {}", actutaionResult.getSuccess());
if (actutaionResult.getSuccess()) {
simCard.setActive(true);
simCardService.saveSimCard(simCard);
return ResponseEntity.ok("SIM activation successful.");
} else {
return ResponseEntity.status(500).body("SIM activation failed.");
}
}

@GetMapping("/query")
public SimCardDTO getSimCardQuery(@RequestParam long simCardId) {
SimCard simCard = simCardService.getSimCardById(simCardId);
if (simCard != null) {
return new SimCardDTO(simCard.getIccid(), simCard.getCustomerEmail(), simCard.isActive());
} else {
return null;
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package au.com.telstra.simcardactivator.entities;

public class ActuationResult {
private boolean success;

public ActuationResult() {
}

public ActuationResult(boolean success) {
this.success = success;
}

public boolean getSuccess() {
return success;
}

public void setSuccess(boolean success) {
this.success = success;
}

@Override
public String toString() {
return "ActuationResult {success=" + success + "}";
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
package au.com.telstra.simcardactivator.entities;



import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity

public class SimCard {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String iccid;
private String customerEmail;
private boolean active;

public SimCard() {
}

public SimCard(String iccid, String customerEmail, boolean active) {
this.iccid = iccid;
this.customerEmail = customerEmail;
this.active = active;
}

public String getIccid() {
return iccid;
}

public void setIccid(String iccid) {
this.iccid = iccid;
}

public String getCustomerEmail() {
return customerEmail;
}

public void setCustomerEmail(String customerEmail) {
this.customerEmail = customerEmail;
}

public boolean isActive() {
return active;
}

public void setActive(boolean active) {
this.active = active;
}

@Override
public String toString() {
return "SimCard{" +
"iccid='" + iccid + '\'' +
", customerEmail='" + customerEmail + '\'' +
", active=" + active +
'}';
}

public boolean getActive() {
this.active = true;
return active;

}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
package au.com.telstra.simcardactivator.pojos;

public class SimCardDTO {
private Long id;
private String iccid;
private String customerEmail;
private boolean active;

// Default constructor
public SimCardDTO() {
}

// Parameterized constructor
public SimCardDTO(Long id, String iccid, String customerEmail, boolean active) {
this.id = id;
this.iccid = iccid;
this.customerEmail = customerEmail;
this.active = active;
}

public SimCardDTO(String iccid, String customerEmail, boolean active) {
this.iccid = iccid;
this.customerEmail = customerEmail;
}

// Getters and setters
public Long getId() {
return id;
}

public void setId(Long id) {
this.id = id;
}

public String getIccid() {
return iccid;
}

public void setIccid(String iccid) {
this.iccid = iccid;
}

public String getCustomerEmail() {
return customerEmail;
}

public void setCustomerEmail(String customerEmail) {
this.customerEmail = customerEmail;
}

public boolean isActive() {
return active;
}

public void setActive(boolean active) {
this.active = active;
}

@Override
public String toString() {
return "SimCardDTO{" +
"id=" + id +
", iccid='" + iccid + '\'' +
", customerEmail='" + customerEmail + '\'' +
", active=" + active +
'}';
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package au.com.telstra.simcardactivator.repositories;

import au.com.telstra.simcardactivator.entities.SimCard;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface SimCardRepository extends JpaRepository<SimCard, Long> {
SimCard findByIccid(String iccid);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package au.com.telstra.simcardactivator.services;

import au.com.telstra.simcardactivator.entities.SimCard;
import au.com.telstra.simcardactivator.repositories.SimCardRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class SimCardService {
private final SimCardRepository simCardRepository;

@Autowired
public SimCardService(SimCardRepository simCardRepository) {
this.simCardRepository = simCardRepository;
}
public SimCard saveSimCard(SimCard simCard) {
return simCardRepository.save(simCard);
}


public SimCard getSimCardById(Long id) {
return simCardRepository.findById(id).orElse(null); // Return null if not found
}


public SimCard getSimCardByIccid(String iccid) {
return simCardRepository.findByIccid(iccid);
}

}
7 changes: 7 additions & 0 deletions src/main/resources/application.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
spring.datasource.url=jdbc:h2:mem:simcarddb
spring.datasource.driver-class-name=org.h2.Driver
spring.h2.console.enabled=true
# Set the path for the console
spring.h2.console.path=/h2-console

#spring.jpa.hibernate.ddl-auto=update
Loading