1 24 package org.riotfamily.pages.setup; 25 26 import java.util.Iterator ; 27 import java.util.List ; 28 29 import org.riotfamily.pages.PageNode; 30 import org.riotfamily.pages.Site; 31 import org.riotfamily.pages.dao.PageDao; 32 import org.springframework.beans.factory.InitializingBean; 33 import org.springframework.transaction.PlatformTransactionManager; 34 import org.springframework.transaction.TransactionStatus; 35 import org.springframework.transaction.support.TransactionCallbackWithoutResult; 36 import org.springframework.transaction.support.TransactionTemplate; 37 38 42 public class PageSetupBean implements InitializingBean { 43 44 private String siteName = null; 45 46 private List definitions; 47 48 private PageDao pageDao; 49 50 private PlatformTransactionManager transactionManager; 51 52 public void setPageDao(PageDao pageDao) { 53 this.pageDao = pageDao; 54 } 55 56 public void setTransactionManager(PlatformTransactionManager transactionManager) { 57 this.transactionManager = transactionManager; 58 } 59 60 public void setDefinitions(List definitions) { 61 this.definitions = definitions; 62 } 63 64 public void afterPropertiesSet() throws Exception { 65 new TransactionTemplate(transactionManager).execute(new TransactionCallbackWithoutResult() { 66 protected void doInTransactionWithoutResult(TransactionStatus status) { 67 createNodes(); 68 } 69 }); 70 } 71 72 protected void createNodes() { 73 if (pageDao.listSites().isEmpty()) { 74 Site site = pageDao.getSite(siteName); 75 PageNode rootNode = pageDao.findRootNode(site); 76 Iterator it = definitions.iterator(); 77 while (it.hasNext()) { 78 PageDefinition definition = (PageDefinition) it.next(); 79 PageNode childNode = definition.createNode(rootNode, pageDao); 80 rootNode.addChildNode(childNode); 81 } 82 pageDao.updateNode(rootNode); 83 } 84 } 85 86 87 } 88 | Popular Tags |