From 46129d41073e76fd8cf88bb0a63127ad116ffea8 Mon Sep 17 00:00:00 2001 From: Leandro Pinho Date: Sat, 2 Apr 2022 17:10:45 -0300 Subject: [PATCH] add external fields to combination and unicorn --- .../V2.7__add_external_to_combination.sql | 4 ++ .../V2.8__add_external_to_vdf_unicorn.sql | 4 ++ .../beacon/interfac/api/dto/PulseDto.java | 6 +-- .../interfac/domain/pulse/External.java | 43 ------------------- .../interfac/domain/pulse/ExternalDto.java | 35 +++++++++++++++ .../beacon/interfac/infra/ExternalEntity.java | 10 ++++- .../shared/ByteSerializationFields.java | 12 ++++++ .../beacon/vdf/application/VdfPulseDto.java | 3 ++ .../combination/CombinationResource.java | 3 ++ .../CombinationServiceCalcAndPersist.java | 4 ++ .../vdfunicorn/VdfUnicornResource.java | 3 ++ .../vdfunicorn/VdfUnicornService.java | 8 ++-- .../vdf/infra/entity/CombinationEntity.java | 4 ++ .../vdf/infra/entity/VdfUnicornEntity.java | 4 ++ .../src/main/resources/application.properties | 14 +++--- .../resources/static/js/vdf-combination.js | 9 ++++ .../main/resources/static/js/vdf-unicorn.js | 9 ++++ 17 files changed, 118 insertions(+), 57 deletions(-) create mode 100644 beacon-engine/src/main/resources/db/migration/V2.7__add_external_to_combination.sql create mode 100644 beacon-engine/src/main/resources/db/migration/V2.8__add_external_to_vdf_unicorn.sql delete mode 100644 beacon-interface/src/main/java/com/example/beacon/interfac/domain/pulse/External.java create mode 100644 beacon-interface/src/main/java/com/example/beacon/interfac/domain/pulse/ExternalDto.java diff --git a/beacon-engine/src/main/resources/db/migration/V2.7__add_external_to_combination.sql b/beacon-engine/src/main/resources/db/migration/V2.7__add_external_to_combination.sql new file mode 100644 index 0000000..fdce9f9 --- /dev/null +++ b/beacon-engine/src/main/resources/db/migration/V2.7__add_external_to_combination.sql @@ -0,0 +1,4 @@ +ALTER TABLE vdf_combination +ADD COLUMN ext_src_id varchar(255) NOT NULL, +ADD COLUMN ext_status smallint(6) NOT NULL, +ADD COLUMN ext_value varchar(255) NOT NULL; \ No newline at end of file diff --git a/beacon-engine/src/main/resources/db/migration/V2.8__add_external_to_vdf_unicorn.sql b/beacon-engine/src/main/resources/db/migration/V2.8__add_external_to_vdf_unicorn.sql new file mode 100644 index 0000000..2da9774 --- /dev/null +++ b/beacon-engine/src/main/resources/db/migration/V2.8__add_external_to_vdf_unicorn.sql @@ -0,0 +1,4 @@ +ALTER TABLE vdf_unicorn +ADD COLUMN ext_src_id varchar(255) NOT NULL, +ADD COLUMN ext_status smallint(6) NOT NULL, +ADD COLUMN ext_value varchar(255) NOT NULL; \ No newline at end of file diff --git a/beacon-interface/src/main/java/com/example/beacon/interfac/api/dto/PulseDto.java b/beacon-interface/src/main/java/com/example/beacon/interfac/api/dto/PulseDto.java index 78c1ab5..dd36a62 100644 --- a/beacon-interface/src/main/java/com/example/beacon/interfac/api/dto/PulseDto.java +++ b/beacon-interface/src/main/java/com/example/beacon/interfac/api/dto/PulseDto.java @@ -1,6 +1,6 @@ package com.example.beacon.interfac.api.dto; -import com.example.beacon.interfac.domain.pulse.External; +import com.example.beacon.interfac.domain.pulse.ExternalDto; import com.example.beacon.interfac.domain.pulse.ListValue; import com.example.beacon.interfac.infra.PulseEntity; import com.fasterxml.jackson.annotation.JsonFormat; @@ -36,7 +36,7 @@ public class PulseDto { private String localRandomValue; - private External external; + private ExternalDto external; private List listValues; @@ -65,7 +65,7 @@ public PulseDto(PulseEntity pulseEntity){ this.outputValue = pulseEntity.getOutputValue(); this.statusCode = pulseEntity.getStatusCode(); - this.external = External.newExternalFromEntity(pulseEntity.getExternalEntity()); + this.external = ExternalDto.newExternalFromEntity(pulseEntity.getExternalEntity()); this.listValues = convertListValuesToPulse(pulseEntity); } diff --git a/beacon-interface/src/main/java/com/example/beacon/interfac/domain/pulse/External.java b/beacon-interface/src/main/java/com/example/beacon/interfac/domain/pulse/External.java deleted file mode 100644 index ecf6937..0000000 --- a/beacon-interface/src/main/java/com/example/beacon/interfac/domain/pulse/External.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.example.beacon.interfac.domain.pulse; - -import com.example.beacon.interfac.infra.ExternalEntity; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data -@NoArgsConstructor -public class External { - - private String sourceId; - - private short statusCode; - - private String value; - - private External(String sourceId, short statusCode, String value) { - this.sourceId = sourceId; - this.statusCode = statusCode; - this.value = value; - } - - public static External newExternal(){ - return new External("00000000000000000000000000000000000000000000000000000000000000000000000000000000" + - "000000000000000000000000000000000000000000000000", - new Short("0"), - "000000000000000000000000000000000000000000000000000000000000000000000000000000" + - "00000000000000000000000000000000000000000000000000"); - } - - public static External newExternalFromEntity(ExternalEntity entity){ - return new External(entity.getSourceId(), entity.getStatusCode(), entity.getValue()); - } - - @Override - public String toString() { - return "External{" + - "sourceId='" + sourceId + '\'' + - ", statusCode=" + statusCode + - ", value='" + value + '\'' + - '}'; - } -} diff --git a/beacon-interface/src/main/java/com/example/beacon/interfac/domain/pulse/ExternalDto.java b/beacon-interface/src/main/java/com/example/beacon/interfac/domain/pulse/ExternalDto.java new file mode 100644 index 0000000..b181e58 --- /dev/null +++ b/beacon-interface/src/main/java/com/example/beacon/interfac/domain/pulse/ExternalDto.java @@ -0,0 +1,35 @@ +package com.example.beacon.interfac.domain.pulse; + +import com.example.beacon.interfac.infra.ExternalEntity; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +public class ExternalDto { + + private String sourceId; + + private short statusCode; + + private String value; + + private ExternalDto(String sourceId, short statusCode, String value) { + this.sourceId = sourceId; + this.statusCode = statusCode; + this.value = value; + } + + public static ExternalDto newExternalFromEntity(ExternalEntity entity){ + return new ExternalDto(entity.getSourceId(), entity.getStatusCode(), entity.getValue()); + } + + @Override + public String toString() { + return "External{" + + "sourceId='" + sourceId + '\'' + + ", statusCode=" + statusCode + + ", value='" + value + '\'' + + '}'; + } +} diff --git a/beacon-interface/src/main/java/com/example/beacon/interfac/infra/ExternalEntity.java b/beacon-interface/src/main/java/com/example/beacon/interfac/infra/ExternalEntity.java index 12400e3..1a0846a 100644 --- a/beacon-interface/src/main/java/com/example/beacon/interfac/infra/ExternalEntity.java +++ b/beacon-interface/src/main/java/com/example/beacon/interfac/infra/ExternalEntity.java @@ -21,10 +21,18 @@ public class ExternalEntity { public ExternalEntity() { } + public static ExternalEntity newExternalEntity(){ + return new ExternalEntity("00000000000000000000000000000000000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000", + new Short("0"), + "000000000000000000000000000000000000000000000000000000000000000000000000000000" + + "00000000000000000000000000000000000000000000000000"); + } + public ExternalEntity(String sourceId, short statusCode, String value) { this.sourceId = sourceId; this.statusCode = statusCode; this.value = value; } -} +} \ No newline at end of file diff --git a/beacon-interface/src/main/java/com/example/beacon/shared/ByteSerializationFields.java b/beacon-interface/src/main/java/com/example/beacon/shared/ByteSerializationFields.java index 8f297b8..4e9f41d 100644 --- a/beacon-interface/src/main/java/com/example/beacon/shared/ByteSerializationFields.java +++ b/beacon-interface/src/main/java/com/example/beacon/shared/ByteSerializationFields.java @@ -52,6 +52,12 @@ public ByteSerializationFields(CombinationEntity entity) throws IOException { byteSerializeHash(entity.getCertificateId()); encode8(entity.getPulseIndex()); byteSerializeString(getTimeStampFormated(entity.getTimeStamp())); + + // external + byteSerializeHash(entity.getExternal().getSourceId()); + encode4(entity.getExternal().getStatusCode()); + byteSerializeHash(entity.getExternal().getValue()); + byteSerializeString(entity.getCombination()); for (CombinationSeedEntity e : entity.getSeedList()) { byteSerializeString(getTimeStampFormated(e.getTimeStamp())); @@ -73,6 +79,12 @@ public ByteSerializationFields(VdfUnicornEntity entity) throws IOException { byteSerializeHash(entity.getCertificateId()); encode8(entity.getPulseIndex()); byteSerializeString(getTimeStampFormated(entity.getTimeStamp())); + + // external + byteSerializeHash(entity.getExternal().getSourceId()); + encode4(entity.getExternal().getStatusCode()); + byteSerializeHash(entity.getExternal().getValue()); + byteSerializeString(entity.getCombination()); for (VdfUnicornSeedEntity e : entity.getSeedList()) { byteSerializeString(getTimeStampFormated(e.getTimeStamp())); diff --git a/beacon-interface/src/main/java/com/example/beacon/vdf/application/VdfPulseDto.java b/beacon-interface/src/main/java/com/example/beacon/vdf/application/VdfPulseDto.java index 335ff78..bb4b165 100644 --- a/beacon-interface/src/main/java/com/example/beacon/vdf/application/VdfPulseDto.java +++ b/beacon-interface/src/main/java/com/example/beacon/vdf/application/VdfPulseDto.java @@ -1,5 +1,6 @@ package com.example.beacon.vdf.application; +import com.example.beacon.interfac.domain.pulse.ExternalDto; import com.example.beacon.vdf.application.combination.dto.VdfSlothDto; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; @@ -35,6 +36,8 @@ public class VdfPulseDto { private int period; + private ExternalDto external; + private String combination; private List seedList = new ArrayList<>(); diff --git a/beacon-interface/src/main/java/com/example/beacon/vdf/application/combination/CombinationResource.java b/beacon-interface/src/main/java/com/example/beacon/vdf/application/combination/CombinationResource.java index 71f07cc..bc3351d 100644 --- a/beacon-interface/src/main/java/com/example/beacon/vdf/application/combination/CombinationResource.java +++ b/beacon-interface/src/main/java/com/example/beacon/vdf/application/combination/CombinationResource.java @@ -1,5 +1,6 @@ package com.example.beacon.vdf.application.combination; +import com.example.beacon.interfac.domain.pulse.ExternalDto; import com.example.beacon.vdf.application.VdfPulseDto; import com.example.beacon.vdf.application.VdfSeedDto; import com.example.beacon.vdf.application.combination.dto.VdfSlothDto; @@ -150,6 +151,8 @@ private VdfPulseDto convertToDto(CombinationEntity entity){ dto.setCombination(entity.getCombination()); dto.setOutputValue(entity.getOutputValue()); + dto.setExternal(ExternalDto.newExternalFromEntity(entity.getExternal())); + entity.getSeedList().forEach(s -> dto.addSeed(new VdfSeedDto(s.getSeed(), DateUtil.getTimeStampFormated(s.getTimeStamp()), diff --git a/beacon-interface/src/main/java/com/example/beacon/vdf/application/combination/CombinationServiceCalcAndPersist.java b/beacon-interface/src/main/java/com/example/beacon/vdf/application/combination/CombinationServiceCalcAndPersist.java index 6952ab8..9732eb7 100644 --- a/beacon-interface/src/main/java/com/example/beacon/vdf/application/combination/CombinationServiceCalcAndPersist.java +++ b/beacon-interface/src/main/java/com/example/beacon/vdf/application/combination/CombinationServiceCalcAndPersist.java @@ -3,6 +3,7 @@ import br.gov.inmetro.beacon.library.ciphersuite.suite0.CipherSuiteBuilder; import br.gov.inmetro.beacon.library.ciphersuite.suite0.CriptoUtilService; import br.gov.inmetro.beacon.library.ciphersuite.suite0.ICipherSuite; +import com.example.beacon.interfac.infra.ExternalEntity; import com.example.beacon.shared.ByteSerializationFields; import com.example.beacon.vdf.VdfSloth; import com.example.beacon.vdf.application.combination.dto.SeedUnicordCombinationVo; @@ -90,6 +91,9 @@ protected void persist(String timeStamp, List seedUnic combinationEntity.setTimeStamp(ZonedDateTime.parse(timeStamp, DateTimeFormatter.ISO_DATE_TIME)); combinationEntity.setCertificateId(this.certificateId); combinationEntity.setCipherSuite(0); + + combinationEntity.setExternal(ExternalEntity.newExternalEntity()); + combinationEntity.setCombination(env.getProperty("vdf.combination").toUpperCase()); combinationEntity.setPeriod(Integer.parseInt(env.getProperty("beacon.combination.period"))); diff --git a/beacon-interface/src/main/java/com/example/beacon/vdf/application/vdfunicorn/VdfUnicornResource.java b/beacon-interface/src/main/java/com/example/beacon/vdf/application/vdfunicorn/VdfUnicornResource.java index e76901f..7477bb9 100644 --- a/beacon-interface/src/main/java/com/example/beacon/vdf/application/vdfunicorn/VdfUnicornResource.java +++ b/beacon-interface/src/main/java/com/example/beacon/vdf/application/vdfunicorn/VdfUnicornResource.java @@ -1,5 +1,6 @@ package com.example.beacon.vdf.application.vdfunicorn; +import com.example.beacon.interfac.domain.pulse.ExternalDto; import com.example.beacon.vdf.application.VdfPulseDto; import com.example.beacon.vdf.application.VdfSeedDto; import com.example.beacon.vdf.application.combination.dto.VdfSlothDto; @@ -190,6 +191,8 @@ private VdfPulseDto convertToDto(VdfUnicornEntity entity){ dto.setCombination(entity.getCombination()); dto.setOutputValue(entity.getOutputValue()); + dto.setExternal(ExternalDto.newExternalFromEntity(entity.getExternal())); + entity.getSeedList().forEach(s -> dto.addSeed(new VdfSeedDto(s.getSeed(), DateUtil.getTimeStampFormated(s.getTimeStamp()), diff --git a/beacon-interface/src/main/java/com/example/beacon/vdf/application/vdfunicorn/VdfUnicornService.java b/beacon-interface/src/main/java/com/example/beacon/vdf/application/vdfunicorn/VdfUnicornService.java index 7e4ab87..cc9e5f1 100644 --- a/beacon-interface/src/main/java/com/example/beacon/vdf/application/vdfunicorn/VdfUnicornService.java +++ b/beacon-interface/src/main/java/com/example/beacon/vdf/application/vdfunicorn/VdfUnicornService.java @@ -3,6 +3,7 @@ import br.gov.inmetro.beacon.library.ciphersuite.suite0.CipherSuiteBuilder; import br.gov.inmetro.beacon.library.ciphersuite.suite0.CriptoUtilService; import br.gov.inmetro.beacon.library.ciphersuite.suite0.ICipherSuite; +import com.example.beacon.interfac.infra.ExternalEntity; import com.example.beacon.shared.ByteSerializationFields; import com.example.beacon.vdf.VdfSloth; import com.example.beacon.vdf.application.VdfSeedDto; @@ -104,11 +105,6 @@ private SeedUnicordCombinationVo calcSeedConcat(SeedPostDto dtoNew, List honestSeeds = seedBuilder.getHonestPartyUnicorn(); @@ -196,6 +192,8 @@ protected void persist(BigInteger y, BigInteger x, int iterations) throws Except unicornEntity.setCombination(env.getProperty("vdf.combination").toUpperCase()); unicornEntity.setPeriod(Integer.parseInt(env.getProperty("beacon.unicorn.period"))); + unicornEntity.setExternal(ExternalEntity.newExternalEntity()); + this.seedListUnicordCombination.forEach(SeedUnicordCombinationVo -> unicornEntity.addSeed(new VdfUnicornSeedEntity(SeedUnicordCombinationVo, unicornEntity))); diff --git a/beacon-interface/src/main/java/com/example/beacon/vdf/infra/entity/CombinationEntity.java b/beacon-interface/src/main/java/com/example/beacon/vdf/infra/entity/CombinationEntity.java index 719c06c..a9b3aa9 100644 --- a/beacon-interface/src/main/java/com/example/beacon/vdf/infra/entity/CombinationEntity.java +++ b/beacon-interface/src/main/java/com/example/beacon/vdf/infra/entity/CombinationEntity.java @@ -1,5 +1,6 @@ package com.example.beacon.vdf.infra.entity; +import com.example.beacon.interfac.infra.ExternalEntity; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -36,6 +37,9 @@ public class CombinationEntity { private int period; + @Embedded + private ExternalEntity external; + private String combination; @OneToMany(fetch = FetchType.LAZY, mappedBy = "combinationEntity", cascade = CascadeType.ALL) diff --git a/beacon-interface/src/main/java/com/example/beacon/vdf/infra/entity/VdfUnicornEntity.java b/beacon-interface/src/main/java/com/example/beacon/vdf/infra/entity/VdfUnicornEntity.java index 08c4f28..3b2adbf 100644 --- a/beacon-interface/src/main/java/com/example/beacon/vdf/infra/entity/VdfUnicornEntity.java +++ b/beacon-interface/src/main/java/com/example/beacon/vdf/infra/entity/VdfUnicornEntity.java @@ -1,5 +1,6 @@ package com.example.beacon.vdf.infra.entity; +import com.example.beacon.interfac.infra.ExternalEntity; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -36,6 +37,9 @@ public class VdfUnicornEntity { private int period; + @Embedded + private ExternalEntity external; + private String combination; @OneToMany(fetch = FetchType.LAZY, mappedBy = "vdfUnicornEntity", cascade = CascadeType.ALL) diff --git a/beacon-interface/src/main/resources/application.properties b/beacon-interface/src/main/resources/application.properties index b33beee..dcacf4f 100644 --- a/beacon-interface/src/main/resources/application.properties +++ b/beacon-interface/src/main/resources/application.properties @@ -12,7 +12,11 @@ spring.datasource.password=${RDS_PASSWORD:123456} spring.jpa.hibernate.ddl-auto=validate #hibernate -spring.jpa.show-sql=false +spring.jpa.show-sql=true + +spring.jpa.properties.hibernate.use_sql_comments=true +spring.jpa.properties.hibernate.format_sql=true + spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect spring.jpa.properties.hibernate.jdbc.time_zone=UTC @@ -60,8 +64,8 @@ beacon.x509.privatekey=${BEACON_X509_PRIVATEKEY} #170000 = 1m 2s running #170000*8 = 1360000 beacon.combination.iterations=1360000 -#period in minutes -beacon.combination.period=10 +#period in milliseconds +beacon.combination.period=600000 # beacon.combination.sources.seconds-to-retry=5 @@ -83,8 +87,8 @@ beacon.unicorn.start.submission=0 0,30 * * * * #170000 = 1 minute running #170000*24 = 1530000 beacon.unicorn.iterations=1530000 -#period in minutes -beacon.unicorn.period=30 +#period in milliseconds +beacon.unicorn.period=1800000 ######################################################################### diff --git a/beacon-interface/src/main/resources/static/js/vdf-combination.js b/beacon-interface/src/main/resources/static/js/vdf-combination.js index 7c26c32..ec8d144 100644 --- a/beacon-interface/src/main/resources/static/js/vdf-combination.js +++ b/beacon-interface/src/main/resources/static/js/vdf-combination.js @@ -119,6 +119,15 @@ function atualizarRecord(data) { lista += 'Time:'; lista += '' + pulse.timeStamp + ''; + lista += 'External Source Id:'; + lista += '' + pulse.external.sourceId + ''; + + lista += 'External Status Code:'; + lista += '' + pulse.external.statusCode + ''; + + lista += 'External Value:'; + lista += '' + pulse.external.value + ''; + lista += 'Combination:'; lista += '' + pulse.combination + ''; diff --git a/beacon-interface/src/main/resources/static/js/vdf-unicorn.js b/beacon-interface/src/main/resources/static/js/vdf-unicorn.js index 66e8230..180fdaa 100644 --- a/beacon-interface/src/main/resources/static/js/vdf-unicorn.js +++ b/beacon-interface/src/main/resources/static/js/vdf-unicorn.js @@ -157,6 +157,15 @@ function atualizarRecord(data) { lista += 'Time:'; lista += '' + pulse.timeStamp + ''; + lista += 'External Source Id:'; + lista += '' + pulse.external.sourceId + ''; + + lista += 'External Status Code:'; + lista += '' + pulse.external.statusCode + ''; + + lista += 'External Value:'; + lista += '' + pulse.external.value + ''; + lista += 'Combination:'; lista += '' + pulse.combination + '';