/**
  * Insert audit.
  *
  * @param aSbiAudit the a sbi audit
  * @throws EMFUserError the EMF user error
  * @see it.eng.spagobi.monitoring.dao.IAuditDAO#insertAudit(it.eng.spagobi.bo.SbiAudit)
  */
 public void insertAudit(SbiAudit aSbiAudit) throws EMFUserError {
   logger.debug("IN");
   Session session = null;
   Transaction tx = null;
   try {
     session = getSession();
     ;
     tx = session.beginTransaction();
     if (aSbiAudit.getSbiObject() == null) {
       Integer objectId = aSbiAudit.getDocumentId();
       SbiObjects sbiObject = (SbiObjects) session.load(SbiObjects.class, objectId);
       aSbiAudit.setSbiObject(sbiObject);
     }
     if (aSbiAudit.getSbiSubObject() == null) {
       Integer subObjId = aSbiAudit.getSubObjId();
       if (subObjId != null) {
         SbiSubObjects subObj = (SbiSubObjects) session.load(SbiSubObjects.class, subObjId);
         aSbiAudit.setSbiSubObject(subObj);
       }
     }
     if (aSbiAudit.getSbiEngine() == null) {
       Integer engineId = aSbiAudit.getEngineId();
       SbiEngines sbiEngine = (SbiEngines) session.load(SbiEngines.class, engineId);
       aSbiAudit.setSbiEngine(sbiEngine);
     }
     updateSbiCommonInfo4Insert(aSbiAudit);
     session.save(aSbiAudit);
     session.flush();
     tx.commit();
   } catch (HibernateException he) {
     logger.error(he);
     if (tx != null) tx.rollback();
     throw new EMFUserError(EMFErrorSeverity.ERROR, 100);
   } finally {
     if (session != null) {
       if (session.isOpen()) session.close();
     }
     logger.debug("OUT");
   }
 }