eginger
Returning Observer

Deploymentskript zum Löschen von mehreren Zeilen innerhalb einer Datenquelle

Jump to solution

Hallo,

ich habe hier ein Skript gebaut das während dem Deployment läuft und eine Anzahl von Datensätzen aus einer Datenquelle löschen soll.

import de.espirit.or.Session;
import de.espirit.or.web.SessionManager;
import de.espirit.or.schema.Entity;
import de.espirit.or.schema.KeyValue;
import java.util.*;
import de.espirit.firstspirit.common.gui.CMSDialog;
import de.espirit.firstspirit.access.*;
import de.espirit.firstspirit.access.store.contentstore.*;
import de.espirit.firstspirit.access.store.mediastore.Media;
import de.espirit.firstspirit.access.store.*;
import de.espirit.firstspirit.access.AccessUtil.*;
import de.espirit.or.query.*;
import de.espirit.or.*;


// ...

String schemaName = "Products";
int objectId = 3459;

us = context.getUserService();
cs = us.getStore(Store.CONTENT_STORE, false);

contentSource = cs.getContent2ByName("jobs");
schemaTable = contentSource.getSchema();
Session orSession = schemaTable.getSession();
Select select = orSession.createSelect("Jobs");

equal = new Equal("fs_id", objectId);
cons = new Or();
cons.add(equal);
select.setConstraint(cons);
keys = orSession.fetchKeys(select);

if(keys.size() > 0) {
    row = keys.get(0);
    Entity entity = orSession.find(row);
    context.logError( "Delete DB Entity: " + entity);
    orSession.delete(entity);
    orSession.commit();       
}

// ...

Meine Frage wäre nun, ob das nicht etwas kompakter funktioniert. Ist die fs_id innerhalb des DB-Schemata nicht eindeutig? Muss man umbedingt die Bezeichnung der Tabelle wissen ("Jobs", "jobs") um auf dieser ID etwas ausführen zu können?

Infos:

- FS 4.2.219

- Getestet im Mithras Beispielprojekt

Mit freundlichen Grüßen

Stephan Eginger

10 Replies
gockel
Crownpeak employee

Nur wenn ein Generierungstask im Auftrag verwendet wird, wird auch ein temporaler Userservice für den Auftrag erzeugt.