0.1.13 • Published 1 year ago

generator-syncodatav2 v0.1.13

Weekly downloads
-
License
ISC
Repository
-
Last release
1 year ago

Diese Beschreibung ist noch in Arbeit und enthält nur eine grobe Übersicht der Funktionalität von SyncODataV2.

Eine Überarbeitete und englische Version wird es in nächster Zeit geben (voraussichtlich noch 2024).

SyncODataV2

Präsentiert von: SUPORTIS AG - https://suportis.com

Ist ein SAPUI5 Modul für einfachen und synchronen Zugriff auf ODataV2 Models.

Es unterstützt

  • Create (normal, Batch und simuliertes Batch (mehrere normale Create hintereinander))
  • Read (Inkl. Angabe von Parameters wie $count)
  • Update
  • Delete

Installation / Vorbereitung

In den webapp Ordner der SAPUI5 App wechseln und dort yo syncodatav2 ausführen. Nach dem yo fertig ist, wurde ein Ordner erstellt in dem sich die SyncODataV2.js befindet. Diese kann nun im Controller beim sap.ui.define angegeben und als Parameter in der function hinzugefügt werden. Danach kann SyncODataV2 verwendet werden.

Verwendung

Zum einen können alle CRUD Methoden direkt als statische Methode aufgerufen werden:

SyncODataV2.create(model, path, odata[, simBatch])
SyncODataV2.read(model, path[, parameters])
SyncOdataV2.update(model, path, odata)
SyncODataV2.delete(model, path)

Jedoch stehen alle Funktionalitäten wie Filter und Batch nur in den jeweiligen Manager-Klasseninstanzen zur Verfügung.

Erstellen der Manager-Instanz

const mng = SyncODataV2.createManager(model);

Erstellt eine Manager-Instanz für den Zugriff auf das übergebene ODataV2 Model.

const mngBatch = SyncODataV2.createBatch(model, groupID);

Erstellt eine Manager-Instanz für den Batch Zugriff (nur Create).

Create

Syntax: create(path, odata[, simBatch]) path: Pfad zur Entity odata: OData Objekt mit den Felder/Werten. Oder ein Array aus OData Objekten (dann wird ein Batch ausgeführt) simBatch: Optional, wenn true wird das Batch nur simuliert (d.h. es werden für jeden Eintrag im odata-Array ein normales Create ausgeführt).

Wird kein Batch simuliert, wird das Batch direkt submitted. Es besteht keine Möglichkeit das submitChanges manuell auszuführen. Hierzu wird die Manager Instanz für Batch createBatch(model) benötigt.

Rückgabe Objekt oder Array von Objekte, die erstellt wurden.

await mng.create("/EntityName", odata);

Erstellt in der Entität EntityName ein oder mehrere Einträge (je nach dem ob odata ein Objekt oder Array ist).

await mng.create("/EntityName", odata, true);

Erstellt in der Entität EntityName mehrere Einträge, es wird jedoch kein Batch-Request ausgeführt sondern entsprechend viele normale Create-Requests.

Read

Syntax: read(path[, parameters]) : path: Pfad zur Entity parameters: optional, JSON-Objekt mit Property/Value. Propertyname : z.B: "$count" Propertyvalue: string, z.B. "true"

Liest die Einträge der angegebenen Entität unter berücksichtigung der Parameter und evtl. hinzugefügte Filter (siehe unten)

var result = await mng.read("/EntityName");

Liest alle Einträge aus der Entität EntityName

mng.addFilter_GreaterThan( "level", 10 );
var result = await mng.read("/EntityName");

Liest alle Einträge wenn der Level größer als 10 ist.

var result = await mng.read("/EntityName", { "$count" = "true" });

Gibt die Anzahl der Einträge in der Entität zurück.

Update

Syntax: update(path, odata) path: Pfad zur Entität und Item (Key-Angabe, lt. ODataV2 URI Spezifikation) odata: Einträge, die sich ändern

Ändert einen Datensatz gemäß den im OData definierten Properties.

var odata = { Name: "Neuer Name" };
await mng.update( "/EntitName(1)", odata );

Ändert das Feld "Name" des Datensatzes mit der ID 1.

Delete

Syntax: delete(path) path: Pfad zur Entität und Item (Key-Angabe, lt. ODataV2 URI Spezifikation)

Löscht den angegebenen Datensatz.

await mng.delete("/EntitName(1)");

Löscht den Datensatz mit der ID 1

Filter

Beim lesen (read()) können vorher Filter definiert werden. Diese können mit den folgenden Funktionen hinzugefügt werden:

addFilterList(filterOperator) Erstellt eine neue Filter-Liste die mit FILTER_OPERATORS.AND oder FILTER_OPERATOR.OR logisch mit anderen Filter-Listen verknüpft werden kann. Ohne Angabe der filterOperator wird OR verwendet.

addFilter_Between(fieldName, start, end) (Alias addFilter_BT()) Fügt einen Zwischen Filter hinzu. Der Filter trifft zu, wenn der Wert des angegebenen Feldes zwischen startund end liegt.

addFilter_NotBetween(fieldName, start, end) (Alias addFilter_NB()) Gegenteil zu Between

addFilter_Contains(fieldName, value) Trifft zu wenn das Feld value enthält

addFilter_NotContains(fieldName, value) Gegenteil zu Contains

addFilter_EndsWith(fieldName, value) addFilter_StartsWith(fieldName, value) Trifft zu wenn der Wert des angegeben Feldes mit value endet oder beginnt.

addFilter_NotEndsWith(fieldName, value) addFilter_NotStartsWith(fieldName, value) Gegenteil zu EndsWith, StartsWith

addFilter_Equals(fieldName, value) (Alias addFilter_EQ()) Trifft zu, wenn der Wert des Feldes mit value übereinstimmt.

addFilter_NotEquals(fieldName, value) (Alias addFilter_NE()) Gegenteil zu Equals

addFilter_GreaterEquals(fieldName, value) (Alias addFilter_GE()) addFilter_GreaterThan(fieldName, value) (Alias addFilter_GT()) addFilter_LowerEquals(fieldName, value) (Alias addFilter_LE()) addFilter_LowerThan(fieldName, value) (Alias addFilterLT()) Trifft zu wenn der Wert des Feldes >= value, > value, <= value oder < value ist.

makeFilter(fieldName, operator, value1, value2) Zum manuellen erstellen eines Filters. operator ist der Operator wie in der SAPUI5/OData Dokumentation angegeben.

clearFilter() Löscht alle erstellten Filter.

Sortierung

Mit der Methode addSorter(fieldName, descending, group, comparator) können Sortierer hinzugefügt werden. Genaueres in der SAPUI5/ODataV2 Dokumentation.

clearSorters() löscht alle Sortierer.

Sonstiges Methoden

updateBindings() Aktualsiert die Bindings (entspricht model.updateBindings())

refresh([sleepMS]) Aktualsiert das Model, wartet davor noch die angegeben Zeit in ms. Entspricht model.refresh()

Rückgabe

Ist ein Result Objekt in dem die gelesen/geschrieben Daten enthalten und der Status des Requests enthalten sind.

data Objekt mit den Daten die erstellt oder gelesen wurden.

additionalData Zusätzlich Daten

status True wenn der Request erfolgreich war.

count Anzahl der Datensätze (funktioniert auch mit dem $count=true Parameter)

toOData(exclude, include, withMetadata) Wandelt das Data-Objekt in OData um. exclude Feldnamen, die nicht im OData Objekt enthalten sein sollen. include Nur die angegeben Feldnamen sollen im OData Objet enthalten sein withMetadata auch die Metadaten sollen im Objekt enthalten sein (Default false)

Zusätzlich werden alle Werte direkt in das Result-Objekt kopiert (außer data, additionalData, status und count).

var result = mng.read("/entityName");
var name = result.data.name;
    name = result.name;  // funktioniert auch

// bei vorhandensein eines Feldes mit dem Name ID oder UUID ist result implizit das ID Feld
if (result == "8016914b-7a39-4cf2-9e94-2b8c1a11d783") { ... }  

result = mng.read("/entityName", { "$count", "true" } );
var count = result.count;

// Bei nur einer Rückgabe (ein Element oder ein Feld) ist result automatisch dieses. z.B. `count`
if (result > 5) { ... } 

// Umwandlung als String wenn nur ein Feld enthalten ist result dieser Wert als String
var erg = "" + result;

// Andernfalls wird das Data-Objekt in JSON als String zurückgegeben
var json = "" + result;

// Odata Objekt aus dem Result generieren (Metadaten werden weg gelassen)
var odata = result.toOData();

Batch-Manager

Kann mit

var mng = SyncODataV2.createBatch(model, groupID);

erstellt werden.

Der Batch-Manager wird ausschließlich für das Erstellen von Datensätzen als Batch-Request verwendet. Folgende Methoden sind enthalten:

create() Syntax: create(path, odata) path: Pfad zur Entity odata: OData Objekt mit den Felder/Werten. Fügt einen Eintrag in die Liste der zu erstellenden Datensätze hinzu. Dieser wird nicht direkt erstellt sondern benötigt noch ein submitChanges()

submitChanges() Syntax: submitChanges() Fügt alle Einträge die mit create() der Liste hinzugefügt wurde als Batch-Request der Entität hinzu.

hasPendingChanges()`` Gibttruezurück wenn es noch Änderungen gibt, die mitsubmitChanges()` durchgeführt werden können.

getPendingChanges() Gibt die Änderungen die noch aussstehen zurück.

getResults() Gibt die Änderungen (erstellte Datensätze) zurück. Wobei dies auch als Rückgabe von submitChanges() geschieht.

Versions-History

0.1.0 read Methode implementiert 0.1.1 CRUD vervollständig 0.1.2 read Methode mit 2. Parameter: parameter Map of Parameters var p = { "$select", "firstName,lastName"
} var daten = mng.read("/Daten", p); 0.1.3 create anstelle von createManager() funktioniert, gibt aber Hinweise im Log aus createManager() mit Promise gibt Hinweis als error aus 0.1.4 Batchverbeitung hinzugefügt 0.1.5 Parameter für read() werden auf Syntax geprüft (beginnen mit $) 0.1.6 Result Objekt hat nun AdditionalData (Batch=Results, Normale Request=Header) 0.1.7 Result Objekt hat nun eine Count-Eigenschaft (Anzahl der Elemente in results oder bei $count die Rückgabe) 0.1.8 delete() gab kein Result (promise), daher immer async!!! Neue Methode Sleep(ms) für Wartezeiten in den Managern und Batches hinzugefügt Konstruktor von Manager und Batch kann nun auch ein Objekt mit den Properties model, groupID und sleepMS entgegennehmen (z.B. createManager({model: model, groupID: "batch1", sleepMS: 1000}) ) Sleep-Zeit ({ sleepMS } Parameter im Konstruktor) wird nun in Delete, Remove, Update und Create berücksichtigt .refresh hat nun einen optionalen Parameter sleepMS und wartet die angegebene Zeit in ms vor dem Refresh 0.1.9 NPM / Yeoman Version 0.1.10 Readme hinzugefügt 0.1.11 Readme angepasst 0.1.12 Readme um Vorbereitung/Installation erweitert 0.1.13 Package.json erweitert

0.1.13

1 year ago

0.1.12

1 year ago

0.1.11

1 year ago

0.1.10

1 year ago

0.1.9

1 year ago

0.1.8

1 year ago