Skip to content

Commit

Permalink
fix: review changes
Browse files Browse the repository at this point in the history
  • Loading branch information
eschrewe committed Mar 11, 2024
1 parent ff1307c commit 34988cc
Show file tree
Hide file tree
Showing 11 changed files with 62 additions and 79 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -193,10 +193,6 @@ private void setupCustomerRole() throws JsonProcessingException {

log.info(mySelf.toString());

MaterialPartnerRelation newMpr = new MaterialPartnerRelation(centralControlUnitEntity, supplierPartner, "FOO42", false, true);
newMpr.setPartnerCXNumber("860fb504-b884-4009-9313-c6fb6cdcffff");
mprService.create(newMpr);

var builder = MaterialItemStock.builder();
var materialItemStock = builder.partner(supplierPartner)
.material(semiconductorMaterial)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,24 +70,24 @@ public JsonNode createMaterialRegistrationRequestBody(MaterialPartnerRelation ma
var specificAssetIdsArray = objectMapper.createArrayNode();
body.set("specificAssetIds", specificAssetIdsArray);

var partnerRefNode = List.of(getReferenceObject(materialPartnerRelation.getPartner().getBpnl()));
var partnerRefNode = List.of(createReferenceObject(materialPartnerRelation.getPartner().getBpnl()));

var digitalTwinObject = getDigitalTwinObject(partnerRefNode);
var digitalTwinObject = createDigitalTwinObject(partnerRefNode);
specificAssetIdsArray.add(digitalTwinObject);

var manufacturerIdObject = getManufacturerIdObject(materialPartnerRelation.getPartner().getBpnl(), partnerRefNode);
var manufacturerIdObject = createManufacturerIdObject(materialPartnerRelation.getPartner().getBpnl(), partnerRefNode);
specificAssetIdsArray.add(manufacturerIdObject);

var manufacturerPartIdObject = getManufacturerPartIdObject(materialPartnerRelation.getPartnerMaterialNumber(), partnerRefNode);
var manufacturerPartIdObject = createManufacturerPartIdObject(materialPartnerRelation.getPartnerMaterialNumber(), partnerRefNode);
specificAssetIdsArray.add(manufacturerPartIdObject);

var customerPartIdObject = getCustomerPartIdObject(material.getOwnMaterialNumber(), materialPartnerRelation.getPartner().getBpnl());
var customerPartIdObject = createCustomerPartIdObject(material.getOwnMaterialNumber(), materialPartnerRelation.getPartner().getBpnl());
specificAssetIdsArray.add(customerPartIdObject);

var submodelDescriptorsArray = objectMapper.createArrayNode();
body.set("submodelDescriptors", submodelDescriptorsArray);

var itemStockRequestSubmodelObject = getItemStockSubmodelObject();
var itemStockRequestSubmodelObject = createItemStockSubmodelObject();
submodelDescriptorsArray.add(itemStockRequestSubmodelObject);
log.info("Created body for material " + material.getOwnMaterialNumber() + "\n" + body.toPrettyString());
return body;
Expand All @@ -108,16 +108,16 @@ public JsonNode createProductRegistrationRequestBody(Material material, String p
var specificAssetIdsArray = objectMapper.createArrayNode();
body.set("specificAssetIds", specificAssetIdsArray);
mprs = mprs.stream().filter(MaterialPartnerRelation::isPartnerBuysMaterial).filter(mpr -> mpr.getMaterial().equals(material)).toList();
var partnerRefObjects = mprs.stream().map(mpr -> getReferenceObject(mpr.getPartner().getBpnl())).toList();
var partnerRefObjects = mprs.stream().map(mpr -> createReferenceObject(mpr.getPartner().getBpnl())).toList();
if (material.isProductFlag()) {
var digitalTwinObject = getDigitalTwinObject(partnerRefObjects);
var digitalTwinObject = createDigitalTwinObject(partnerRefObjects);
specificAssetIdsArray.add(digitalTwinObject);
var manufacturerPartIdObject = getManufacturerPartIdObject(material.getOwnMaterialNumber(), partnerRefObjects);
var manufacturerPartIdObject = createManufacturerPartIdObject(material.getOwnMaterialNumber(), partnerRefObjects);
specificAssetIdsArray.add(manufacturerPartIdObject);
var manufacturerIdObject = getManufacturerIdObject(variablesService.getOwnBpnl(), partnerRefObjects);
var manufacturerIdObject = createManufacturerIdObject(variablesService.getOwnBpnl(), partnerRefObjects);
specificAssetIdsArray.add(manufacturerIdObject);
for (var mpr : mprs) {
var customerPartIdObject = getCustomerPartIdObject(mpr.getPartnerMaterialNumber(), mpr.getPartner().getBpnl());
var customerPartIdObject = createCustomerPartIdObject(mpr.getPartnerMaterialNumber(), mpr.getPartner().getBpnl());
specificAssetIdsArray.add(customerPartIdObject);
}
} else {
Expand All @@ -128,88 +128,58 @@ public JsonNode createProductRegistrationRequestBody(Material material, String p
var submodelDescriptorsArray = objectMapper.createArrayNode();
body.set("submodelDescriptors", submodelDescriptorsArray);

var itemStockRequestSubmodelObject = getItemStockSubmodelObject();
var itemStockRequestSubmodelObject = createItemStockSubmodelObject();
submodelDescriptorsArray.add(itemStockRequestSubmodelObject);

log.info("Created body for product " + material.getOwnMaterialNumber() + "\n" + body.toPrettyString());
return body;
}

private ObjectNode getManufacturerPartIdObject(String manufacturerPartId, List<ObjectNode> refObjects) {
var manufacturerPartIdObject = objectMapper.createObjectNode();
manufacturerPartIdObject.put("name", MANUFACTURER_PART_ID);
manufacturerPartIdObject.put("value", manufacturerPartId);

private ObjectNode createGenericIdObject(String name, String id, List<ObjectNode> refObjects) {
var idObject = objectMapper.createObjectNode();
idObject.put("name", name);
idObject.put("value", id);
ObjectNode externalSubjectIdObject = objectMapper.createObjectNode();
manufacturerPartIdObject.set("externalSubjectId", externalSubjectIdObject);
idObject.set("externalSubjectId", externalSubjectIdObject);
externalSubjectIdObject.put("type", "ExternalReference");
ArrayNode keysArray = objectMapper.createArrayNode();
externalSubjectIdObject.set("keys", keysArray);
for (var refObject : refObjects) {
keysArray.add(refObject);
}
keysArray.add(getOwnReferenceObject());
return manufacturerPartIdObject;
keysArray.add(createOwnReferenceObject());
return idObject;
}

private ObjectNode getManufacturerIdObject(String manufacturerId, List<ObjectNode> refObjects) {
var manufacturerIdObject = objectMapper.createObjectNode();
manufacturerIdObject.put("name", MANUFACTURER_ID);
manufacturerIdObject.put("value", manufacturerId);
ObjectNode externalSubjectIdObject = objectMapper.createObjectNode();
manufacturerIdObject.set("externalSubjectId", externalSubjectIdObject);
externalSubjectIdObject.put("type", "ExternalReference");
ArrayNode keysArray = objectMapper.createArrayNode();
externalSubjectIdObject.set("keys", keysArray);
for (var refObject : refObjects) {
keysArray.add(refObject);
}
keysArray.add(getOwnReferenceObject());
return manufacturerIdObject;
private ObjectNode createManufacturerPartIdObject(String manufacturerPartId, List<ObjectNode> refObjects) {
return createGenericIdObject(MANUFACTURER_PART_ID, manufacturerPartId, refObjects);
}

private ObjectNode getCustomerPartIdObject(String customerPartId, String customerBpnl) {
var customerPartIdObject = objectMapper.createObjectNode();
customerPartIdObject.put("name", CUSTOMER_PART_ID);
customerPartIdObject.put("value", customerPartId);
ObjectNode externalSubjectIdObject = objectMapper.createObjectNode();
customerPartIdObject.set("externalSubjectId", externalSubjectIdObject);
externalSubjectIdObject.put("type", "ExternalReference");
ArrayNode keysArray = objectMapper.createArrayNode();
externalSubjectIdObject.set("keys", keysArray);
keysArray.add(getOwnReferenceObject());
keysArray.add(getReferenceObject(customerBpnl));
return customerPartIdObject;
private ObjectNode createManufacturerIdObject(String manufacturerId, List<ObjectNode> refObjects) {
return createGenericIdObject(MANUFACTURER_ID, manufacturerId, refObjects);
}

private ObjectNode getReferenceObject(String bpnl) {
private ObjectNode createCustomerPartIdObject(String customerPartId, String customerBpnl) {
return createGenericIdObject(CUSTOMER_PART_ID, customerPartId, List.of(createReferenceObject(customerBpnl)));
}

private JsonNode createDigitalTwinObject(List<ObjectNode> refNodes) {
return createGenericIdObject(DIGITAL_TWIN_TYPE, "PartType", refNodes);
}

private ObjectNode createReferenceObject(String bpnl) {
var refObject = objectMapper.createObjectNode();
refObject.put("type", "GlobalReference");
refObject.put("value", bpnl);
return refObject;
}

private ObjectNode getOwnReferenceObject() {
return getReferenceObject(variablesService.getOwnBpnl());
}


private JsonNode getDigitalTwinObject(List<ObjectNode> refNodes) {
var digitalTwinObject = objectMapper.createObjectNode();
digitalTwinObject.put("name", DIGITAL_TWIN_TYPE);
digitalTwinObject.put("value", "PartType");
var externalSubjectIdObject = objectMapper.createObjectNode();
digitalTwinObject.set("externalSubjectId", externalSubjectIdObject);
externalSubjectIdObject.put("type", "ExternalReference");
var keysArray = objectMapper.createArrayNode();
externalSubjectIdObject.set("keys", keysArray);
keysArray.add(getOwnReferenceObject());
for (var refNode : refNodes) {
keysArray.add(refNode);
}
return digitalTwinObject;
private ObjectNode createOwnReferenceObject() {
return createReferenceObject(variablesService.getOwnBpnl());
}

private JsonNode getItemStockSubmodelObject() {
private JsonNode createItemStockSubmodelObject() {
var itemStockRequestSubmodelObject = objectMapper.createObjectNode();

itemStockRequestSubmodelObject.put("id", UUID.randomUUID().toString());
Expand All @@ -230,7 +200,7 @@ private JsonNode getItemStockSubmodelObject() {
submodel3EndpointObject.put("interface", "SUBMODEL-3.0");
var protocolInformationObject = objectMapper.createObjectNode();
submodel3EndpointObject.set("protocolInformation", protocolInformationObject);
protocolInformationObject.put("href", variablesService.getEdcProtocolUrl());
protocolInformationObject.put("href", variablesService.getEdcDataplanePublicUrl());
protocolInformationObject.put("endpointProtocol", "HTTP");
var endpointProtocolVersionArray = objectMapper.createArrayNode();
protocolInformationObject.set("endpointProtocolVersion", endpointProtocolVersionArray);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,12 @@ public class VariablesService {
* Your control plane's protocol url
*/
private String edcProtocolUrl;
@Value("${edc.dataplane.public.url}")
/**
* Your data plane's public url
*/
private String edcDataplanePublicUrl;


@Value("${own.bpnl}")
/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -115,19 +115,19 @@ public Boolean call() throws Exception {
stream().filter(mpr -> mpr.getPartnerCXNumber() != null).toList();
boolean result = dtrAdapterService.updateProduct(materialPartnerRelation.getMaterial(), allCustomers);
if (result) {
log.info("Updated product DTR for " + materialPartnerRelation.getMaterial().getOwnMaterialNumber());
log.info("Updated product ShellDescriptor at DTR for " + materialPartnerRelation.getMaterial().getOwnMaterialNumber());
} else {
log.warn("Update failed for product DTR for " + materialPartnerRelation.getMaterial().getOwnMaterialNumber() + " Retries left: " + retries);
log.warn("Update of product ShellDescriptor failed at DTR for " + materialPartnerRelation.getMaterial().getOwnMaterialNumber() + " Retries left: " + retries);
}
success &= result;
}
if (materialPartnerRelation.getMaterial().isMaterialFlag()) {
boolean result = dtrAdapterService.updateMaterialAtDtr(materialPartnerRelation);
if (result) {
log.info("Updated material DTR for " + materialPartnerRelation.getMaterial().getOwnMaterialNumber() +
log.info("Updated material ShellDescriptor at DTR for " + materialPartnerRelation.getMaterial().getOwnMaterialNumber() +
" and supplier partner " + materialPartnerRelation.getPartner().getBpnl());
} else {
log.warn("Failed Update for material DTR for " + materialPartnerRelation.getMaterial().getOwnMaterialNumber() +
log.warn("Update of material ShellDescriptor failed at DTR for " + materialPartnerRelation.getMaterial().getOwnMaterialNumber() +
" and supplier partner " + materialPartnerRelation.getPartner().getBpnl() + " Retries left: " + retries);
}
success &= result;
Expand All @@ -142,20 +142,20 @@ public Boolean call() throws Exception {
stream().filter(mpr -> mpr.getPartnerCXNumber() != null).toList();
boolean result = dtrAdapterService.updateProduct(materialPartnerRelation.getMaterial(), allCustomers);
if (result) {
log.info("Updated product DTR for " + materialPartnerRelation.getMaterial().getOwnMaterialNumber());
log.info("Updated product ShellDescriptor at DTR for " + materialPartnerRelation.getMaterial().getOwnMaterialNumber());
} else {
log.warn("Update failed for product DTR for " + materialPartnerRelation.getMaterial().getOwnMaterialNumber() + " Retries left: " + retries);
log.warn("Update of product ShellDescriptor failed at DTR for " + materialPartnerRelation.getMaterial().getOwnMaterialNumber() + " Retries left: " + retries);
}
success &= result;

}
if (materialPartnerRelation.getMaterial().isMaterialFlag()) {
boolean result = dtrAdapterService.registerMaterialAtDtr(materialPartnerRelation);
if (result) {
log.info("Created material DTR for " + materialPartnerRelation.getMaterial().getOwnMaterialNumber() +
log.info("Created material ShellDescriptor at DTR for " + materialPartnerRelation.getMaterial().getOwnMaterialNumber() +
" and supplier partner " + materialPartnerRelation.getPartner().getBpnl());
} else {
log.warn("Failed creation for material DTR for " + materialPartnerRelation.getMaterial().getOwnMaterialNumber() +
log.warn("Creation of material ShellDescriptor failed at DTR for " + materialPartnerRelation.getMaterial().getOwnMaterialNumber() +
" and supplier partner " + materialPartnerRelation.getPartner().getBpnl() + " Retries left: " + retries);
}
success &= result;
Expand Down
1 change: 1 addition & 0 deletions backend/src/main/resources/application.properties
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ server.servlet.context-path=${API_ROOTDIR:/catena}
edc.controlplane.key=${EDC_CONTROLPLANE_KEY:password}
edc.controlplane.management.url=${EDC_CONTROLPLANE_MANAGEMENT_URL:http://customer-control-plane:8181/management}
edc.controlplane.protocol.url=${EDC_CONTROLPLANE_PROTOCOL_URL:http://customer-control-plane:8184/api/v1/dsp}
edc.dataplane.public.url=${EDC_DATAPLANE_PUBLIC_URL:http://customer-data-plane:8285/api/public/}

# Jackson (JSON)
#spring.jackson.default-property-inclusion=non_empty
Expand Down
1 change: 1 addition & 0 deletions backend/src/test/resources/application.properties
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ server.servlet.context-path=${API_ROOTDIR:/catena}
edc.controlplane.key=${EDC_CONTROLPLANE_KEY:password}
edc.controlplane.management.url=${EDC_CONTROLPLANE_MANAGEMENT_URL:http://customer-control-plane:8181/management}
edc.controlplane.protocol.url=${EDC_CONTROLPLANE_PROTOCOL_URL:http://customer-control-plane:8184/api/v1/dsp}
edc.dataplane.public.url=${EDC_DATAPLANE_PUBLIC_URL:http://customer-data-plane:8285/api/public/}

# Jackson (JSON)
#spring.jackson.default-property-inclusion=non_empty
Expand Down
1 change: 1 addition & 0 deletions charts/puris/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ $ helm install puris --namespace puris --create-namespace .
| backend.puris.datasource.username | string | `"db-user"` | Username of the database. Ignored if postgres.enabled is true. |
| backend.puris.demonstrator.role | string | `nil` | Current role of the PURIS demonstrator. Default value should be empty. Can be set to "customer" or "supplier" to enable demonstration setup |
| backend.puris.dtr.url | string | `"http://localhost:4243"` | Endpoint for DTR |
| backend.puris.edc.controlplane.dataplane.public.url | string | `"https://your-data-plane:8285/api/public/"` | Url of one of your data plane's public api |
| backend.puris.edc.controlplane.host | string | `"172.17.0.2"` | |
| backend.puris.edc.controlplane.key | string | `"password"` | Key for the EDC control plane |
| backend.puris.edc.controlplane.management.url | string | `"https:/your-edc-address:8181/management"` | Url to the EDC controlplane management of the edc |
Expand Down
2 changes: 2 additions & 0 deletions charts/puris/templates/backend-deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,8 @@ spec:
value: "{{ .Values.backend.puris.edc.controlplane.management.url }}"
- name: EDC_CONTROLPLANE_PROTOCOL_URL
value: "{{ .Values.backend.puris.edc.controlplane.protocol.url }}"
- name: EDC_DATAPLANE_PUBLIC_URL
value: "{{ .Values.backend.puris.edc.dataplane.public.url }}"
- name: OWN_BPNA
value: "{{ .Values.backend.puris.own.bpna }}"
- name: OWN_BPNL
Expand Down
4 changes: 4 additions & 0 deletions charts/puris/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -375,6 +375,10 @@ backend:
url: "https://your-edc-address:8184/api/v1/dsp"
# -- Key for the EDC control plane
key: "password"
dataplane:
public:
# -- Url of one of your data plane's public api
url: "https://your-data-plane:8285/api/public/"
own:
# -- Own BPNL of the EDC
bpnl: BPNL4444444444XX
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ puris.generatematerialcatenaxid=true
edc.controlplane.key=${EDC_API_PW}
edc.controlplane.management.url=http://customer-control-plane:8181/management
edc.controlplane.protocol.url=http://customer-control-plane:8184/api/v1/dsp
edc.dataplane.public.url=http://customer-data-plane:8285/api/public/

own.bpnl=BPNL4444444444XX
own.name=Control Unit Creator Inc.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ puris.generatematerialcatenaxid=true
edc.controlplane.key=${EDC_API_PW}
edc.controlplane.management.url=http://supplier-control-plane:9181/management
edc.controlplane.protocol.url=http://supplier-control-plane:9184/api/v1/dsp
edc.dataplane.public.url=http://supplier-data-plane:9285/api/public/

own.bpnl=BPNL1234567890ZZ
own.name=Semiconductor Supplier Inc.
Expand Down

0 comments on commit 34988cc

Please sign in to comment.