Einführen zusätzlicher Parameter für Ordnerstruktur auf Object Store

This commit is contained in:
2026-04-09 09:29:05 +02:00
parent f52af5e438
commit edb5a70449
2 changed files with 21 additions and 15 deletions

View File

@@ -1,10 +1,6 @@
create or replace package body pck_auto_import as
c_module constant varchar2(20) := 'PCK_AUTO_IMPORT';
c_eingang_prefix constant varchar2(10) := 'eingang/';
c_marker constant varchar2(50) := '_READY_FOR_DB_PROCESSING_';
-- Zielordner nach erfolgreicher Verarbeitung — ggf. in sy_parameter auslagern
c_target_prefix constant varchar2(20) := 'verarbeitet/';
procedure p_import_file (
i_object_key in varchar2
@@ -56,15 +52,22 @@ create or replace package body pck_auto_import as
l_file_etag varchar2(256);
-- Verarbeitungsvariablen
l_marker_key varchar2(1024);
l_target_folder varchar2(1024);
l_target_folder varchar2(4000 char);
l_target_prefix varchar2(4000 char);
l_eingang_prefix varchar2 (4000 char);
l_zip_name varchar2(512);
l_file_content blob;
l_meta pck_net_storage.t_object_meta;
l_remaining number;
begin
-- Zielordner Name zusammenstellen
l_target_prefix := pck_system.f_get_par_wert_by_programmid('NETSTORE_BA_PREFIX') || 'Verarbeitet ' || to_char(sysdate, 'YYYY') || '/';
l_eingang_prefix := pck_system.f_get_par_wert_by_programmid('NETSTORE_BA_PREFIX') || pck_system.f_get_par_wert_by_programmid('NETSTORE_BA_IMPORT');
-- Unterordner in eingang/ auflisten (Delimiter '/' liefert nur direkte Kinder)
l_folder_cursor := pck_net_storage.f_list_objects(
i_prefix => c_eingang_prefix
i_prefix => l_eingang_prefix
,i_delimiter => '/'
);
@@ -81,7 +84,7 @@ create or replace package body pck_auto_import as
-- Der Marker ist eine Datei mit speziellem Namen, welche vom quarkus automaton in einen entpackten zip-ordner gelegt wird um zu signalisieren, dass alle Dateien des ZIPs erfolgreich in den ordner gelegt wurden.
-- Das verhindert die verarbeitung von unvollständig entpackten zips
l_marker_key := l_folder_name || c_marker;
l_marker_key := l_folder_name || pck_system.f_get_par_wert_by_programmid('NETSTORE_MARKER_NAME');
-- Marker prüfen: -20001 = nicht vorhanden → Upload noch nicht abgeschlossen
begin
@@ -99,10 +102,10 @@ create or replace package body pck_auto_import as
-- Zip-Namen aus Ordnerpfad ableiten: eingang/<zip-name>/ → <zip-name>
l_zip_name := substr(
l_folder_name
,length(c_eingang_prefix) + 1
,length(l_folder_name) - length(c_eingang_prefix) - 1
,length(l_eingang_prefix) + 1
,length(l_folder_name) - length(l_eingang_prefix) - 1
);
l_target_folder := c_target_prefix || l_zip_name || '/';
l_target_folder := l_target_prefix || l_zip_name || '/';
-- Alle Dateien im Unterordner auflisten (kein Delimiter = flach, alle Tiefen)
l_file_cursor := pck_net_storage.f_list_objects(