Bewital hinzugefügt

This commit is contained in:
2025-12-08 14:08:05 +01:00
parent 0ff828d41d
commit 6377ed1786
3 changed files with 865 additions and 0 deletions

285
Bewital/20_hooks.groovy Normal file
View File

@@ -0,0 +1,285 @@
import com.dvelop.d3.server.Document
import com.dvelop.d3.server.Entrypoint
import com.dvelop.d3.server.User
import com.dvelop.d3.server.core.D3Interface
import com.dvelop.d3.server.DocumentTypeAttribute;
import com.dvelop.d3.server.DocumentType;
import com.dvelop.d3.server.RepositoryField;
class Hook {
// ValPasswdExit10
@Entrypoint(entrypoint="hook_val_passwd_exit_10")
public int hook_val_passwd_exit_10(D3Interface d3, int errorCode, User user, String appLanguage, String appVersion) {
d3.log.info("ValPasswdExit10: START ...");
// ERV: Restriction-Set "ERV-Kostenstellen"
d3.log.info("ValPasswdExit10: KST: user.id: '" + user.id + "'");
d3.log.info("ValPasswdExit10: KST: user.email: '" + user.email + "'");
def d3_email = user.email;
def d3_username = user.id;
def sqlQuery = "";
List<Object> varArrayKST;
def resultRowsKST;
def resultAnzKST = 0;
def resSetKostenstellen = "";
def result = 0;
// DEBUG:
if (user.id == "ext_dvelo2") {
d3_email = "ext_dvelo2@test.de"
}
d3.log.info("ValPasswdExit10: KST: d3_username: '" + d3_username + "'");
d3.log.info("ValPasswdExit10: KST: d3_email: '" + d3_email + "'");
d3.log.info("ValPasswdExit10: KST: user.id: '" + user.id + "'");
// Benutzer in Tabelle 'erv_rights_kostenstellen" suchen und Kostenstellen auslesen
sqlQuery = """
SELECT kostenstelle as db_kostenstelle
FROM dbo.erv_rights_kostenstellen
WHERE email = ?
""";
varArrayKST = [d3_email];
resultRowsKST = d3.sql.executeAndGet(sqlQuery, varArrayKST);
resultAnzKST = resultRowsKST.size();
if (resultAnzKST > 0) {
resultRowsKST.each {kst ->
if (resSetKostenstellen == "") {
resSetKostenstellen = kst.db_kostenstelle;
} else {
resSetKostenstellen = resSetKostenstellen + ";" + kst.db_kostenstelle;
}
}
// Restriction-Set "ERV_Kostenstellen" schreiben
d3.log.info("ValPasswdExit10: KST: resSetKostenstellen: '" + resSetKostenstellen + "'");
// d3.log.info("ValPasswdExit10: KST: : Restriktionsmenge 'ERV_Kostenstellen' fuer User '" + user.realName + " [" + d3_email + "]' mit dem Filter '" + resSetKostenstellen + "' erstellt.");
if (resSetKostenstellen) {
result = d3.call.d3set_add_filter("Master", "", "ERV_Kostenstellen", d3_username, resSetKostenstellen, true)
if (result != 0) {
d3.log.error("ValPasswdExit10: KST: ERROR '" + result + "' in 'd3set_add_filter' | SET: 'ERV_Kostenstellen' | USER: '" + d3_email + "' | FILTER: '" + resSetKostenstellen + "'");
}
else {
d3.log.info("ValPasswdExit10: KST: Restriktionsmenge 'ERV_Kostenstellen' fuer User '" + user.realName + " [" + d3_email + "]' mit dem Filter '" + resSetKostenstellen + "' erstellt.");
}
}
}
d3.log.info("ValPasswdExit10: STOP ...");
return 0
}
@Entrypoint( entrypoint = "hook_insert_entry_10" )
public int hookInsertEntry10(D3Interface d3, User user, DocumentType docType, Document doc)
{
d3.log.info("START | hookInsertEntry10 ");
////////////////////////////////////////
// Validierung Kundennummer calb/d.velop 2025.12.08 START
if ( isRepoIdInDocType( d3, docType.id(), 109 ) )
{
if ( doc.field[ 2 ] )
{
if ( doc.field[ 2 ].indexOf( "|" ) > 0 )
{
def werte = doc.field[ 2 ].tokenize( " | " );
// Kundennummer
if ( werte[ 0 ].length() > 0 )
{
doc.field[ 2 ] = werte[ 0 ];
}
// Kundenname
if ( werte[ 1 ].length() > 0 )
{
doc.field[ 1 ] = werte[ 1 ];
}
// Land
if ( werte[ 2 ].length() > 0 )
{
doc.field[ 4 ] = werte[ 2 ];
}
}
}
}
// Validierung Kundennummer ENDE
////////////////////////////////////////
////////////////////////////////////////
// Validierung Artikelnummer calb/d.velop 2025.12.08 START
if ( isRepoIdInDocType( d3, docType.id(), 119 ) )
{
if ( doc.field[ 12 ] )
{
if ( doc.field[ 12 ].indexOf( "|" ) > 0 )
{
def werte = doc.field[ 12 ].tokenize( " | " );
// Artikelnummer
if ( werte[ 0 ].length() > 0 )
{
doc.field[ 12 ] = werte[ 0 ];
}
// Artikelname
if ( werte[ 1 ].length() > 0 )
{
doc.field[ 13 ] = werte[ 1 ];
}
}
}
}
// Validierung Artikelnummer ENDE
////////////////////////////////////////
////////////////////////////////////////
// Validierung Mandant calb/d.velop 2025.12.08 START
if ( isRepoIdInDocType( d3, docType.id(), 122 ) )
{
if ( doc.field[ 15 ] )
{
if ( doc.field[ 15 ].indexOf( "|" ) > 0 )
{
def werte = doc.field[ 15 ].tokenize( " | " );
// Artikelnummer
if ( werte[ 0 ].length() > 0 )
{
doc.field[ 15 ] = werte[ 0 ];
}
// Artikelname
if ( werte[ 1 ].length() > 0 )
{
doc.field[ 19 ] = werte[ 1 ];
}
}
}
}
// Validierung Mandant ENDE
////////////////////////////////////////
////////////////////////////////////////
// Validierung Vertreter calb/d.velop 2025.12.08 START
if ( isRepoIdInDocType( d3, docType.id(), 136 ) )
{
if ( doc.field[ 32 ] )
{
if ( doc.field[ 32 ].indexOf( "|" ) > 0 )
{
def werte = doc.field[ 32 ].tokenize( " | " );
// Artikelnummer
if ( werte[ 0 ].length() > 0 )
{
doc.field[ 32 ] = werte[ 0 ];
}
// Artikelname
if ( werte[ 1 ].length() > 0 )
{
doc.field[ 35 ] = werte[ 1 ];
}
}
}
}
// Validierung Vertreter ENDE
////////////////////////////////////////
d3.log.info("ENDE | hookInsertEntry10 ");
return 0;
}
private boolean isRepoIdInDocType( D3Interface d3, String docTypeShort, int repoId )
{
boolean isRepoIdInDocType = false;
try
{
Document docTemp = d3.archive.newDocument();
docTemp.setType( docTypeShort );
DocumentType docType = docTemp.getType();
if ( docTemp != null && docType != null )
{
for ( int i = 1; i <= 89; i++ )
{
try
{
DocumentTypeAttribute docTypeAttrib = docTemp.getType().getField().getAt( i );
if ( docTypeAttrib != null )
{
RepositoryField repoField = docTypeAttrib.getRepositoryField();
if ( repoField != null )
{
String currRepoId = repoField.getId();
if ( currRepoId != null )
{
int currRepoIdInt = Integer.valueOf( currRepoId );
if ( currRepoIdInt == repoId )
{
isRepoIdInDocType = true;
break;
}
}
}
}
}
catch ( Exception eField )
{
//nix
}
}
}
}
catch ( Exception e )
{
// wieder nix
}
//d3.log.error( "Nachricht: " + isRepoIdInDocType );
return isRepoIdInDocType;
}
}

443
Bewital/30_sets.groovy Normal file
View File

@@ -0,0 +1,443 @@
import com.dvelop.d3.server.core.D3Interface;
import com.dvelop.d3.server.Document;
import com.dvelop.d3.server.User;
import com.dvelop.d3.server.DocumentType;
import com.dvelop.d3.server.ValueSet;
import com.dvelop.d3.server.ValueSetTranslation;
import com.dvelop.d3.server.RepositoryField;
import com.dvelop.d3.server.UserGroup
import com.dvelop.d3.server.UserOrUserGroup
import com.dvelop.d3.server.Translation;
public class Wertemenge
{
@ValueSet(entrypoint="AbteilungenVertragsmanagement")
def getAbteilungVM(D3Interface d3, RepositoryField repoField, User user, DocumentType docType, Integer row_no, Integer validate, Document attribContext)
{
d3.log.info("Start getAbteilungVertragsmanagement");
def mandant = attribContext.field[65][row_no];
def wm
if(mandant == "BEWITAL agri GmbH & Co. KG")
{
wm = 11
}
else if(mandant == "BEWITAL petfood GmbH & Co. KG")
{
wm = 12
}
else if(mandant == "BEWITAL Holding GmbH & Co. KG")
{
wm = 18
}
else if(mandant == "BEWITAL Petfood Vertrieb Ost GmbH & Co.KG")
{
wm = 19
}
else if(mandant == "Lipox GmbH & Co. KG")
{
wm = 20
}
def sqlParams = [wm];
def h_sqlquery = "SELECT value_char_allowed AS Wert FROM doc_field_values WHERE predef_value_id = ?"
def resultRows = null;
if(mandant != null && mandant != "")
{
resultRows = d3.sql.executeAndGet( h_sqlquery , sqlParams);
if(resultRows != null && resultRows.size() > 0)
{
repoField.provideValuesForValueSet( resultRows.collect{ it.Wert } );
}
else
{
d3.log.info("Keine SQL Ergebnisse");
}
}
else
{
d3.log.info("Keine Mandant ausgewaehlt.");
}
d3.log.info("Ende getAbteilungVertragsmanagement");
}
@ValueSet(entrypoint="KategorieZuVertragstyp")
def getKategorieVM(D3Interface d3, RepositoryField repoField, User user, DocumentType docType, Integer row_no, Integer validate, Document attribContext)
{
d3.log.info("Start getKategorieVM");
def vertragstyp = attribContext.field[5];
d3.log.info("Vertragstyp: $vertragstyp-")
def wm
if(vertragstyp == "Handelvertretung")
{
wm = 21
}
else if(vertragstyp.equals("Großhandelsvertrag DE."))
{
wm = 22
}
else if(vertragstyp.equals("Großhandelsvertrag Int."))
{
wm = 23
}
else if(vertragstyp == "Versicherungen")
{
wm = 24
}
else if(vertragstyp == "Markenrecht")
{
wm = 25
}
else if(vertragstyp == "Produktregistrierung")
{
wm = 26
}
else if(vertragstyp == "Vertrieb")
{
wm = 27
}
else if(vertragstyp == "Mietvertrag")
{
wm = 28
}
else if(vertragstyp == "Kaufvertrag")
{
wm = 29
}
else if(vertragstyp == "Wartungsvertrag")
{
wm = 30
}
else if(vertragstyp == "Dienstleistungsvertrag")
{
wm = 31
}
else if(vertragstyp == "Pachtvertrag/Erbbaurecht")
{
wm = 32
}
else if(vertragstyp == "Zertifizierungsvertrag")
{
wm = 33
}
else if(vertragstyp == "Lizenzvertrag")
{
wm = 34
}
else if(vertragstyp == "Listungsvertrag")
{
wm = 35
}
else if(vertragstyp == "Systemvertrag")
{
wm = 36
}
else if(vertragstyp == "Siegelnutzungsvertrag")
{
wm = 37
}
else if(vertragstyp == "Geheimhaltungsvereinbarung")
{
wm = 38
}
else if(vertragstyp == "Sponsoring/Werbung")
{
wm = 39
}
else if(vertragstyp == "Kreditvertrag")
{
wm = 40
}
else if(vertragstyp == "Lieferantenvertrag")
{
wm = 41
}
else if(vertragstyp == "Auftragsdatenverarbeitung")
{
wm = 42
}
else if(vertragstyp == "Bau-/Werkvertrag")
{
wm = 43
}
else if(vertragstyp == "Energieversorgung")
{
wm = 44
}
else if(vertragstyp == "Mitgliedschaften")
{
wm = 45
}
else if(vertragstyp == "Verpflichtungsvertrag")
{
wm = 46
}
else if(vertragstyp == "Sonstiges/Mischvertrag")
{
wm = 47
}
else if(vertragstyp == "Gesellschaftsvertrag")
{
wm = 48
}
else if(vertragstyp == "Migration")
{
wm = 50
}
else
{
d3.log.warn("Es konnte keine Vertragstyp gefunden werden.")
}
def sqlParams = [wm];
def h_sqlquery = "SELECT value_char_allowed AS Wert FROM doc_field_values WHERE predef_value_id = ?"
def resultRows = null;
if(vertragstyp != null && vertragstyp != "")
{
resultRows = d3.sql.executeAndGet( h_sqlquery , sqlParams);
if(resultRows != null && resultRows.size() > 0)
{
repoField.provideValuesForValueSet( resultRows.collect{ it.Wert } );
}
else
{
d3.log.info("Keine SQL Ergebnisse");
}
}
else
{
repoField.provideValuesForValueSet( "Bitte zuerst einen Mandant wählen." );
}
d3.log.info("Ende getAbteilungVertragsmanagement");
}
@ValueSet(entrypoint="getReadAccessVM")
def getReadAccessVM(D3Interface d3, RepositoryField repoField, User user, DocumentType docType, Integer row_no, Integer validate, Document attribContext)
{
d3.log.info("Start getReasAccessVM");
d3.getArchive().removeTranslationFromCache("getReadAccessVM", new Locale("de"));
def userGroup = d3.archive.getUserGroup("VM_Vererbt");
d3.log.info( "Show group information for: " + userGroup.name );
def userList = [];
userGroup.getMembers(UserGroup.MemberType.RECURSIVE).each { userOrGroup ->
try
{
userList.add(userOrGroup.getUser().getEmail() )
}
catch(Exception ex)
{
d3.log.error("Fehler: Beim Auslesen der E-Mail Adresse des Benutzers ist es zu einem Fehler gekommen. " + ex)
}
}
if( userList.size() > 0 )
{
repoField.provideValuesForValueSet( userList );
}
}
@ValueSetTranslation(entrypoint="getReadAccessVM")
def getReadAccessVMTranslated(D3Interface d3, Translation transl)
{
d3.log.info("getReasAccessVM translated WM starts");
def userGroup = d3.archive.getUserGroup("VM_Vererbt");
userGroup.getMembers(UserGroup.MemberType.RECURSIVE).each { userOrGroup ->
try
{
transl.set(userOrGroup.getUser().getEmail(), userOrGroup.defaultName);
}
catch(Exception ex)
{
d3.log.error("Fehler: Beim Auslesen der Übersetzen des Benutzernamen." + ex)
}
}
d3.log.info("getReasAccessVM translated WM starts");
}
//////////////////////////////////////////
// Wertemengen für die Filer-Ablösung calb/d.velop 2025.12.08 START
@ValueSet(entrypoint="WM_Auftragsnummer")
def WM_Auftragsnummer(D3Interface d3, RepositoryField repoField, User user, DocumentType docType, Integer row_no, Integer validate, Document doc)
{
d3.log.info("Start WM_Auftragsnummer");
def sql = groovy.sql.Sql.newInstance( "jdbc:sqlserver://sql.adbewital.local;databaseName=" + "D3T_shared", "d3db_master", "D.velop!db", 'com.microsoft.sqlserver.jdbc.SQLServerDriver' );
def where = "";
if ( doc.field[ 2 ] )
{
if ( doc.field[ 2 ].indexOf( "|" ) > 0 )
{
def werte = doc.field[ 2 ].tokenize( "|" );
if ( werte[ 0 ].length() > 0 )
{
where = " where customer_no = '" + werte[ 0 ].trim() + "'";
}
}
else
{
where = " where customer_no = '" + doc.field[ 2 ] + "'";
}
}
def sqlquery = "SELECT distinct order_no from bw_customer_order " + where;
def resultRows = null;
resultRows = sql.rows( sqlquery );
if(resultRows != null && resultRows.size() > 0)
{
repoField.provideValuesForValueSet( resultRows.collect{ it.order_no } );
}
else
{
d3.log.warn("WM_Auftragsnummer: Keine SQL Ergebnisse");
}
}
@ValueSet(entrypoint="WM_Kundennummer")
def WM_Kundennummer(D3Interface d3, RepositoryField repoField, User user, DocumentType docType, Integer row_no, Integer validate, Document doc)
{
d3.log.info("Start WM_Kundennummer");
def sql = groovy.sql.Sql.newInstance( "jdbc:sqlserver://sql.adbewital.local;databaseName=" + "D3T_shared", "d3db_master", "D.velop!db", 'com.microsoft.sqlserver.jdbc.SQLServerDriver' );
def sqlquery = "SELECT distinct customer_no + ' | ' + customer_name + ' | ' + customer_country as liste from bw_customer_data";
def resultRows = null;
resultRows = sql.rows( sqlquery );
if(resultRows != null && resultRows.size() > 0)
{
repoField.provideValuesForValueSet( resultRows.collect{ it.liste } );
}
else
{
d3.log.warn("WM_Kundennummer: Keine SQL Ergebnisse");
}
}
@ValueSet(entrypoint="WM_Artikelnummer")
def WM_Artikelnummer(D3Interface d3, RepositoryField repoField, User user, DocumentType docType, Integer row_no, Integer validate, Document doc)
{
d3.log.info("Start WM_Artikelnummer");
def sql = groovy.sql.Sql.newInstance( "jdbc:sqlserver://sql.adbewital.local;databaseName=" + "D3T_shared", "d3db_master", "D.velop!db", 'com.microsoft.sqlserver.jdbc.SQLServerDriver' );
def sqlquery = "SELECT distinct article_no + ' | ' + article_description as liste from bw_article_data";
def resultRows = null;
resultRows = sql.rows( sqlquery );
if(resultRows != null && resultRows.size() > 0)
{
repoField.provideValuesForValueSet( resultRows.collect{ it.liste } );
}
else
{
d3.log.warn("WM_Artikelnummer: Keine SQL Ergebnisse");
}
}
@ValueSet(entrypoint="WM_Marke")
def WM_Marke(D3Interface d3, RepositoryField repoField, User user, DocumentType docType, Integer row_no, Integer validate, Document doc)
{
d3.log.info("Start WM_Marke");
def sql = groovy.sql.Sql.newInstance( "jdbc:sqlserver://sql.adbewital.local;databaseName=" + "D3T_shared", "d3db_master", "D.velop!db", 'com.microsoft.sqlserver.jdbc.SQLServerDriver' );
def sqlquery = "SELECT distinct brand as liste from bw_brand";
def resultRows = null;
resultRows = sql.rows( sqlquery );
if(resultRows != null && resultRows.size() > 0)
{
repoField.provideValuesForValueSet( resultRows.collect{ it.liste } );
}
else
{
d3.log.warn("WM_Marke: Keine SQL Ergebnisse");
}
}
@ValueSet(entrypoint="WM_Sortiment")
def WM_Sortiment(D3Interface d3, RepositoryField repoField, User user, DocumentType docType, Integer row_no, Integer validate, Document doc)
{
d3.log.info("Start WM_Sortiment");
def sql = groovy.sql.Sql.newInstance( "jdbc:sqlserver://sql.adbewital.local;databaseName=" + "D3T_shared", "d3db_master", "D.velop!db", 'com.microsoft.sqlserver.jdbc.SQLServerDriver' );
def sqlquery = "SELECT distinct assortment as liste from bw_brand";
def resultRows = null;
resultRows = sql.rows( sqlquery );
if(resultRows != null && resultRows.size() > 0)
{
repoField.provideValuesForValueSet( resultRows.collect{ it.liste } );
}
else
{
d3.log.warn("WM_Sortiment: Keine SQL Ergebnisse");
}
}
@ValueSet(entrypoint="WM_Mandant")
def WM_Mandant(D3Interface d3, RepositoryField repoField, User user, DocumentType docType, Integer row_no, Integer validate, Document doc)
{
d3.log.info("Start WM_Mandant");
def sql = groovy.sql.Sql.newInstance( "jdbc:sqlserver://sql.adbewital.local;databaseName=" + "D3T_shared", "d3db_master", "D.velop!db", 'com.microsoft.sqlserver.jdbc.SQLServerDriver' );
def sqlquery = "SELECT distinct company_no + ' | ' + company_name as liste from bw_company";
def resultRows = null;
resultRows = sql.rows( sqlquery );
if(resultRows != null && resultRows.size() > 0)
{
repoField.provideValuesForValueSet( resultRows.collect{ it.liste } );
}
else
{
d3.log.warn("WM_Mandant: Keine SQL Ergebnisse");
}
}
@ValueSet(entrypoint="WM_Vertreter")
def WM_Vertreter(D3Interface d3, RepositoryField repoField, User user, DocumentType docType, Integer row_no, Integer validate, Document doc)
{
d3.log.info("Start WM_Vertreter");
def sql = groovy.sql.Sql.newInstance( "jdbc:sqlserver://sql.adbewital.local;databaseName=" + "D3T_shared", "d3db_master", "D.velop!db", 'com.microsoft.sqlserver.jdbc.SQLServerDriver' );
def sqlquery = "SELECT distinct representative_no + ' | ' + representative_name as liste from bw_representative";
def resultRows = null;
resultRows = sql.rows( sqlquery );
if(resultRows != null && resultRows.size() > 0)
{
repoField.provideValuesForValueSet( resultRows.collect{ it.liste } );
}
else
{
d3.log.warn("WM_Vertreter: Keine SQL Ergebnisse");
}
}
// Wertemengen für die Filer-Ablösung calb/d.velop 2025.12.08 ENDE
//////////////////////////////////////////
}

137
Bewital/d3ValueSets.groovy Normal file
View File

@@ -0,0 +1,137 @@
// Global d.3 libraries -------------------------------------------------------
import com.dvelop.d3.server.core.D3;
import com.dvelop.d3.server.core.D3Interface;
import com.dvelop.d3.server.Document;
import com.dvelop.d3.server.User;
import com.dvelop.d3.server.DocumentType;
// Libraries to handle the different hook types ---------------------------------------------------
import com.dvelop.d3.server.Entrypoint;
import com.dvelop.d3.server.Condition;
// Libraries to handle the different hook types --------------------------------
import com.dvelop.d3.server.Validation
import com.dvelop.d3.server.ValueSet;
import com.dvelop.d3.server.RepositoryField;
import com.dvelop.d3.server.Translation;
import com.dvelop.d3.server.ValueSetTranslation;
// Special libraries -----------------------------------------------------------------------------
import groovy.sql.Sql;
import javax.net.ssl.HttpsURLConnection;
import groovy.json.JsonOutput;
import groovy.json.JsonSlurper;
import groovy.transform.Field;
class d3ValueSets {
// Wertemenge fuer Benutzer
@ValueSet (entrypoint = "vsUserIDP")
def getUserIDPID( D3 d3, RepositoryField reposField, User user, DocumentType docType, int rowNo, int validate, Document doc )
{
/*
try {
//Auslesen der IDP Benutzer IDs
HttpsURLConnection idpRequest = new URL(Defs.baseURi + "/identityprovider/scim/users").openConnection();
idpRequest.requestMethod = "GET";
idpRequest.setRequestProperty("Origin", Defs.baseURi);
idpRequest.setRequestProperty("Authorization", "Bearer " + Defs.ServiceAPIKey);
idpRequest.setRequestProperty("Accept", "application/json");
def response = idpRequest.getInputStream().getText();
def jsonSlurper = new JsonSlurper()
def responseObject = jsonSlurper.parseText(response.toString())
initValueSetValues(d3, reposField, responseObject.resources.collect { it.get("id") }, "vsUserIDP")
}catch(Exception e) {
d3.log.error("###-> Returnwert Fehler Ermittlung IDPId " + e.getMessage())
}
*/
String sql, fieldValue, fieldValue2
int fieldPos
fieldValue = ""
fieldPos= reposField.getPreferedFieldNumber().toInteger()
if (fieldPos >= 60 && fieldPos <= 69)
{
fieldValue = doc.field[fieldPos][rowNo]
}
else
{
fieldValue = doc.field[fieldPos]
}
if (!(fieldValue) || fieldValue.length() < 3)
{
reposField.provideValuesForValueSet(["Please enter at least 3 characters."])
}
else
{
fieldValue2 = "%" + fieldValue + "%"
sql = """SELECT distinct top 50 idp_id as userid from benutzer
WHERE (realname like ? or idp_id = ?)"""
def resultList = d3.sql.executeAndGet(sql, [fieldValue2, fieldValue])
initValueSetValues(d3, reposField, resultList.collect { it.get("userid") }, "vsUserIDP")
}
return 0
}
// Wertemenge fuer Benutzer
@ValueSetTranslation (entrypoint = "vsUserIDP")
def getUserIDPIDTranslation(D3Interface d3, Translation transl)
{
/* 16.11.2023: Commented out as this is too slow for high amounts of users
try {
//Auslesen der IDP Benutzer IDs
HttpsURLConnection idpRequest = new URL(Defs.baseURi + "/identityprovider/scim/users").openConnection();
idpRequest.requestMethod = "GET";
idpRequest.setRequestProperty("Origin", Defs.baseURi);
idpRequest.setRequestProperty("Authorization", "Bearer " + Defs.ServiceAPIKey);
idpRequest.setRequestProperty("Accept", "application/json");
def response = idpRequest.getInputStream().getText();
def jsonSlurper = new JsonSlurper()
Map parsedJson = jsonSlurper.parseText(response.toString()) ;
def array1 = parsedJson.get("resources");
List<String> idpval = new ArrayList<String>();
Map<String, String> idpvalall = new HashMap<String, String>();
String strMapValue = "" ;
for(def member : array1) {
strMapValue = member.displayName ;
idpval.add( member.id );
idpvalall.put ( member.id , new String(strMapValue.getBytes(), "UTF-8") );
}
transl.set(idpvalall);
}catch(Exception e) {
d3.log.error("###-> Returnwert Fehler Ermittlung IDPId " + e.getMessage())
}
*/
String sql
sql = "SELECT distinct realname as username, idp_id as userid from benutzer"
def resultList = d3.sql.executeAndGet(sql)
resultList.each{ transl.set(it["userid"], it["username"]) }
return 0
}
// Hilfsfunktion zur Uebersetzung von Wertemengen
private void initValueSetValues(D3Interface d3, RepositoryField repoField, Iterable<String> valueKeys, String valueSetId) {
repoField.provideValuesForValueSet(valueKeys)
d3.getArchive().removeTranslationFromCache(valueSetId, Locale.GERMAN)
d3.getArchive().removeTranslationFromCache(valueSetId, Locale.ENGLISH)
}
}