/** * Copyright (c) 2009 Juwi MacMillan Group GmbH * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // license-header java merge-point /** * This is only generated once! It will never be overwritten. * You can (and have to!) safely modify it by hand. */ package de.juwimm.cms.model; import java.io.PrintStream; import java.text.SimpleDateFormat; import java.util.Collection; import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Set; import javax.ejb.CreateException; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.hibernate.Query; import org.springframework.beans.factory.annotation.Autowired; import org.tizzit.util.XercesHelper; import de.juwimm.cms.authorization.model.UserHbm; import de.juwimm.cms.remote.helper.AuthenticationHelper; import de.juwimm.cms.safeguard.model.Realm2viewComponentHbm; import de.juwimm.cms.safeguard.model.RealmJaasHbm; import de.juwimm.cms.safeguard.model.RealmJdbcHbm; import de.juwimm.cms.safeguard.model.RealmLdapHbm; import de.juwimm.cms.safeguard.model.RealmSimplePwHbm; /** * @see de.juwimm.cms.model.EditionHbm * @author <a href="mailto:carsten.schalm@juwimm.com">Carsten Schalm</a> * company Juwi|MacMillan Group Gmbh, Walsrode, Germany * @version $Id$ */ public class EditionHbmDaoImpl extends EditionHbmDaoBase { private static Log log = LogFactory.getLog(EditionHbmDaoImpl.class); private final SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss"); @Autowired private SequenceHbmDao sequenceHbmDao; @Override protected EditionHbm handleCreate(String comment, Integer rootViewComponentId, PrintStream out, boolean includeUnused) throws Exception { EditionHbm newEdition = new EditionHbmImpl(); // Use XDoclet's GUID generator. Only works for String fields // This requires <utilobject includeGUID="true"/> in ejbdoclet. newEdition.setStatus((byte) 0); newEdition.setCreationDate((System.currentTimeMillis())); newEdition.setComment(comment); newEdition = postCreate(newEdition, comment, rootViewComponentId, out, includeUnused); return super.create(newEdition); } private EditionHbm postCreate(EditionHbm edition, String comment, Integer rootViewComponentId, PrintStream out, boolean includeUnused) throws CreateException { if (log.isDebugEnabled()) log.debug("Postcreating Edition"); if (rootViewComponentId != null) { try { UserHbm creator = getUserHbmDao().load(AuthenticationHelper.getUserName()); edition.setCreator(creator); } catch (Exception exe) { log.warn("There went something wrong during ejbPostcreate and finding the right user", exe); } try { ViewComponentHbm vc = getViewComponentHbmDao().load(rootViewComponentId); Integer unitId = vc.getUnit4ViewComponent(); Integer siteId = vc.getViewDocument().getSite().getSiteId(); out.println("<edition>"); if (log.isDebugEnabled()) log.debug("picturesToXmlRecursive"); this.picturesToXmlRecursive(unitId, siteId, out, edition); System.gc(); if (log.isDebugEnabled()) log.debug("documentsToXmlRecursive"); this.documentsToXmlRecursive(unitId, siteId, out, includeUnused, edition); System.gc(); if (vc.isRoot()) { // ROOT Deploy can only be done by a ROOT-User (and this must be automatically invoked!) if (log.isDebugEnabled()) log.debug("ROOT Deploy"); this.hostsToXmlRecursive(siteId, out, edition); this.shortLinksToXmlRecursive(siteId, out, edition); this.unitsToXmlRecursive(siteId, out, edition); this.viewdocumentsToXmlRecursive(siteId, out, edition); this.realmsToXmlRecursive(siteId, out, edition); } else { UnitHbm unit = getUnitHbmDao().load(unitId); if (log.isDebugEnabled()) log.debug("Unit Export/Deploy " + unit.getUnitId() + "(" + unit.getName().trim() + ")"); out.println("\t<units>"); if (log.isDebugEnabled()) log.debug("unit.toXmlRecursive"); this.unitsToXmlRecursive(siteId, out, edition); // out.print(unit.toXmlRecursive(2)); out.println("\t</units>"); if (log.isDebugEnabled()) log.debug("realmsToXmlUsed"); this.realmsToXmlUsed(unitId, out, edition); } System.gc(); if (log.isDebugEnabled()) log.debug("Creating ViewComponent Data"); this.viewdocumentsToXmlRecursive(siteId, out, edition); // vc.toXml(vc.getUnit4ViewComponent(), true, false, 0, 0, false, false, out); if (log.isDebugEnabled()) log.debug("Finished creating ViewComponent Data"); out.println("</edition>"); edition.setUnitId(vc.getAssignedUnit().getUnitId().intValue()); edition.setViewDocumentId(vc.getViewDocument().getViewDocumentId().intValue()); out.flush(); out.close(); out = null; String siteConfig = vc.getViewDocument().getSite().getConfigXML(); org.w3c.dom.Document doc = XercesHelper.string2Dom(siteConfig); String isEditionLimited = XercesHelper.getNodeValue(doc, "/config/default/parameters/maxEditionStack_1"); if (isEditionLimited != null && !"".equalsIgnoreCase(isEditionLimited) && Boolean.valueOf(isEditionLimited).booleanValue()) { String maxEditionStack = XercesHelper.getNodeValue(doc, "/config/default/parameters/maxEditionStack_2"); if (maxEditionStack != null && !"".equalsIgnoreCase(maxEditionStack)) { int max = Integer.valueOf(maxEditionStack); // max must be > 0, otherwise the created edition would be deleted before the deploy if (max > 0) { if (log.isDebugEnabled()) log.debug("Site: " + siteId + " maxEditionStack: " + max); Collection editions = findByUnitAndViewDocument(vc.getAssignedUnit().getUnitId(), vc.getViewDocument().getViewDocumentId()); while (editions.size() > max) { // get oldest edition EditionHbm oldestEdition = null; Iterator edIt = editions.iterator(); while (edIt.hasNext()) { EditionHbm currentEdition = (EditionHbm) edIt.next(); if ((oldestEdition == null) || (currentEdition.getCreationDate() < oldestEdition.getCreationDate())) { oldestEdition = currentEdition; } } if (oldestEdition != null) { // delete oldest one Date oldestCreateDate = new Date(oldestEdition.getCreationDate()); if (log.isDebugEnabled()) log.debug("Deleting edition " + oldestEdition.getEditionId() + " of unit \"" + vc.getAssignedUnit().getName().trim() + "\" (" + unitId + ") from " + sdf.format(oldestCreateDate) + " for language \"" + vc.getViewDocument().getLanguage().trim() + "\""); this.remove(oldestEdition); } editions = this.findByUnitAndViewDocument(vc.getAssignedUnit().getUnitId(), vc.getViewDocument().getViewDocumentId()); } } } } } catch (Exception exe) { log.error("Error occured", exe); } } log.debug("Finished Postcreating Edition"); return edition; } /* * POSTCREATES!!!! * * * public void ejbPostCreate(String comment, Integer rootViewComponentId, * PrintStream out, boolean includeUnused) throws CreateException { if * (log.isDebugEnabled()) log.debug("Postcreating Edition"); * if (rootViewComponentId != null) { EditionSliceOutputStream byteOut = * null; if (out == null) { //if no Stream was submitted, create out own and * store in DB at least. try { byteOut = new * EditionSliceOutputStream((Edition) ctx.getEJBLocalObject()); * GZIPOutputStream gzOut = new GZIPOutputStream(byteOut); out = new * PrintStream(gzOut, true, "UTF-8"); } catch (Exception exe) { * log.error("Could not create GZIPOutputStream because of: " + * exe.getMessage()); throw new * javax.ejb.CreateException(exe.getMessage()); } } try { User creator = * getUserLocalHome().findByPrimaryKey(ctx.getCallerPrincipal().getName()); * setCreator(creator); } catch (Exception exe) { log.warn("There went * something wrong during ejbPostcreate and finding the right user", exe); * } try { ViewComponent vc = * getViewComponentLocalHome().findByPrimaryKey(rootViewComponentId); * * Integer unitId = vc.getUnit4ViewComponent(); Integer siteId = * vc.getViewDocument().getSite().getSiteId(); * * out.println("<edition>"); * * if (log.isDebugEnabled()) log.debug("picturesToXmlRecursive"); * this.picturesToXmlRecursive(unitId, siteId, out); * System.gc(); if (log.isDebugEnabled()) * log.debug("documentsToXmlRecursive"); * this.documentsToXmlRecursive(unitId, siteId, out, includeUnused); * System.gc(); if (vc.isRoot()) { // ROOT Deploy can only be done by a * ROOT-User (and this must be automatically invoked!) if * (log.isDebugEnabled()) log.debug("ROOT Deploy"); * this.hostsToXmlRecursive(siteId, out); * this.shortLinksToXmlRecursive(siteId, out); * this.unitsToXmlRecursive(siteId, out); * this.viewdocumentsToXmlRecursive(siteId, out); * this.realmsToXmlRecursive(siteId, out); } else { Unit unit = * getUnitLocalHome().findByPrimaryKey(unitId); if (log.isDebugEnabled()) * log.debug("Unit Export/Deploy " + unit.getUnitId() + "(" + * unit.getName().trim() + ")"); * out.println("\t<units>"); if (log.isDebugEnabled()) * log.debug("unit.toXmlRecursive"); * out.print(unit.toXmlRecursive(2)); out.println("\t</units>"); * if (log.isDebugEnabled()) log.debug("realmsToXmlUsed"); * this.realmsToXmlUsed(unitId, out); } System.gc(); if * (log.isDebugEnabled()) log.debug("Creating ViewComponent Data"); * vc.toXml(vc.getUnit4ViewComponent(), true, false, 0, 0, * false, false, out); if (log.isDebugEnabled()) log.debug("Finished * creating ViewComponent Data"); out.println("</edition>"); * * * setUnitId(vc.getAssignedUnit().getUnitId().intValue()); * setViewDocumentId(vc.getViewDocument().getViewDocumentId().intValue()); * * out.flush(); out.close(); out = null; String siteConfig = * vc.getViewDocument().getSite().getConfigXML(); org.w3c.dom.Document doc = * XercesHelper.string2Dom(siteConfig); String isEditionLimited = * XercesHelper .getNodeValue(doc, * "/config/default/parameters/maxEditionStack_1"); if * (isEditionLimited != null && !"".equalsIgnoreCase(isEditionLimited) * && Boolean.valueOf(isEditionLimited).booleanValue()) { * String maxEditionStack = XercesHelper.getNodeValue(doc, * "/config/default/parameters/maxEditionStack_2"); if * (maxEditionStack != null && !"".equalsIgnoreCase(maxEditionStack)) { * int max = Integer.valueOf(maxEditionStack); // max must be > * 0, otherwise the created edition would be deleted before the deploy if * (max > 0) { if (log.isDebugEnabled()) log.debug("Site: " + siteId + " * maxEditionStack: " + max); Collection * editions = ((EditionLocalHome) this.ctx.getEJBLocalHome()) * .findByUnitAndViewDocument(vc.getAssignedUnit().getUnitId(), * vc.getViewDocument() .getViewDocumentId()); while (editions.size() > max) { // * get oldest edition Edition oldestEdition = null; Iterator edIt = * editions.iterator(); while (edIt.hasNext()) { Edition currentEdition = * (Edition) edIt.next(); if ((oldestEdition == null) || * (currentEdition.getCreationDate() < oldestEdition.getCreationDate())) { * oldestEdition = currentEdition; } } if (oldestEdition != null) { // * delete oldest one Date oldestCreateDate = new * Date(oldestEdition.getCreationDate()); if (log.isDebugEnabled()) * log.debug("Deleting edition " + oldestEdition.getEditionId() + " of unit * \"" + vc.getAssignedUnit().getName().trim() + * "\" (" + unitId + ") from " + * sdf.format(oldestCreateDate) + " for language \"" + * vc.getViewDocument().getLanguage().trim() + "\""); * oldestEdition.remove(); } editions = ((EditionLocalHome) * this.ctx.getEJBLocalHome()).findByUnitAndViewDocument(vc * .getAssignedUnit().getUnitId(), * vc.getViewDocument().getViewDocumentId()); } } } } } catch (Exception * exe) { log.error("Error occured", exe); } } * log.debug("Finished Postcreating Edition"); } * */ @Override public EditionHbm create(EditionHbm editionHbm) { if (editionHbm.getEditionId() == null || editionHbm.getEditionId().intValue() == 0) { try { Integer id = sequenceHbmDao.getNextSequenceNumber("edition.edition_id"); editionHbm.setEditionId(id); } catch (Exception e) { log.error("Error creating primary key", e); } } // editionHbm = this.postCreate(editionHbm); return super.create(editionHbm); } @SuppressWarnings("unchecked") @Override protected void handleDocumentsToXmlRecursive(Integer unitId, Integer siteId, PrintStream out, boolean includeUnused, EditionHbm edition) throws Exception { // TODO: if searchIndex is reliable only linked documents should be included in edition includeUnused = true; out.println("\t<documents>"); try { if (unitId == null) { Collection<UnitHbm> units = getUnitHbmDao().findAll(siteId); for (UnitHbm unit : units) { Collection<DocumentHbm> docs = getDocumentHbmDao().findAllPerUnit(unit.getUnitId()); for (DocumentHbm doc : docs) { if (!includeUnused && doc.getUseCountPublishVersion() == 0) continue; out.print(getDocumentHbmDao().toXml(doc.getDocumentId(), 2,true)); } } } else { if (unitId == -1) unitId = getSiteHbmDao().load(siteId).getRootUnit().getUnitId(); Collection<DocumentHbm> docs = getDocumentHbmDao().findAllPerUnit(unitId); for (DocumentHbm doc : docs) { if (!includeUnused && doc.getUseCountPublishVersion() == 0) continue; out.print(getDocumentHbmDao().toXml(doc.getDocumentId(), 2,true)); } } } catch (Exception exe) { log.error("Error occured", exe); } out.println("\t</documents>"); } @Override protected void handleHostsToXmlRecursive(Integer siteId, PrintStream out, EditionHbm edition) throws Exception { out.println("\t<hosts>"); try { Collection hostList = getHostHbmDao().findAll(siteId); Iterator it = hostList.iterator(); while (it.hasNext()) { HostHbm host = (HostHbm) it.next(); out.print(host.toXml(2)); } } catch (Exception exe) { log.error("Error occured", exe); } out.println("\t</hosts>"); } @Override protected void handleSiteToXml(Integer siteId, PrintStream out, EditionHbm edition) throws Exception { try { SiteHbm site = getSiteHbmDao().load(siteId); out.print(site.toXML(0)); } catch (Exception exe) { log.error("Error occured", exe); } } @SuppressWarnings("unchecked") @Override protected void handlePicturesToXmlRecursive(Integer unitId, Integer siteId, PrintStream out, EditionHbm edition) throws Exception { out.println("\t<pictures>"); try { if (unitId == null) { Collection<UnitHbm> units = getUnitHbmDao().findAll(siteId); for (UnitHbm unit : units) { Collection<PictureHbm> pictures = getPictureHbmDao().findAllPerUnit(unit.getUnitId()); for (PictureHbm picture : pictures) { out.print(picture.toXml(2)); } } } else { if (unitId == -1) unitId = getSiteHbmDao().load(siteId).getRootUnit().getUnitId(); Collection<PictureHbm> pictures = getPictureHbmDao().findAllPerUnit(unitId); for (PictureHbm pic : pictures) { out.print(pic.toXml(2)); } } } catch (Exception exe) { log.error("Error occured", exe); } out.println("\t</pictures>"); } @Override protected void handleRealmsToXmlRecursive(Integer siteId, PrintStream out, EditionHbm edition) throws Exception { out.println("<realms>"); try { SiteHbm site = getSiteHbmDao().load(siteId); { Collection simplepwrealms = site.getRealmSimplePwHbms(); Iterator it = simplepwrealms.iterator(); out.println("<realmsSimplePw>"); while (it.hasNext()) { RealmSimplePwHbm realm = (RealmSimplePwHbm) it.next(); out.println(realm.toXml()); } out.println("</realmsSimplePw>"); } { Collection sqldbrealms = site.getRealmJdbcHbms(); Iterator it = sqldbrealms.iterator(); out.println("<realmsJdbc>"); while (it.hasNext()) { RealmJdbcHbm realm = (RealmJdbcHbm) it.next(); out.println(realm.toXml()); } out.println("</realmsJdbc>"); } { Collection realmsLdap = site.getRealmLdapHbms(); Iterator it = realmsLdap.iterator(); out.println("<realmsLdap>"); while (it.hasNext()) { RealmLdapHbm realm = (RealmLdapHbm) it.next(); out.println(realm.toXml()); } out.println("</realmsLdap>"); } { Collection realmsJaas = site.getRealmJaasHbms(); Iterator it = realmsJaas.iterator(); out.println("<realmsJaas>"); while (it.hasNext()) { RealmJaasHbm realm = (RealmJaasHbm) it.next(); out.println(realm.toXml()); } out.println("</realmsJaas>"); } } catch (Exception exe) { log.error("Error occured", exe); } out.println("</realms>"); } @Override protected void handleRealmsToXmlUsed(Integer unitId, PrintStream out, EditionHbm edition) throws Exception { HashMap ldapMap = new HashMap(); HashMap jdbcMap = new HashMap(); HashMap simplePwMap = new HashMap(); HashMap jaasMap = new HashMap(); try { UnitHbm unit = getUnitHbmDao().load(unitId); Collection viewDocumentsList = getViewDocumentHbmDao().findAll(unit.getSite().getSiteId()); Iterator it = viewDocumentsList.iterator(); while (it.hasNext()) { ViewDocumentHbm viewDocument = (ViewDocumentHbm) it.next(); try { this.getUsedRealmsForUnitAndViewDocument(unitId, viewDocument.getViewDocumentId(), ldapMap, jdbcMap, simplePwMap, jaasMap); } catch (Exception ex) { log.error("Error getting Realms in use for Unit " + unitId + " and ViewDocument " + viewDocument.getLanguage() + ": " + ex.getMessage()); } } out.println("\t<realms>"); { out.println("\t<realmsLdap>"); Set keyset = ldapMap.keySet(); Iterator keyit = keyset.iterator(); while (keyit.hasNext()) { Integer key = (Integer) keyit.next(); if (log.isDebugEnabled()) log.debug("realmsLdap add " + key); RealmLdapHbm ldapRealm = getRealmLdapHbmDao().load(key); String content = ldapRealm.toXml(); out.println(content); } out.println("\t</realmsLdap>"); } { out.println("\t<realmsJdbc>"); Set keyset = jdbcMap.keySet(); Iterator keyit = keyset.iterator(); while (keyit.hasNext()) { Integer key = (Integer) keyit.next(); if (log.isDebugEnabled()) log.debug("realmsJdbc add " + key); RealmJdbcHbm sqlRealm = getRealmJdbcHbmDao().load(key); String content = sqlRealm.toXml(); out.println(content); } out.println("\t</realmsJdbc>"); } { out.println("\t<realmsSimplePw>"); Set keyset = simplePwMap.keySet(); Iterator keyit = keyset.iterator(); while (keyit.hasNext()) { Integer key = (Integer) keyit.next(); if (log.isDebugEnabled()) log.debug("realmsSimplePw add " + key); RealmSimplePwHbm simpleRealm = getRealmSimplePwHbmDao().load(key); String content = simpleRealm.toXml(); out.println(content); } out.println("\t</realmsSimplePw>"); } { out.println("\t<realmsJaas>"); Set keyset = jaasMap.keySet(); Iterator keyit = keyset.iterator(); while (keyit.hasNext()) { Integer key = (Integer) keyit.next(); if (log.isDebugEnabled()) log.debug("realmsJaas add " + key); RealmJaasHbm jaasRealm = getRealmJaasHbmDao().load(key); String content = jaasRealm.toXml(); out.println(content); } out.println("\t</realmsJaas>"); } out.println("\t</realms>"); } catch (Exception e) { log.error("Error getting all used Realms: " + e.getMessage(), e); } } private void getUsedRealmsForUnitAndViewDocument(Integer unitId, Integer viewDocumentId, HashMap ldapMap, HashMap jdbcMap, HashMap simplePwMap, HashMap jaasMap) throws Exception { ViewComponentHbm viewRoot = getViewComponentHbmDao().find4Unit(unitId, viewDocumentId); this.getRealmsForViewComponent(viewRoot, ldapMap, jdbcMap, simplePwMap, jaasMap); } private void getRealmsForViewComponent(ViewComponentHbm viewComponent, HashMap ldapMap, HashMap jdbcMap, HashMap simplePwMap, HashMap jaasMap) throws Exception { Realm2viewComponentHbm realm = viewComponent.getRealm2vc(); if (realm != null) { if (realm.getLdapRealm() != null && realm.getLdapRealm().getLdapRealmId() != null) { if (log.isDebugEnabled()) log.debug("Adding Ldap Realm " + realm.getLdapRealm().getLdapRealmId() + " used by VC " + viewComponent.getViewComponentId()); ldapMap.put(realm.getLdapRealm().getLdapRealmId(), realm.getLdapRealm().getLdapRealmId()); } else if (realm.getSimplePwRealm() != null && realm.getSimplePwRealm().getSimplePwRealmId() != null) { if (log.isDebugEnabled()) log.debug("Adding SimplePwRealm Realm " + realm.getSimplePwRealm().getSimplePwRealmId() + " used by VC " + viewComponent.getViewComponentId()); simplePwMap.put(realm.getSimplePwRealm().getSimplePwRealmId(), realm.getSimplePwRealm().getSimplePwRealmId()); } else if (realm.getJdbcRealm() != null && realm.getJdbcRealm().getJdbcRealmId() != null) { if (log.isDebugEnabled()) log.debug("Adding Jdbc Realm " + realm.getJdbcRealm().getJdbcRealmId() + " used by VC " + viewComponent.getViewComponentId()); jdbcMap.put(realm.getJdbcRealm().getJdbcRealmId(), realm.getJdbcRealm().getJdbcRealmId()); } else if (realm.getJaasRealm() != null && realm.getJaasRealm().getJaasRealmId() != null) { if (log.isDebugEnabled()) log.debug("Adding Jaas Realm " + realm.getJaasRealm().getJaasRealmId() + " used by VC " + viewComponent.getViewComponentId()); jaasMap.put(realm.getJaasRealm().getJaasRealmId(), realm.getJaasRealm().getJaasRealmId()); } else { log.warn("There is a Realm protecting ViewComponent " + viewComponent.getViewComponentId() + " but I can't identify it!"); } } Collection children = viewComponent.getChildren(); if (children != null) { Iterator it = children.iterator(); while (it.hasNext()) { ViewComponentHbm child = (ViewComponentHbm) it.next(); if (!child.isUnit()) { this.getRealmsForViewComponent(child, ldapMap, jdbcMap, simplePwMap, jaasMap); } } } } @Override protected void handleShortLinksToXmlRecursive(Integer siteId, PrintStream out, EditionHbm edition) throws Exception { out.println("\t<shortLinks>"); try { Collection shortLinkList = getShortLinkHbmDao().findAll(siteId); Iterator it = shortLinkList.iterator(); while (it.hasNext()) { ShortLinkHbm shortLink = (ShortLinkHbm) it.next(); out.print(shortLink.toXml(2)); } } catch (Exception exe) { log.error("Error occured", exe); } out.println("\t</shortLinks>"); } @Override protected void handleUnitsToXmlRecursive(Integer siteId, PrintStream out, EditionHbm edition) throws Exception { out.println("\t<units>"); try { Collection units = getUnitHbmDao().findAll(siteId); Iterator it = units.iterator(); while (it.hasNext()) { UnitHbm unit = (UnitHbm) it.next(); out.print(getUnitHbmDao().toXmlRecursive(2, unit)); } } catch (Exception exe) { log.error("Error occured", exe); } out.println("\t</units>"); } @Override protected void handleUnitToXml(Integer unitId, PrintStream out, EditionHbm edition) throws Exception { out.println("\t<units>"); try { UnitHbm unit = getUnitHbmDao().load(unitId); out.print(getUnitHbmDao().toXmlRecursive(2, unit)); } catch (Exception exe) { log.error("Error occured", exe); } out.println("\t</units>"); } @Override protected void handleViewdocumentsToXmlRecursive(Integer siteId, PrintStream out, EditionHbm edition) throws Exception { out.println("\t<viewDocuments>"); try { Collection vdocs = getViewDocumentHbmDao().findAll(siteId); Iterator it = vdocs.iterator(); while (it.hasNext()) { ViewDocumentHbm vdoc = (ViewDocumentHbm) it.next(); out.print(vdoc.toXml(2)); } } catch (Exception exe) { log.error("Error occured", exe); } out.println("\t</viewDocuments>"); } @Override @SuppressWarnings("unchecked") public java.util.Collection findByUnitAndViewDocument(final int transform, final java.lang.Integer unitId, final java.lang.Integer viewdocumentId) { return this.findByUnitAndViewDocument(transform, "from de.juwimm.cms.model.EditionHbm as e where e.unitId = ? and e.viewDocumentId = ?", unitId, viewdocumentId); } @Override @SuppressWarnings("unchecked") public java.util.Collection findByUnitAndOnline(final int transform, final java.lang.Integer unitId) { return this.findByUnitAndOnline(transform, "from de.juwimm.cms.model.EditionHbm as e where e.unitId = ? and e.status = 1", unitId); } @Override protected EditionHbm handleCreate(String creator, String comment, Integer viewComponentId, Integer unitId, Integer viewDocumentId, Integer siteId, boolean needsDeploy) throws Exception { EditionHbm newEdition = new EditionHbmImpl(); newEdition.setStatus((byte) 0); newEdition.setCreationDate((System.currentTimeMillis())); newEdition.setCreator(getUserHbmDao().load(creator)); newEdition.setViewComponentId(viewComponentId); newEdition.setViewDocumentId(viewDocumentId); newEdition.setUnitId(unitId); newEdition.setSiteId(siteId); newEdition.setEditionFileName(null); newEdition.setNeedsDeploy(needsDeploy); newEdition.setComment(comment); return super.create(newEdition); } @Override protected EditionHbm handleFindByWorkServerEdition(Integer workServerEditionId) throws Exception { Query query = getSession().createQuery("from de.juwimm.cms.model.EditionHbm where workServerEditionId = :workServerEditionId"); query.setParameter("workServerEditionId", workServerEditionId); return (EditionHbm) query.uniqueResult(); } @Override protected List handleFindDeployed() throws Exception { Query query = getSession().createQuery("from de.juwimm.cms.model.EditionHbm where needsDeploy = false and needsImport = false"); return query.list(); } }