.NET

Aus CavoxCms Wiki

Wechseln zu: Navigation, Suche

Alle Zugriffe von .NET auf das CMS werden über die XML-Schnittstelle realisiert.

Inhaltsverzeichnis

Low-Level API (Core)

Die Low-Level API greift direkt auf den Server zu und führt Befehle aus. Folgende Klassen werden dazu verwendet:

Beispiel

cConnector connector = new cConnector("http://localhost/ccms");
connector.Login("admin", "123456"); 
cRequest request = new cRequest(connector);
request.SetField("key", "value");
cResult result = request.Perform("system", "model", "command");

High-Level API

Mit der High-Level API können Domain-Objekte automatisch über die Low-Level API ausgelesen, gespeichert und gelöscht werden.

Mit dem Attribut cModel wird angegeben, in welchem Modul und welchem Model das Objekt gefunden werden kann. Die Server-Verbindung ist in der statischen Klasse .NET:cStorage gespeichert. Die Membervariabeln, die vom Server gesetzt werden, werden mit dem Attribut cMember markiert. Wird kein getName oder setName angegeben, wird beim Laden des Objekts der Name der Variabel im XML zum Auslesen verwendet. Ohne Verwendung von setName wird für das Ausfüllen des Formulars (cRequest.SetField) auch der Variabelname verwendet (wird ein getName angegeben, wird dieser automatisch auch als setName angenommen).

[cModel("news", "Article")]
public class Article : cObject<Article> {
	private int category;
	private String title;
	private String introduction;
	private String content;
	private DateTime date;
	private cImage image;

	public Article() { }
	public Article(String title, String intro, String content) : this()
	{
		Title = title;
		Introduction = intro;
		Content = content; 
	}

	public DateTime Date{
		get { return date; }
		set { SetValue("Date", ref date, value); }
	}

	[cXmlName("pid")]
	public Category Category {
		get { return Category.Get(category); }
		set { SetObject("Category", ref category, value); }
	}

	public String Introduction {
		get { return introduction; }
		set { SetValue("Introduction", ref introduction, value); }
	}

	public String Content {
		get { return content; }
		set { SetValue("Content", ref content, value); }
	}
	
	public String Title {
		get { return title; }
		set { SetValue("Title", ref title, value); }
	}

	public cImage Image {
		get { return image; }
		set { image = value; }
	}
}

Attribute

  • cIgnore: Wird bei Properties angegeben, die nicht im XML/Model des Servers enthalten sind.
  • cXmlName: Der Name des XML-Tags kann hiermit angepasst werden.
    • Namenskonventionen: Property "MyProperty" wird im XML/Model als "myProperty" gesucht
    • Ist das Property "Category" vom Typ cObject wird nach "category_id" gesucht

Konvertierung

Die Typen der Membervariabeln werden automatisch erkannt und konvertiert. Folgende Typen werden momentan erkannt:

  • Integer
  • String
  • DateTime
  • cFile (nur lesen)
  • cImage (nur lesen)

Die restlichen Typen werden als Stringzuweisungen realisiert bzw. werden noch nicht unterstützt.

Verwendung

Um Objekte auszulesen, können die statischen Methoden get und findAll verwendet werden. Natürlich muss zuerst ein .NET:cConnector in der Klasse .NET:cStorage definiert werden.

int id = 10;
MyObject obj = MyObject.Get(id);
ArrayList<MyObject> arr = MyObject.FindAll();
MyObject obj = new MyObject(...);
obj.Save(); // danach ist die ID des Objekts vorhanden (wenn nicht in der Datenbank, dann 0)

Exceptions

Viele High-Level-Methoden (Get, FindAll, Delete, Save, Reload) werfen Exceptions, wenn der Server nicht gefunden wurde oder ein Concurrency-Fehler aufgetreten ist. Validations-Fehler müssen allerdings mit dem .NET:cResult (HasError) ausgewertet werden.

cException

Mutterklasse der Exceptions.

cServerNotFoundException

Exception, die geworfen wird, wenn der Server nicht ansprechbar oder das XML korrupt war.

cConcurrencyException

Wird geworfen, wenn der Datensatz in der Zwischenzeit geändert oder gelöscht wurde.

Methoden:

  • Save
  • Delete
  • Reload

Intern

Das Framework verwaltet intern alle Objekte, damit keine Objekte doppelt ausgelesen werden können. Wird dasselbe Objekt ein zweites Mal ausgelesen, wird beim zweiten Aufruf die gleiche Referenz zurückgegeben, allerdings mit den neu ausgelesenen Werten.

Persönliche Werkzeuge