/*************************************************** * * cismet GmbH, Saarbruecken, Germany * * ... and it just works. * ****************************************************/ package de.cismet.cids.navigator.utils; import Sirius.navigator.connection.SessionManager; import Sirius.server.middleware.types.MetaObject; import Sirius.server.newuser.User; import de.cismet.cids.dynamics.CidsBean; import de.cismet.cids.utils.CidsBeanPersistService; /** * DOCUMENT ME! * * @author thorsten * @version $Revision$, $Date$ */ @org.openide.util.lookup.ServiceProvider(service = CidsBeanPersistService.class) public class NavigatorCidsBeanPersistService implements CidsBeanPersistService { //~ Methods ---------------------------------------------------------------- @Override public CidsBean persistCidsBean(final CidsBean cidsBean) throws Exception { final MetaObject metaObject = cidsBean.getMetaObject(); final String domain = metaObject.getDomain(); final User user = SessionManager.getSession().getUser(); if (metaObject.getStatus() == MetaObject.MODIFIED) { SessionManager.getConnection().updateMetaObject(user, metaObject, domain); return SessionManager.getConnection() .getMetaObject(user, metaObject.getID(), metaObject.getClassID(), domain) .getBean(); } else if (metaObject.getStatus() == MetaObject.TO_DELETE) { SessionManager.getConnection().deleteMetaObject(user, metaObject, domain); return null; } else if (metaObject.getStatus() == MetaObject.NEW) { final MetaObject mo = SessionManager.getConnection().insertMetaObject(user, metaObject, domain); // mo == null shall never occur assert mo != null : "illegal state: insert metaobject returned null"; // NOI18N return mo.getBean(); } else { // [issue:2585] nothing to do, persist was called on a bean that has not been modified return cidsBean; } } }