Skip to main content

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

Comments

1 comment

  • 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

Please sign in to leave a comment.