Skip to main content
Skip table of contents

Link

Verknüpft einen Mastersatz mit einem oder mehreren Slavesätzen

JAVA
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
    Typ - Map
    Wertepaare mit den benötigten Parametern. Benötigte Werte sind

    • MASTERENTRY 
      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äß Adminkonsole 

    • CRUD_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 wird

  • logMap (optional)
    Typ - Map
    HashMap, in der das Logging während des Aufrufs geführt wird, falls dieses separat aufbereitet werden soll.

  • IScriptWorkSpace
    Die Funktion antwortet mit einem IScriptWorkSpace, als dependentWorkspace unter dem Mastersatz.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.