744 lines
34 KiB
Groovy
744 lines
34 KiB
Groovy
// --------------------------------------------------------------------------------------------------------
|
|
// ValueSets_Common.groovy
|
|
// --------------------------------------------------------------------------------------------------------
|
|
//
|
|
// Grrovy Wertemengen Übersetzungen
|
|
//
|
|
// --------------------------------------------------------------------------------------------------------
|
|
//
|
|
// Historie:
|
|
// 26.06.2017 phoer/dvelop Erste Version zur Umstellung der dynamischen Wertemengen und Übersetzung
|
|
//
|
|
// --------------------------------------------------------------------------------------------------------
|
|
|
|
import com.dvelop.d3.server.Entrypoint;
|
|
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.RepositoryField;
|
|
import com.dvelop.d3.server.UserOrUserGroup;
|
|
import com.dvelop.d3.server.ValueSet;
|
|
import com.dvelop.d3.server.ValueSetTranslation;
|
|
import com.dvelop.d3.server.Validation;
|
|
import com.dvelop.d3.server.Translation;
|
|
import com.dvelop.d3.server.*;
|
|
|
|
// zusätzliche Imports für oData Zugriff 21.01.2019
|
|
import java.io.InputStreamReader;
|
|
import java.io.Reader;
|
|
import java.net.URL;
|
|
import java.net.URLConnection;
|
|
import javax.net.ssl.HostnameVerifier;
|
|
import javax.net.ssl.HttpsURLConnection;
|
|
import javax.net.ssl.SSLContext;
|
|
import javax.net.ssl.SSLSession;
|
|
import javax.net.ssl.TrustManager;
|
|
import javax.net.ssl.X509TrustManager;
|
|
import java.security.cert.X509Certificate;
|
|
import org.json.JSONArray;
|
|
import org.json.JSONObject;
|
|
import org.apache.commons.io.IOUtils;
|
|
import groovy.sql.GroovyRowResult;
|
|
import groovy.io.FileType;
|
|
|
|
|
|
class ValueSets_Translation
|
|
{
|
|
|
|
@ValueSetTranslation(entrypoint="SubjectValues")
|
|
def SubjectValuesTranslation(D3Interface d3, Translation transl)
|
|
{
|
|
def lang = transl.locale.language
|
|
|
|
d3.log.info("Groovy - ValueSets: start SubjectValueTranslation " + lang + " - locale: " + transl.locale);
|
|
|
|
if( lang == "de" ) {
|
|
lang = "DEU"
|
|
} else if( lang == "en" ) {
|
|
lang = "ENG"
|
|
}
|
|
|
|
// IMUE 26.08.2019 neue Wertemenge bei Umstellung auf Schlüssel statt LangKey
|
|
// NEU = def lSQL = """select fs.dok_dat_feld_${Const.gDFF_SCHLUESSEL} as ShortKey, value_char as TransVal
|
|
// ALT = def lSQL = """select fs.dok_dat_feld_${Const.gDDF_ORGENTRY} as LangKey, value_char as TransVal
|
|
|
|
def lSQL = """select fs.dok_dat_feld_${Const.gDFF_SCHLUESSEL} as ShortKey, value_char as TransVal
|
|
from firm_spez_mult_val as mv
|
|
join firmen_spezifisch as fs on fs.doku_id = mv.doku_id
|
|
where field_no = '${Const.gDDF_UEBERSETZUNG}'
|
|
and mv.doku_id in (
|
|
select doku_id
|
|
from firmen_spezifisch
|
|
where kue_dokuart = '${Const.gDTS_AZTXT}'
|
|
AND dok_dat_feld_${Const.gDFF_SCHLUESSEL} like 'AK%' )
|
|
and row_number in (
|
|
select row_number
|
|
from firm_spez_mult_val as mv, firmen_spezifisch as fs
|
|
where value_char like '${lang}%'
|
|
and mv.field_no = '${Const.gDDF_ISOCODE}'
|
|
and fs.kue_dokuart = '${Const.gDTS_AZTXT}'
|
|
and fs.doku_id = mv.doku_id )""";
|
|
|
|
def resultlist = d3.sql.executeAndGet( lSQL );
|
|
|
|
d3.log.info("Es wurden " + resultlist.size() + " Eintraege gefunden!");
|
|
|
|
for ( def i = 0; i < resultlist.size(); i++ ) {
|
|
transl.set( resultlist.get(i).get("ShortKey"), resultlist.get(i).get("TransVal") );
|
|
}
|
|
}
|
|
|
|
@ValueSetTranslation(entrypoint="MProjNumValues")
|
|
def getMProjNumValuesTranslation(D3Interface d3, Translation transl)
|
|
{
|
|
def lang = transl.locale.language
|
|
|
|
if ( lang != "DEU" ) {
|
|
transl.set( "keine Submission", "No Submission" );
|
|
}
|
|
}
|
|
|
|
@ValueSetTranslation(entrypoint="DokumentuntergruppeValues")
|
|
def DokumentuntergruppeValuesTranslation(D3Interface d3, Translation transl)
|
|
{
|
|
def lang = transl.locale.language
|
|
|
|
d3.log.info("Groovy - ValueSets: start DokumentuntergruppeValueTranslation " + lang + " - locale: " + transl.locale);
|
|
if( lang == "de" ) {
|
|
lang = "DEU"
|
|
} else if( lang == "en" ) {
|
|
lang = "ENG"
|
|
}
|
|
|
|
|
|
// IMUE 05.03.2019 neue Wertemenge bei Umstellung auf Schlüssel statt LangKey
|
|
// ALT = def lSQL = """select fs.dok_dat_feld_${Const.gDDF_ORGENTRY} as LangKey, value_char as TransVal
|
|
|
|
def lSQL = """select fs.dok_dat_feld_${Const.gDFF_SCHLUESSEL} as ShortKey, value_char as TransVal
|
|
from firm_spez_mult_val as mv
|
|
join firmen_spezifisch as fs on fs.doku_id = mv.doku_id
|
|
where field_no = '${Const.gDDF_UEBERSETZUNG}'
|
|
and mv.doku_id in (
|
|
select doku_id
|
|
from firmen_spezifisch
|
|
where kue_dokuart = '${Const.gDTS_AZTXT}'
|
|
AND dok_dat_feld_${Const.gDFF_SCHLUESSEL} like 'DG%' )
|
|
and row_number in (
|
|
select row_number
|
|
from firm_spez_mult_val as mv, firmen_spezifisch as fs
|
|
where value_char like '${lang}%'
|
|
and field_no = '${Const.gDDF_ISOCODE}'
|
|
and fs.kue_dokuart = '${Const.gDTS_AZTXT}'
|
|
and fs.doku_id = mv.doku_id )""";
|
|
|
|
def resultlist = d3.sql.executeAndGet( lSQL );
|
|
|
|
d3.log.info("Es wurden " + resultlist.size() + " Eintraege gefunden!");
|
|
|
|
for ( def i = 0; i < resultlist.size(); i++ )
|
|
{
|
|
// IMUE 05.03.2019 neue Wertemenge bei Umstellung auf Schlüssel statt LangKey
|
|
// Alt = transl.set( resultlist.get(i).get("LangKey"), resultlist.get(i).get("TransVal") );
|
|
transl.set( resultlist.get(i).get("ShortKey"), resultlist.get(i).get("TransVal") );
|
|
}
|
|
}
|
|
|
|
@ValueSetTranslation(entrypoint="ProzessValues")
|
|
def ProzessValuesTranslation(D3Interface d3, Translation transl)
|
|
{
|
|
def lang = transl.locale.language
|
|
|
|
d3.log.info("Groovy - ValueSets: start ProzessValuesTranslation " + lang + " - locale: " + transl.locale);
|
|
|
|
if( lang == "de" ) {
|
|
lang = "DEU"
|
|
} else if( lang == "en" ) {
|
|
lang = "ENG"
|
|
}
|
|
|
|
// IMUE 05.02.2019 - Folgendes Statement ergibt die Schlüssel und die jeweilige Übersetzung nach Prozessumbau
|
|
def lSQL = """ SELECT fs.dok_dat_feld_${Const.gDFF_SCHLUESSEL} as LangKey, mv.value_char as TransVal
|
|
FROM firmen_spezifisch fs
|
|
LEFT JOIN firm_spez_mult_val mv ON fs.doku_id = mv.doku_id
|
|
LEFT JOIN firm_spez_mult_val mv2 ON fs.doku_id = mv2.doku_id AND mv.row_number = mv2.row_number
|
|
WHERE fs.kue_dokuart = '${Const.gDTS_AZTXT}'
|
|
AND mv.field_no = '${Const.gDDF_UEBERSETZUNG}'
|
|
AND mv2.field_no = '${Const.gDDF_ISOCODE}'
|
|
AND mv2.value_char LIKE '${lang}%'
|
|
ORDER BY mv2.value_char asc """;
|
|
|
|
/*
|
|
def lSQL = """select fs.dok_dat_feld_${Const.gDDF_ORGENTRY} as LangKey, value_char as TransVal
|
|
from firm_spez_mult_val as mv
|
|
join firmen_spezifisch as fs on fs.doku_id = mv.doku_id
|
|
where field_no = '${Const.gDDF_UEBERSETZUNG}'
|
|
and mv.doku_id in (
|
|
select doku_id
|
|
from firmen_spezifisch
|
|
where kue_dokuart = '${Const.gDTS_AZTXT}'
|
|
AND dok_dat_feld_${Const.gDFF_SCHLUESSEL} like 'PZ%' )
|
|
and row_number in (
|
|
select row_number
|
|
from firm_spez_mult_val as mv, firmen_spezifisch as fs
|
|
where value_char like '${lang}%'
|
|
and field_no = '${Const.gDDF_ISOCODE}'
|
|
and fs.kue_dokuart = '${Const.gDTS_AZTXT}'
|
|
and fs.doku_id = mv.doku_id )""";
|
|
*/
|
|
|
|
def resultlist = d3.sql.executeAndGet( lSQL );
|
|
|
|
d3.log.info("Es wurden " + resultlist.size() + " Eintraege gefunden!");
|
|
|
|
for ( def i = 0; i < resultlist.size(); i++ )
|
|
{
|
|
transl.set( resultlist.get(i).get("LangKey"), resultlist.get(i).get("TransVal") );
|
|
}
|
|
}
|
|
|
|
@ValueSetTranslation(entrypoint="ProzArtValues")
|
|
def ProzArtValuesTranslation(D3Interface d3, Translation transl)
|
|
{
|
|
def lang = transl.locale.language
|
|
|
|
d3.log.info("Groovy - ValueSets: start ProzArtValuesTranslation " + lang + " - locale: " + transl.locale);
|
|
|
|
if( lang == "de" ) {
|
|
lang = "DEU"
|
|
} else if( lang == "en" ) {
|
|
lang = "ENG"
|
|
}
|
|
|
|
def lSQL = """ SELECT fs.dok_dat_feld_${Const.gDFF_SCHLUESSEL} as LangKey, mv.value_char as TransVal
|
|
FROM firmen_spezifisch fs
|
|
LEFT JOIN firm_spez_mult_val mv ON fs.doku_id = mv.doku_id
|
|
LEFT JOIN firm_spez_mult_val mv2 ON fs.doku_id = mv2.doku_id AND mv.row_number = mv2.row_number
|
|
WHERE fs.kue_dokuart = '${Const.gDTS_AZTXT}'
|
|
AND mv.field_no = '${Const.gDDF_UEBERSETZUNG}'
|
|
AND mv2.field_no = '${Const.gDDF_ISOCODE}'
|
|
AND mv2.value_char LIKE '${lang}%' """;
|
|
|
|
/*def lSQL = """select fs.dok_dat_feld_${Const.gDDF_ORGENTRY} as LangKey, value_char as TransVal
|
|
from firm_spez_mult_val as mv
|
|
join firmen_spezifisch as fs on fs.doku_id = mv.doku_id
|
|
where field_no = '${Const.gDDF_UEBERSETZUNG}'
|
|
and mv.doku_id in (
|
|
select doku_id
|
|
from firmen_spezifisch
|
|
where kue_dokuart = '${Const.gDTS_AZTXT}'
|
|
AND dok_dat_feld_${Const.gDFF_SCHLUESSEL} like 'PA%' )
|
|
and row_number in (
|
|
select row_number
|
|
from firm_spez_mult_val as mv, firmen_spezifisch as fs
|
|
where value_char like '${lang}%'
|
|
and field_no = '${Const.gDDF_ISOCODE}'
|
|
and fs.kue_dokuart = '${Const.gDTS_AZTXT}'
|
|
and fs.doku_id = mv.doku_id )""";
|
|
*/
|
|
|
|
def resultlist = d3.sql.executeAndGet( lSQL );
|
|
|
|
d3.log.info("Es wurden " + resultlist.size() + " Eintraege gefunden!");
|
|
|
|
for ( def i = 0; i < resultlist.size(); i++ )
|
|
{
|
|
transl.set( resultlist.get(i).get("LangKey"), resultlist.get(i).get("TransVal") );
|
|
}
|
|
}
|
|
|
|
// 07.2019 wird produktiv noch nicht genutzt
|
|
@ValueSetTranslation(entrypoint="MachineDocumentModuls")
|
|
def MachineDocumentsModulsTranslation(D3Interface d3, Translation transl)
|
|
{
|
|
// Persistierung nur der eindeutigen ID - In der Wertemenge wird über die Translation "ID - Beschreibung" angezeigt"
|
|
def lang = transl.locale.language
|
|
lang = lang.toUpperCase();
|
|
def fallbackLangEng = "EN";
|
|
|
|
/*
|
|
// Create a trust manager that does not validate certificate chains -> entfernt 13.02.2019
|
|
Dafür ist es erforderlich das Zertifikat in Java als vertrauenswürdig hinzuzufügen:
|
|
cd D:\d3\d3server.prg\JRE\bin keytool.exe -import -keystore "D:\d3\d3server.prg\JRE\lib\security\cacerts" -file "E:\optima_group_ca.cer"
|
|
*/
|
|
|
|
if(SystemSpecificConst.needCertificateCheck == false) {
|
|
deactivateCertificateCheck();
|
|
}
|
|
|
|
URL url = new URL( 'https://' + SystemSpecificConst.baseOdata + '/sap/opu/odata/sap/ZPS_MACHINE_MASTER_SRV/ModuleTextSet?$filter=Deleted%20eq%20false%20&$format=json');
|
|
|
|
try {
|
|
URLConnection con = url.openConnection();
|
|
|
|
String userpass = SystemSpecificConst.lUserOdata + ":" + SystemSpecificConst.lPassOdata;
|
|
String basicAuth = "Basic " + new String(Base64.getEncoder().encode(userpass.getBytes()));
|
|
con.setRequestProperty ("Authorization", basicAuth);
|
|
|
|
InputStream is = con.getInputStream();
|
|
String responseValue = IOUtils.toString(is, "UTF-8");
|
|
is.close();
|
|
|
|
JSONObject obj = new JSONObject(responseValue);
|
|
JSONArray arr = obj.get("d").getJSONArray("results");
|
|
|
|
List<String> guidList = new ArrayList<>();
|
|
HashMap<String, JSONObject> guidJsonObMap = new HashMap<>();
|
|
|
|
if(arr.length() > 0) {
|
|
for (int i = 0; i < arr.length(); i++) {
|
|
JSONObject metadataObj = arr.getJSONObject(i);
|
|
|
|
// Eindeutige GUID einmalig holen
|
|
String guid = metadataObj.getString("ModuleGUID");
|
|
boolean exist = guidList.contains(guid);
|
|
if(exist == false) {
|
|
guidList.add(guid);
|
|
}
|
|
// Je GUID das JsonObject zwischernspeichern - Eine GUID ist nur je Sprache eindeutig, daher Zusammensetzung für den HashMap-Key notwendig
|
|
String language = metadataObj.getString("LanguageSap");
|
|
guidJsonObMap.put(guid + "_" + language, metadataObj);
|
|
}
|
|
} else {
|
|
d3.log.error( " ## ValueSetTranslation for MachineDocumentModuls - JSONArray Size = 0 ") ;
|
|
}
|
|
|
|
// für jede eindeutige GUID müssen die weiteren Informationen in der Anmeldesprache gefunden werden
|
|
// wenn kein Ergebnis gefunden wurde - Fallback Englisch
|
|
for(String guid : guidList) {
|
|
JSONObject jsonTempOb = guidJsonObMap.get(guid + "_" + lang);
|
|
// wenn es Informationen zu der GUID und der Anmeldesprache gibt
|
|
if(jsonTempOb != null) {
|
|
// Eindeutige ID holen
|
|
String id = jsonTempOb.getString("Id");
|
|
// Beschreibung holen
|
|
String description = jsonTempOb.getString("Description");
|
|
transl.set( guid, id + " - " + description);
|
|
} else {
|
|
// Fallback - gibt es keine Informationen in der Anmeldesprache, nehme Englisch
|
|
JSONObject jsonTempObEng = guidJsonObMap.get(guid + "_" + fallbackLangEng);
|
|
// Eindeutige ID holen
|
|
String id = jsonTempObEng.getString("Id");
|
|
// Beschreibung holen
|
|
String description = jsonTempObEng.getString("Description");
|
|
//d3.log.error( " ## ValueSetTranslation for MachineDocumentModuls - " + fallbackLangEng + " - " + guid + " - " + id + " - " + description);
|
|
transl.set( guid, id + " - " + description);
|
|
}
|
|
}
|
|
|
|
} catch(Exception e) {
|
|
d3.log.error( " ## ValueSetTranslation for MachineDocumentModuls - Exception = " + e.getMessage() );
|
|
}
|
|
|
|
}
|
|
|
|
// 07.2019 wird produktiv noch nicht genutzt
|
|
@ValueSetTranslation(entrypoint="MachineDocumentFunctions")
|
|
def MachineDocumentsFunctionsTranslation(D3Interface d3, Translation transl)
|
|
{
|
|
// Persistierung nur der eindeutigen ID - In der Wertemenge wird über die Translation "ID - Beschreibung" angezeigt"
|
|
def lang = transl.locale.language
|
|
lang = lang.toUpperCase();
|
|
def fallbackLangEng = "EN";
|
|
|
|
/*
|
|
// Create a trust manager that does not validate certificate chains -> entfernt 13.02.2019
|
|
Dafür ist es erforderlich das Zertifikat in Java als vertrauenswürdig hinzuzufügen:
|
|
cd D:\d3\d3server.prg\JRE\bin keytool.exe -import -keystore "D:\d3\d3server.prg\JRE\lib\security\cacerts" -file "E:\optima_group_ca.cer"
|
|
*/
|
|
|
|
if(SystemSpecificConst.needCertificateCheck == false) {
|
|
deactivateCertificateCheck();
|
|
}
|
|
|
|
// aktuell ist es noch nicht möglich ohne Filterung den oData Aufruf auszuführen
|
|
URL url = new URL('https://' + SystemSpecificConst.baseOdata + '/sap/opu/odata/sap/ZPS_MACHINE_MASTER_SRV/FunctionTextSet?$filter=Deleted%20eq%20false%20&$format=json');
|
|
|
|
try {
|
|
URLConnection con = url.openConnection();
|
|
|
|
String userpass = SystemSpecificConst.lUserOdata + ":" + SystemSpecificConst.lPassOdata;
|
|
String basicAuth = "Basic " + new String(Base64.getEncoder().encode(userpass.getBytes()));
|
|
con.setRequestProperty ("Authorization", basicAuth);
|
|
|
|
InputStream is = con.getInputStream();
|
|
String responseValue = IOUtils.toString(is, "UTF-8");
|
|
is.close();
|
|
|
|
JSONObject obj = new JSONObject(responseValue);
|
|
JSONArray arr = obj.get("d").getJSONArray("results");
|
|
|
|
List<String> guidList = new ArrayList<>();
|
|
HashMap<String, JSONObject> guidJsonObMap = new HashMap<>();
|
|
|
|
if(arr.length() > 0) {
|
|
for (int i = 0; i < arr.length(); i++) {
|
|
JSONObject metadataObj = arr.getJSONObject(i);
|
|
|
|
// Eindeutige GUID einmalig holen
|
|
String guid = metadataObj.getString("FunctionGUID");
|
|
boolean exist = guidList.contains(guid);
|
|
if(exist == false) {
|
|
guidList.add(guid);
|
|
}
|
|
// Je GUID das JsonObject zwischernspeichern - Eine GUID ist nur je Sprache eindeutig, daher Zusammensetzung für den HashMap-Key notwendig
|
|
String language = metadataObj.getString("LanguageSap");
|
|
guidJsonObMap.put(guid + "_" + language, metadataObj);
|
|
}
|
|
} else {
|
|
d3.log.error( " ## ValueSetTranslation for MachineDocumentFunctions - JSONArray Size = 0 ") ;
|
|
}
|
|
|
|
// für jede eindeutige GUID müssen die weiteren Informationen in der Anmeldesprache gefunden werden
|
|
// wenn kein Ergebnis gefunden wurde - Fallback Englisch
|
|
for(String guid : guidList) {
|
|
JSONObject jsonTempOb = guidJsonObMap.get(guid + "_" + lang);
|
|
// wenn es Informationen zu der GUID und der Anmeldesprache gibt
|
|
if(jsonTempOb != null) {
|
|
// Eindeutige ID holen
|
|
String id = jsonTempOb.getString("Id");
|
|
// Beschreibung holen
|
|
String description = jsonTempOb.getString("Description");
|
|
transl.set( guid, id + " - " + description);
|
|
} else {
|
|
// Fallback - gibt es keine Informationen in der Anmeldesprache, nehme Englisch
|
|
JSONObject jsonTempObEng = guidJsonObMap.get(guid + "_" + fallbackLangEng);
|
|
// Eindeutige ID holen
|
|
String id = jsonTempObEng.getString("Id");
|
|
// Beschreibung holen
|
|
String description = jsonTempObEng.getString("Description");
|
|
//d3.log.error( " ## ValueSetTranslation for MachineDocumentFunctions - " + fallbackLangEng + " - " + guid + " - " + id + " - " + description);
|
|
transl.set( guid, id + " - " + description);
|
|
}
|
|
}
|
|
|
|
} catch(Exception e) {
|
|
d3.log.error( " ## ValueSetTranslation for MachineDocumentFunctions - Exception = " + e.getMessage() );
|
|
}
|
|
|
|
}
|
|
|
|
// 07.2019 wird produktiv noch nicht genutzt
|
|
@ValueSetTranslation(entrypoint="MachineDocumentMachineType")
|
|
def MachineDocumentMachineTypeTranslation(D3Interface d3, Translation transl)
|
|
{
|
|
// Persistierung nur der eindeutigen ID - In der Wertemenge wird über die Translation "ID - Beschreibung" angezeigt"
|
|
def lang = transl.locale.language
|
|
lang = lang.toUpperCase();
|
|
|
|
/*
|
|
// Create a trust manager that does not validate certificate chains -> entfernt 13.02.2019
|
|
Dafür ist es erforderlich das Zertifikat in Java als vertrauenswürdig hinzuzufügen:
|
|
cd D:\d3\d3server.prg\JRE\bin keytool.exe -import -keystore "D:\d3\d3server.prg\JRE\lib\security\cacerts" -file "E:\optima_group_ca.cer"
|
|
*/
|
|
|
|
if(SystemSpecificConst.needCertificateCheck == false) {
|
|
deactivateCertificateCheck();
|
|
}
|
|
|
|
URL url = new URL('https://' + SystemSpecificConst.baseOdata + '/sap/opu/odata/sap/ZPS_MACHINE_MASTER_SRV/MachineSimpleSet?$format=json');
|
|
|
|
try {
|
|
URLConnection con = url.openConnection();
|
|
|
|
String userpass = SystemSpecificConst.lUserOdata + ":" + SystemSpecificConst.lPassOdata;
|
|
String basicAuth = "Basic " + new String(Base64.getEncoder().encode(userpass.getBytes()));
|
|
con.setRequestProperty ("Authorization", basicAuth);
|
|
|
|
InputStream is = con.getInputStream();
|
|
String responseValue = IOUtils.toString(is, "UTF-8");
|
|
is.close();
|
|
|
|
JSONObject obj = new JSONObject(responseValue);
|
|
JSONArray arr = obj.get("d").getJSONArray("results");
|
|
|
|
for (int i = 0; i < arr.length(); i++)
|
|
{
|
|
JSONObject metadataObj = arr.getJSONObject(i);
|
|
|
|
// Eindeutige Id holen
|
|
String id = metadataObj.getString("Id");
|
|
|
|
// Beschreibung holen
|
|
String description = metadataObj.getString("Description");
|
|
transl.set( id, id + " - " + description);
|
|
|
|
}
|
|
|
|
} catch(Exception e) {
|
|
d3.log.error( " ## ValueSetTranslation for MachineDocumentModuls - Exception = " + e.getMessage() );
|
|
}
|
|
|
|
}
|
|
|
|
@ValueSetTranslation(entrypoint="VorlagenProzArtValues")
|
|
def VorlagenProzArtValuesTranslation(D3Interface d3, Translation transl)
|
|
{
|
|
def lang = transl.locale.language
|
|
|
|
if( lang == "de" ) {
|
|
lang = "DEU"
|
|
} else if( lang == "en" ) {
|
|
lang = "ENG"
|
|
}
|
|
|
|
def lSQL = """select fs.dok_dat_feld_${Const.gDFF_SCHLUESSEL} as LangKey, value_char as TransVal
|
|
from firm_spez_mult_val as mv
|
|
join firmen_spezifisch as fs on fs.doku_id = mv.doku_id
|
|
where field_no = '${Const.gDDF_UEBERSETZUNG}'
|
|
and mv.doku_id in (
|
|
select doku_id
|
|
from firmen_spezifisch
|
|
where kue_dokuart = '${Const.gDTS_AZTXT}' )
|
|
and row_number in (
|
|
select row_number
|
|
from firm_spez_mult_val as mv, firmen_spezifisch as fs
|
|
where value_char like '${lang}%'
|
|
and field_no = '${Const.gDDF_ISOCODE}'
|
|
and fs.kue_dokuart = '${Const.gDTS_AZTXT}'
|
|
and fs.doku_id = mv.doku_id )""";
|
|
|
|
def resultlist = d3.sql.executeAndGet( lSQL );
|
|
|
|
for ( def i = 0; i < resultlist.size(); i++ )
|
|
{
|
|
transl.set( resultlist.get(i).get("LangKey"), resultlist.get(i).get("TransVal") );
|
|
}
|
|
|
|
}
|
|
|
|
@ValueSetTranslation(entrypoint="RegisterValues")
|
|
def RegisterTranslation(D3Interface d3, Translation transl)
|
|
{
|
|
//d3.log.error("RegisterValues Translation started");
|
|
|
|
def lang = transl.locale.language
|
|
|
|
// Erweiterte Eigenschaft Register hat die ID 51 und muss pro System geprüft werden
|
|
def registerResultsetTransMan = d3.sql.executeAndGet("SELECT value_char_allowed, value_char_transl FROM dbo.doc_field_val_lang WHERE predef_value_id = 51");
|
|
|
|
|
|
|
|
if( lang == "de" ) {
|
|
// manuelle Wertemenge
|
|
for ( int i = 0; i < registerResultsetTransMan.size(); i++ ) {
|
|
transl.set( registerResultsetTransMan.get(i).get("value_char_allowed"), registerResultsetTransMan.get(i).get("value_char_allowed") );
|
|
}
|
|
// dynamische Wertemenge
|
|
def registerResultsetTransDyn = d3.sql.executeAndGet("SELECT fs.dok_dat_feld_${Const.gDFF_SCHLUESSEL} as ShortKey, mv.value_char as ValueTrans FROM firmen_spezifisch fs LEFT JOIN firm_spez_mult_val mv ON fs.doku_id = mv.doku_id WHERE fs.kue_dokuart = '${Const.gDTS_AZTXT}' AND fs.dok_dat_feld_${Const.gDFF_SCHLUESSEL} LIKE 'DG%' AND field_no = ${Const.gDDF_UEBERSETZUNG} AND mv.row_number = 1");
|
|
for ( int i = 0; i < registerResultsetTransDyn.size(); i++ ) {
|
|
transl.set( registerResultsetTransDyn.get(i).get("ShortKey"), registerResultsetTransDyn.get(i).get("ValueTrans") );
|
|
}
|
|
} else if( lang == "en" ) {
|
|
// manuelle Wertemenge
|
|
for ( int i = 0; i < registerResultsetTransMan.size(); i++ ) {
|
|
transl.set( registerResultsetTransMan.get(i).get("value_char_allowed"), registerResultsetTransMan.get(i).get("value_char_transl") );
|
|
}
|
|
// dynamische Wertemenge
|
|
def registerResultsetTransDyn = d3.sql.executeAndGet("SELECT fs.dok_dat_feld_${Const.gDFF_SCHLUESSEL} as ShortKey, mv.value_char as ValueTrans FROM firmen_spezifisch fs LEFT JOIN firm_spez_mult_val mv ON fs.doku_id = mv.doku_id WHERE fs.kue_dokuart = '${Const.gDTS_AZTXT}' AND fs.dok_dat_feld_${Const.gDFF_SCHLUESSEL} LIKE 'DG%' AND field_no = ${Const.gDDF_UEBERSETZUNG} AND mv.row_number = 2");
|
|
for ( int i = 0; i < registerResultsetTransDyn.size(); i++ ) {
|
|
transl.set( registerResultsetTransDyn.get(i).get("ShortKey"), registerResultsetTransDyn.get(i).get("ValueTrans") );
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
@ValueSetTranslation(entrypoint="OGValues")
|
|
def OGValuesTranslation(D3Interface d3, Translation transl)
|
|
{
|
|
//def lang = transl.locale.language
|
|
|
|
//d3.log.info("Groovy - ValueSets: start OGValuesTranslation " + lang + " - locale: " + transl.locale);
|
|
|
|
//if( lang == "de" ) {
|
|
//lang = "DEU"
|
|
//} else if( lang == "en" ) {
|
|
//lang = "ENG"
|
|
//}
|
|
|
|
//def lSQL = """ SELECT fs.dok_dat_feld_${Const.gDFF_SCHLUESSEL} as LangKey, mv.value_char as TransVal
|
|
// FROM firmen_spezifisch fs
|
|
// LEFT JOIN firm_spez_mult_val mv ON fs.doku_id = mv.doku_id
|
|
// LEFT JOIN firm_spez_mult_val mv2 ON fs.doku_id = mv2.doku_id AND mv.row_number = mv2.row_number
|
|
// WHERE fs.kue_dokuart = '${Const.gDTS_AZTXT}'
|
|
// AND mv.field_no = '${Const.gDDF_UEBERSETZUNG}'
|
|
// AND mv2.field_no = '${Const.gDDF_ISOCODE}'
|
|
// AND mv2.value_char LIKE '${lang}%' """;
|
|
|
|
//def resultlist = d3.sql.executeAndGet( lSQL );
|
|
|
|
//d3.log.info("Es wurden " + resultlist.size() + " Eintraege gefunden!");
|
|
|
|
//for ( def i = 0; i < resultlist.size(); i++ )
|
|
//{
|
|
// transl.set( resultlist.get(i).get("LangKey"), resultlist.get(i).get("TransVal") );
|
|
//}
|
|
|
|
// Persistierung nur der eindeutigen ID - In der Wertemenge wird über die Translation "ID - Beschreibung" angezeigt"
|
|
def lang = transl.locale.language
|
|
lang = lang.toUpperCase();
|
|
|
|
/*
|
|
// Create a trust manager that does not validate certificate chains -> entfernt 13.02.2019
|
|
Dafür ist es erforderlich das Zertifikat in Java als vertrauenswürdig hinzuzufügen:
|
|
cd D:\d3\d3server.prg\JRE\bin keytool.exe -import -keystore "D:\d3\d3server.prg\JRE\lib\security\cacerts" -file "E:\optima_group_ca.cer"
|
|
*/
|
|
|
|
if(SystemSpecificConst.needCertificateCheck == false) {
|
|
deactivateCertificateCheck();
|
|
}
|
|
|
|
URL url = new URL('https://' + SystemSpecificConst.baseOdata + '/sap/opu/odata/sap/ZCA_D3_AUTHORIZATIONS_SRV/OrgUnitSet?$format=json');
|
|
|
|
try {
|
|
URLConnection con = url.openConnection();
|
|
|
|
String userpass = SystemSpecificConst.lUserOdata + ":" + SystemSpecificConst.lPassOdata;
|
|
String basicAuth = "Basic " + new String(Base64.getEncoder().encode(userpass.getBytes()));
|
|
con.setRequestProperty ("Authorization", basicAuth);
|
|
|
|
InputStream is = con.getInputStream();
|
|
String responseValue = IOUtils.toString(is, "UTF-8");
|
|
is.close();
|
|
|
|
JSONObject obj = new JSONObject(responseValue);
|
|
JSONArray arr = obj.get("d").getJSONArray("results");
|
|
|
|
for (int i = 0; i < arr.length(); i++)
|
|
{
|
|
JSONObject metadataObj = arr.getJSONObject(i);
|
|
|
|
// Eindeutige Id holen
|
|
String id = metadataObj.getString("Id");
|
|
|
|
// Beschreibung holen
|
|
String description = metadataObj.getString("DisplayName");
|
|
transl.set( id, description);
|
|
|
|
}
|
|
|
|
} catch(Exception e) {
|
|
d3.log.error( " ## ValueSetTranslation for OGValuesTranslation - Exception = " + e.getMessage() );
|
|
}
|
|
|
|
|
|
}
|
|
|
|
@ValueSetTranslation(entrypoint="BuchungskreisValues")
|
|
def getValuesBuchungskreis(D3Interface d3, Translation transl)
|
|
{
|
|
// Persistierung nur der eindeutigen ID - In der Wertemenge wird über die Translation "ID - Beschreibung" angezeigt"
|
|
|
|
List<String> buchungskreisResultset = [];
|
|
|
|
if(SystemSpecificConst.needCertificateCheck == false) {
|
|
deactivateCertificateCheck();
|
|
}
|
|
|
|
URL url = new URL('https://' + SystemSpecificConst.baseOdata + '/sap/opu/odata/sap/ZCA_D3_VALUE_LISTS_SRV/CompanySet?$format=json&$orderby=CompanyCode');
|
|
|
|
try {
|
|
if(url != null) {
|
|
URLConnection con = url.openConnection();
|
|
|
|
String userpass = SystemSpecificConst.lUserOdata + ":" + SystemSpecificConst.lPassOdata;
|
|
String basicAuth = "Basic " + new String(Base64.getEncoder().encode(userpass.getBytes()));
|
|
con.setRequestProperty ("Authorization", basicAuth);
|
|
|
|
InputStream is = con.getInputStream();
|
|
String responseValue = IOUtils.toString(is, "UTF-8");
|
|
is.close();
|
|
|
|
JSONObject obj = new JSONObject(responseValue);
|
|
|
|
JSONArray arr = obj.get("d").getJSONArray("results");
|
|
for (int i = 0; i < arr.length(); i++)
|
|
{
|
|
JSONObject metadataObj = arr.getJSONObject(i);
|
|
// Buchungskreis holen
|
|
String companyCode = metadataObj.getString("CompanyCode");
|
|
|
|
// Beschreibung holen
|
|
String description = metadataObj.getString("Description");
|
|
transl.set( companyCode, companyCode + " | " + description);
|
|
|
|
}
|
|
}
|
|
} catch(Exception e) {
|
|
d3.log.error( " ## BuchungskreisTranslationValues - Exception = " + e.getMessage() );
|
|
}
|
|
|
|
}
|
|
|
|
@ValueSetTranslation(entrypoint="ServicBelegartValues")
|
|
def ServicBelegartTransValues(D3Interface d3, Translation transl) {
|
|
|
|
def lang = transl.locale.language
|
|
|
|
d3.log.info("Groovy - ValueSets: start ServicBelegartValues " + lang + " - locale: " + transl.locale);
|
|
|
|
if( lang == "de" ) {
|
|
lang = "DE"
|
|
} else if( lang == "en" ) {
|
|
lang = "EN"
|
|
}
|
|
|
|
List<String> buchungskreisResultset = [];
|
|
|
|
if(SystemSpecificConst.needCertificateCheck == false) {
|
|
deactivateCertificateCheck();
|
|
}
|
|
|
|
URL url = new URL("https://" + SystemSpecificConst.baseOdata + "/sap/opu/odata/sap/ZCA_D3_VALUE_LISTS_SRV/DocumentTypeSet?\$format=json&\$filter=LanguageIso%20eq%20'" + lang + "'");
|
|
|
|
try {
|
|
if(url != null) {
|
|
URLConnection con = url.openConnection();
|
|
|
|
String userpass = SystemSpecificConst.lUserOdata + ":" + SystemSpecificConst.lPassOdata;
|
|
String basicAuth = "Basic " + new String(Base64.getEncoder().encode(userpass.getBytes()));
|
|
con.setRequestProperty ("Authorization", basicAuth);
|
|
|
|
InputStream is = con.getInputStream();
|
|
String responseValue = IOUtils.toString(is, "UTF-8");
|
|
is.close();
|
|
|
|
JSONObject obj = new JSONObject(responseValue);
|
|
|
|
JSONArray arr = obj.get("d").getJSONArray("results");
|
|
for (int i = 0; i < arr.length(); i++) {
|
|
JSONObject metadataObj = arr.getJSONObject(i);
|
|
// Belegart holen
|
|
String documentTypeShort = metadataObj.getString("Id");
|
|
// Beschreibung holen
|
|
String documentTypeDescription = metadataObj.getString("Description");
|
|
transl.set( documentTypeShort, documentTypeDescription );
|
|
}
|
|
}
|
|
} catch(Exception e) {
|
|
d3.log.error( " ## ServicBelegartTransValues - Exception = " + e.getMessage() );
|
|
}
|
|
|
|
}
|
|
|
|
// Deaktivierung der Zertifikatsprüfung
|
|
def deactivateCertificateCheck() {
|
|
// CONNECT WITHOUT SSL CHECK
|
|
TrustManager[] trustAllCerts = new TrustManager[1]
|
|
def tm = new X509TrustManager() {
|
|
public java.security.cert.X509Certificate[] getAcceptedIssuers() { return null; }
|
|
public void checkClientTrusted(X509Certificate[] certs, String authType) { }
|
|
public void checkServerTrusted(X509Certificate[] certs, String authType) { }
|
|
}
|
|
trustAllCerts[0] = tm;
|
|
SSLContext sc = SSLContext.getInstance("SSL");
|
|
sc.init(null, trustAllCerts, new java.security.SecureRandom());
|
|
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
|
|
HostnameVerifier allHostsValid = new HostnameVerifier() {
|
|
public boolean verify(String hostname, SSLSession session) { return true; }
|
|
};
|
|
HttpsURLConnection.setDefaultHostnameVerifier(allHostsValid);
|
|
// CONNECT WITHOUT SSL CHECK
|
|
}
|
|
|
|
} // End of file |