serialized as JSON';
-COMMENT ON COLUMN edc_policydefinitions.policy_type IS 'Java PolicyType serialized as JSON';
-
-CREATE UNIQUE INDEX IF NOT EXISTS edc_policydefinitions_id_uindex
- ON edc_policydefinitions (policy_id);
-
---
--- Copyright (c) 2023 sovity GmbH
---
--- This program and the accompanying materials are made available under the
--- terms of the Apache License, Version 2.0 which is available at
--- https://www.apache.org/licenses/LICENSE-2.0
---
--- SPDX-License-Identifier: Apache-2.0
---
--- Contributors:
--- sovity GmbH - Update Tables to Milestone-7 EDC
---
---
-ALTER TABLE edc_policydefinitions
- ADD created_at BIGINT;
-
-UPDATE edc_policydefinitions
-SET created_at=EXTRACT(EPOCH FROM CURRENT_TIMESTAMP) * 1000;
-
-ALTER TABLE edc_policydefinitions
- ALTER COLUMN created_at SET NOT NULL;
-
--- Statements are designed for and tested with Postgres only!
-
-CREATE TABLE IF NOT EXISTS edc_lease
-(
- leased_by VARCHAR NOT NULL,
- leased_at BIGINT,
- lease_duration INTEGER NOT NULL,
- lease_id VARCHAR NOT NULL
- CONSTRAINT lease_pk
- PRIMARY KEY
-);
-
-COMMENT ON COLUMN edc_lease.leased_at IS 'posix timestamp of lease';
-
-COMMENT ON COLUMN edc_lease.lease_duration IS 'duration of lease in milliseconds';
-
-CREATE TABLE IF NOT EXISTS edc_transfer_process
-(
- transferprocess_id VARCHAR NOT NULL
- CONSTRAINT transfer_process_pk
- PRIMARY KEY,
- type VARCHAR NOT NULL,
- state INTEGER NOT NULL,
- state_count INTEGER DEFAULT 0 NOT NULL,
- state_time_stamp BIGINT,
- created_time_stamp BIGINT,
- trace_context JSON,
- error_detail VARCHAR,
- resource_manifest JSON,
- provisioned_resource_set JSON,
- content_data_address JSON,
- deprovisioned_resources JSON,
- lease_id VARCHAR
- CONSTRAINT transfer_process_lease_lease_id_fk
- REFERENCES edc_lease
- ON DELETE SET NULL
-);
-
-COMMENT ON COLUMN edc_transfer_process.trace_context IS 'Java Map serialized as JSON';
-
-COMMENT ON COLUMN edc_transfer_process.resource_manifest IS 'java ResourceManifest serialized as JSON';
-
-COMMENT ON COLUMN edc_transfer_process.provisioned_resource_set IS 'ProvisionedResourceSet serialized as JSON';
-
-COMMENT ON COLUMN edc_transfer_process.content_data_address IS 'DataAddress serialized as JSON';
-
-COMMENT ON COLUMN edc_transfer_process.deprovisioned_resources IS 'List of deprovisioned resources, serialized as JSON';
-
-
-CREATE UNIQUE INDEX IF NOT EXISTS transfer_process_id_uindex
- ON edc_transfer_process (transferprocess_id);
-
-CREATE TABLE IF NOT EXISTS edc_data_request
-(
- datarequest_id VARCHAR NOT NULL
- CONSTRAINT data_request_pk
- PRIMARY KEY,
- process_id VARCHAR NOT NULL,
- connector_address VARCHAR NOT NULL,
- protocol VARCHAR NOT NULL,
- connector_id VARCHAR,
- asset_id VARCHAR NOT NULL,
- contract_id VARCHAR NOT NULL,
- data_destination JSON NOT NULL,
- managed_resources BOOLEAN DEFAULT TRUE,
- properties JSON,
- transfer_type JSON,
- transfer_process_id VARCHAR NOT NULL
- CONSTRAINT data_request_transfer_process_id_fk
- REFERENCES edc_transfer_process
- ON UPDATE RESTRICT ON DELETE CASCADE
-);
-
-COMMENT ON COLUMN edc_data_request.data_destination IS 'DataAddress serialized as JSON';
-
-COMMENT ON COLUMN edc_data_request.properties IS 'java Map serialized as JSON';
-
-COMMENT ON COLUMN edc_data_request.transfer_type IS 'TransferType serialized as JSON';
-
-
-CREATE UNIQUE INDEX IF NOT EXISTS data_request_id_uindex
- ON edc_data_request (datarequest_id);
-
-CREATE UNIQUE INDEX IF NOT EXISTS lease_lease_id_uindex
- ON edc_lease (lease_id);
-
---
--- Copyright (c) 2023 sovity GmbH
---
--- This program and the accompanying materials are made available under the
--- terms of the Apache License, Version 2.0 which is available at
--- https://www.apache.org/licenses/LICENSE-2.0
---
--- SPDX-License-Identifier: Apache-2.0
---
--- Contributors:
--- sovity GmbH - Update Tables to Milestone-7 EDC
---
---
-
-ALTER TABLE edc_transfer_process
- RENAME COLUMN created_time_stamp TO created_at;
-
-UPDATE edc_transfer_process
-SET created_at = EXTRACT(EPOCH FROM CURRENT_TIMESTAMP) * 1000
-WHERE created_at = NULL;
-
-ALTER TABLE edc_transfer_process
- ADD updated_at BIGINT;
-
-UPDATE edc_transfer_process
-SET updated_at=created_at;
-
-ALTER TABLE edc_transfer_process
- ALTER COLUMN updated_at SET NOT NULL;
-ALTER TABLE edc_transfer_process
- ALTER COLUMN created_at SET NOT NULL;
-
---
--- Copyright (c) 2023 sovity GmbH
---
--- This program and the accompanying materials are made available under the
--- terms of the Apache License, Version 2.0 which is available at
--- https://www.apache.org/licenses/LICENSE-2.0
---
--- SPDX-License-Identifier: Apache-2.0
---
--- Contributors:
--- sovity GmbH - Update Tables to Milestone-8 EDC
---
---
-ALTER TABLE edc_transfer_process
- ADD transferprocess_properties JSON;
-
---
--- Copyright (c) 2023 sovity GmbH
---
--- This program and the accompanying materials are made available under the
--- terms of the Apache License, Version 2.0 which is available at
--- https://www.apache.org/licenses/LICENSE-2.0
---
--- SPDX-License-Identifier: Apache-2.0
---
--- Contributors:
--- sovity GmbH - Update Tables to Milestone-8 EDC
---
---
-UPDATE edc_transfer_process
-SET transferprocess_properties = '{}'::json
-WHERE transferprocess_properties IS NULL;
diff --git a/extensions/broker-server-postgres-flyway-jooq/src/main/resources/db/migration/V2__PoC.sql b/extensions/broker-server-postgres-flyway-jooq/src/main/resources/db/migration/V2__PoC.sql
deleted file mode 100644
index 45481e629..000000000
--- a/extensions/broker-server-postgres-flyway-jooq/src/main/resources/db/migration/V2__PoC.sql
+++ /dev/null
@@ -1,94 +0,0 @@
-create type connector_online_status as enum ('ONLINE', 'OFFLINE');
-create type measurement_type as enum ('CONNECTOR_REFRESH');
-create type measurement_error_status as enum ('ERROR', 'OK');
-
-create table connector
-(
- endpoint text not null,
- connector_id text not null,
- created_at timestamp with time zone not null,
- last_refresh_attempt_at timestamp with time zone,
- last_successful_refresh_at timestamp with time zone,
- online_status connector_online_status not null,
-
- PRIMARY KEY (endpoint)
-);
-
-create table data_offer
-(
- connector_endpoint text not null,
- asset_id text not null,
- asset_properties jsonb not null,
- created_at timestamp with time zone not null,
- updated_at timestamp with time zone,
-
- PRIMARY KEY (connector_endpoint, asset_id),
- FOREIGN KEY (connector_endpoint) REFERENCES connector (endpoint)
-);
-
-create table data_offer_contract_offer
-(
- contract_offer_id text not null,
- connector_endpoint text not null,
- asset_id text not null,
- policy jsonb not null,
- created_at timestamp with time zone not null,
- updated_at timestamp with time zone,
-
- PRIMARY KEY (contract_offer_id),
- FOREIGN KEY (connector_endpoint, asset_id) REFERENCES data_offer (connector_endpoint, asset_id),
- FOREIGN KEY (connector_endpoint) REFERENCES connector (endpoint)
-);
-
-create type broker_event_type as enum (
- --Connector was successfully updated, and changes were incorporated
- 'CONNECTOR_UPDATED',
-
- --Connector went online
- 'CONNECTOR_STATUS_CHANGE_ONLINE',
-
- --Connector went offline
- 'CONNECTOR_STATUS_CHANGE_OFFLINE',
-
- --Connector was "force deleted"
- 'CONNECTOR_STATUS_CHANGE_FORCE_DELETED',
-
- --Contract Offer was updated
- 'CONTRACT_OFFER_UPDATED',
-
- --Contract Offer was clicked
- 'CONTRACT_OFFER_CLICK'
-);
-
-create type broker_event_status as enum (
- -- Default
- 'OK',
-
- -- Failures
- 'ERROR'
-);
-
-create table broker_event_log
-(
- id serial primary key,
- created_at timestamp with time zone not null,
- user_message text not null,
- event broker_event_type not null,
- event_status broker_event_status not null,
- connector_endpoint text,
- asset_id text,
- error_stack text,
- duration_in_ms bigint
-);
-
-create table broker_execution_time_measurement
-(
- id serial primary key,
- created_at timestamp with time zone not null,
- connector_endpoint text not null,
- duration_in_ms bigint not null,
- type measurement_type not null,
- error_status measurement_error_status not null
-);
-
-create index speedup on broker_event_log (connector_endpoint, asset_id, event_status);
diff --git a/extensions/broker-server-postgres-flyway-jooq/src/main/resources/db/migration/V3_1__MvP.sql b/extensions/broker-server-postgres-flyway-jooq/src/main/resources/db/migration/V3_1__MvP.sql
deleted file mode 100644
index ecffc4e51..000000000
--- a/extensions/broker-server-postgres-flyway-jooq/src/main/resources/db/migration/V3_1__MvP.sql
+++ /dev/null
@@ -1,36 +0,0 @@
-create collation if not exists alphanumeric_with_natural_sort (provider = icu, locale = 'en-u-kn-true');
-
-create type connector_data_offers_exceeded as enum ('OK', 'EXCEEDED');
-create type connector_contract_offers_exceeded as enum ('OK', 'EXCEEDED');
-
-alter table broker_event_log
- drop column duration_in_ms;
-
-alter table connector
- alter column endpoint type text collate alphanumeric_with_natural_sort,
- add column data_offers_exceeded connector_data_offers_exceeded,
- add column contract_offers_exceeded connector_contract_offers_exceeded;
-
-update connector
-set data_offers_exceeded = 'OK',
- contract_offers_exceeded = 'OK';
-
-alter table connector
- alter column data_offers_exceeded set not null,
- alter column contract_offers_exceeded set not null;
-
-alter table data_offer
- alter column asset_id type text collate alphanumeric_with_natural_sort,
- add column asset_name text collate alphanumeric_with_natural_sort;
-
-update data_offer
-set asset_name = coalesce(asset_properties ->> 'asset:prop:name', asset_id);
-
-alter table data_offer
- alter column asset_name set not null;
-
--- update contract offer table's primary key
-alter table data_offer_contract_offer
- drop constraint data_offer_contract_offer_pkey;
-alter table data_offer_contract_offer
- add primary key (connector_endpoint, asset_id, contract_offer_id);
diff --git a/extensions/broker-server-postgres-flyway-jooq/src/main/resources/db/migration/V3_2__MvP_Non_Transactional.sql b/extensions/broker-server-postgres-flyway-jooq/src/main/resources/db/migration/V3_2__MvP_Non_Transactional.sql
deleted file mode 100644
index c39525a59..000000000
--- a/extensions/broker-server-postgres-flyway-jooq/src/main/resources/db/migration/V3_2__MvP_Non_Transactional.sql
+++ /dev/null
@@ -1,10 +0,0 @@
--- Changes to Enums are non-transactional and must be supplied in a separate migration script for flyway
-
--- Connector Data Offer Limit was exceeded
-alter type broker_event_type add value 'CONNECTOR_DATA_OFFER_LIMIT_EXCEEDED';
--- Connector Data Offer Limit was not exceeded
-alter type broker_event_type add value 'CONNECTOR_DATA_OFFER_LIMIT_OK';
--- Connector Contract Offer Limit was exceeded
-alter type broker_event_type add value 'CONNECTOR_CONTRACT_OFFER_LIMIT_EXCEEDED';
--- Connector Contract Offer Limit was not exceeded
-alter type broker_event_type add value 'CONNECTOR_CONTRACT_OFFER_LIMIT_OK';
diff --git a/extensions/broker-server-postgres-flyway-jooq/src/main/resources/db/migration/V4_1__MvP_Bugfixes_1_1_0.sql b/extensions/broker-server-postgres-flyway-jooq/src/main/resources/db/migration/V4_1__MvP_Bugfixes_1_1_0.sql
deleted file mode 100644
index da600f9e5..000000000
--- a/extensions/broker-server-postgres-flyway-jooq/src/main/resources/db/migration/V4_1__MvP_Bugfixes_1_1_0.sql
+++ /dev/null
@@ -1,9 +0,0 @@
-create table data_offer_view_count (
- id serial primary key,
- connector_endpoint text not null,
- asset_id text not null,
- date timestamp with time zone not null
-);
-
-create index data_offer_view_count_speedup on data_offer_view_count (connector_endpoint, asset_id);
-
diff --git a/extensions/broker-server-postgres-flyway-jooq/src/main/resources/db/migration/V4_2__MvP_Bugfixes_Non_Transactional.sql b/extensions/broker-server-postgres-flyway-jooq/src/main/resources/db/migration/V4_2__MvP_Bugfixes_Non_Transactional.sql
deleted file mode 100644
index 986e58cfd..000000000
--- a/extensions/broker-server-postgres-flyway-jooq/src/main/resources/db/migration/V4_2__MvP_Bugfixes_Non_Transactional.sql
+++ /dev/null
@@ -1,5 +0,0 @@
--- Changes to Enums are non-transactional and must be supplied in a separate migration script for flyway
-
--- Connector deleted due to being offline for too long
-alter type broker_event_type add value 'CONNECTOR_KILLED_DUE_TO_OFFLINE_FOR_TOO_LONG';
-alter type connector_online_status add value 'DEAD';
diff --git a/extensions/broker-server-postgres-flyway-jooq/src/main/resources/db/migration/V5_1__MvP_Fix_Asset_JSON_Properties.sql b/extensions/broker-server-postgres-flyway-jooq/src/main/resources/db/migration/V5_1__MvP_Fix_Asset_JSON_Properties.sql
deleted file mode 100644
index fea8c8173..000000000
--- a/extensions/broker-server-postgres-flyway-jooq/src/main/resources/db/migration/V5_1__MvP_Fix_Asset_JSON_Properties.sql
+++ /dev/null
@@ -1,18 +0,0 @@
--- Maps JSON Asset Properties to String
--- '{"a": "b", "c": [1, 2], "d": true}'::jsonb becomes '{"a": "b", "c": "[1, 2]", "d": "true"}'::jsonb
-create
-or replace function pg_temp.migrate_asset_properties(asset_properties jsonb) returns jsonb as
-$$
-begin
-return (select jsonb_object_agg(key, case when jsonb_typeof(value) = 'string' then value #>> '{}' else value::text end)
- from jsonb_each(asset_properties));
-end;
-$$
-language plpgsql;
-
--- Fix existing data offer asssets
-update data_offer
-set asset_properties = pg_temp.migrate_asset_properties(asset_properties);
-
--- Add new Event Log Status
-alter type broker_event_type add value 'CONNECTOR_DELETED';
diff --git a/extensions/broker-server-postgres-flyway-jooq/src/main/resources/db/migration/V6__EDC0.sql b/extensions/broker-server-postgres-flyway-jooq/src/main/resources/db/migration/V6__EDC0.sql
deleted file mode 100644
index c8edbe6fc..000000000
--- a/extensions/broker-server-postgres-flyway-jooq/src/main/resources/db/migration/V6__EDC0.sql
+++ /dev/null
@@ -1,166 +0,0 @@
--- Migration Script for Broker from MS8 to EDC 0
-
--- Migrates an Asset ID
-create
- or replace function pg_temp.migrate_asset_id(asset_id text) returns text as
-$$
-begin
- return replace(replace(asset_id::text, 'urn:artifact:', ''), ':', '-');
-end;
-$$
- language plpgsql;
-
--- Migrates a Connector Endpoint to EDC 0
-create
- or replace function pg_temp.migrate_connector_endpoint(endpoint text) returns text as
-$$
-begin
- return pg_temp.replace_suffix(endpoint, '/api/v1/ids/data', '/api/dsp');
-end;
-$$
- language plpgsql;
-
--- Creates a valid Asset JSON-LD from an Asset ID and Asset Title
-create
- or replace function pg_temp.build_asset_json_ld(asset_id text, asset_title text) returns jsonb as
-$$
-begin
- return jsonb_build_object(
- '@id', asset_id,
- 'https://w3id.org/edc/v0.0.1/ns/properties', jsonb_build_object(
- 'https://w3id.org/edc/v0.0.1/ns/id', asset_id,
- 'http://purl.org/dc/terms/title', asset_title
- )
- );
-end;
-$$
- language plpgsql;
-
--- Utility Function: replaceSuffix
-create
- or replace function pg_temp.replace_suffix(str text, old_suffix text, new_suffix text) returns text as
-$$
-begin
- return case
- when pg_temp.ends_with(str, old_suffix) then
- left(str, length(str) - length(old_suffix)) || new_suffix
- else
- str
- end;
-end;
-$$
- language plpgsql;
-
--- Utility Function: endsWith
-create or replace function pg_temp.ends_with(str text, suffix text)
- returns boolean as
-$$
-begin
- return right(str, length(suffix)) = suffix;
-end;
-$$ language plpgsql;
-
--- Utility Function: Drops fkey constraints that have auto-generated names. Different Postgresql versions generated different names.
-create or replace function pg_temp.drop_constraints_containing_fkey(table_name text)
- returns void as
-$$
-declare
- i record;
-begin
- for i in (select conname
- from pg_catalog.pg_constraint con
- inner join pg_catalog.pg_class rel on rel.oid = con.conrelid
- inner join pg_catalog.pg_namespace nsp on nsp.oid = connamespace
- where rel.relname = table_name
- and conname like '%fkey%')
- loop
- execute format('alter table %s drop constraint %s', table_name, i.conname);
- end loop;
-end;
-$$ language plpgsql;
-
-
--- Remove Connector Tables
--- All connector tables should be empty
--- There should be no references from broker tables to connector tables
-drop table edc_asset cascade;
-drop table edc_asset_dataaddress cascade;
-drop table edc_asset_property cascade;
-drop table edc_contract_agreement cascade;
-drop table edc_contract_definitions cascade;
-drop table edc_contract_negotiation cascade;
-drop table edc_data_plane_instance cascade;
-drop table edc_data_request cascade;
-drop table edc_lease cascade;
-drop table edc_policydefinitions cascade;
-drop table edc_transfer_process cascade;
-
-
--- Drop constraints
-select pg_temp.drop_constraints_containing_fkey('data_offer');
-select pg_temp.drop_constraints_containing_fkey('data_offer_contract_offer');
-
--- Migrate Connector Endpoints
-update broker_event_log
-set connector_endpoint = pg_temp.migrate_connector_endpoint(connector_endpoint);
-update broker_execution_time_measurement
-set connector_endpoint = pg_temp.migrate_connector_endpoint(connector_endpoint);
-update connector
-set endpoint = pg_temp.migrate_connector_endpoint(endpoint);
-update data_offer
-set connector_endpoint = pg_temp.migrate_connector_endpoint(connector_endpoint);
-update data_offer_contract_offer
-set connector_endpoint = pg_temp.migrate_connector_endpoint(connector_endpoint);
-update data_offer_view_count
-set connector_endpoint = pg_temp.migrate_connector_endpoint(connector_endpoint);
-
-
--- Migrate Asset IDs
-update broker_event_log
-set asset_id = pg_temp.migrate_asset_id(asset_id);
-update data_offer
-set asset_id = pg_temp.migrate_asset_id(asset_id);
-update data_offer_contract_offer
-set asset_id = pg_temp.migrate_asset_id(asset_id);
-update data_offer_view_count
-set asset_id = pg_temp.migrate_asset_id(asset_id);
-
--- Rename data_offer_contract_offer to contract_offer
-alter table data_offer_contract_offer
- rename to contract_offer;
-
--- Rename Connector ID to Participant ID
-alter table connector
- rename column connector_id to participant_id;
-
--- Add constraints
-alter table data_offer
- add constraint data_offer_connector_endpoint_fkey
- foreign key (connector_endpoint) references connector (endpoint);
-alter table contract_offer
- add constraint contract_offer_data_offer_fkey
- foreign key (connector_endpoint, asset_id) references data_offer (connector_endpoint, asset_id);
-alter table contract_offer
- add constraint contract_offer_connector_fkey
- foreign key (connector_endpoint) references connector (endpoint);
-
--- Migrate to Asset JSON-LD
-alter table data_offer
- rename column asset_properties to asset_json_ld;
-alter table data_offer
- rename column asset_name to asset_title;
-update data_offer
-set asset_json_ld = pg_temp.build_asset_json_ld(asset_id, asset_title);
-
--- Extracted Asset Metadata from the JSON-LD for Search / Filtering
-alter table data_offer
- add column description text not null default '',
- add column curator_organization_name text not null default '',
- add column data_category text not null default '',
- add column data_subcategory text not null default '',
- add column data_model text not null default '',
- add column transport_mode text not null default '',
- add column geo_reference_method text not null default '',
- add column keywords text[] not null default '{}',
- -- comma joined keywords for easier search
- add column keywords_comma_joined text not null default '';
diff --git a/extensions/broker-server-postgres-flyway-jooq/src/main/resources/db/migration/V7__Organization_Metadata.sql b/extensions/broker-server-postgres-flyway-jooq/src/main/resources/db/migration/V7__Organization_Metadata.sql
deleted file mode 100644
index d3e19bca0..000000000
--- a/extensions/broker-server-postgres-flyway-jooq/src/main/resources/db/migration/V7__Organization_Metadata.sql
+++ /dev/null
@@ -1,11 +0,0 @@
--- Create table for organization metadata
-create table organization_metadata
-(
- mds_id text not null primary key,
- name text not null
-);
-
--- Add MDS-ID column to organization table
-alter table connector add column mds_id text;
-update connector set mds_id = split_part(participant_id, '.', 1)
-where participant_id ~ '^MDSL[A-Za-z0-9]+\.C[A-Za-z0-9]+$';
diff --git a/extensions/broker-server-postgres-flyway-jooq/src/main/resources/db/testdata/V2_1__PoC_Test_Data.sql b/extensions/broker-server-postgres-flyway-jooq/src/main/resources/db/testdata/V2_1__PoC_Test_Data.sql
deleted file mode 100644
index fd42a12dd..000000000
--- a/extensions/broker-server-postgres-flyway-jooq/src/main/resources/db/testdata/V2_1__PoC_Test_Data.sql
+++ /dev/null
@@ -1,69 +0,0 @@
--- Test Data to be added after V2 so we can test subsequent migrations
-
-insert into connector (endpoint, connector_id, created_at, last_refresh_attempt_at, last_successful_refresh_at,
- online_status)
-values ('https://my-connector.com/api/v1/ids/data', 'test-connector-1', '2019-01-01 00:00:00',
- '2019-01-01 00:00:00', '2019-01-01 00:00:00', 'ONLINE');
-insert into data_offer (connector_endpoint, asset_id, asset_properties, created_at, updated_at)
-values ('https://my-connector.com/api/v1/ids/data',
- 'test-asset-1',
- '{
- "asset:prop:id": "test-asset-1"
- }',
- '2019-01-01 00:00:00',
- '2019-01-01 00:00:00'),
- ('https://my-connector.com/api/v1/ids/data',
- 'test-asset-2',
- '{
- "asset:prop:id": "urn:artifact:db-rail-network-2023-jan",
- "asset:prop:name": "Rail Network DB 2023 January",
- "asset:prop:version": "1.1",
- "asset:prop:originator": "https://example-connector.rail-mgmt.bahn.de/api/v1/api/v1/ids/data",
- "asset:prop:originatorOrganization": "Deutsche Bahn AG",
- "asset:prop:keywords": "db, bahn, rail, Rail-Designer",
- "asset:prop:contenttype": "application/json",
- "asset:prop:description": "Train Network Map released on 10.01.2023, valid until 31.02.2023. \nFile format is xyz as exported by Rail-Designer.",
- "asset:prop:language": "https://w3id.org/idsa/code/EN",
- "asset:prop:publisher": "https://my.cool-api.gg/about",
- "asset:prop:standardLicense": "https://my.cool-api.gg/license",
- "asset:prop:endpointDocumentation": "https://my.cool-api.gg/docs",
- "http://w3id.org/mds#dataCategory": "Infrastructure and Logistics",
- "http://w3id.org/mds#dataSubcategory": "General Information About Planning Of Routes",
- "http://w3id.org/mds#dataModel": "my-data-model-001",
- "http://w3id.org/mds#geoReferenceMethod": "my-geo-reference-method",
- "http://w3id.org/mds#transportMode": "Rail"
- }',
- '2019-01-01 00:00:00',
- '2019-01-01 00:00:00');
-
-insert into data_offer_contract_offer (contract_offer_id, connector_endpoint, asset_id, policy, created_at, updated_at)
-values ('test-contract-offer-1',
- 'https://my-connector.com/api/v1/ids/data',
- 'test-asset-1',
- '"test-policy-1"',
- '2019-01-01 00:00:00',
- '2019-01-01 00:00:00'),
- ('test-contract-offer-2',
- 'https://my-connector.com/api/v1/ids/data',
- 'test-asset-2',
- '"test-policy-2"',
- '2019-01-01 00:00:00',
- '2019-01-01 00:00:00');
-
-insert into broker_event_log (created_at, user_message, event, event_status, connector_endpoint, asset_id, error_stack,
- duration_in_ms)
-values ('2019-01-01 00:00:00',
- 'Connector was successfully updated, and changes were incorporated',
- 'CONNECTOR_UPDATED',
- 'OK',
- 'https://my-connector.com/api/v1/ids/data',
- 'test-asset-1',
- null,
- 100);
-
-insert into broker_execution_time_measurement (connector_endpoint, created_at, type, error_status, duration_in_ms)
-values ('https://my-connector.com/api/v1/ids/data',
- '2019-01-01 00:00:00',
- 'CONNECTOR_REFRESH',
- 'OK',
- 100);
diff --git a/extensions/broker-server/README.md b/extensions/broker-server/README.md
deleted file mode 100644
index 103af330b..000000000
--- a/extensions/broker-server/README.md
+++ /dev/null
@@ -1,38 +0,0 @@
-
-
-
-
-## About this Extension
-
-Implementation of an EDC Broker backend as an EDC Extension.
-
-This extension does multiple things:
-
-- Storage of Connectors and Data Offers
-- Connector Crawling
-- Connector Discovery
-- API implementations for our the full management capabilities of our Broker UI
-
-## Why does this extension exist?
-
-To let the broker easily be a part of a data space we are implementing it on an EDC basis.
-
-## License
-
-Apache License 2.0 - see [LICENSE](../../LICENSE)
-
-## Contact
-
-sovity GmbH - contact@sovity.de
diff --git a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/BrokerServerExtension.java b/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/BrokerServerExtension.java
deleted file mode 100644
index 3b288ea13..000000000
--- a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/BrokerServerExtension.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * Copyright (c) 2023 sovity GmbH
- *
- * This program and the accompanying materials are made available under the
- * terms of the Apache License, Version 2.0 which is available at
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Contributors:
- * sovity GmbH - initial API and implementation
- *
- */
-
-package de.sovity.edc.ext.brokerserver;
-
-import org.eclipse.edc.connector.api.management.configuration.ManagementApiConfiguration;
-import org.eclipse.edc.connector.api.management.configuration.transform.ManagementApiTypeTransformerRegistry;
-import org.eclipse.edc.connector.spi.catalog.CatalogService;
-import org.eclipse.edc.jsonld.spi.JsonLd;
-import org.eclipse.edc.runtime.metamodel.annotation.Inject;
-import org.eclipse.edc.runtime.metamodel.annotation.Setting;
-import org.eclipse.edc.spi.system.ServiceExtension;
-import org.eclipse.edc.spi.system.ServiceExtensionContext;
-import org.eclipse.edc.spi.types.TypeManager;
-import org.eclipse.edc.web.spi.WebService;
-
-import static de.sovity.edc.ext.brokerserver.services.config.EdcConfigPropertyUtils.toEdcProp;
-
-public class BrokerServerExtension implements ServiceExtension {
-
- public static final String EXTENSION_NAME = "BrokerServerExtension";
-
- @Setting
- public static final String ADMIN_API_KEY = toEdcProp("EDC_BROKER_SERVER_ADMIN_API_KEY");
-
- @Setting
- public static final String KNOWN_CONNECTORS = toEdcProp("EDC_BROKER_SERVER_KNOWN_CONNECTORS");
-
- @Setting
- public static final String CRON_ONLINE_CONNECTOR_REFRESH = toEdcProp("EDC_BROKER_SERVER_CRON_ONLINE_CONNECTOR_REFRESH");
-
- @Setting
- public static final String CRON_OFFLINE_CONNECTOR_REFRESH = toEdcProp("EDC_BROKER_SERVER_CRON_OFFLINE_CONNECTOR_REFRESH");
-
- @Setting
- public static final String CRON_DEAD_CONNECTOR_REFRESH = toEdcProp("EDC_BROKER_SERVER_CRON_DEAD_CONNECTOR_REFRESH");
-
- @Setting
- public static final String NUM_THREADS = toEdcProp("EDC_BROKER_SERVER_NUM_THREADS");
-
- @Setting
- public static final String HIDE_OFFLINE_DATA_OFFERS_AFTER = toEdcProp("EDC_BROKER_SERVER_HIDE_OFFLINE_DATA_OFFERS_AFTER");
-
- @Setting
- public static final String MAX_DATA_OFFERS_PER_CONNECTOR = toEdcProp("EDC_BROKER_SERVER_MAX_DATA_OFFERS_PER_CONNECTOR");
-
- @Setting
- public static final String MAX_CONTRACT_OFFERS_PER_DATA_OFFER = toEdcProp("EDC_BROKER_SERVER_MAX_CONTRACT_OFFERS_PER_DATA_OFFER");
-
- @Setting
- public static final String CATALOG_PAGE_PAGE_SIZE = toEdcProp("EDC_BROKER_SERVER_CATALOG_PAGE_PAGE_SIZE");
-
- @Setting
- public static final String DEFAULT_CONNECTOR_DATASPACE = toEdcProp("EDC_BROKER_SERVER_DEFAULT_DATASPACE");
-
- @Setting
- public static final String KNOWN_DATASPACE_CONNECTORS = toEdcProp("EDC_BROKER_SERVER_KNOWN_DATASPACE_CONNECTORS");
-
- @Setting
- public static final String KILL_OFFLINE_CONNECTORS_AFTER = toEdcProp("EDC_BROKER_SERVER_KILL_OFFLINE_CONNECTORS_AFTER");
-
- @Setting
- public static final String SCHEDULED_KILL_OFFLINE_CONNECTORS = toEdcProp("EDC_BROKER_SERVER_SCHEDULED_KILL_OFFLINE_CONNECTORS");
-
- @Inject
- private ManagementApiConfiguration managementApiConfiguration;
-
- @Inject
- private WebService webService;
-
- @Inject
- private TypeManager typeManager;
-
- @Inject
- private ManagementApiTypeTransformerRegistry typeTransformerRegistry;
-
- @Inject
- private JsonLd jsonLd;
-
- @Inject
- private CatalogService catalogService;
-
- /**
- * Manual Dependency Injection Result
- */
- private BrokerServerExtensionContext services;
-
- @Override
- public String name() {
- return EXTENSION_NAME;
- }
-
- @Override
- public void initialize(ServiceExtensionContext context) {
- services = BrokerServerExtensionContextBuilder.buildContext(
- context.getConfig(),
- context.getMonitor(),
- typeManager,
- typeTransformerRegistry,
- jsonLd,
- catalogService
- );
-
- // This is a hack for tests, so we can access the running context from tests.
- BrokerServerExtensionContext.instance = services;
-
- var managementApiGroup = managementApiConfiguration.getContextAlias();
- webService.registerResource(managementApiGroup, services.brokerServerResource());
- }
-
- @Override
- public void start() {
- services.brokerServerInitializer().onStartup();
- }
-}
diff --git a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/BrokerServerExtensionContext.java b/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/BrokerServerExtensionContext.java
deleted file mode 100644
index 3dd8bd2fa..000000000
--- a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/BrokerServerExtensionContext.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (c) 2023 sovity GmbH
- *
- * This program and the accompanying materials are made available under the
- * terms of the Apache License, Version 2.0 which is available at
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Contributors:
- * sovity GmbH - initial API and implementation
- *
- */
-
-package de.sovity.edc.ext.brokerserver;
-
-import de.sovity.edc.ext.brokerserver.api.BrokerServerResource;
-import de.sovity.edc.ext.brokerserver.services.BrokerServerInitializer;
-import de.sovity.edc.ext.brokerserver.services.ConnectorCreator;
-import de.sovity.edc.ext.brokerserver.services.refreshing.ConnectorUpdater;
-import de.sovity.edc.ext.brokerserver.services.refreshing.offers.DataOfferRecordUpdater;
-import de.sovity.edc.ext.brokerserver.services.refreshing.offers.FetchedCatalogBuilder;
-import de.sovity.edc.ext.wrapper.api.common.mappers.PolicyMapper;
-
-
-/**
- * Manual Dependency Injection result
- *
- * @param brokerServerResource REST Resource with API Endpoint implementations
- * @param brokerServerInitializer Startup Logic
- */
-public record BrokerServerExtensionContext(
- BrokerServerResource brokerServerResource,
- BrokerServerInitializer brokerServerInitializer,
-
- // Required for Integration Tests
- ConnectorUpdater connectorUpdater,
- ConnectorCreator connectorCreator,
- PolicyMapper policyMapper,
- FetchedCatalogBuilder fetchedCatalogBuilder,
- DataOfferRecordUpdater dataOfferRecordUpdater
-) {
- /**
- * This is a hack for our tests.
- *
- * Right now we have no good way to access the context from tests.
- */
- public static BrokerServerExtensionContext instance;
-}
diff --git a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/BrokerServerExtensionContextBuilder.java b/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/BrokerServerExtensionContextBuilder.java
deleted file mode 100644
index 8f78ffa67..000000000
--- a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/BrokerServerExtensionContextBuilder.java
+++ /dev/null
@@ -1,394 +0,0 @@
-/*
- * Copyright (c) 2023 sovity GmbH
- *
- * This program and the accompanying materials are made available under the
- * terms of the Apache License, Version 2.0 which is available at
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Contributors:
- * sovity GmbH - initial API and implementation
- *
- */
-
-package de.sovity.edc.ext.brokerserver;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.SerializationFeature;
-import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
-import de.sovity.edc.ext.brokerserver.dao.ConnectorQueries;
-import de.sovity.edc.ext.brokerserver.dao.ContractOfferQueries;
-import de.sovity.edc.ext.brokerserver.dao.DataOfferQueries;
-import de.sovity.edc.ext.brokerserver.dao.pages.catalog.CatalogQueryAvailableFilterFetcher;
-import de.sovity.edc.ext.brokerserver.dao.pages.catalog.CatalogQueryContractOfferFetcher;
-import de.sovity.edc.ext.brokerserver.dao.pages.catalog.CatalogQueryDataOfferFetcher;
-import de.sovity.edc.ext.brokerserver.dao.pages.catalog.CatalogQueryFilterService;
-import de.sovity.edc.ext.brokerserver.dao.pages.catalog.CatalogQueryService;
-import de.sovity.edc.ext.brokerserver.dao.pages.catalog.CatalogQuerySortingService;
-import de.sovity.edc.ext.brokerserver.dao.pages.connector.ConnectorDetailQueryService;
-import de.sovity.edc.ext.brokerserver.dao.pages.connector.ConnectorListQueryService;
-import de.sovity.edc.ext.brokerserver.dao.pages.dataoffer.DataOfferDetailPageQueryService;
-import de.sovity.edc.ext.brokerserver.dao.pages.dataoffer.ViewCountLogger;
-import de.sovity.edc.ext.brokerserver.db.DataSourceFactory;
-import de.sovity.edc.ext.brokerserver.db.DslContextFactory;
-import de.sovity.edc.ext.brokerserver.services.BrokerServerInitializer;
-import de.sovity.edc.ext.brokerserver.services.ConnectorCleaner;
-import de.sovity.edc.ext.brokerserver.services.ConnectorCreator;
-import de.sovity.edc.ext.brokerserver.services.ConnectorKiller;
-import de.sovity.edc.ext.brokerserver.services.KnownConnectorsInitializer;
-import de.sovity.edc.ext.brokerserver.services.OfflineConnectorKiller;
-import de.sovity.edc.ext.brokerserver.services.api.AuthorityPortalConnectorDataOfferApiService;
-import de.sovity.edc.ext.brokerserver.services.api.AuthorityPortalConnectorMetadataApiService;
-import de.sovity.edc.ext.brokerserver.services.api.AuthorityPortalConnectorQueryService;
-import de.sovity.edc.ext.brokerserver.services.api.AuthorityPortalOrganizationMetadataApiService;
-import de.sovity.edc.ext.brokerserver.services.api.CatalogApiService;
-import de.sovity.edc.ext.brokerserver.services.api.ConnectorApiService;
-import de.sovity.edc.ext.brokerserver.services.api.ConnectorDetailApiService;
-import de.sovity.edc.ext.brokerserver.services.api.ConnectorListApiService;
-import de.sovity.edc.ext.brokerserver.services.api.ConnectorOnlineStatusMapper;
-import de.sovity.edc.ext.brokerserver.services.api.ConnectorService;
-import de.sovity.edc.ext.brokerserver.services.api.DataOfferDetailApiService;
-import de.sovity.edc.ext.brokerserver.services.api.DataOfferMappingUtils;
-import de.sovity.edc.ext.brokerserver.services.api.PaginationMetadataUtils;
-import de.sovity.edc.ext.brokerserver.services.api.filtering.CatalogFilterAttributeDefinitionService;
-import de.sovity.edc.ext.brokerserver.services.api.filtering.CatalogFilterService;
-import de.sovity.edc.ext.brokerserver.services.api.filtering.CatalogSearchService;
-import de.sovity.edc.ext.brokerserver.services.config.AdminApiKeyValidator;
-import de.sovity.edc.ext.brokerserver.services.config.BrokerServerSettingsFactory;
-import de.sovity.edc.ext.brokerserver.services.logging.BrokerEventLogger;
-import de.sovity.edc.ext.brokerserver.services.logging.BrokerExecutionTimeLogger;
-import de.sovity.edc.ext.brokerserver.services.queue.ConnectorQueue;
-import de.sovity.edc.ext.brokerserver.services.queue.ConnectorQueueFiller;
-import de.sovity.edc.ext.brokerserver.services.queue.ThreadPool;
-import de.sovity.edc.ext.brokerserver.services.queue.ThreadPoolTaskQueue;
-import de.sovity.edc.ext.brokerserver.services.refreshing.ConnectorUpdateFailureWriter;
-import de.sovity.edc.ext.brokerserver.services.refreshing.ConnectorUpdateSuccessWriter;
-import de.sovity.edc.ext.brokerserver.services.refreshing.ConnectorUpdater;
-import de.sovity.edc.ext.brokerserver.services.refreshing.offers.CatalogFetcher;
-import de.sovity.edc.ext.brokerserver.services.refreshing.offers.ContractOfferRecordUpdater;
-import de.sovity.edc.ext.brokerserver.services.refreshing.offers.DataOfferLimitsEnforcer;
-import de.sovity.edc.ext.brokerserver.services.refreshing.offers.DataOfferPatchApplier;
-import de.sovity.edc.ext.brokerserver.services.refreshing.offers.DataOfferPatchBuilder;
-import de.sovity.edc.ext.brokerserver.services.refreshing.offers.DataOfferRecordUpdater;
-import de.sovity.edc.ext.brokerserver.services.refreshing.offers.DataOfferWriter;
-import de.sovity.edc.ext.brokerserver.services.refreshing.offers.FetchedCatalogBuilder;
-import de.sovity.edc.ext.brokerserver.services.schedules.DeadConnectorRefreshJob;
-import de.sovity.edc.ext.brokerserver.services.schedules.OfflineConnectorKillerJob;
-import de.sovity.edc.ext.brokerserver.services.schedules.OfflineConnectorRefreshJob;
-import de.sovity.edc.ext.brokerserver.services.schedules.OnlineConnectorRefreshJob;
-import de.sovity.edc.ext.brokerserver.services.schedules.QuartzScheduleInitializer;
-import de.sovity.edc.ext.brokerserver.services.schedules.utils.CronJobRef;
-import de.sovity.edc.ext.wrapper.api.common.mappers.AssetMapper;
-import de.sovity.edc.ext.wrapper.api.common.mappers.PolicyMapper;
-import de.sovity.edc.ext.wrapper.api.common.mappers.asset.AssetEditRequestMapper;
-import de.sovity.edc.ext.wrapper.api.common.mappers.asset.AssetJsonLdBuilder;
-import de.sovity.edc.ext.wrapper.api.common.mappers.asset.AssetJsonLdParser;
-import de.sovity.edc.ext.wrapper.api.common.mappers.asset.utils.AssetJsonLdUtils;
-import de.sovity.edc.ext.wrapper.api.common.mappers.asset.utils.EdcPropertyUtils;
-import de.sovity.edc.ext.wrapper.api.common.mappers.asset.utils.ShortDescriptionBuilder;
-import de.sovity.edc.ext.wrapper.api.common.mappers.dataaddress.DataSourceMapper;
-import de.sovity.edc.ext.wrapper.api.common.mappers.dataaddress.http.HttpDataSourceMapper;
-import de.sovity.edc.ext.wrapper.api.common.mappers.dataaddress.http.HttpHeaderMapper;
-import de.sovity.edc.ext.wrapper.api.common.mappers.policy.AtomicConstraintMapper;
-import de.sovity.edc.ext.wrapper.api.common.mappers.policy.ConstraintExtractor;
-import de.sovity.edc.ext.wrapper.api.common.mappers.policy.LiteralMapper;
-import de.sovity.edc.ext.wrapper.api.common.mappers.policy.OperatorMapper;
-import de.sovity.edc.ext.wrapper.api.common.mappers.policy.PolicyValidator;
-import de.sovity.edc.utils.catalog.DspCatalogService;
-import de.sovity.edc.utils.catalog.mapper.DspDataOfferBuilder;
-import lombok.NoArgsConstructor;
-import org.eclipse.edc.connector.spi.catalog.CatalogService;
-import org.eclipse.edc.jsonld.spi.JsonLd;
-import org.eclipse.edc.runtime.metamodel.annotation.Inject;
-import org.eclipse.edc.spi.CoreConstants;
-import org.eclipse.edc.spi.monitor.Monitor;
-import org.eclipse.edc.spi.system.configuration.Config;
-import org.eclipse.edc.spi.types.TypeManager;
-import org.eclipse.edc.transform.spi.TypeTransformerRegistry;
-import org.jetbrains.annotations.NotNull;
-
-import java.util.List;
-
-
-/**
- * Manual Dependency Injection (DYDI).
- *
- * We want to develop as Java Backend Development is done, but we have
- * no CDI / DI Framework to rely on.
- *
- * EDC {@link Inject} only works in {@link BrokerServerExtension}.
- */
-@NoArgsConstructor(access = lombok.AccessLevel.PRIVATE)
-public class BrokerServerExtensionContextBuilder {
-
- public static BrokerServerExtensionContext buildContext(
- Config config,
- Monitor monitor,
- TypeManager typeManager,
- TypeTransformerRegistry typeTransformerRegistry,
- JsonLd jsonLd,
- CatalogService catalogService
- ) {
- var brokerServerSettingsFactory = new BrokerServerSettingsFactory(config, monitor);
- var brokerServerSettings = brokerServerSettingsFactory.buildBrokerServerSettings();
- var adminApiKeyValidator = new AdminApiKeyValidator(brokerServerSettings);
-
- // Dao
- var dataOfferQueries = new DataOfferQueries();
- var dataSourceFactory = new DataSourceFactory(config);
- var dataSource = dataSourceFactory.newDataSource();
- var dslContextFactory = new DslContextFactory(dataSource);
- var connectorQueries = new ConnectorQueries();
- var catalogQuerySortingService = new CatalogQuerySortingService();
- var catalogSearchService = new CatalogSearchService();
- var catalogQueryFilterService = new CatalogQueryFilterService(brokerServerSettings, catalogSearchService);
- var catalogQueryContractOfferFetcher = new CatalogQueryContractOfferFetcher();
- var catalogQueryDataOfferFetcher = new CatalogQueryDataOfferFetcher(
- catalogQuerySortingService,
- catalogQueryFilterService,
- catalogQueryContractOfferFetcher
- );
- var catalogQueryAvailableFilterFetcher = new CatalogQueryAvailableFilterFetcher(catalogQueryFilterService);
- var catalogQueryService = new CatalogQueryService(
- catalogQueryDataOfferFetcher,
- catalogQueryAvailableFilterFetcher,
- brokerServerSettings
- );
- var connectorListQueryService = new ConnectorListQueryService();
- var connectorDetailQueryService = new ConnectorDetailQueryService();
- var dataOfferDetailPageQueryService = new DataOfferDetailPageQueryService(
- catalogQueryContractOfferFetcher, brokerServerSettings);
-
-
- // Services
- var objectMapperJsonLd = getJsonLdObjectMapper(typeManager);
- var brokerEventLogger = new BrokerEventLogger();
- var brokerExecutionTimeLogger = new BrokerExecutionTimeLogger();
- var contractOfferRecordUpdater = new ContractOfferRecordUpdater();
- var dataOfferRecordUpdater = new DataOfferRecordUpdater();
- var contractOfferQueries = new ContractOfferQueries();
- var dataOfferLimitsEnforcer = new DataOfferLimitsEnforcer(brokerServerSettings, brokerEventLogger);
- var dataOfferPatchBuilder = new DataOfferPatchBuilder(
- contractOfferQueries,
- dataOfferQueries,
- dataOfferRecordUpdater,
- contractOfferRecordUpdater
- );
- var dataOfferPatchApplier = new DataOfferPatchApplier();
- var dataOfferWriter = new DataOfferWriter(dataOfferPatchBuilder, dataOfferPatchApplier);
- var connectorUpdateSuccessWriter = new ConnectorUpdateSuccessWriter(
- brokerEventLogger,
- dataOfferWriter,
- dataOfferLimitsEnforcer
- );
- var assetMapper = newAssetMapper(typeTransformerRegistry, jsonLd);
- var fetchedDataOfferBuilder = new FetchedCatalogBuilder(assetMapper);
- var dspDataOfferBuilder = new DspDataOfferBuilder(jsonLd);
- var dspCatalogService = new DspCatalogService(
- catalogService,
- dspDataOfferBuilder
- );
- var dataOfferFetcher = new CatalogFetcher(dspCatalogService, fetchedDataOfferBuilder);
- var connectorUpdateFailureWriter = new ConnectorUpdateFailureWriter(brokerEventLogger, monitor);
- var connectorUpdater = new ConnectorUpdater(
- dataOfferFetcher,
- connectorUpdateSuccessWriter,
- connectorUpdateFailureWriter,
- connectorQueries,
- dslContextFactory,
- monitor,
- brokerExecutionTimeLogger
- );
- var paginationMetadataUtils = new PaginationMetadataUtils();
- var threadPoolTaskQueue = new ThreadPoolTaskQueue();
- var threadPool = new ThreadPool(threadPoolTaskQueue, brokerServerSettings, monitor);
- var connectorQueue = new ConnectorQueue(connectorUpdater, threadPool);
- var connectorQueueFiller = new ConnectorQueueFiller(connectorQueue, connectorQueries);
- var connectorCreator = new ConnectorCreator(connectorQueries);
- var knownConnectorsInitializer = new KnownConnectorsInitializer(
- config,
- connectorQueue,
- connectorCreator
- );
- var catalogFilterAttributeDefinitionService = new CatalogFilterAttributeDefinitionService();
- var catalogFilterService = new CatalogFilterService(catalogFilterAttributeDefinitionService);
- var viewCountLogger = new ViewCountLogger();
- var connectorService = new ConnectorService(connectorCreator, connectorQueue);
- var connectorKiller = new ConnectorKiller();
- var connectorClearer = new ConnectorCleaner();
- var offlineConnectorKiller = new OfflineConnectorKiller(
- brokerServerSettings,
- connectorQueries,
- brokerEventLogger,
- connectorKiller,
- connectorClearer
- );
- var operatorMapper = new OperatorMapper();
- var literalMapper = new LiteralMapper(
- objectMapperJsonLd
- );
- var atomicConstraintMapper = new AtomicConstraintMapper(
- literalMapper,
- operatorMapper
- );
- var policyValidator = new PolicyValidator();
- var constraintExtractor = new ConstraintExtractor(
- policyValidator,
- atomicConstraintMapper
- );
- var policyMapper = new PolicyMapper(
- constraintExtractor,
- atomicConstraintMapper,
- typeTransformerRegistry
- );
- var dataOfferMappingUtils = new DataOfferMappingUtils(
- policyMapper,
- assetMapper
- );
- var connectorOnlineStatusMapper = new ConnectorOnlineStatusMapper();
-
- // Schedules
- List> jobs = List.of(
- getOnlineConnectorRefreshCronJob(dslContextFactory, connectorQueueFiller),
- getOfflineConnectorRefreshCronJob(dslContextFactory, connectorQueueFiller),
- getDeadConnectorRefreshCronJob(dslContextFactory, connectorQueueFiller),
- getOfflineConnectorKillerCronJob(dslContextFactory, offlineConnectorKiller)
- );
-
- // Startup
- var quartzScheduleInitializer = new QuartzScheduleInitializer(config, monitor, jobs);
- var brokerServerInitializer = new BrokerServerInitializer(
- dslContextFactory,
- knownConnectorsInitializer,
- quartzScheduleInitializer
- );
-
- // UI Capabilities
- var catalogApiService = new CatalogApiService(
- paginationMetadataUtils,
- catalogQueryService,
- dataOfferMappingUtils,
- catalogFilterService,
- brokerServerSettings
- );
- var connectorApiService = new ConnectorApiService(
- connectorService,
- brokerEventLogger,
- connectorQueries
- );
- var dataOfferDetailApiService = new DataOfferDetailApiService(
- dataOfferDetailPageQueryService,
- viewCountLogger,
- dataOfferMappingUtils
- );
- var connectorQueryService = new AuthorityPortalConnectorQueryService();
- var dataOfferCountApiService = new AuthorityPortalConnectorMetadataApiService(
- connectorQueryService,
- connectorOnlineStatusMapper
- );
- var connectorDetailApiService = new ConnectorDetailApiService(connectorDetailQueryService, connectorOnlineStatusMapper);
- var connectorListApiService = new ConnectorListApiService(connectorListQueryService, connectorOnlineStatusMapper, paginationMetadataUtils);
- var authorityPortalOrganizationMetadataApiService = new AuthorityPortalOrganizationMetadataApiService();
- var authorityPortalDataOfferApiService = new AuthorityPortalConnectorDataOfferApiService(connectorQueryService, connectorOnlineStatusMapper);
- var brokerServerResource = new BrokerServerResourceImpl(
- dslContextFactory,
- connectorApiService,
- connectorListApiService,
- connectorDetailApiService,
- catalogApiService,
- dataOfferDetailApiService,
- adminApiKeyValidator,
- dataOfferCountApiService,
- authorityPortalDataOfferApiService,
- authorityPortalOrganizationMetadataApiService
- );
-
- return new BrokerServerExtensionContext(
- brokerServerResource,
- brokerServerInitializer,
- connectorUpdater,
- connectorCreator,
- policyMapper,
- fetchedDataOfferBuilder,
- dataOfferRecordUpdater
- );
- }
-
- @NotNull
- private static CronJobRef getOfflineConnectorKillerCronJob(DslContextFactory dslContextFactory, OfflineConnectorKiller offlineConnectorKiller) {
- return new CronJobRef<>(
- BrokerServerExtension.SCHEDULED_KILL_OFFLINE_CONNECTORS,
- OfflineConnectorKillerJob.class,
- () -> new OfflineConnectorKillerJob(dslContextFactory, offlineConnectorKiller)
- );
- }
-
- @NotNull
- private static CronJobRef getOnlineConnectorRefreshCronJob(DslContextFactory dslContextFactory, ConnectorQueueFiller connectorQueueFiller) {
- return new CronJobRef<>(
- BrokerServerExtension.CRON_ONLINE_CONNECTOR_REFRESH,
- OnlineConnectorRefreshJob.class,
- () -> new OnlineConnectorRefreshJob(dslContextFactory, connectorQueueFiller)
- );
- }
-
- @NotNull
- private static CronJobRef getOfflineConnectorRefreshCronJob(DslContextFactory dslContextFactory, ConnectorQueueFiller connectorQueueFiller) {
- return new CronJobRef<>(
- BrokerServerExtension.CRON_OFFLINE_CONNECTOR_REFRESH,
- OfflineConnectorRefreshJob.class,
- () -> new OfflineConnectorRefreshJob(dslContextFactory, connectorQueueFiller)
- );
- }
-
- @NotNull
- private static CronJobRef getDeadConnectorRefreshCronJob(DslContextFactory dslContextFactory, ConnectorQueueFiller connectorQueueFiller) {
- return new CronJobRef<>(
- BrokerServerExtension.CRON_DEAD_CONNECTOR_REFRESH,
- DeadConnectorRefreshJob.class,
- () -> new DeadConnectorRefreshJob(dslContextFactory, connectorQueueFiller)
- );
- }
-
- private static ObjectMapper getJsonLdObjectMapper(TypeManager typeManager) {
- var objectMapper = typeManager.getMapper(CoreConstants.JSON_LD);
-
- // Fixes Dates in JSON-LD Object Mapper
- // The Core EDC uses longs over OffsetDateTime, so they never fixed the date format
- objectMapper.registerModule(new JavaTimeModule());
- objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
-
- return objectMapper;
- }
-
- @NotNull
- private static AssetMapper newAssetMapper(TypeTransformerRegistry typeTransformerRegistry, JsonLd jsonLd) {
- var edcPropertyUtils = new EdcPropertyUtils();
- var assetJsonLdUtils = new AssetJsonLdUtils();
- var assetEditRequestMapper = new AssetEditRequestMapper();
- var shortDescriptionBuilder = new ShortDescriptionBuilder();
- var assetJsonLdParser = new AssetJsonLdParser(
- assetJsonLdUtils,
- shortDescriptionBuilder,
- endpoint -> false
- );
- var httpHeaderMapper = new HttpHeaderMapper();
- var httpDataSourceMapper = new HttpDataSourceMapper(httpHeaderMapper);
- var dataSourceMapper = new DataSourceMapper(
- edcPropertyUtils,
- httpDataSourceMapper
- );
- var assetJsonLdBuilder = new AssetJsonLdBuilder(
- dataSourceMapper,
- assetJsonLdParser,
- assetEditRequestMapper
- );
- return new AssetMapper(
- typeTransformerRegistry,
- assetJsonLdBuilder,
- assetJsonLdParser,
- jsonLd
- );
- }
-}
diff --git a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/BrokerServerResourceImpl.java b/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/BrokerServerResourceImpl.java
deleted file mode 100644
index 7f38ea0d1..000000000
--- a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/BrokerServerResourceImpl.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * Copyright (c) 2023 sovity GmbH
- *
- * This program and the accompanying materials are made available under the
- * terms of the Apache License, Version 2.0 which is available at
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Contributors:
- * sovity GmbH - initial API and implementation
- *
- */
-
-package de.sovity.edc.ext.brokerserver;
-
-import de.sovity.edc.ext.brokerserver.api.BrokerServerResource;
-import de.sovity.edc.ext.brokerserver.api.model.AuthorityPortalConnectorDataOfferInfo;
-import de.sovity.edc.ext.brokerserver.api.model.AuthorityPortalConnectorInfo;
-import de.sovity.edc.ext.brokerserver.api.model.AuthorityPortalOrganizationMetadataRequest;
-import de.sovity.edc.ext.brokerserver.api.model.CatalogPageQuery;
-import de.sovity.edc.ext.brokerserver.api.model.CatalogPageResult;
-import de.sovity.edc.ext.brokerserver.api.model.ConnectorCreationRequest;
-import de.sovity.edc.ext.brokerserver.api.model.ConnectorDetailPageQuery;
-import de.sovity.edc.ext.brokerserver.api.model.ConnectorDetailPageResult;
-import de.sovity.edc.ext.brokerserver.api.model.ConnectorPageQuery;
-import de.sovity.edc.ext.brokerserver.api.model.ConnectorPageResult;
-import de.sovity.edc.ext.brokerserver.api.model.DataOfferDetailPageQuery;
-import de.sovity.edc.ext.brokerserver.api.model.DataOfferDetailPageResult;
-import de.sovity.edc.ext.brokerserver.db.DslContextFactory;
-import de.sovity.edc.ext.brokerserver.services.api.AuthorityPortalConnectorDataOfferApiService;
-import de.sovity.edc.ext.brokerserver.services.api.AuthorityPortalConnectorMetadataApiService;
-import de.sovity.edc.ext.brokerserver.services.api.AuthorityPortalOrganizationMetadataApiService;
-import de.sovity.edc.ext.brokerserver.services.api.CatalogApiService;
-import de.sovity.edc.ext.brokerserver.services.api.ConnectorApiService;
-import de.sovity.edc.ext.brokerserver.services.api.ConnectorDetailApiService;
-import de.sovity.edc.ext.brokerserver.services.api.ConnectorListApiService;
-import de.sovity.edc.ext.brokerserver.services.api.DataOfferDetailApiService;
-import de.sovity.edc.ext.brokerserver.services.config.AdminApiKeyValidator;
-import lombok.RequiredArgsConstructor;
-
-import java.util.List;
-
-
-/**
- * Implementation of {@link BrokerServerResource}
- */
-@RequiredArgsConstructor
-public class BrokerServerResourceImpl implements BrokerServerResource {
- private final DslContextFactory dslContextFactory;
- private final ConnectorApiService connectorApiService;
- private final ConnectorListApiService connectorListApiService;
- private final ConnectorDetailApiService connectorDetailApiService;
- private final CatalogApiService catalogApiService;
- private final DataOfferDetailApiService dataOfferDetailApiService;
- private final AdminApiKeyValidator adminApiKeyValidator;
- private final AuthorityPortalConnectorMetadataApiService authorityPortalConnectorMetadataApiService;
- private final AuthorityPortalConnectorDataOfferApiService authorityPortalConnectorDataOffersApiService;
- private final AuthorityPortalOrganizationMetadataApiService authorityPortalOrganizationMetadataApiService;
-
- @Override
- public CatalogPageResult catalogPage(CatalogPageQuery query) {
- return dslContextFactory.transactionResult(dsl -> catalogApiService.catalogPage(dsl, query));
- }
-
- @Override
- public ConnectorPageResult connectorPage(ConnectorPageQuery query) {
- return dslContextFactory.transactionResult(dsl -> connectorListApiService.connectorListPage(dsl, query));
- }
-
- @Override
- public DataOfferDetailPageResult dataOfferDetailPage(DataOfferDetailPageQuery query) {
- return dslContextFactory.transactionResult(dsl -> dataOfferDetailApiService.dataOfferDetailPage(dsl, query));
- }
-
- @Override
- public ConnectorDetailPageResult connectorDetailPage(ConnectorDetailPageQuery query) {
- return dslContextFactory.transactionResult(dsl -> connectorDetailApiService.connectorDetailPage(dsl, query));
- }
-
- @Override
- public void addConnectors(List endpoints, String adminApiKey) {
- adminApiKeyValidator.validateAdminApiKey(adminApiKey);
- dslContextFactory.transaction(dsl -> connectorApiService.addConnectors(dsl, endpoints));
- }
-
- @Override
- public void addConnectorsWithMdsIds(ConnectorCreationRequest connectors, String adminApiKey) {
- adminApiKeyValidator.validateAdminApiKey(adminApiKey);
- dslContextFactory.transaction(dsl -> connectorApiService.addConnectorsWithMdsIds(dsl, connectors));
- }
-
- @Override
- public void deleteConnectors(List endpoints, String adminApiKey) {
- adminApiKeyValidator.validateAdminApiKey(adminApiKey);
- dslContextFactory.transaction(dsl -> connectorApiService.deleteConnectors(dsl, endpoints));
- }
-
- @Override
- public List getConnectorMetadata(List endpoints, String adminApiKey) {
- adminApiKeyValidator.validateAdminApiKey(adminApiKey);
- return dslContextFactory.transactionResult(dsl -> authorityPortalConnectorMetadataApiService.getMetadataByEndpoints(dsl, endpoints));
- }
-
- @Override
- public void setOrganizationMetadata(AuthorityPortalOrganizationMetadataRequest organizationMetadataRequest, String adminApiKey) {
- adminApiKeyValidator.validateAdminApiKey(adminApiKey);
- dslContextFactory.transaction(dsl -> authorityPortalOrganizationMetadataApiService.setOrganizationMetadata(dsl, organizationMetadataRequest.getOrganizations()));
- }
-
- @Override
- public List getConnectorDataOffers(List endpoints, String adminApiKey) {
- adminApiKeyValidator.validateAdminApiKey(adminApiKey);
- return dslContextFactory.transactionResult(dsl -> authorityPortalConnectorDataOffersApiService.getConnectorDataOffersByEndpoints(dsl, endpoints));
- }
-}
diff --git a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/ConnectorQueries.java b/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/ConnectorQueries.java
deleted file mode 100644
index 31fd44a7f..000000000
--- a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/ConnectorQueries.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright (c) 2023 sovity GmbH
- *
- * This program and the accompanying materials are made available under the
- * terms of the Apache License, Version 2.0 which is available at
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Contributors:
- * sovity GmbH - initial API and implementation
- *
- */
-
-package de.sovity.edc.ext.brokerserver.dao;
-
-import de.sovity.edc.ext.brokerserver.dao.utils.PostgresqlUtils;
-import de.sovity.edc.ext.brokerserver.db.jooq.Tables;
-import de.sovity.edc.ext.brokerserver.db.jooq.enums.ConnectorOnlineStatus;
-import de.sovity.edc.ext.brokerserver.db.jooq.tables.records.ConnectorRecord;
-import org.jooq.DSLContext;
-
-import java.time.Duration;
-import java.time.OffsetDateTime;
-import java.util.Collection;
-import java.util.List;
-import java.util.Set;
-
-public class ConnectorQueries {
-
- public ConnectorRecord findByEndpoint(DSLContext dsl, String endpoint) {
- var c = Tables.CONNECTOR;
- return dsl.selectFrom(c).where(c.ENDPOINT.eq(endpoint)).fetchOne();
- }
-
- public Set findConnectorsForScheduledRefresh(DSLContext dsl, ConnectorOnlineStatus onlineStatus) {
- var c = Tables.CONNECTOR;
- return dsl.select(c.ENDPOINT).from(c).where(c.ONLINE_STATUS.eq(onlineStatus)).fetchSet(c.ENDPOINT);
- }
-
- public Set findExistingConnectors(DSLContext dsl, Collection connectorEndpoints) {
- var c = Tables.CONNECTOR;
- return dsl.select(c.ENDPOINT).from(c)
- .where(PostgresqlUtils.in(c.ENDPOINT, connectorEndpoints))
- .fetchSet(c.ENDPOINT);
- }
-
- public List findAllConnectorsForKilling(DSLContext dsl, Duration deleteOfflineConnectorsAfter) {
- var c = Tables.CONNECTOR;
- return dsl.select(c.ENDPOINT).from(c)
- .where(c.LAST_SUCCESSFUL_REFRESH_AT.lt(OffsetDateTime.now().minus(deleteOfflineConnectorsAfter)))
- .fetch(c.ENDPOINT);
- }
-}
diff --git a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/catalog/CatalogQueryAvailableFilterFetcher.java b/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/catalog/CatalogQueryAvailableFilterFetcher.java
deleted file mode 100644
index ee3fdd7aa..000000000
--- a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/catalog/CatalogQueryAvailableFilterFetcher.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright (c) 2023 sovity GmbH
- *
- * This program and the accompanying materials are made available under the
- * terms of the Apache License, Version 2.0 which is available at
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Contributors:
- * sovity GmbH - initial API and implementation
- *
- */
-
-package de.sovity.edc.ext.brokerserver.dao.pages.catalog;
-
-import de.sovity.edc.ext.brokerserver.dao.pages.catalog.models.CatalogQueryFilter;
-import de.sovity.edc.ext.brokerserver.utils.CollectionUtils2;
-import lombok.RequiredArgsConstructor;
-import org.jooq.Field;
-import org.jooq.JSON;
-import org.jooq.impl.DSL;
-import org.jooq.impl.SQLDataType;
-
-import java.util.ArrayList;
-import java.util.List;
-
-@RequiredArgsConstructor
-public class CatalogQueryAvailableFilterFetcher {
- private final CatalogQueryFilterService catalogQueryFilterService;
-
- /**
- * Query available filter values.
- *
- * @param fields query fields
- * @param searchQuery search query
- * @param filters filters (values + filter clauses)
- * @return {@link Field} with field[iFilter][iValue]
- */
- public Field queryAvailableFilterValues(
- CatalogQueryFields fields,
- String searchQuery,
- List filters
- ) {
- List> resultFields = new ArrayList<>();
- for (int i = 0; i < filters.size(); i++) {
- // When querying a filter's values we apply all filters except for the current filter's values
- var currentFilter = filters.get(i);
- var otherFilters = CollectionUtils2.allElementsExceptForIndex(filters, i);
- var resultField = queryFilterValues(fields, currentFilter, searchQuery, otherFilters);
- resultFields.add(resultField);
- }
- return DSL.select(DSL.jsonArray(resultFields)).asField();
- }
-
- private Field queryFilterValues(
- CatalogQueryFields parentQueryFields,
- CatalogQueryFilter currentFilter,
- String searchQuery,
- List otherFilters
- ) {
- var fields = parentQueryFields.withSuffix("filter_" + currentFilter.name());
- var c = fields.getConnectorTable();
- var d = fields.getDataOfferTable();
-
- var value = currentFilter.valueQuery().getAttributeValueField(fields);
-
- return DSL.select(DSL.coalesce(DSL.arrayAggDistinct(value), DSL.array().cast(SQLDataType.VARCHAR.array())))
- .from(d)
- .leftJoin(c).on(c.ENDPOINT.eq(d.CONNECTOR_ENDPOINT))
- .where(catalogQueryFilterService.filterDbQuery(fields, searchQuery, otherFilters))
- .asField();
- }
-}
diff --git a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/catalog/CatalogQueryContractOfferFetcher.java b/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/catalog/CatalogQueryContractOfferFetcher.java
deleted file mode 100644
index d2e370c5c..000000000
--- a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/catalog/CatalogQueryContractOfferFetcher.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (c) 2023 sovity GmbH
- *
- * This program and the accompanying materials are made available under the
- * terms of the Apache License, Version 2.0 which is available at
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Contributors:
- * sovity GmbH - initial API and implementation
- *
- */
-
-package de.sovity.edc.ext.brokerserver.dao.pages.catalog;
-
-import de.sovity.edc.ext.brokerserver.dao.pages.dataoffer.model.ContractOfferRs;
-import de.sovity.edc.ext.brokerserver.dao.utils.MultisetUtils;
-import de.sovity.edc.ext.brokerserver.db.jooq.Tables;
-import de.sovity.edc.ext.brokerserver.db.jooq.tables.DataOffer;
-import lombok.RequiredArgsConstructor;
-import org.jooq.Field;
-import org.jooq.impl.DSL;
-
-import java.util.List;
-
-@RequiredArgsConstructor
-public class CatalogQueryContractOfferFetcher {
-
- /**
- * Query a data offer's contract offers.
- *
- * @param d Data offer table
- * @return {@link Field} of {@link ContractOfferRs}s
- */
- public Field> getContractOffers(DataOffer d) {
- var co = Tables.CONTRACT_OFFER;
-
- var query = DSL.select(
- co.CONTRACT_OFFER_ID,
- co.POLICY.cast(String.class).as("policyJson"),
- co.CREATED_AT,
- co.UPDATED_AT
- ).from(co).where(
- co.CONNECTOR_ENDPOINT.eq(d.CONNECTOR_ENDPOINT),
- co.ASSET_ID.eq(d.ASSET_ID)).orderBy(co.CREATED_AT.desc()
- );
-
- return MultisetUtils.multiset(query, ContractOfferRs.class);
- }
-}
diff --git a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/catalog/CatalogQueryDataOfferFetcher.java b/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/catalog/CatalogQueryDataOfferFetcher.java
deleted file mode 100644
index 24cbb3282..000000000
--- a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/catalog/CatalogQueryDataOfferFetcher.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright (c) 2023 sovity GmbH
- *
- * This program and the accompanying materials are made available under the
- * terms of the Apache License, Version 2.0 which is available at
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Contributors:
- * sovity GmbH - initial API and implementation
- *
- */
-
-package de.sovity.edc.ext.brokerserver.dao.pages.catalog;
-
-import de.sovity.edc.ext.brokerserver.api.model.CatalogPageSortingType;
-import de.sovity.edc.ext.brokerserver.dao.pages.catalog.models.CatalogQueryFilter;
-import de.sovity.edc.ext.brokerserver.dao.pages.catalog.models.DataOfferListEntryRs;
-import de.sovity.edc.ext.brokerserver.dao.pages.catalog.models.PageQuery;
-import de.sovity.edc.ext.brokerserver.dao.utils.MultisetUtils;
-import lombok.RequiredArgsConstructor;
-import org.jooq.Field;
-import org.jooq.Record;
-import org.jooq.SelectOnConditionStep;
-import org.jooq.SelectSelectStep;
-import org.jooq.impl.DSL;
-
-import java.util.List;
-
-@RequiredArgsConstructor
-public class CatalogQueryDataOfferFetcher {
- private final CatalogQuerySortingService catalogQuerySortingService;
- private final CatalogQueryFilterService catalogQueryFilterService;
- private final CatalogQueryContractOfferFetcher catalogQueryContractOfferFetcher;
-
- /**
- * Query data offers
- *
- * @param fields query fields
- * @param searchQuery search query
- * @param filters filters (queries + filter clauses)
- * @param sorting sorting
- * @param pageQuery pagination
- * @return {@link Field} of {@link DataOfferListEntryRs}s
- */
- public Field> queryDataOffers(
- CatalogQueryFields fields,
- String searchQuery,
- List filters,
- CatalogPageSortingType sorting,
- PageQuery pageQuery
- ) {
- var c = fields.getConnectorTable();
- var d = fields.getDataOfferTable();
-
- var select = DSL.select(
- d.ASSET_ID.as("assetId"),
- d.ASSET_JSON_LD.cast(String.class).as("assetJsonLd"),
- d.CREATED_AT,
- d.UPDATED_AT,
- catalogQueryContractOfferFetcher.getContractOffers(d).as("contractOffers"),
- c.ENDPOINT.as("connectorEndpoint"),
- c.ONLINE_STATUS.as("connectorOnlineStatus"),
- c.PARTICIPANT_ID.as("connectorParticipantId"),
- fields.getOrganizationName().as("organizationName"),
- fields.getOfflineSinceOrLastUpdatedAt().as("connectorOfflineSinceOrLastUpdatedAt")
- );
-
- var query = from(select, fields)
- .where(catalogQueryFilterService.filterDbQuery(fields, searchQuery, filters))
- .orderBy(catalogQuerySortingService.getOrderBy(fields, sorting))
- .limit(pageQuery.offset(), pageQuery.limit());
-
- return MultisetUtils.multiset(query, DataOfferListEntryRs.class);
- }
-
- /**
- * Query number of data offers
- *
- * @param fields query fields
- * @param searchQuery search query
- * @param filters filters (queries + filter clauses)
- * @return {@link Field} with number of data offers
- */
- public Field queryNumDataOffers(CatalogQueryFields fields, String searchQuery, List filters) {
- var query = from(DSL.select(DSL.count()), fields)
- .where(catalogQueryFilterService.filterDbQuery(fields, searchQuery, filters));
- return DSL.field(query);
- }
-
- private SelectOnConditionStep from(SelectSelectStep select, CatalogQueryFields fields) {
- var c = fields.getConnectorTable();
- var d = fields.getDataOfferTable();
- return select.from(d).leftJoin(c).on(c.ENDPOINT.eq(d.CONNECTOR_ENDPOINT));
- }
-}
diff --git a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/catalog/CatalogQueryFields.java b/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/catalog/CatalogQueryFields.java
deleted file mode 100644
index 747f0707d..000000000
--- a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/catalog/CatalogQueryFields.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * Copyright (c) 2023 sovity GmbH
- *
- * This program and the accompanying materials are made available under the
- * terms of the Apache License, Version 2.0 which is available at
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Contributors:
- * sovity GmbH - initial API and implementation
- *
- */
-
-package de.sovity.edc.ext.brokerserver.dao.pages.catalog;
-
-import de.sovity.edc.ext.brokerserver.db.jooq.Tables;
-import de.sovity.edc.ext.brokerserver.db.jooq.tables.Connector;
-import de.sovity.edc.ext.brokerserver.db.jooq.tables.DataOffer;
-import de.sovity.edc.ext.brokerserver.db.jooq.tables.DataOfferViewCount;
-import de.sovity.edc.ext.brokerserver.services.config.DataSpaceConfig;
-import lombok.AccessLevel;
-import lombok.Getter;
-import lombok.experimental.FieldDefaults;
-import org.jooq.Field;
-import org.jooq.Table;
-import org.jooq.impl.DSL;
-
-import java.time.OffsetDateTime;
-
-import static org.jooq.impl.DSL.coalesce;
-
-/**
- * Tables and fields used in the catalog page query.
- *
- * Having this as a class makes access to computed fields (e.g. asset properties) easier.
- */
-@Getter
-@FieldDefaults(level = AccessLevel.PRIVATE, makeFinal = true)
-public class CatalogQueryFields {
- Connector connectorTable;
- DataOffer dataOfferTable;
- DataOfferViewCount dataOfferViewCountTable;
-
- // Asset Properties from JSON to be used in sorting / filtering
- Field dataSpace;
-
- // This date should always be non-null
- // It's used in the UI to display the last relevant change date of a connector
- Field offlineSinceOrLastUpdatedAt;
-
- DataSpaceConfig dataSpaceConfig;
-
- public CatalogQueryFields(
- Connector connectorTable,
- DataOffer dataOfferTable,
- DataOfferViewCount dataOfferViewCountTable,
- DataSpaceConfig dataSpaceConfig
- ) {
- this.connectorTable = connectorTable;
- this.dataOfferTable = dataOfferTable;
- this.dataOfferViewCountTable = dataOfferViewCountTable;
- this.dataSpaceConfig = dataSpaceConfig;
- offlineSinceOrLastUpdatedAt = offlineSinceOrLastUpdatedAt(connectorTable);
-
- dataSpace = buildDataSpaceField(connectorTable, dataSpaceConfig);
- }
-
- private Field buildDataSpaceField(Connector connectorTable, DataSpaceConfig dataSpaceConfig) {
- var endpoint = connectorTable.ENDPOINT;
-
- var connectors = dataSpaceConfig.dataSpaceConnectors();
- if (connectors.isEmpty()) {
- return DSL.val(dataSpaceConfig.defaultDataSpace());
- }
-
- var first = connectors.get(0);
- var dspCase = DSL.case_(endpoint).when(first.endpoint(), first.dataSpaceName());
-
- for (var dsp : connectors.subList(1, connectors.size())) {
- dspCase = dspCase.when(dsp.endpoint(), dsp.dataSpaceName());
- }
-
- return dspCase.else_(DSL.val(dataSpaceConfig.defaultDataSpace()));
- }
-
- public CatalogQueryFields withSuffix(String additionalSuffix) {
- return new CatalogQueryFields(
- connectorTable.as(withSuffix(connectorTable, additionalSuffix)),
- dataOfferTable.as(withSuffix(dataOfferTable, additionalSuffix)),
- dataOfferViewCountTable.as(withSuffix(dataOfferViewCountTable, additionalSuffix)),
- dataSpaceConfig
- );
- }
-
- private String withSuffix(Table> table, String additionalSuffix) {
- return "%s_%s".formatted(table.getName(), additionalSuffix);
- }
-
- public Field getViewCount() {
- var subquery = DSL.select(DSL.count())
- .from(dataOfferViewCountTable)
- .where(dataOfferViewCountTable.ASSET_ID.eq(dataOfferTable.ASSET_ID)
- .and(dataOfferViewCountTable.CONNECTOR_ENDPOINT.eq(connectorTable.ENDPOINT)));
-
- return subquery.asField();
- }
-
- public Field getOrganizationName() {
- return organizationName(connectorTable.MDS_ID);
- }
-
- public static Field offlineSinceOrLastUpdatedAt(Connector connectorTable) {
- return DSL.coalesce(
- connectorTable.LAST_SUCCESSFUL_REFRESH_AT,
- connectorTable.CREATED_AT
- );
- }
-
- public static Field organizationName(Field mdsId) {
- var om = Tables.ORGANIZATION_METADATA;
- var organizationName = DSL.select(om.NAME)
- .from(om)
- .where(om.MDS_ID.eq(mdsId))
- .asField()
- .cast(String.class);
- return coalesce(organizationName, "Unknown");
- }
-}
diff --git a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/catalog/CatalogQueryFilterService.java b/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/catalog/CatalogQueryFilterService.java
deleted file mode 100644
index b92af8920..000000000
--- a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/catalog/CatalogQueryFilterService.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright (c) 2023 sovity GmbH
- *
- * This program and the accompanying materials are made available under the
- * terms of the Apache License, Version 2.0 which is available at
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Contributors:
- * sovity GmbH - initial API and implementation
- *
- */
-
-package de.sovity.edc.ext.brokerserver.dao.pages.catalog;
-
-import de.sovity.edc.ext.brokerserver.dao.pages.catalog.models.CatalogQueryFilter;
-import de.sovity.edc.ext.brokerserver.db.jooq.enums.ConnectorOnlineStatus;
-import de.sovity.edc.ext.brokerserver.db.jooq.tables.Connector;
-import de.sovity.edc.ext.brokerserver.services.api.filtering.CatalogSearchService;
-import de.sovity.edc.ext.brokerserver.services.config.BrokerServerSettings;
-import lombok.RequiredArgsConstructor;
-import org.jetbrains.annotations.NotNull;
-import org.jooq.Condition;
-import org.jooq.impl.DSL;
-
-import java.time.OffsetDateTime;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
-
-@RequiredArgsConstructor
-public class CatalogQueryFilterService {
- private final BrokerServerSettings brokerServerSettings;
- private final CatalogSearchService catalogSearchService;
-
- public Condition filterDbQuery(CatalogQueryFields fields, String searchQuery, List filters) {
- var conditions = new ArrayList();
- conditions.add(catalogSearchService.filterBySearch(fields, searchQuery));
- conditions.add(onlyOnlineOrRecentlyOfflineConnectors(fields.getConnectorTable()));
- conditions.addAll(filters.stream().map(CatalogQueryFilter::queryFilterClauseOrNull)
- .filter(Objects::nonNull).map(it -> it.filterDataOffers(fields)).toList());
- return DSL.and(conditions);
- }
-
- @NotNull
- private Condition onlyOnlineOrRecentlyOfflineConnectors(Connector c) {
- var maxOfflineDuration = brokerServerSettings.getHideOfflineDataOffersAfter();
-
- Condition maxOfflineDurationNotExceeded;
- if (maxOfflineDuration == null) {
- maxOfflineDurationNotExceeded = DSL.trueCondition();
- } else {
- maxOfflineDurationNotExceeded = c.LAST_SUCCESSFUL_REFRESH_AT.greaterThan(OffsetDateTime.now().minus(maxOfflineDuration));
- }
-
- return DSL.or(
- c.ONLINE_STATUS.eq(ConnectorOnlineStatus.ONLINE),
- maxOfflineDurationNotExceeded
- );
- }
-}
diff --git a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/catalog/CatalogQueryService.java b/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/catalog/CatalogQueryService.java
deleted file mode 100644
index 04a585e35..000000000
--- a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/catalog/CatalogQueryService.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright (c) 2023 sovity GmbH
- *
- * This program and the accompanying materials are made available under the
- * terms of the Apache License, Version 2.0 which is available at
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Contributors:
- * sovity GmbH - initial API and implementation
- *
- */
-
-package de.sovity.edc.ext.brokerserver.dao.pages.catalog;
-
-import de.sovity.edc.ext.brokerserver.api.model.CatalogPageSortingType;
-import de.sovity.edc.ext.brokerserver.dao.pages.catalog.models.CatalogPageRs;
-import de.sovity.edc.ext.brokerserver.dao.pages.catalog.models.CatalogQueryFilter;
-import de.sovity.edc.ext.brokerserver.dao.pages.catalog.models.PageQuery;
-import de.sovity.edc.ext.brokerserver.db.jooq.Tables;
-import de.sovity.edc.ext.brokerserver.services.config.BrokerServerSettings;
-import lombok.RequiredArgsConstructor;
-import org.jooq.DSLContext;
-
-import java.util.List;
-
-@RequiredArgsConstructor
-public class CatalogQueryService {
- private final CatalogQueryDataOfferFetcher catalogQueryDataOfferFetcher;
- private final CatalogQueryAvailableFilterFetcher catalogQueryAvailableFilterFetcher;
- private final BrokerServerSettings brokerServerSettings;
-
- /**
- * Query all data required for the catalog page
- *
- * @param dsl transaction
- * @param searchQuery search query
- * @param filters filters (queries + filter clauses)
- * @param sorting sorting
- * @param pageQuery pagination
- * @return {@link CatalogPageRs}
- */
- public CatalogPageRs queryCatalogPage(
- DSLContext dsl,
- String searchQuery,
- List filters,
- CatalogPageSortingType sorting,
- PageQuery pageQuery
- ) {
- var fields = new CatalogQueryFields(
- Tables.CONNECTOR,
- Tables.DATA_OFFER,
- Tables.DATA_OFFER_VIEW_COUNT,
- brokerServerSettings.getDataSpaceConfig()
- );
-
- var availableFilterValues = catalogQueryAvailableFilterFetcher
- .queryAvailableFilterValues(fields, searchQuery, filters);
-
- var dataOffers = catalogQueryDataOfferFetcher.queryDataOffers(fields, searchQuery, filters, sorting, pageQuery);
-
- var numTotalDataOffers = catalogQueryDataOfferFetcher.queryNumDataOffers(fields, searchQuery, filters);
-
- return dsl.select(
- dataOffers.as("dataOffers"),
- availableFilterValues.as("availableFilterValues"),
- numTotalDataOffers.as("numTotalDataOffers")
- ).fetchOneInto(CatalogPageRs.class);
- }
-
-}
diff --git a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/catalog/CatalogQuerySortingService.java b/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/catalog/CatalogQuerySortingService.java
deleted file mode 100644
index c06aaecb1..000000000
--- a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/catalog/CatalogQuerySortingService.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (c) 2023 sovity GmbH
- *
- * This program and the accompanying materials are made available under the
- * terms of the Apache License, Version 2.0 which is available at
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Contributors:
- * sovity GmbH - initial API and implementation
- *
- */
-
-package de.sovity.edc.ext.brokerserver.dao.pages.catalog;
-
-import de.sovity.edc.ext.brokerserver.api.model.CatalogPageSortingType;
-import lombok.NonNull;
-import lombok.RequiredArgsConstructor;
-import org.jetbrains.annotations.NotNull;
-import org.jooq.OrderField;
-
-import java.util.List;
-
-@RequiredArgsConstructor
-public class CatalogQuerySortingService {
- @NotNull
- public List> getOrderBy(CatalogQueryFields fields, @NonNull CatalogPageSortingType sorting) {
- List> orderBy;
- if (sorting == CatalogPageSortingType.TITLE) {
- orderBy = List.of(
- fields.getDataOfferTable().ASSET_TITLE.asc(),
- fields.getConnectorTable().ENDPOINT.asc()
- );
- } else if (sorting == CatalogPageSortingType.MOST_RECENT) {
- orderBy = List.of(
- fields.getDataOfferTable().CREATED_AT.desc(),
- fields.getConnectorTable().ENDPOINT.asc()
- );
- } else if (sorting == CatalogPageSortingType.ORIGINATOR) {
- orderBy = List.of(
- fields.getConnectorTable().ENDPOINT.asc(),
- fields.getDataOfferTable().ASSET_TITLE.asc()
- );
- } else if (sorting == CatalogPageSortingType.VIEW_COUNT) {
- orderBy = List.of(
- fields.getViewCount().desc(),
- fields.getConnectorTable().ENDPOINT.asc()
- );
- } else {
- throw new IllegalArgumentException("Unknown %s: %s".formatted(CatalogPageSortingType.class.getName(), sorting));
- }
- return orderBy;
- }
-}
diff --git a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/catalog/models/AvailableFilterValuesQuery.java b/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/catalog/models/AvailableFilterValuesQuery.java
deleted file mode 100644
index 9dabec513..000000000
--- a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/catalog/models/AvailableFilterValuesQuery.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright (c) 2023 sovity GmbH
- *
- * This program and the accompanying materials are made available under the
- * terms of the Apache License, Version 2.0 which is available at
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Contributors:
- * sovity GmbH - initial API and implementation
- *
- */
-
-package de.sovity.edc.ext.brokerserver.dao.pages.catalog.models;
-
-import de.sovity.edc.ext.brokerserver.dao.pages.catalog.CatalogQueryFields;
-import org.jooq.Field;
-
-@FunctionalInterface
-public interface AvailableFilterValuesQuery {
-
- /**
- * Gets the values for a given filter attribute from a list of data offers.
- *
- * @param fields a
- * @return field / multiset field that will contain the available values
- */
- Field getAttributeValueField(CatalogQueryFields fields);
-}
diff --git a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/catalog/models/CatalogPageRs.java b/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/catalog/models/CatalogPageRs.java
deleted file mode 100644
index 88a199df1..000000000
--- a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/catalog/models/CatalogPageRs.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright (c) 2023 sovity GmbH
- *
- * This program and the accompanying materials are made available under the
- * terms of the Apache License, Version 2.0 which is available at
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Contributors:
- * sovity GmbH - initial API and implementation
- *
- */
-
-package de.sovity.edc.ext.brokerserver.dao.pages.catalog.models;
-
-import lombok.AccessLevel;
-import lombok.Getter;
-import lombok.Setter;
-import lombok.experimental.FieldDefaults;
-
-import java.util.List;
-
-@Getter
-@Setter
-@FieldDefaults(level = AccessLevel.PRIVATE)
-public class CatalogPageRs {
- String availableFilterValues;
- List dataOffers;
- int numTotalDataOffers;
-}
diff --git a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/catalog/models/CatalogQueryFilter.java b/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/catalog/models/CatalogQueryFilter.java
deleted file mode 100644
index 9dcccd038..000000000
--- a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/catalog/models/CatalogQueryFilter.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (c) 2023 sovity GmbH
- *
- * This program and the accompanying materials are made available under the
- * terms of the Apache License, Version 2.0 which is available at
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Contributors:
- * sovity GmbH - initial API and implementation
- *
- */
-
-package de.sovity.edc.ext.brokerserver.dao.pages.catalog.models;
-
-import lombok.NonNull;
-
-public record CatalogQueryFilter(
- @NonNull String name,
- @NonNull AvailableFilterValuesQuery valueQuery,
- CatalogQuerySelectedFilterQuery queryFilterClauseOrNull
-) {
-}
diff --git a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/catalog/models/CatalogQuerySelectedFilterQuery.java b/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/catalog/models/CatalogQuerySelectedFilterQuery.java
deleted file mode 100644
index a3b2bcfa3..000000000
--- a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/catalog/models/CatalogQuerySelectedFilterQuery.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright (c) 2023 sovity GmbH
- *
- * This program and the accompanying materials are made available under the
- * terms of the Apache License, Version 2.0 which is available at
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Contributors:
- * sovity GmbH - initial API and implementation
- *
- */
-
-package de.sovity.edc.ext.brokerserver.dao.pages.catalog.models;
-
-import de.sovity.edc.ext.brokerserver.dao.pages.catalog.CatalogQueryFields;
-import org.jooq.Condition;
-
-@FunctionalInterface
-public interface CatalogQuerySelectedFilterQuery {
-
- /**
- * Adds a filter to a Catalog Query.
- *
- * @param fields fields and tables available in the catalog query
- * @return {@link Condition}
- */
- Condition filterDataOffers(CatalogQueryFields fields);
-}
diff --git a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/catalog/models/DataOfferListEntryRs.java b/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/catalog/models/DataOfferListEntryRs.java
deleted file mode 100644
index 1c97cf430..000000000
--- a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/catalog/models/DataOfferListEntryRs.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (c) 2023 sovity GmbH
- *
- * This program and the accompanying materials are made available under the
- * terms of the Apache License, Version 2.0 which is available at
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Contributors:
- * sovity GmbH - initial API and implementation
- *
- */
-
-package de.sovity.edc.ext.brokerserver.dao.pages.catalog.models;
-
-import de.sovity.edc.ext.brokerserver.dao.pages.dataoffer.model.ContractOfferRs;
-import de.sovity.edc.ext.brokerserver.db.jooq.enums.ConnectorOnlineStatus;
-import lombok.AccessLevel;
-import lombok.Getter;
-import lombok.Setter;
-import lombok.experimental.FieldDefaults;
-
-import java.time.OffsetDateTime;
-import java.util.List;
-
-@Getter
-@Setter
-@FieldDefaults(level = AccessLevel.PRIVATE)
-public class DataOfferListEntryRs {
- String assetId;
- String assetJsonLd;
- OffsetDateTime createdAt;
- OffsetDateTime updatedAt;
- List contractOffers;
- String connectorEndpoint;
- ConnectorOnlineStatus connectorOnlineStatus;
- String connectorParticipantId;
- String organizationName;
- OffsetDateTime connectorOfflineSinceOrLastUpdatedAt;
-}
diff --git a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/catalog/models/PageQuery.java b/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/catalog/models/PageQuery.java
deleted file mode 100644
index c5cd659bb..000000000
--- a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/catalog/models/PageQuery.java
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- * Copyright (c) 2023 sovity GmbH
- *
- * This program and the accompanying materials are made available under the
- * terms of the Apache License, Version 2.0 which is available at
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Contributors:
- * sovity GmbH - initial API and implementation
- *
- */
-
-package de.sovity.edc.ext.brokerserver.dao.pages.catalog.models;
-
-public record PageQuery(int offset, int limit) {
-}
diff --git a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/connector/ConnectorDetailQueryService.java b/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/connector/ConnectorDetailQueryService.java
deleted file mode 100644
index f4acc2589..000000000
--- a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/connector/ConnectorDetailQueryService.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright (c) 2023 sovity GmbH
- *
- * This program and the accompanying materials are made available under the
- * terms of the Apache License, Version 2.0 which is available at
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Contributors:
- * sovity GmbH - initial API and implementation
- *
- */
-
-package de.sovity.edc.ext.brokerserver.dao.pages.connector;
-
-import de.sovity.edc.ext.brokerserver.dao.pages.catalog.CatalogQueryFields;
-import de.sovity.edc.ext.brokerserver.dao.pages.connector.model.ConnectorDetailsRs;
-import de.sovity.edc.ext.brokerserver.db.jooq.Tables;
-import de.sovity.edc.ext.brokerserver.db.jooq.enums.MeasurementErrorStatus;
-import de.sovity.edc.ext.brokerserver.db.jooq.tables.Connector;
-import org.jetbrains.annotations.NotNull;
-import org.jooq.DSLContext;
-import org.jooq.Field;
-import org.jooq.impl.DSL;
-
-import java.math.BigDecimal;
-
-public class ConnectorDetailQueryService {
- public ConnectorDetailsRs queryConnectorDetailPage(DSLContext dsl, String connectorEndpoint) {
- var c = Tables.CONNECTOR;
-
- return dsl.select(
- c.ENDPOINT.as("endpoint"),
- c.PARTICIPANT_ID.as("participantId"),
- CatalogQueryFields.organizationName(c.MDS_ID).as("organizationName"),
- c.CREATED_AT.as("createdAt"),
- c.LAST_SUCCESSFUL_REFRESH_AT.as("lastSuccessfulRefreshAt"),
- c.LAST_REFRESH_ATTEMPT_AT.as("lastRefreshAttemptAt"),
- c.ONLINE_STATUS.as("onlineStatus"),
- dataOfferCount(c.ENDPOINT).as("numDataOffers"),
- getAvgSuccessfulCrawlTimeInMs(c).as("connectorCrawlingTimeAvg"))
- .from(c)
- .where(c.ENDPOINT.eq(connectorEndpoint))
- .groupBy(c.ENDPOINT)
- .fetchOneInto(ConnectorDetailsRs.class);
- }
-
- @NotNull
- private Field getAvgSuccessfulCrawlTimeInMs(Connector c) {
- var betm = Tables.BROKER_EXECUTION_TIME_MEASUREMENT;
- return DSL.select(DSL.avg(betm.DURATION_IN_MS))
- .from(betm)
- .where(betm.CONNECTOR_ENDPOINT.eq(c.ENDPOINT), betm.ERROR_STATUS.eq(MeasurementErrorStatus.OK))
- .asField();
- }
-
- private Field dataOfferCount(Field endpoint) {
- var d = Tables.DATA_OFFER;
- return DSL.select(DSL.count()).from(d).where(d.CONNECTOR_ENDPOINT.eq(endpoint)).asField();
- }
-}
diff --git a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/connector/ConnectorListQueryService.java b/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/connector/ConnectorListQueryService.java
deleted file mode 100644
index 524631b69..000000000
--- a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/connector/ConnectorListQueryService.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Copyright (c) 2023 sovity GmbH
- *
- * This program and the accompanying materials are made available under the
- * terms of the Apache License, Version 2.0 which is available at
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Contributors:
- * sovity GmbH - initial API and implementation
- *
- */
-
-package de.sovity.edc.ext.brokerserver.dao.pages.connector;
-
-import de.sovity.edc.ext.brokerserver.api.model.ConnectorPageSortingType;
-import de.sovity.edc.ext.brokerserver.dao.pages.catalog.CatalogQueryFields;
-import de.sovity.edc.ext.brokerserver.dao.pages.connector.model.ConnectorListEntryRs;
-import de.sovity.edc.ext.brokerserver.dao.utils.SearchUtils;
-import de.sovity.edc.ext.brokerserver.db.jooq.Tables;
-import de.sovity.edc.ext.brokerserver.db.jooq.enums.ConnectorOnlineStatus;
-import de.sovity.edc.ext.brokerserver.db.jooq.tables.Connector;
-import lombok.NonNull;
-import org.jetbrains.annotations.NotNull;
-import org.jooq.DSLContext;
-import org.jooq.Field;
-import org.jooq.OrderField;
-import org.jooq.impl.DSL;
-
-import java.util.List;
-
-public class ConnectorListQueryService {
- public List queryConnectorPage(DSLContext dsl, String searchQuery, ConnectorPageSortingType sorting) {
- var c = Tables.CONNECTOR;
- var filterBySearchQuery = SearchUtils.simpleSearch(searchQuery, List.of(
- c.ENDPOINT,
- c.PARTICIPANT_ID,
- CatalogQueryFields.organizationName(c.MDS_ID)
- ));
-
- return dsl.select(
- c.ENDPOINT.as("endpoint"),
- c.PARTICIPANT_ID.as("participantId"),
- CatalogQueryFields.organizationName(c.MDS_ID).as("organizationName"),
- c.CREATED_AT.as("createdAt"),
- c.LAST_SUCCESSFUL_REFRESH_AT.as("lastSuccessfulRefreshAt"),
- c.LAST_REFRESH_ATTEMPT_AT.as("lastRefreshAttemptAt"),
- c.ONLINE_STATUS.as("onlineStatus"),
- dataOfferCount(c.ENDPOINT).as("numDataOffers")
- )
- .from(c)
- .where(filterBySearchQuery)
- .orderBy(sortConnectorPage(c, sorting))
- .fetchInto(ConnectorListEntryRs.class);
- }
-
- @NotNull
- private List> sortConnectorPage(Connector c, @NonNull ConnectorPageSortingType sorting) {
- var alphabetically = c.ENDPOINT.asc();
- var recentFirst = c.CREATED_AT.desc();
- var onlineStatus = DSL.case_(c.ONLINE_STATUS)
- .when(ConnectorOnlineStatus.ONLINE, 1)
- .when(ConnectorOnlineStatus.OFFLINE, 2)
- .else_(3)
- .asc();
-
- if (sorting == ConnectorPageSortingType.ONLINE_STATUS) {
- return List.of(onlineStatus, alphabetically);
- } else if (sorting == ConnectorPageSortingType.TITLE) {
- return List.of(alphabetically, recentFirst);
- } else if (sorting == ConnectorPageSortingType.MOST_RECENT) {
- return List.of(recentFirst, alphabetically);
- }
-
- throw new IllegalArgumentException("Unhandled sorting type: " + sorting);
- }
-
- private Field dataOfferCount(Field endpoint) {
- var d = Tables.DATA_OFFER;
- return DSL.select(DSL.count()).from(d).where(d.CONNECTOR_ENDPOINT.eq(endpoint)).asField();
- }
-}
diff --git a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/connector/model/ConnectorDetailsRs.java b/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/connector/model/ConnectorDetailsRs.java
deleted file mode 100644
index 071d8e5ce..000000000
--- a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/connector/model/ConnectorDetailsRs.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (c) 2023 sovity GmbH
- *
- * This program and the accompanying materials are made available under the
- * terms of the Apache License, Version 2.0 which is available at
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Contributors:
- * sovity GmbH - initial API and implementation
- *
- */
-
-package de.sovity.edc.ext.brokerserver.dao.pages.connector.model;
-
-import de.sovity.edc.ext.brokerserver.db.jooq.enums.ConnectorOnlineStatus;
-import lombok.AccessLevel;
-import lombok.Getter;
-import lombok.Setter;
-import lombok.experimental.FieldDefaults;
-
-import java.time.OffsetDateTime;
-
-@Getter
-@Setter
-@FieldDefaults(level = AccessLevel.PRIVATE)
-public class ConnectorDetailsRs {
- String endpoint;
- String participantId;
- String organizationName;
- OffsetDateTime createdAt;
- OffsetDateTime lastSuccessfulRefreshAt;
- OffsetDateTime lastRefreshAttemptAt;
- ConnectorOnlineStatus onlineStatus;
- Integer numDataOffers;
- Long connectorCrawlingTimeAvg;
-}
diff --git a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/connector/model/ConnectorListEntryRs.java b/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/connector/model/ConnectorListEntryRs.java
deleted file mode 100644
index 96ba710f6..000000000
--- a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/connector/model/ConnectorListEntryRs.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (c) 2023 sovity GmbH
- *
- * This program and the accompanying materials are made available under the
- * terms of the Apache License, Version 2.0 which is available at
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Contributors:
- * sovity GmbH - initial API and implementation
- *
- */
-
-package de.sovity.edc.ext.brokerserver.dao.pages.connector.model;
-
-import de.sovity.edc.ext.brokerserver.db.jooq.enums.ConnectorOnlineStatus;
-import lombok.AccessLevel;
-import lombok.Getter;
-import lombok.Setter;
-import lombok.experimental.FieldDefaults;
-
-import java.time.OffsetDateTime;
-
-@Getter
-@Setter
-@FieldDefaults(level = AccessLevel.PRIVATE)
-public class ConnectorListEntryRs {
- String endpoint;
- String participantId;
- String organizationName;
- OffsetDateTime createdAt;
- OffsetDateTime lastSuccessfulRefreshAt;
- OffsetDateTime lastRefreshAttemptAt;
- ConnectorOnlineStatus onlineStatus;
- Integer numDataOffers;
-}
diff --git a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/dataoffer/DataOfferDetailPageQueryService.java b/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/dataoffer/DataOfferDetailPageQueryService.java
deleted file mode 100644
index f597ac124..000000000
--- a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/dataoffer/DataOfferDetailPageQueryService.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright (c) 2023 sovity GmbH
- *
- * This program and the accompanying materials are made available under the
- * terms of the Apache License, Version 2.0 which is available at
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Contributors:
- * sovity GmbH - initial API and implementation
- *
- */
-
-package de.sovity.edc.ext.brokerserver.dao.pages.dataoffer;
-
-import de.sovity.edc.ext.brokerserver.dao.pages.catalog.CatalogQueryContractOfferFetcher;
-import de.sovity.edc.ext.brokerserver.dao.pages.catalog.CatalogQueryFields;
-import de.sovity.edc.ext.brokerserver.dao.pages.dataoffer.model.DataOfferDetailRs;
-import de.sovity.edc.ext.brokerserver.db.jooq.Tables;
-import de.sovity.edc.ext.brokerserver.services.config.BrokerServerSettings;
-import lombok.RequiredArgsConstructor;
-import org.jooq.DSLContext;
-
-@RequiredArgsConstructor
-public class DataOfferDetailPageQueryService {
- private final CatalogQueryContractOfferFetcher catalogQueryContractOfferFetcher;
- private final BrokerServerSettings brokerServerSettings;
-
- public DataOfferDetailRs queryDataOfferDetailsPage(DSLContext dsl, String assetId, String endpoint) {
- // We are re-using the catalog page query stuff as long as we can get away with it
- var fields = new CatalogQueryFields(
- Tables.CONNECTOR,
- Tables.DATA_OFFER,
- Tables.DATA_OFFER_VIEW_COUNT,
- brokerServerSettings.getDataSpaceConfig()
- );
-
- var d = fields.getDataOfferTable();
- var c = fields.getConnectorTable();
-
- return dsl.select(
- d.ASSET_ID,
- d.ASSET_JSON_LD.cast(String.class).as("assetJsonLd"),
- d.CREATED_AT,
- d.UPDATED_AT,
- catalogQueryContractOfferFetcher.getContractOffers(fields.getDataOfferTable()).as("contractOffers"),
- fields.getOfflineSinceOrLastUpdatedAt().as("connectorOfflineSinceOrLastUpdatedAt"),
- c.ENDPOINT.as("connectorEndpoint"),
- c.ONLINE_STATUS.as("connectorOnlineStatus"),
- c.PARTICIPANT_ID.as("connectorParticipantId"),
- fields.getOrganizationName().as("organizationName"),
- fields.getViewCount().as("viewCount"))
- .from(d)
- .leftJoin(c).on(c.ENDPOINT.eq(d.CONNECTOR_ENDPOINT))
- .where(d.ASSET_ID.eq(assetId).and(d.CONNECTOR_ENDPOINT.eq(endpoint)))
- .fetchOneInto(DataOfferDetailRs.class);
- }
-}
diff --git a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/dataoffer/ViewCountLogger.java b/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/dataoffer/ViewCountLogger.java
deleted file mode 100644
index 377abeafa..000000000
--- a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/dataoffer/ViewCountLogger.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Copyright (c) 2023 sovity GmbH
- *
- * This program and the accompanying materials are made available under the
- * terms of the Apache License, Version 2.0 which is available at
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Contributors:
- * sovity GmbH - initial API and implementation
- *
- */
-
-package de.sovity.edc.ext.brokerserver.dao.pages.dataoffer;
-
-import de.sovity.edc.ext.brokerserver.db.jooq.Tables;
-import org.jooq.DSLContext;
-
-import java.time.OffsetDateTime;
-
-public class ViewCountLogger {
- public void increaseDataOfferViewCount(DSLContext dsl, String assetId, String endpoint) {
- var v = Tables.DATA_OFFER_VIEW_COUNT;
- dsl.insertInto(v, v.ASSET_ID, v.CONNECTOR_ENDPOINT, v.DATE).values(assetId, endpoint, OffsetDateTime.now()).execute();
- }
-}
diff --git a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/dataoffer/model/ContractOfferRs.java b/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/dataoffer/model/ContractOfferRs.java
deleted file mode 100644
index f10d1dd1e..000000000
--- a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/dataoffer/model/ContractOfferRs.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright (c) 2023 sovity GmbH
- *
- * This program and the accompanying materials are made available under the
- * terms of the Apache License, Version 2.0 which is available at
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Contributors:
- * sovity GmbH - initial API and implementation
- *
- */
-
-package de.sovity.edc.ext.brokerserver.dao.pages.dataoffer.model;
-
-import lombok.AccessLevel;
-import lombok.Getter;
-import lombok.Setter;
-import lombok.experimental.FieldDefaults;
-
-import java.time.OffsetDateTime;
-
-@Getter
-@Setter
-@FieldDefaults(level = AccessLevel.PRIVATE)
-public class ContractOfferRs {
- String contractOfferId;
- String policyJson;
- OffsetDateTime createdAt;
- OffsetDateTime updatedAt;
-}
diff --git a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/dataoffer/model/DataOfferDetailRs.java b/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/dataoffer/model/DataOfferDetailRs.java
deleted file mode 100644
index 0b575849c..000000000
--- a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/pages/dataoffer/model/DataOfferDetailRs.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (c) 2023 sovity GmbH
- *
- * This program and the accompanying materials are made available under the
- * terms of the Apache License, Version 2.0 which is available at
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Contributors:
- * sovity GmbH - initial API and implementation
- *
- */
-
-package de.sovity.edc.ext.brokerserver.dao.pages.dataoffer.model;
-
-import de.sovity.edc.ext.brokerserver.db.jooq.enums.ConnectorOnlineStatus;
-import lombok.AccessLevel;
-import lombok.Getter;
-import lombok.Setter;
-import lombok.experimental.FieldDefaults;
-
-import java.time.OffsetDateTime;
-import java.util.List;
-
-@Getter
-@Setter
-@FieldDefaults(level = AccessLevel.PRIVATE)
-public class DataOfferDetailRs {
- String assetId;
- String assetJsonLd;
- OffsetDateTime createdAt;
- OffsetDateTime updatedAt;
- List contractOffers;
- String connectorEndpoint;
- ConnectorOnlineStatus connectorOnlineStatus;
- String connectorParticipantId;
- String organizationName;
- OffsetDateTime connectorOfflineSinceOrLastUpdatedAt;
- Integer viewCount;
-}
diff --git a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/utils/JsonDeserializationUtils.java b/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/utils/JsonDeserializationUtils.java
deleted file mode 100644
index 1c3f4e2f9..000000000
--- a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/utils/JsonDeserializationUtils.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (c) 2023 sovity GmbH
- *
- * This program and the accompanying materials are made available under the
- * terms of the Apache License, Version 2.0 which is available at
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Contributors:
- * sovity GmbH - initial API and implementation
- *
- */
-
-package de.sovity.edc.ext.brokerserver.dao.utils;
-
-import com.fasterxml.jackson.core.type.TypeReference;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import lombok.AccessLevel;
-import lombok.NoArgsConstructor;
-import lombok.SneakyThrows;
-
-import java.util.List;
-
-/**
- * Some things are easier to fetch as json into a string with JooQ.
- * In that case we need to deserialize that string into an object of our choice afterwards.
- */
-@NoArgsConstructor(access = AccessLevel.PRIVATE)
-public class JsonDeserializationUtils {
- private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
- private static final TypeReference>> TYPE_STRING_LIST_2 = new TypeReference<>() {
- };
-
- @SneakyThrows
- public static List> read2dStringList(String json) {
- return OBJECT_MAPPER.readValue(json, TYPE_STRING_LIST_2);
- }
-}
diff --git a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/utils/LikeUtils.java b/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/utils/LikeUtils.java
deleted file mode 100644
index c3823b04a..000000000
--- a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/utils/LikeUtils.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright (c) 2023 sovity GmbH
- *
- * This program and the accompanying materials are made available under the
- * terms of the Apache License, Version 2.0 which is available at
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Contributors:
- * sovity GmbH - initial API and implementation
- *
- */
-
-package de.sovity.edc.ext.brokerserver.dao.utils;
-
-import lombok.AccessLevel;
-import lombok.NoArgsConstructor;
-import org.apache.commons.lang3.StringUtils;
-import org.jooq.Condition;
-import org.jooq.Field;
-import org.jooq.impl.DSL;
-
-/**
- * Utilities for dealing with PostgreSQL Like Operation values
- */
-@NoArgsConstructor(access = AccessLevel.PRIVATE)
-public class LikeUtils {
-
- /**
- * Create LIKE condition value for "field contains word".
- *
- * @param field field
- * @param lowercaseWord word
- * @return "%escapedWord%"
- */
- public static Condition contains(Field field, String lowercaseWord) {
- if (StringUtils.isBlank(lowercaseWord)) {
- return DSL.trueCondition();
- }
-
- return field.likeIgnoreCase("%" + escape(lowercaseWord) + "%");
- }
-
-
- /**
- * Escapes "\", "%", "_" in given string for a LIKE operation
- *
- * @param string unescaped string
- * @return escaped string
- */
- public static String escape(String string) {
- return string.replace("\\", "\\\\")
- .replace("%", "\\%")
- .replace("_", "\\_");
- }
-}
diff --git a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/utils/MultisetUtils.java b/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/utils/MultisetUtils.java
deleted file mode 100644
index 9cdcdd84d..000000000
--- a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/utils/MultisetUtils.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright (c) 2023 sovity GmbH
- *
- * This program and the accompanying materials are made available under the
- * terms of the Apache License, Version 2.0 which is available at
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Contributors:
- * sovity GmbH - initial API and implementation
- *
- */
-
-package de.sovity.edc.ext.brokerserver.dao.utils;
-
-import lombok.AccessLevel;
-import lombok.NoArgsConstructor;
-import org.jooq.Field;
-import org.jooq.TableLike;
-import org.jooq.impl.DSL;
-
-import java.util.List;
-
-@NoArgsConstructor(access = AccessLevel.PRIVATE)
-public class MultisetUtils {
- public static Field> multiset(TableLike> table, Class type) {
- return DSL.multiset(table).convertFrom(it -> it.into(type));
- }
-}
diff --git a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/utils/SearchUtils.java b/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/utils/SearchUtils.java
deleted file mode 100644
index e8a6ef310..000000000
--- a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/dao/utils/SearchUtils.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (c) 2023 sovity GmbH
- *
- * This program and the accompanying materials are made available under the
- * terms of the Apache License, Version 2.0 which is available at
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Contributors:
- * sovity GmbH - initial API and implementation
- *
- */
-
-package de.sovity.edc.ext.brokerserver.dao.utils;
-
-import de.sovity.edc.ext.brokerserver.utils.StringUtils2;
-import lombok.AccessLevel;
-import lombok.NoArgsConstructor;
-import org.jooq.Condition;
-import org.jooq.Field;
-import org.jooq.impl.DSL;
-
-import java.util.List;
-
-/**
- * DB Search Queries
- */
-@NoArgsConstructor(access = AccessLevel.PRIVATE)
-public class SearchUtils {
-
- /**
- * Simple search
- *
- * All search query words must be contained in at least one search target.
- *
- * @param searchQuery search query
- * @param searchTargets target fields
- * @return JOOQ Condition
- */
- public static Condition simpleSearch(String searchQuery, List> searchTargets) {
- var words = StringUtils2.lowercaseWords(searchQuery);
- return DSL.and(words.stream()
- .map(word -> anySearchTargetContains(searchTargets, word))
- .toList());
- }
-
- private static Condition anySearchTargetContains(List> searchTargets, String word) {
- return DSL.or(searchTargets.stream().map(field -> LikeUtils.contains(field, word)).toList());
- }
-}
diff --git a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/services/ConnectorCleaner.java b/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/services/ConnectorCleaner.java
deleted file mode 100644
index b21cc2787..000000000
--- a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/services/ConnectorCleaner.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright (c) 2023 sovity GmbH
- *
- * This program and the accompanying materials are made available under the
- * terms of the Apache License, Version 2.0 which is available at
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Contributors:
- * sovity GmbH - initial API and implementation
- *
- */
-
-package de.sovity.edc.ext.brokerserver.services;
-
-import de.sovity.edc.ext.brokerserver.dao.utils.PostgresqlUtils;
-import de.sovity.edc.ext.brokerserver.db.jooq.Tables;
-import org.jooq.DSLContext;
-
-import java.util.Collection;
-
-public class ConnectorCleaner {
- public void removeDataForDeadConnectors(DSLContext dsl, Collection endpoints) {
- var doco = Tables.CONTRACT_OFFER;
- var dof = Tables.DATA_OFFER;
- dsl.deleteFrom(doco).where(PostgresqlUtils.in(doco.CONNECTOR_ENDPOINT, endpoints)).execute();
- dsl.deleteFrom(dof).where(PostgresqlUtils.in(dof.CONNECTOR_ENDPOINT, endpoints)).execute();
- }
-}
diff --git a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/services/ConnectorCreator.java b/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/services/ConnectorCreator.java
deleted file mode 100644
index 51b5f461e..000000000
--- a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/services/ConnectorCreator.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright (c) 2023 sovity GmbH
- *
- * This program and the accompanying materials are made available under the
- * terms of the Apache License, Version 2.0 which is available at
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Contributors:
- * sovity GmbH - initial API and implementation
- *
- */
-
-package de.sovity.edc.ext.brokerserver.services;
-
-import de.sovity.edc.ext.brokerserver.dao.ConnectorQueries;
-import de.sovity.edc.ext.brokerserver.db.jooq.enums.ConnectorContractOffersExceeded;
-import de.sovity.edc.ext.brokerserver.db.jooq.enums.ConnectorDataOffersExceeded;
-import de.sovity.edc.ext.brokerserver.db.jooq.enums.ConnectorOnlineStatus;
-import de.sovity.edc.ext.brokerserver.db.jooq.tables.records.ConnectorRecord;
-import de.sovity.edc.ext.brokerserver.utils.CollectionUtils2;
-import lombok.RequiredArgsConstructor;
-import org.jetbrains.annotations.NotNull;
-import org.jooq.DSLContext;
-
-import java.time.OffsetDateTime;
-import java.util.Collection;
-import java.util.List;
-
-@RequiredArgsConstructor
-public class ConnectorCreator {
- private final ConnectorQueries connectorQueries;
-
- public void addConnector(DSLContext dsl, String connectorEndpoint) {
- addConnectors(dsl, List.of(connectorEndpoint));
- }
-
- public void addConnectors(DSLContext dsl, Collection connectorEndpoints) {
- // Don't create connectors that already exist
- var existingConnectors = connectorQueries.findExistingConnectors(dsl, connectorEndpoints);
- var newConnectors = CollectionUtils2.difference(connectorEndpoints, existingConnectors);
-
- var connectorRecords = newConnectors.stream()
- .map(String::trim)
- .map(this::newConnectorRow)
- .toList();
-
- if (!connectorRecords.isEmpty()) {
- dsl.batchStore(connectorRecords).execute();
- }
- }
-
- @NotNull
- private ConnectorRecord newConnectorRow(String endpoint) {
- var connector = new ConnectorRecord();
- connector.setEndpoint(endpoint);
- connector.setParticipantId("");
- connector.setCreatedAt(OffsetDateTime.now());
- connector.setOnlineStatus(ConnectorOnlineStatus.OFFLINE);
- connector.setDataOffersExceeded(ConnectorDataOffersExceeded.OK);
- connector.setContractOffersExceeded(ConnectorContractOffersExceeded.OK);
- return connector;
- }
-}
diff --git a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/services/ConnectorKiller.java b/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/services/ConnectorKiller.java
deleted file mode 100644
index f44353fdb..000000000
--- a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/services/ConnectorKiller.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright (c) 2023 sovity GmbH
- *
- * This program and the accompanying materials are made available under the
- * terms of the Apache License, Version 2.0 which is available at
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Contributors:
- * sovity GmbH - initial API and implementation
- *
- */
-
-package de.sovity.edc.ext.brokerserver.services;
-
-import de.sovity.edc.ext.brokerserver.dao.utils.PostgresqlUtils;
-import de.sovity.edc.ext.brokerserver.db.jooq.Tables;
-import de.sovity.edc.ext.brokerserver.db.jooq.enums.ConnectorOnlineStatus;
-import org.jooq.DSLContext;
-
-import java.util.Collection;
-
-public class ConnectorKiller {
- public void killConnectors(DSLContext dsl, Collection endpoints) {
- var c = Tables.CONNECTOR;
- dsl.update(c).set(c.ONLINE_STATUS, ConnectorOnlineStatus.DEAD).where(PostgresqlUtils.in(c.ENDPOINT, endpoints)).execute();
- }
-}
diff --git a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/services/KnownConnectorsInitializer.java b/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/services/KnownConnectorsInitializer.java
deleted file mode 100644
index 117bdfbe8..000000000
--- a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/services/KnownConnectorsInitializer.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (c) 2023 sovity GmbH
- *
- * This program and the accompanying materials are made available under the
- * terms of the Apache License, Version 2.0 which is available at
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Contributors:
- * sovity GmbH - initial API and implementation
- *
- */
-
-package de.sovity.edc.ext.brokerserver.services;
-
-import de.sovity.edc.ext.brokerserver.BrokerServerExtension;
-import de.sovity.edc.ext.brokerserver.services.queue.ConnectorQueue;
-import de.sovity.edc.ext.brokerserver.services.queue.ConnectorRefreshPriority;
-import lombok.RequiredArgsConstructor;
-import org.apache.commons.lang3.StringUtils;
-import org.eclipse.edc.spi.system.configuration.Config;
-import org.jooq.DSLContext;
-
-import java.util.Arrays;
-import java.util.List;
-
-@RequiredArgsConstructor
-public class KnownConnectorsInitializer {
- private final Config config;
- private final ConnectorQueue connectorQueue;
- private final ConnectorCreator connectorCreator;
-
- public void addKnownConnectorsOnStartup(DSLContext dsl) {
- var connectorEndpoints = getKnownConnectorsConfigValue();
- connectorCreator.addConnectors(dsl, connectorEndpoints);
- connectorQueue.addAll(connectorEndpoints, ConnectorRefreshPriority.ADDED_ON_STARTUP);
- }
-
- private List getKnownConnectorsConfigValue() {
- var knownConnectorsString = config.getString(BrokerServerExtension.KNOWN_CONNECTORS, "");
- return Arrays.stream(knownConnectorsString.split(",")).map(String::trim).filter(StringUtils::isNotBlank).distinct().toList();
- }
-}
diff --git a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/services/OfflineConnectorKiller.java b/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/services/OfflineConnectorKiller.java
deleted file mode 100644
index 8b46d9c81..000000000
--- a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/services/OfflineConnectorKiller.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (c) 2023 sovity GmbH
- *
- * This program and the accompanying materials are made available under the
- * terms of the Apache License, Version 2.0 which is available at
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Contributors:
- * sovity GmbH - initial API and implementation
- *
- */
-
-package de.sovity.edc.ext.brokerserver.services;
-
-import de.sovity.edc.ext.brokerserver.dao.ConnectorQueries;
-import de.sovity.edc.ext.brokerserver.services.config.BrokerServerSettings;
-import de.sovity.edc.ext.brokerserver.services.logging.BrokerEventLogger;
-import lombok.RequiredArgsConstructor;
-import org.jooq.DSLContext;
-
-@RequiredArgsConstructor
-public class OfflineConnectorKiller {
- private final BrokerServerSettings brokerServerSettings;
- private final ConnectorQueries connectorQueries;
- private final BrokerEventLogger brokerEventLogger;
- private final ConnectorKiller connectorKiller;
- private final ConnectorCleaner connectorClearer;
-
- public void killIfOfflineTooLong(DSLContext dsl) {
- var killOfflineConnectorsAfter = brokerServerSettings.getKillOfflineConnectorsAfter();
- var toKill = connectorQueries.findAllConnectorsForKilling(dsl, killOfflineConnectorsAfter);
-
- connectorClearer.removeDataForDeadConnectors(dsl, toKill);
- connectorKiller.killConnectors(dsl, toKill);
-
- brokerEventLogger.addKilledDueToOfflineTooLongMessages(dsl, toKill);
- }
-}
diff --git a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/services/api/AssetPropertyParser.java b/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/services/api/AssetPropertyParser.java
deleted file mode 100644
index 2cb4fdf2c..000000000
--- a/extensions/broker-server/src/main/java/de/sovity/edc/ext/brokerserver/services/api/AssetPropertyParser.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (c) 2023 sovity GmbH
- *
- * This program and the accompanying materials are made available under the
- * terms of the Apache License, Version 2.0 which is available at
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Contributors:
- * sovity GmbH - initial API and implementation
- *
- */
-
-package de.sovity.edc.ext.brokerserver.services.api;
-
-import com.fasterxml.jackson.core.type.TypeReference;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import lombok.RequiredArgsConstructor;
-import lombok.SneakyThrows;
-
-import java.util.Map;
-
-@RequiredArgsConstructor
-public class AssetPropertyParser {
- private final ObjectMapper objectMapper;
-
- private final TypeReference