1 24 package org.riotfamily.pages.setup; 25 26 import java.util.Date ; 27 import java.util.HashMap ; 28 import java.util.Iterator ; 29 import java.util.List ; 30 import java.util.Locale ; 31 import java.util.Map ; 32 import java.util.Properties ; 33 34 import org.riotfamily.common.util.FormatUtils; 35 import org.riotfamily.pages.Page; 36 import org.riotfamily.pages.PageNode; 37 import org.riotfamily.pages.dao.PageDao; 38 39 43 public class PageDefinition { 44 45 private String pathComponent; 46 47 private String handlerName; 48 49 private String childHandlerName; 50 51 private List definitions; 52 53 private boolean hidden; 54 55 private boolean published = true; 56 57 private boolean systemNode = true; 58 59 private boolean folder; 60 61 private Properties globalProps; 62 63 private HashMap localizedProps; 64 65 public void setPathComponent(String pathComponent) { 66 this.pathComponent = pathComponent; 67 } 68 69 public String getPathComponent() { 70 return pathComponent != null 71 ? pathComponent 72 : FormatUtils.camelToXmlCase(handlerName); 73 } 74 75 public void setHandlerName(String handlerName) { 76 this.handlerName = handlerName; 77 } 78 79 public void setChildHandlerName(String childHandlerName) { 80 this.childHandlerName = childHandlerName; 81 } 82 83 public void setHidden(boolean hidden) { 84 this.hidden = hidden; 85 } 86 87 public void setPublished(boolean published) { 88 this.published = published; 89 } 90 91 public void setSystemNode(boolean systemNode) { 92 this.systemNode = systemNode; 93 } 94 95 public void setFolder(boolean folder) { 96 this.folder = folder; 97 } 98 99 public void setGlobalProps(Properties globalProps) { 100 this.globalProps = globalProps; 101 } 102 103 public void setLocalizedProps(HashMap localizedProps) { 104 this.localizedProps = localizedProps; 105 } 106 107 public List getDefinitions() { 108 return this.definitions; 109 } 110 111 public void setDefinitions(List definitions) { 112 this.definitions = definitions; 113 } 114 115 public PageNode createNode(PageNode parent, PageDao pageDao) { 116 PageNode node = new PageNode(); 117 node.setParent(parent); 118 node.setSite(parent.getSite()); 119 node.setHandlerName(handlerName); 120 node.setSystemNode(systemNode); 121 node.setChildHandlerName(childHandlerName); 122 node.setHidden(hidden); 123 createPages(node, pageDao); 124 if (definitions != null) { 125 Iterator it = definitions.iterator(); 126 while (it.hasNext()) { 127 PageDefinition childDefinition = (PageDefinition) it.next(); 128 PageNode childNode = childDefinition.createNode(node, pageDao); 129 node.addChildNode(childNode); 130 } 131 } 132 pageDao.saveNode(node); 133 return node; 134 } 135 136 private void createPages(PageNode node, PageDao pageDao) { 137 Iterator it = pageDao.getLocales().iterator(); 138 while (it.hasNext()) { 139 Locale locale = (Locale ) it.next(); 140 Page page = new Page(getPathComponent(), locale); 141 page.setNode(node); 142 page.setPublished(published); 143 page.setFolder(folder); 144 page.setCreationDate(new Date ()); 145 addPageProps(page, locale); 146 node.addPage(page); 147 } 148 } 149 150 private void addPageProps(Page page, Locale locale) { 151 HashMap newProps = new HashMap (); 152 if (globalProps != null) { 153 newProps.putAll(globalProps); 154 } 155 if (localizedProps != null) { 156 Map localizedMap = (Map ) localizedProps.get(locale.toString()); 157 if(localizedMap != null) { 158 newProps.putAll(localizedMap); 159 } 160 } 161 page.getProperties(false).putAll(newProps); 162 } 163 164 165 } 166 | Popular Tags |