Skip to content

Commit 59a39d5

Browse files
committed
[backend] Catalog connector ingestion data
1 parent b975106 commit 59a39d5

File tree

3 files changed

+49
-38
lines changed

3 files changed

+49
-38
lines changed

openaev-api/src/main/java/io/openaev/runner/CatalogConnectorIngestionRunner.java

Lines changed: 28 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import lombok.extern.slf4j.Slf4j;
1919
import org.springframework.boot.CommandLineRunner;
2020
import org.springframework.stereotype.Component;
21+
import org.springframework.transaction.annotation.Transactional;
2122

2223
@Slf4j
2324
@RequiredArgsConstructor
@@ -52,35 +53,29 @@ public void run(String... args) {
5253
}
5354

5455
private List<CatalogConnector> extractCatalog(JsonNode rootNode) {
55-
List<CatalogConnector> catalogConnectors = new ArrayList<>();
56-
57-
JsonNode contracts = rootNode.get("contracts");
58-
if (contracts != null && contracts.isArray()) {
59-
for (JsonNode contract : contracts) {
60-
Optional<CatalogConnector> catalog = buildCatalogConnector(contract);
61-
catalog.ifPresent(catalogConnectors::add);
56+
JsonNode contracts = rootNode.get("contracts");
57+
if (contracts == null) {
58+
// TODO throw error ?
59+
return List.of();
6260
}
63-
}
64-
List<CatalogConnector> savedConnectors = catalogConnectorService.upsertAll(catalogConnectors);
6561

66-
if (contracts != null && contracts.isArray()) {
67-
int index = 0;
68-
for (JsonNode contract : contracts) {
69-
CatalogConnector savedConnector = savedConnectors.get(index);
70-
71-
List<CatalogConnectorConfiguration> configs = buildConnectorConfigurations(contract,
72-
savedConnector);
73-
catalogConnectorConfigurationService.upsertAll(configs);
62+
List<CatalogConnector> catalogConnectorList = new ArrayList<>();
7463

75-
index++;
64+
for (JsonNode contract : contracts) {
65+
CatalogConnector catalogConnector = buildCatalogConnector(contract);
66+
catalogConnectorList.add(catalogConnector);
7667
}
77-
}
68+
List<CatalogConnector> savedConnectors = catalogConnectorService.saveAll(catalogConnectorList);
7869

7970
return savedConnectors;
8071
}
8172

82-
private Optional<CatalogConnector> buildCatalogConnector(JsonNode contract) {
83-
CatalogConnector connector = new CatalogConnector();
73+
private CatalogConnector buildCatalogConnector(JsonNode contract) {
74+
75+
CatalogConnector connector = catalogConnectorService
76+
.findBySlug(contract.get("slug").asText())
77+
.orElseGet(CatalogConnector::new);
78+
8479

8580
List<String> useCases = new ArrayList<>();
8681
JsonNode arrUseCases = contract.get("use_cases");
@@ -125,14 +120,18 @@ private Optional<CatalogConnector> buildCatalogConnector(JsonNode contract) {
125120
connector.setContainerType(CatalogConnector.CONNECTOR_TYPE.valueOf(containerType.trim().toUpperCase()));
126121
} else{
127122
log.error("container_type is null");
128-
return Optional.empty();
123+
//TODO : return empty
124+
connector.setContainerType(CatalogConnector.CONNECTOR_TYPE.COLLECTOR);
129125
}
130-
return Optional.of(connector);
126+
127+
Set<CatalogConnectorConfiguration> conf = buildConnectorConfigurations(contract, connector);
128+
connector.setCatalogConnectorConfigurations(conf);
129+
130+
return connector;
131131
}
132132

133-
private List<CatalogConnectorConfiguration> buildConnectorConfigurations(JsonNode contract,
134-
CatalogConnector connector) {
135-
List<CatalogConnectorConfiguration> configs = new ArrayList<>();
133+
private Set<CatalogConnectorConfiguration> buildConnectorConfigurations(JsonNode contract, CatalogConnector connector) {
134+
Set<CatalogConnectorConfiguration> configs = new HashSet<>();
136135

137136
JsonNode schema = contract.get("config_schema");
138137
if (schema == null || schema.isNull()) return configs;
@@ -146,7 +145,9 @@ private List<CatalogConnectorConfiguration> buildConnectorConfigurations(JsonNod
146145
String key = it.next();
147146
JsonNode prop = properties.get(key);
148147

149-
CatalogConnectorConfiguration conf = new CatalogConnectorConfiguration();
148+
CatalogConnectorConfiguration conf = connector.getCatalogConnectorConfigurations().stream()
149+
.filter(c ->key.equals(c.getConnectorConfigurationKey())).findFirst()
150+
.orElse( new CatalogConnectorConfiguration());
150151
conf.setCatalogConnector(connector);
151152
conf.setConnectorConfigurationKey(key);
152153

openaev-api/src/main/java/io/openaev/service/CatalogConnectorService.java

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import static io.openaev.helper.StreamHelper.fromIterable;
44

5-
import io.openaev.database.model.AssetGroup;
65
import io.openaev.database.model.CatalogConnector;
76
import io.openaev.database.repository.CatalogConnectorRepository;
87
import java.util.ArrayList;
@@ -11,6 +10,8 @@
1110

1211
import lombok.RequiredArgsConstructor;
1312
import org.springframework.stereotype.Service;
13+
import org.springframework.transaction.annotation.Transactional;
14+
1415

1516
@RequiredArgsConstructor
1617
@Service
@@ -25,21 +26,21 @@ public List<CatalogConnector> saveAll(List<CatalogConnector> connectors) {
2526
return fromIterable(catalogConnectorRepository.saveAll(connectors));
2627
}
2728

29+
public Optional<CatalogConnector> findBySlug(String slug){
30+
return catalogConnectorRepository.findBySlugWithConfigurations(slug);
31+
}
32+
33+
34+
@Transactional
2835
public List<CatalogConnector> upsertAll(List<CatalogConnector> connectors) {
2936
List<CatalogConnector> connectorsToAdd = new ArrayList<>();
3037

3138
for (CatalogConnector connectorIncoming : connectors) {
32-
Optional<CatalogConnector> connector = catalogConnectorRepository
33-
.findByTitle(connectorIncoming.getTitle());
34-
if (connector.isPresent()) {
35-
CatalogConnector catalogConnectorFromDb = connector.get();
36-
catalogConnectorFromDb.setDescription(connectorIncoming.getDescription());
37-
connectorsToAdd.add(catalogConnectorRepository.save(catalogConnectorFromDb));
38-
}
39-
else {
40-
connectorsToAdd.add(catalogConnectorRepository.save(connectorIncoming));
41-
}
39+
catalogConnectorRepository
40+
.findByTitle(connectorIncoming.getTitle())
41+
.ifPresent(existingConnector -> connectorIncoming.setId(existingConnector.getId()));
4242

43+
connectorsToAdd.add(catalogConnectorRepository.save(connectorIncoming));
4344
}
4445

4546
return connectorsToAdd;

openaev-model/src/main/java/io/openaev/database/repository/CatalogConnectorRepository.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,20 @@
33
import io.openaev.database.model.CatalogConnector;
44
import java.util.Optional;
55
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
6+
import org.springframework.data.jpa.repository.Query;
67
import org.springframework.data.repository.CrudRepository;
8+
import org.springframework.data.repository.query.Param;
79
import org.springframework.stereotype.Repository;
810

911
@Repository
1012
public interface CatalogConnectorRepository
1113
extends CrudRepository<CatalogConnector, String>, JpaSpecificationExecutor<CatalogConnector> {
1214
Optional<CatalogConnector> findByTitle(String title);
15+
16+
Optional<CatalogConnector> findBySlug(String slug);
17+
18+
@Query("SELECT c FROM CatalogConnector c LEFT JOIN FETCH c.catalogConnectorConfigurations WHERE c.slug = :slug")
19+
Optional<CatalogConnector> findBySlugWithConfigurations(String slug);
20+
21+
// List<CatalogConnector> findByTitleIn(List<String> titles);
1322
}

0 commit comments

Comments
 (0)