public final class ObjectItemService extends java.lang.Object implements ObjectItemServiceIF
Eine "Eigenschaft" ist eine beliebige Zeichenkette von max. 128 Zeichen.
Gültige Operatoren sind:
Beispiel:
Heiß | weiß
Z.Z. wird der Ausdruck von links nach rechts ausgewertet; es dürfen also keine Klammern angegeben werden.
Anschließend können beliebig viele Abfragen durchgeführt werden (siehe performOper()). Jede Abfrage besteht aus einer Eigenschaft und einem Operator (AND, OR, NOT, XOR). Mit dem Operator wird das bisherige Zwischenergebnis logisch verknüpft.
Hat die Ergebnismenge die gewünschte Größe, können die Objekte mit getResultSet() abgerufen werden.
Mit endTrans() wird eine Abfrage beendet und der Speicher wieder frei gegeben.
Ein Beispieldatenbestand von 40000 Objekten mit 10000 Eigenschaften wobei jedes Objekt im Durchschnitt neun Eigenschaften hat benötigt ca 120MB Daten (MySQL- InnoDB).
Die Zeit für eine beliebige Abfrage liegt unter einer Millisekunde.
DEFAULT_DELIM, MAX_SESSIONS
Constructor and Description |
---|
ObjectItemService()
Erzeugt einen neuen Dienst.
|
Modifier and Type | Method and Description |
---|---|
(package private) int |
checkSessionTimeout()
Nach 15 Minuten Session beenden
|
int |
countActiveSessions() |
void |
createItem(java.lang.String name)
Erzeugt eine neue Eigenschaft.
|
void |
createObject(long oid,
java.lang.String content)
Erzeugt ein Objekt mit der angegebenen Nummer.
|
long |
createObject(java.lang.String content)
Erzeugt ein beliebiges Text-Objekt mit dem angegebenen Inhalt.
|
void |
deleteItem(java.lang.String name)
Löscht eine Eigenschaft.
|
boolean |
endSession(int sessionId)
Beendet eine Session und gibt den Speicher wieder frei.
|
ExpressionResult |
execute(java.lang.String expression)
Startet eine Session und erstellt eine Ergebnismenge aus einem Ausdruck.
|
java.lang.String[] |
findItems(java.lang.String pattern)
Liefert alle Eigenschaften, die ähnlich dem angegebenen Pattern sind (SQL LIKE).
|
de.jdataset.JDataSet |
getFirstPage(int sessionId)
Liefert die erste Seite der Ergebnismenge zu der angegebenen SessionId
|
int |
getItemCount(java.lang.String itemname)
Liefert die Anzahl der Objekt, die mit dieser Eigenschaft verknüpft sind.
|
int |
getNewSessionId()
Für neue Sessions
Muß synchronized sein, damit keine doppelten SessionsIds erzeugt werden.
|
de.jdataset.JDataSet |
getNextPage(int sessionId)
Blättert vorwärts in der Ergebnismenge
|
java.lang.String |
getObjekts(int[] oids) |
java.lang.String |
getObjekts(long[] oids) |
java.util.Map<java.lang.String,java.lang.Integer> |
getOtherItems(int sessionId)
Liefert die Menge der in der Ergebnismenge noch nicht angesprochenen
Eigenschaften.
|
de.jdataset.JDataSet |
getPrevPage(int sessionId)
Blättert rückwärts in der Regebnismenge
|
ExpressionResult |
getResultSet(int sessionId)
Liefert die Ergebnismenge einer Session.
|
boolean |
hasItem(long oid,
java.lang.String itemname)
Deprecated.
unused
Prüft, ob das angegebene Objekt den angegebene Eigenschaft hat.
|
boolean |
hasItem(java.lang.String itemname)
Prüft, ob der angegebene Eigenschaft existiert.
|
boolean |
hasNext(int sessionId)
Liefert true, solange getNext() noch Ergebnisse liefert.
|
boolean |
hasSession(int sessionId)
Liefert true, wenn eine Session mit der angegebenen Id existiert
vor
ObjectItemServiceIF.endSession(int) aufrufen. |
int |
importDatabaseCSV(java.lang.String data)
Importiert Objekte in die Datenbasis;
Objekte werden zeilenweise erwartet;
die Eigenschaften der Objekte durch white space getrennt.
|
int |
importDatabaseDataset(de.jdataset.JDataSet data) |
void |
importItems(java.lang.String text,
boolean lowercase)
Importiert durch White Space getrennte Eigenschaften.
|
void |
indexDatabase()
Repariert die Datenbank.
|
(package private) void |
indexObject(long oid,
java.io.Reader reader,
boolean createItems,
boolean lowercase) |
void |
indexObject(long oid,
java.lang.String text,
boolean createItems,
boolean lowercase)
Indiziert ein Objekt mit durch White Space getrennte Worte.
|
ExpressionResult |
performOper(java.util.ArrayList<OperToken> al) |
int |
performOper(int sessionId,
java.lang.String itemname,
Selection.Oper operand)
Deprecated.
Dieses schrittweise Vorgehen ist nicht wirklich optimal: Klammern sind so nicht möglich.
Ausführen einer Operation. Diese Operation wird mit dem bisherigen
Zwischenergebnis der Transaktion ausgeführt; die Größe der
Ergebnismenge wird geliefert.
Mit getResultSet werden die Objekte der Ergebnismenge geliefert. |
void |
resetAllSessions()
Löscht alle Sessions
|
Selection |
startSession()
Startet eine neue Session.
|
void |
startSpider()
Startet den experimentelle Spider.
|
int |
updateObjects(de.jdataset.JDataSet ds)
Speichert den übergebenen Content
|
public int getNewSessionId()
public int countActiveSessions()
public long createObject(java.lang.String content)
ObjectItemServiceIF
createObject
in interface ObjectItemServiceIF
public void createObject(long oid, java.lang.String content)
Diese Objekt-ID ist nicht weiter als ein Identifier für eine beliebige Information. In der Datenbank kann die Tabelle "Objekt" um beliebige weitere Spalten ergänzt werden oder diese Object-ID wird als Identifier für eine andere Datenquelle verwendet.
createObject
in interface ObjectItemServiceIF
oid
- Object-IDcontent
- java.lang.IllegalArgumentException
- wenn oid < 0 oder größer MAX_OIDpublic void createItem(java.lang.String name)
Achtung! Die Eigenschaften sind case-sensitiv und dürfen auch White Space (Leerzeichen) enthalten.
createItem
in interface ObjectItemServiceIF
name
- Name der Eigenschaft; max 128 Zeichen.public void deleteItem(java.lang.String name)
deleteItem
in interface ObjectItemServiceIF
name
- public boolean hasItem(long oid, java.lang.String itemname)
oid
- itemname
- public boolean hasItem(java.lang.String itemname)
hasItem
in interface ObjectItemServiceIF
itemname
- public int getItemCount(java.lang.String itemname)
getItemCount
in interface ObjectItemServiceIF
itemname
- Die Eigenschaftpublic java.lang.String[] findItems(java.lang.String pattern)
findItems
in interface ObjectItemServiceIF
pattern
- public Selection startSession()
startSession
in interface ObjectItemServiceIF
public int performOper(int sessionId, java.lang.String itemname, Selection.Oper operand)
Mit getResultSet werden die Objekte der Ergebnismenge geliefert.
performOper
in interface ObjectItemServiceIF
name
- Name der Session die mit startTrans() erzeugt wurde.itemname
- Name der Eigenschaft.operand
- Einer der in der Klasse Selection definierten Operatoren
(AND, OR, NOT, XOR); beim ersten Aufruf dieser Methode in einer
Transaktion darf auch der Operator NONE angegeben werden.public ExpressionResult performOper(java.util.ArrayList<OperToken> al)
performOper
in interface ObjectItemServiceIF
public ExpressionResult getResultSet(int sessionId)
getResultSet
in interface ObjectItemServiceIF
name
- public java.lang.String getObjekts(int[] oids)
public java.lang.String getObjekts(long[] oids)
getObjekts
in interface ObjectItemServiceIF
public boolean hasNext(int sessionId)
ObjectItemService sv = new ObjectItemService(); String name = "MySession"; int size = sv.execute(name, "bla blub - blob"); while (sv.hasNext(name)) { long[] resultSet = sv.getNext(name); }
hasNext
in interface ObjectItemServiceIF
name
- #getNext
public java.util.Map<java.lang.String,java.lang.Integer> getOtherItems(int sessionId)
Vorsicht!
Diese Methode nur aufrufen, wenn die Ergebnismenge klein ist!
getOtherItems
in interface ObjectItemServiceIF
name
- Eine laufende Sessionpublic boolean hasSession(int sessionId)
ObjectItemServiceIF
ObjectItemServiceIF.endSession(int)
aufrufen.hasSession
in interface ObjectItemServiceIF
public boolean endSession(int sessionId)
endSession
in interface ObjectItemServiceIF
sessionId
- public void resetAllSessions()
resetAllSessions
in interface ObjectItemServiceIF
public ExpressionResult execute(java.lang.String expression) throws java.rmi.RemoteException
Eigenschaften können selbst auch White Space enthalten; dann sind sie in
Anführungszeichen "Meine Eigenschaft" einzuschließen.
Der Ausdruck darf
Java-Style-Kommentare enthalten (// oder /*)
Die Ergebnismenge selbst kann anschließend mit getResultSet()
abgerufen werden, oder seitenweise mit getNext().
execute
in interface ObjectItemServiceIF
name
- Der Name einer Transaktion.expression
- Ein Ausdruck, bei dem gültigen Eigenschaften und
Operatoren; alles durch White Space getrennt.java.rmi.RemoteException
hasNext(int)
,
#getNext
public de.jdataset.JDataSet getFirstPage(int sessionId)
ObjectItemServiceIF
getFirstPage
in interface ObjectItemServiceIF
public de.jdataset.JDataSet getNextPage(int sessionId)
ObjectItemServiceIF
getNextPage
in interface ObjectItemServiceIF
public de.jdataset.JDataSet getPrevPage(int sessionId)
ObjectItemServiceIF
getPrevPage
in interface ObjectItemServiceIF
public int updateObjects(de.jdataset.JDataSet ds)
ObjectItemServiceIF
updateObjects
in interface ObjectItemServiceIF
public void importItems(java.lang.String text, boolean lowercase)
Hierbei können die Eigenschaften auch in Anführungszeichen eingeschlossen sein: "Meine Eigenschaft".
importItems
in interface ObjectItemServiceIF
text
- lowercase
- Wenn true wird Rudi zu rudi.public void indexObject(long oid, java.lang.String text, boolean createItems, boolean lowercase)
Diese Methode könnte
von einem "Spider" aufgerufen werden, der ein Text-Dokument indizieren
möchte.
Wird die Eigenschaft "createItems" auf "true" gesetzt, werden die im
Text enthaltenen Worte gleichzeitig als Eigenschaften in die Datenbank
übernommen (Volltext-Indizierung); wenn "false", dann wird das Objekt nur
mit den bereits in der Datenbank vorhandenen Eigenschaften indiziert.
indexObject
in interface ObjectItemServiceIF
oid
- Ein neu zu erzeugendes Objekttext
- Ein Text zu diesem Objekt, der indiziert werden soll.createItems
- wenn true, dann werden auch neue Eigenschaften erzeugt.lowercase
- Wenn true wird Rudi zu rudi.void indexObject(long oid, java.io.Reader reader, boolean createItems, boolean lowercase)
public void startSpider()
startSpider
in interface ObjectItemServiceIF
public void indexDatabase()
indexDatabase
in interface ObjectItemServiceIF
public int importDatabaseCSV(java.lang.String data)
ObjectItemServiceIF
importDatabaseCSV
in interface ObjectItemServiceIF
public int importDatabaseDataset(de.jdataset.JDataSet data)
importDatabaseDataset
in interface ObjectItemServiceIF
int checkSessionTimeout()