Zum Hauptinhalt gehen

Datensatz (incl. Freigabestand) über Arbeitsablauf löschen

Kommentare

1 Kommentar

  • Zendesk API User
    Author: kubczak - 7/19/2011 13:12

    Hallo,

    entities im current und release Stand können prinzipiell wir folgt gelöscht werden (Modulcode). Wichtig sind die Rollback Aufrufe, um nicht mit dem Datenbestand im Cache aneinander zu geraten.

    Viele Grüße,

    Christian Kubczak

    public boolean deleteEntity(Entity e, Content2 c) {

            boolean result = false;

            Schema s = c.getTemplate().getSchema();

            if(s.getIncomingReferences(e).length == 0 || admin) {

                try {

                    c.lock(e);

                    Dataset eDS = c.getDataset(e);

                    eDS.delete();

                    eDS.save();

                } catch (LockException le) {

                    Logging.logError("Lockexception: ",le,LOGGER);

                    le.printStackTrace();

                } finally {

                    try {

                        c.unlock(e);

                        c.setLock(true);

                        c.save();

                        c.setLock(false);

                        e.getSession().commit();

                    } catch (LockException le) {

                        le.printStackTrace();

                    } catch (ElementDeletedException e1) {

                        e1.printStackTrace();

                    }

                }

                e.getSession().rollback();                                                                                  //VOODOO

                Session releaseSession = c.getTemplate().getSchema().getSession(true);                                      //delete page entity (release state)

                releaseSession.rollback();                                                                                  //no VOODOO // reset timestamp to now - read actual data

                Entity eRelease = releaseSession.find(e.getKeyValue());

                try {

                    c.lock(eRelease);

                    Dataset eDS = c.getDataset(eRelease);

                    eDS.delete();

                    eDS.save();

                } catch (LockException le) {

                    Logging.logError("Lockexception: ",le,LOGGER);

                    le.printStackTrace();

                } finally {

                    try {

                        c.unlock(eRelease);

                        releaseSession.commit();

                    } catch (LockException le) {

                        le.printStackTrace();

                    }

                    releaseSession.rollback();                                                                              //VOODOO

                }

                result = true;

            } else {

                Logging.logError("Incoming references found", LOGGER);

            }

            if(!result) {

                Logging.logError("Could not delete entity", LOGGER);

            } else {

                Logging.logInfo("Deletion of entity successful", LOGGER);

            }

            return result;

        }

    0

Bitte melden Sie sich an, um einen Kommentar zu hinterlassen.