Link

Beschreibung

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

Code

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

  • 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.

Rückgabe

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