Search the FirstSpirit Knowledge Base
Hallo Community!
Gibt es einen performanten Weg sich die letzte freigegebene Version eines Datensatzes aus einer Datenquelle zu holen?
Mein Weg, durch die History des de.espirit.firstspirit.access.store.contentstore.Dataset zu iterieren, das jeweilige de.espirit.or.schema.Entity zu holen, und zu prüfen ob es freigegeben ist, ist, wie mir scheint, nicht sehr performant, oder täusche ich mich da?
// de.espirit.firstspirit.store.access.contentstore.Content2Impl
e = context.getStoreElement();
// de.espirit.or.impl.EntityImpl
row = context.getSelectedRow();
releasedEntity = null;
for (revision : e.getDataset(row).getHistory()) {
entity = e.getInRevision(revision).getEntity(row.getValue("fs_id"));
if (entity.isReleased()) {
releasedEntity = entity;
break;
}
}
print(releasedEntity.isReleased());
Danke!
Grüße Jan
Dazu sollten sie über die release Session gehen
row = context.getSelectedRow();
dataSet =e.getDataset(row);
currentEntity =
dataSet
.getEntity();
schema = dataSet.getTableTemplate().getSchema();
Session releaseSession = schema.getSession(true);
Entity releasedEntity = releaseSession.find(currentEntity.getKeyValue());
if (releasedEntity != null) {
// found
}
Heißt "letzte" freigegebene Version die aktuell freigegebene Version oder die Version davor?
Dieser oben aufgeführte Code würde nur zum Einsatz kommen, wenn ein Entity nicht freigegeben ist.
Hier ein kleines Beispiel:
Entity Revision 5 - nicht freigegeben
Entity Revision 4 - nicht freigegeben
Entity Revision 3 - freigegeben - diese Version des entities möchte ich haben
Dazu sollten sie über die release Session gehen
row = context.getSelectedRow();
dataSet =e.getDataset(row);
currentEntity =
dataSet
.getEntity();
schema = dataSet.getTableTemplate().getSchema();
Session releaseSession = schema.getSession(true);
Entity releasedEntity = releaseSession.find(currentEntity.getKeyValue());
if (releasedEntity != null) {
// found
}
Danke!