diff --git a/asset-transfer-basic/maven-example/src/main/java/com/code/hyperledger/controllers/Example.java b/asset-transfer-basic/maven-example/src/main/java/com/code/hyperledger/controllers/Example.java index af25c672..503132a6 100644 --- a/asset-transfer-basic/maven-example/src/main/java/com/code/hyperledger/controllers/Example.java +++ b/asset-transfer-basic/maven-example/src/main/java/com/code/hyperledger/controllers/Example.java @@ -9,8 +9,6 @@ public class Example { @GetMapping("/hello") public String sayHello() { - Receta receta = new Receta(); - return "Hello, World!"; } } diff --git a/asset-transfer-basic/maven-example/src/main/java/com/code/hyperledger/controllers/RecetaController.java b/asset-transfer-basic/maven-example/src/main/java/com/code/hyperledger/controllers/RecetaController.java index 8637e835..7e57572e 100644 --- a/asset-transfer-basic/maven-example/src/main/java/com/code/hyperledger/controllers/RecetaController.java +++ b/asset-transfer-basic/maven-example/src/main/java/com/code/hyperledger/controllers/RecetaController.java @@ -2,14 +2,16 @@ package com.code.hyperledger.controllers; import com.code.hyperledger.coso.Receta; import com.code.hyperledger.services.RecetaService; +import org.hyperledger.fabric.client.*; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import java.time.LocalDate; -import java.time.LocalDateTime; +import java.io.IOException; +import java.time.Instant; @RestController @@ -19,21 +21,29 @@ public class RecetaController { @Autowired private RecetaService recetaService; - //usar este endpoint @PostMapping("/crear") - public String crear() { + public ResponseEntity crear(Receta receta) { System.out.println("\n--> Submit Transaction: CreateAsset, creates new asset with all arguments"); - recetaService.crearReceta(); - return "Hello, World!"; + String assetId = "asset" + Instant.now().toEpochMilli(); + receta.setId(assetId); + try { + recetaService.cargarReceta(receta); + } catch (CommitStatusException | EndorseException | CommitException | SubmitException e) { + return new ResponseEntity<>(HttpStatus.UNAUTHORIZED); + + } + + return new ResponseEntity<>(receta, HttpStatus.OK); } - @GetMapping("/obtener") - public String sayHello() { - com.code.hyperledger.coso.Receta receta = new com.code.hyperledger.coso.Receta(); - - return "Hello, World!"; + @PostMapping("/obtener") + public ResponseEntity find(String id) { + try { + return new ResponseEntity<>(recetaService.obtenerReceta(id), HttpStatus.OK); + } catch (IOException | GatewayException e) { + e.printStackTrace(); + return new ResponseEntity<>(HttpStatus.NOT_FOUND); + } } - - } diff --git a/asset-transfer-basic/maven-example/src/main/java/com/code/hyperledger/coso/Receta.java b/asset-transfer-basic/maven-example/src/main/java/com/code/hyperledger/coso/Receta.java index fed386fd..93c25979 100644 --- a/asset-transfer-basic/maven-example/src/main/java/com/code/hyperledger/coso/Receta.java +++ b/asset-transfer-basic/maven-example/src/main/java/com/code/hyperledger/coso/Receta.java @@ -1,12 +1,12 @@ package com.code.hyperledger.coso; -import java.time.LocalDate; -import java.time.LocalDateTime; - import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +import java.time.LocalDate; +import java.time.LocalDateTime; + @Data @AllArgsConstructor @NoArgsConstructor @@ -27,5 +27,4 @@ public class Receta { private LocalDate fechaDeAutorizacion; private int cantidad; private LocalDate expectedSupplyDuration; - } diff --git a/asset-transfer-basic/maven-example/src/main/java/com/code/hyperledger/services/RecetaService.java b/asset-transfer-basic/maven-example/src/main/java/com/code/hyperledger/services/RecetaService.java index 00a4b490..f464ead2 100644 --- a/asset-transfer-basic/maven-example/src/main/java/com/code/hyperledger/services/RecetaService.java +++ b/asset-transfer-basic/maven-example/src/main/java/com/code/hyperledger/services/RecetaService.java @@ -1,7 +1,7 @@ package com.code.hyperledger.services; -import com.code.hyperledger.App; import com.code.hyperledger.coso.Receta; +import com.fasterxml.jackson.databind.ObjectMapper; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import io.grpc.Grpc; @@ -14,6 +14,7 @@ import org.springframework.stereotype.Service; import javax.annotation.PostConstruct; import java.io.IOException; +import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; @@ -45,7 +46,7 @@ public class RecetaService { private static final String OVERRIDE_AUTH = "peer0.org1.example.com"; private Contract contract; - private final String assetId = "asset" + Instant.now().toEpochMilli(); + //private final String assetId = "asset" + Instant.now().toEpochMilli(); private final Gson gson = new GsonBuilder().setPrettyPrinting().create(); @@ -71,9 +72,10 @@ public class RecetaService { try (var gateway = builder.connect()) { this.setContract(gateway); - } finally { + this.initLedger(); + } /*finally { channel.shutdownNow().awaitTermination(5, TimeUnit.SECONDS); - } + }*/ } @@ -117,29 +119,9 @@ public class RecetaService { System.out.println("*** Transaction committed successfully"); } - public void crearReceta() { + public void cargarReceta(Receta receta) throws CommitStatusException, EndorseException, CommitException, SubmitException { System.out.println("\n--> Submit Transaction: CreateAsset, creates new asset with all arguments"); - Receta receta = new Receta( - assetId, - "Tom", - "presc456", - "active", - LocalDateTime.now(), - "high", - "Medicine XYZ", - "Condition ABC", - "Take with food", - "30 days", - "1 pill per day", - "1 year", - "12345678", - LocalDate.now(), - 30, - LocalDate.now() - ); - - try { contract.submitTransaction( "CreateAsset", receta.getId(), @@ -159,19 +141,15 @@ public class RecetaService { Integer.toString(receta.getCantidad()), receta.getExpectedSupplyDuration().toString() ); - } catch (EndorseException e) { - e.printStackTrace(); - } catch (SubmitException e) { - e.printStackTrace(); - } catch (CommitStatusException e) { - e.printStackTrace(); - } catch (CommitException e) { - e.printStackTrace(); - } System.out.println("*** Transaction committed successfully"); - } + public Receta obtenerReceta(String assetId) throws GatewayException, IOException { + System.out.println("\n--> Evaluate Transaction: ReadAsset, function returns asset attributes"); + var evaluateResult = contract.evaluateTransaction("ReadAsset", assetId); + ObjectMapper objectMapper = new ObjectMapper(); + return objectMapper.readValue(evaluateResult, Receta.class); + } }