📄 xwikihibernatestore.java
字号:
checkHibernate(context); bTransaction = beginTransaction(context); } Session session = getSession(context); List list = doc.getAttachmentList(); for (int i=0;i<list.size();i++) { XWikiAttachment attachment = (XWikiAttachment) list.get(i); saveAttachment(attachment, false, context, false); } if (bTransaction) endTransaction(context, true); } catch (Exception e) { Object[] args = { doc.getFullName() }; throw new XWikiException( XWikiException.MODULE_XWIKI_STORE, XWikiException.ERROR_XWIKI_STORE_HIBERNATE_SAVING_ATTACHMENT_LIST, "Exception while saving attachments attachment list of document {0}", e, args); } finally { try { if (bTransaction) endTransaction(context, false); } catch (Exception e) {} } } public void saveAttachment(XWikiAttachment attachment, XWikiContext context, boolean bTransaction) throws XWikiException { saveAttachment(attachment, true, context, bTransaction); } public void saveAttachment(XWikiAttachment attachment, boolean parentUpdate, XWikiContext context, boolean bTransaction) throws XWikiException { try { if (bTransaction) { checkHibernate(context); bTransaction = beginTransaction(context); } Session session = getSession(context); Query query = session.createQuery("select attach.id from XWikiAttachment as attach where attach.id = :id"); query.setLong("id", attachment.getId()); if (query.uniqueResult()==null) session.save(attachment); else session.update(attachment); if (parentUpdate) saveXWikiDoc(attachment.getDoc(), context, false); if (bTransaction) { endTransaction(context, true); } } catch (Exception e) { Object[] args = { attachment.getFilename(), attachment.getDoc().getFullName() }; throw new XWikiException( XWikiException.MODULE_XWIKI_STORE, XWikiException.ERROR_XWIKI_STORE_HIBERNATE_SAVING_ATTACHMENT, "Exception while saving attachments for attachment {0} of document {1}", e, args); } finally { try { if (bTransaction) endTransaction(context, false); } catch (Exception e) {} } } public void saveAttachmentContent(XWikiAttachment attachment, XWikiContext context, boolean bTransaction) throws XWikiException { saveAttachmentContent(attachment, true, context, bTransaction); } public void saveAttachmentContent(XWikiAttachment attachment, boolean parentUpdate, XWikiContext context, boolean bTransaction) throws XWikiException { try { XWikiAttachmentContent content = attachment.getAttachment_content(); if (content.isContentDirty()) { attachment.updateContentArchive(context); } XWikiAttachmentArchive archive = attachment.getAttachment_archive(); if (bTransaction) { checkHibernate(context); bTransaction = beginTransaction(context); } Session session = getSession(context); Query query = session.createQuery("select attach.id from XWikiAttachmentContent as attach where attach.id = :id"); query.setLong("id", content.getId()); if (query.uniqueResult()==null) session.save(content); else session.update(content); query = session.createQuery("select attach.id from XWikiAttachmentArchive as attach where attach.id = :id"); query.setLong("id", archive.getId()); if (query.uniqueResult()==null) session.save(archive); else session.update(archive); if (parentUpdate) saveXWikiDoc(attachment.getDoc(), context, false); if (bTransaction) { endTransaction(context, true); } } catch (Exception e) { Object[] args = { attachment.getFilename(), attachment.getDoc().getFullName() }; throw new XWikiException( XWikiException.MODULE_XWIKI_STORE, XWikiException.ERROR_XWIKI_STORE_HIBERNATE_SAVING_ATTACHMENT, "Exception while saving attachment {0} of document {1}", e, args); } finally { try { if (bTransaction) endTransaction(context, false); } catch (Exception e) {} } } public void loadAttachmentContent(XWikiAttachment attachment, XWikiContext context, boolean bTransaction) throws XWikiException { try { if (bTransaction) { checkHibernate(context); bTransaction = beginTransaction(context); } Session session = getSession(context); XWikiAttachmentContent content = new XWikiAttachmentContent(attachment); attachment.setAttachment_content(content); session.load(content, new Long(content.getId())); if (bTransaction) endTransaction(context, false); } catch (Exception e) { Object[] args = { attachment.getFilename(), attachment.getDoc().getFullName() }; throw new XWikiException( XWikiException.MODULE_XWIKI_STORE, XWikiException.ERROR_XWIKI_STORE_HIBERNATE_LOADING_ATTACHMENT, "Exception while loading attachment {0} of document {1}", e, args); } finally { try { if (bTransaction) endTransaction(context, false); } catch (Exception e) {} } } public void loadAttachmentArchive(XWikiAttachment attachment, XWikiContext context, boolean bTransaction) throws XWikiException { try { if (bTransaction) { checkHibernate(context); bTransaction = beginTransaction(context); } Session session = getSession(context); XWikiAttachmentArchive archive = new XWikiAttachmentArchive(); archive.setAttachment(attachment); attachment.setAttachment_archive(archive); session.load(archive, new Long(archive.getId())); if (bTransaction) endTransaction(context, false); } catch (Exception e) { Object[] args = { attachment.getFilename(), attachment.getDoc().getFullName() }; throw new XWikiException( XWikiException.MODULE_XWIKI_STORE, XWikiException.ERROR_XWIKI_STORE_HIBERNATE_LOADING_ATTACHMENT, "Exception while loading attachment {0} of document {1}", e, args); } finally { try { if (bTransaction) endTransaction(context, false); } catch (Exception e) {} } } public void deleteXWikiAttachment(XWikiAttachment attachment, XWikiContext context, boolean bTransaction) throws XWikiException { deleteXWikiAttachment(attachment, true, context, bTransaction); } public XWikiLock loadLock(long docId, XWikiContext context, boolean bTransaction) throws XWikiException { XWikiLock lock=null; try { if (bTransaction) { checkHibernate(context); bTransaction = beginTransaction(context); } Session session = getSession(context); Query query = session.createQuery("select lock.docId from XWikiLock as lock where lock.docId = :docId"); query.setLong("docId", docId); if (query.uniqueResult()!=null) { lock = new XWikiLock(); session.load(lock, new Long(docId)); } if (bTransaction) endTransaction(context, false); } catch (Exception e) { throw new XWikiException( XWikiException.MODULE_XWIKI_STORE, XWikiException.ERROR_XWIKI_STORE_HIBERNATE_LOADING_LOCK, "Exception while loading lock", e); } finally { try { if (bTransaction) endTransaction(context, false); } catch (Exception e) {} } return lock; } public void saveLock(XWikiLock lock, XWikiContext context, boolean bTransaction) throws XWikiException { try { if (bTransaction) { checkHibernate(context); bTransaction = beginTransaction(context); } Session session = getSession(context); Query query = session.createQuery("select lock.docId from XWikiLock as lock where lock.docId = :docId"); query.setLong("docId", lock.getDocId()); if (query.uniqueResult()==null) session.save(lock); else session.update(lock); if (bTransaction) { endTransaction(context, true); } } catch (Exception e) { throw new XWikiException( XWikiException.MODULE_XWIKI_STORE, XWikiException.ERROR_XWIKI_STORE_HIBERNATE_SAVING_LOCK, "Exception while locking document", e); } finally { try { if (bTransaction) endTransaction(context, false); } catch (Exception e) {} } } public void deleteLock(XWikiLock lock, XWikiContext context, boolean bTransaction) throws XWikiException { try { if (bTransaction) { checkHibernate(context); bTransaction = beginTransaction(context); } Session session = getSession(context); session.delete(lock); if (bTransaction) endTransaction(context, true); } catch (Exception e) { throw new XWikiException( XWikiException.MODULE_XWIKI_STORE, XWikiException.ERROR_XWIKI_STORE_HIBERNATE_DELETING_LOCK, "Exception while deleting lock", e); } finally { try { if (bTransaction) endTransaction(context, false); } catch (Exception e) {} } } public void deleteXWikiAttachment(XWikiAttachment attachment, boolean parentUpdate, XWikiContext context, boolean bTransaction) throws XWikiException { try { if (bTransaction) { checkHibernate(context); bTransaction = beginTransaction(context); } Session session = getSession(context); // Delete the three attachement entries loadAttachmentContent(attachment, context, false); session.delete(attachment.getAttachment_content()); loadAttachmentArchive(attachment, context, false); session.delete(attachment.getAttachment_archive()); session.delete(attachment); if (parentUpdate) { List list = attachment.getDoc().getAttachmentList(); for (int i=0;i<list.size();i++) { XWikiAttachment attach = (XWikiAttachment) list.get(i); if (attachment.getFilename().equals(attach.getFilename())) { list.remove(i); break; } } saveXWikiDoc(attachment.getDoc(), context, false); } if (bTransaction) { endTransaction(context, true); } } catch (Exception e) { Object[] args = { attachment.getFilename(), attachment.getDoc().getFullName() }; throw new XWikiException( XWikiException.MODULE_XWIKI_STORE, XWikiException.ERROR_XWIKI_STORE_HIBERNATE_DELETING_ATTACHMENT, "Exception while deleting attachment {0} of document {1}", e, args); } finally { try { if (bTransaction) endTransaction(context, false); } catch (Exception e) {} } } public void getContent(XWikiDocument doc, StringBuffer buf) { buf.append(doc.getContent()); } public List getClassList(XWikiContext context) throws XWikiException { boolean bTransaction = true; try { checkHibernate(context); bTransaction = beginTransaction(context); Session session = getSession(context); Query query = session.createQuery("select bclass.name from BaseClass as bclass"); Iterator it = query.list().iterator(); List list = new ArrayList(); while (it.hasNext()) { String name = (String)it.next(); list.add(name); } if (bTransaction) endTransaction(context, false); return list; } catch (Exception e) { throw new XWikiException( XWikiExcep
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -