Link
Beschreibung
Verknüpft einen Mastersatz mit einem oder mehreren Slavesätzen
Code
de.cursor.jevi.common.script.IScriptWorkSpace fncLink(Map parameter, Map result, Map logMap)
{
if(logMap == null) logMap = SC12EVIBaseUtils.newLogMap();
if(result == null) SC12EVIBaseUtils.addError(logMap, "Parameter \"result\" is null");
if(!parameter.containsKey("masterFields") && parameter.get("masterFields") == null) SC12EVIBaseUtils.addError(logMap, "Parameter \"masterFields\" is not Set");
if(!parameter.containsKey("slaveFields") && parameter.get("slaveFields") == null) SC12EVIBaseUtils.addError(logMap, "Parameter \"slaveFields\" is not Set");
if(!parameter.containsKey("relation") && parameter.get("relation") == null) SC12EVIBaseUtils.addError(logMap, "Parameter \"relation\" is not Set");
if(SC12EVIBaseUtils.hasError(logMap)) return null;
Map masterFields = parameter.get("masterFields");
Map slaveFields = parameter.get("slaveFields");
String relation = parameter.get("relation");
String masterEntityName = SC12CRUDUtils.checkEntityGiven(masterFields, "MASTERENTRY", logMap);
String slaveEntityName = SC12CRUDUtils.checkEntityGiven(slaveFields, "SLAVEENTRY", logMap);
List identifiers = ((!parameter.containsKey("identifiers") && parameter.get("identifiers") == null) ? null : parameter.get("identifiers"));
boolean multiple = ((!parameter.containsKey("multiple") && parameter.get("multiple") == null) ? false : parameter.get("multiple"));
Map masterFieldValues = new HashMap();
Map slaveFieldValues = new HashMap();
List masterPks = new ArrayList()
List slavePks = new ArrayList()
IScriptWorkSpace ws = WorkSpaceScriptUtils.createEmptyWorkSpace(masterEntityName);
masterPks = SC12CRUDUtils.getPrimaryKeyList(masterEntityName, false, null, logMap, masterFields, masterFieldValues);
slavePks = SC12CRUDUtils.getPrimaryKeyList(slaveEntityName, false, identifiers, logMap, slaveFields, slaveFieldValues);
if(!SC12EVIBaseUtils.hasError(logMap))
{
ws = SC12CRUDUtils.linkRecordsets(masterPks.get(0), masterEntityName, slavePks, slaveEntityName, relation);
}
if(!SC12EVIBaseUtils.hasError(logMap))
{
Map linked = SC12CRUDUtils.getRecordsets(ws, slaveEntityName);
Map master = SC12CRUDUtils.getRecordsets(WorkSpaceScriptUtils.searchEntry(masterPks.get(0), masterEntityName), masterEntityName);
master.put("LinkedEntries", linked);
result.put("RECORDSET", master);
result.put("ACTION", "LINK");
result.put("SUCCESSFUL", "SUCCESS");
result.put("WARNINGS", SC12EVIBaseUtils.getWarnings(logMap));
}
if(SC12EVIBaseUtils.hasError(logMap))
{
result.put("RECORDSET", null);
result.put("ACTION", "ERROR");
result.put("SUCCESSFUL", "ERROR");
result.put("ERRORS", SC12EVIBaseUtils.getErrors(logMap));
result.put("WARNINGS", SC12EVIBaseUtils.getWarnings(logMap));
}
return ws;
}
Parameter
parameter
Typ - Map
Wertepaare mit den benötigten Parametern. Benötigte Werte sindMASTERENTRY
Typ - Map
Enthält einen Wert mit dem Entitätsnamen.
Der Rest sind Feld - Wertpaare, mit denen der Datensatz gemäß Identifikationsmerkmalen gefunden werden kann.
Es darf genau ein Satz gefunden werden.SLAVEENTRY
Typ - Map
Enthält einen Wert mit dem Entitätsnamen.
Der Rest sind Feld - Wertpaare, mit denen der Datensatz gemäß Identifikationsmerkmalen gefunden werden kann.RELATION
Typ - String
Name der Relation gemäß AdminkonsoleCRUD_MULTIPLE
Typ - boolean
Optionaler Parameter, wird dieser mit "true" übergeben, ist die Löschung > 1 Datensätze möglich. Dieser Parameter wird nur berücksichtigt,
wenn kein technischer Primärschlüssel (z. B. "Pk.Customer") als Eingabeparameter angegeben wird.
result
Typ - Map
Hashmap, in der das formatierte Ergebnis zurück gegeben wirdlogMap (optional)
Typ - Map
HashMap, in der das Logging während des Aufrufs geführt wird, falls dieses separat aufbereitet werden soll.
Rückgabe
IScriptWorkSpace
Die Funktion antwortet mit einem IScriptWorkSpace, als dependentWorkspace unter dem Mastersatz.