Skip to content
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
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package au.com.telstra.simcardactivator;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class ActuateServiceApplication {
public static void main(String[] args){
SpringApplication.run(ActuateServiceApplication.class, args);
}

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

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,53 @@
package au.com.telstra.simcardactivator.Controller;

import au.com.telstra.simcardactivator.Model.Iccid;
import au.com.telstra.simcardactivator.Repository.IccidRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

import java.util.HashMap;
import java.util.Map;

@RestController
@RequestMapping("/actuate")
public class ActuateController {

// @Autowired
// private IccidRepository iccidRepository;
//
// @Autowired
// private Iccid iccid;


@PostMapping
public ResponseEntity<Map<String, Boolean>> handleActuateRequest(@RequestBody Map<String, String> iccidData) {
String iccidString = iccidData.get("iccid");

boolean success = iccidString != null && !iccidString.isEmpty();
// boolean success;
// if (iccidString != null && !iccidString.isEmpty()){
// success = true;
// } else {
// success = false;
// }
HttpStatus status = success ? HttpStatus.OK : HttpStatus.BAD_REQUEST;


// new code for task 2
// if (success){
// iccid.setIccid(iccidString);
// iccidRepository.save(iccid);
// }

return new ResponseEntity<>(Map.of("success", success), status);


}
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
package au.com.telstra.simcardactivator.Controller;

import au.com.telstra.simcardactivator.Model.Iccid;
import au.com.telstra.simcardactivator.Repository.IccidRepository;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Profile;
import org.springframework.http.*;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.ResourceAccessException;
import org.springframework.web.client.RestTemplate;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;

@RestController
@RequestMapping()
public class IccidController {
@Autowired
IccidRepository iccidRepository;


@Autowired
RestTemplate restTemplate;


@PostMapping("activate")
public ResponseEntity<String> postToOtherService(@RequestBody Iccid iccid) {
final String url = "http://localhost:8444/actuate";

final String iccid_new = iccid.getIccid();

System.out.println(iccid_new+ " : iccid_new");

if (iccid_new == null || iccid_new.isEmpty()){
return ResponseEntity.badRequest().body("ICCID cannot be null or empty");
}
// System.out.println(iccid_new instanceof String);

Map<String, String> iccidData = new HashMap<>();
iccidData.put("iccid", iccid_new);
// System.out.println(iccidData.getClass() + " : get class");
// System.out.println(iccidData.values());
// System.out.println((iccidData));

HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);

HttpEntity<Map<String, String>> requestEntity = new HttpEntity<>(iccidData, headers);
try {
ResponseEntity<String> response = restTemplate.postForEntity(url, requestEntity, String.class);

ObjectMapper objectMapper = new ObjectMapper();
JsonNode jsonNode = objectMapper.readTree(response.getBody());

boolean success = jsonNode.get("success").asBoolean();
iccid.setActive(success);

// System.out.println(response.getBody());
// System.out.println(iccid.getId());
// System.out.println(iccid.getIccid());
// System.out.println(iccid.getCustomerEmail());
// System.out.println(iccid.isActive());
iccidRepository.save(iccid);
return response;
} catch (ResourceAccessException e) {
return new ResponseEntity<>("Could not connect to the external service", HttpStatus.SERVICE_UNAVAILABLE);
} catch (Exception e) {
return new ResponseEntity<>("An unexpected error occurred", HttpStatus.INTERNAL_SERVER_ERROR);
}
}

// new code for task 2
@GetMapping("query/{id}")
public ResponseEntity<Iccid> getIccid(@PathVariable Long id){
Optional<Iccid> iccid = iccidRepository.findById(id);
return iccid.map(ResponseEntity::ok)
.orElseGet(() -> new ResponseEntity<>(HttpStatus.NOT_FOUND));
// return iccidRepository.findById(id);
}

@GetMapping("query")
public List<Iccid> getAllIccid(){
return iccidRepository.findAll();
}

}
53 changes: 53 additions & 0 deletions src/main/java/au/com/telstra/simcardactivator/Model/Iccid.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
package au.com.telstra.simcardactivator.Model;

import org.springframework.stereotype.Component;

import javax.persistence.*;

//@Component
@Entity
public class Iccid {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;

@Column(unique = true)
private String iccid;

private String customerEmail;

private boolean active;

public boolean isActive() {
return active;
}

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

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;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package au.com.telstra.simcardactivator.Repository;

import au.com.telstra.simcardactivator.Model.Iccid;
import org.springframework.data.jpa.repository.JpaRepository;

public interface IccidRepository extends JpaRepository<Iccid, Long> {
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,20 @@

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;

@SpringBootApplication
public class SimCardActivator {

public static void main(String[] args) {
SpringApplication.run(SimCardActivator.class, args);
// public static void main(String[] args) {
// SpringApplication.run(SimCardActivator.class, args);
// }

public static void main(String[] args){
ConfigurableApplicationContext iccidContext = SpringApplication.run(SimCardActivator.class, "--spring.config.name=application-simcardactivator");

ConfigurableApplicationContext actuateContext = SpringApplication.run(ActuateServiceApplication.class, "--spring.config.name= application-actuate");
}


}
8 changes: 8 additions & 0 deletions src/main/resources/application-actuate.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
server.port = 8444
spring.application.name = ActuateService

spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
2 changes: 2 additions & 0 deletions src/main/resources/application-simcardactivator.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
server.port = 8080
spring.application.name = SimCardActivator