1 package com.dotmarketing.portlets.structure.factories; 2 3 import java.util.ArrayList ; 4 import java.util.List ; 5 6 import com.dotmarketing.db.DotHibernate; 7 import com.dotmarketing.factories.InodeFactory; 8 import com.dotmarketing.factories.PermissionFactory; 9 import com.dotmarketing.portlets.entities.model.Entity; 10 import com.dotmarketing.portlets.structure.model.Field; 11 import com.dotmarketing.portlets.structure.model.Structure; 12 import com.dotmarketing.util.Config; 13 import com.dotmarketing.util.Logger; 14 import com.dotmarketing.util.WebKeys; 15 import com.liferay.portal.model.User; 16 17 public class StructureFactory { 18 public static Structure getStructureByInode(long inode) 20 { 21 return (Structure) InodeFactory.getInode(inode,Structure.class); 22 } 23 24 public static Structure getStructureByInode(String inode) 25 { 26 return (Structure) InodeFactory.getInode(inode,Structure.class); 27 } 28 29 public static Structure getStructureByType(String type) 30 { 31 Structure structure = null; 32 String condition = " name = '" + type + "'"; 33 List list = InodeFactory.getInodesOfClassByCondition(Structure.class,condition); 34 if (list.size() > 0) 35 { 36 structure = (Structure) list.get(0); 37 } 38 else 39 { 40 structure = new Structure(); 41 } 42 return structure; 43 } 44 45 public static Structure getStructureByInodeNoLock(long inode) 46 { 47 DotHibernate dh = new DotHibernate(Structure.class); 48 StringBuffer querie = new StringBuffer (); 49 querie.append("select {structure.*} from structure with (nolock), inode structure_1_ with (nolock) "); 50 querie.append("where structure.inode = structure_1_.inode and structure.inode = "+inode); 51 52 dh.setSQLQuery(querie.toString()); 53 54 return (Structure) dh.load(); 55 } 56 57 public static Structure getDefaultStructure() 58 { 59 Structure structure = null; 60 String dbTrue = com.dotmarketing.db.DbConnectionFactory.getDBTrue(); 61 String condition = "default_structure = " + dbTrue; 62 List list = InodeFactory.getInodesOfClassByCondition(Structure.class,condition); 63 if (list.size() > 0) 64 { 65 structure = (Structure) list.get(0); 66 } 67 else 68 { 69 structure = new Structure(); 70 } 71 return structure; 72 } 73 74 public static List getStructures() 75 { 76 String orderBy = "name"; 77 int limit = -1; 78 return getStructures(orderBy,limit); 79 } 80 81 public static List <Structure> getStructuresWithWritePermissions(User user) 82 { 83 String orderBy = "name"; 84 int limit = -1; 85 List <Structure> all = getStructures(orderBy,limit); 86 List <Structure> retList = new ArrayList <Structure> (); 87 for (Structure st : all) { 88 if (PermissionFactory.doesUserHavePermission(st, Config.getIntProperty("PERMISSION_WRITE"), user)) { 89 retList.add(st); 90 } 91 } 92 return retList; 93 } 94 95 public static List <Structure> getStructuresWithReadPermissions(User user) 96 { 97 String orderBy = "name"; 98 int limit = -1; 99 List <Structure> all = getStructures(orderBy,limit); 100 List <Structure> retList = new ArrayList <Structure> (); 101 for (Structure st : all) { 102 if (PermissionFactory.doesUserHavePermission(st, Config.getIntProperty("PERMISSION_READ"), user)) { 103 retList.add(st); 104 } 105 } 106 return retList; 107 } 108 109 public static List getStructures(int limit) 110 { 111 String orderBy = "title asc"; 112 return getStructures(orderBy,limit); 113 } 114 115 @SuppressWarnings ("unchecked") 116 public static List <Structure> getStructures(String orderBy,int limit) 117 { 118 List <Structure> list = new ArrayList <Structure>(); 119 String condition = ""; 120 list = InodeFactory.getInodesOfClassByConditionAndOrderBy(Structure.class,condition,orderBy,limit); 121 return list; 122 } 123 124 public static void saveStructure(Structure structure) 126 { 127 InodeFactory.saveInode(structure); 128 } 129 130 public static void deleteStructure(long inode) 132 { 133 Structure structure = getStructureByInode(inode); 134 deleteStructure(structure); 135 } 136 137 public static void deleteStructure(Structure structure) 138 { 139 140 Entity e = structure.getEntity(); 141 InodeFactory.deleteInode(e); 142 InodeFactory.deleteInode(structure); 143 144 145 146 } 147 148 public static void disableDefault() 149 { 150 Structure defaultStructure = getDefaultStructure(); 151 if (defaultStructure.getInode() != 0) 152 { 153 defaultStructure.setDefaultStructure(false); 154 saveStructure(defaultStructure); 155 } 156 } 157 158 public static int getTotalDates(Structure structure) 159 { 160 String typeField = WebKeys.TypeField.DATE; 161 int intDate = getTotals(structure,typeField); 162 typeField = WebKeys.TypeField.DATETIME; 163 int intDateTime = getTotals(structure,typeField); 164 return intDate + intDateTime; 165 } 166 167 public static int getTotalImages(Structure structure) 168 { 169 String typeField = WebKeys.TypeField.IMAGE; 170 return getTotals(structure,typeField); 171 } 172 173 public static int getTotalFiles(Structure structure) 174 { 175 String typeField = WebKeys.TypeField.FILE; 176 return getTotals(structure,typeField); 177 } 178 179 public static int getTotalLinks(Structure structure) 180 { 181 String typeField = WebKeys.TypeField.LINK; 182 return getTotals(structure,typeField); 183 } 184 185 public static int getTotalTextAreas(Structure structure) 186 { 187 String typeField = WebKeys.TypeField.TEXTAREA; 188 return getTotals(structure,typeField); 189 } 190 191 public static int getTotalWYSIWYG(Structure structure) 192 { 193 String typeField = WebKeys.TypeField.WYSIWYG; 194 return getTotals(structure,typeField); 195 } 196 197 public static int getTotals(Structure structure,String typeField) 198 { 199 List fields = structure.getFields(); 200 int total = 0; 201 for(int i = 0; i < fields.size();i++) 202 { 203 Field field = (Field) fields.get(i); 204 if(field.getFieldType().equals(typeField)) 205 { 206 total++; 207 } 208 } 209 return total; 210 } 211 212 216 public static void createDefaultStructure () { 217 Structure st = StructureFactory.getDefaultStructure(); 218 if (st == null || st.getInode() == 0) { 219 220 Logger.info(StructureFactory.class, "Creating the default cms contentlet structure"); 221 222 st.setDefaultStructure(true); 223 st.setDescription("Default CMS Content Structure"); 224 st.setName("Web Page Content"); 225 StructureFactory.saveStructure(st); 226 227 Field field = new Field (); 228 field.setDefaultValue(""); 229 field.setFieldContentlet("text1"); 230 field.setFieldName("Title"); 231 field.setFieldType(WebKeys.TypeField.TEXT); 232 field.setHint(""); 233 field.setRegexCheck(""); 234 field.setRequired(true); 235 field.setSortOrder(0); 236 field.setStructureInode(st.getInode()); 237 field.setFieldRelationType(""); 238 field.setVelocityVarName("ContentletTitle"); 239 field.setIndexed(true); 240 field.setListed(true); 241 FieldFactory.saveField(field); 242 243 244 field = new Field (); 245 field.setDefaultValue(""); 246 field.setFieldContentlet("text_area1"); 247 field.setFieldName("Body"); 248 field.setFieldType(WebKeys.TypeField.WYSIWYG); 249 field.setHint(""); 250 field.setRegexCheck(""); 251 field.setRequired(true); 252 field.setSortOrder(8); 253 field.setStructureInode(st.getInode()); 254 field.setFieldRelationType(""); 255 field.setIndexed(true); 256 field.setVelocityVarName("Body"); 257 FieldFactory.saveField(field); 258 259 260 261 262 263 st = new Structure(); 264 st.setName("News Item"); 265 st.setDescription("News Items and Press Releases"); 266 StructureFactory.saveStructure(st); 267 268 field = new Field (); 269 field.setDefaultValue(""); 270 field.setFieldContentlet("text1"); 271 field.setFieldName("Headline"); 272 field.setFieldType(WebKeys.TypeField.TEXT); 273 field.setHint(""); 274 field.setRegexCheck(""); 275 field.setRequired(true); 276 field.setSortOrder(0); 277 field.setStructureInode(st.getInode()); 278 field.setFieldRelationType(""); 279 field.setVelocityVarName("NewsHeadline"); 280 field.setIndexed(true); 281 field.setListed(true); 282 FieldFactory.saveField(field); 283 284 field = new Field (); 285 field.setDefaultValue(""); 286 field.setFieldContentlet("text_area1"); 287 field.setFieldName("Short Summary"); 288 field.setFieldType(WebKeys.TypeField.TEXTAREA); 289 field.setHint("This is teaser copy shown on listing pages"); 290 field.setRegexCheck(""); 291 field.setRequired(true); 292 field.setSortOrder(1); 293 field.setStructureInode(st.getInode()); 294 field.setFieldRelationType(""); 295 field.setVelocityVarName("NewsSummary"); 296 FieldFactory.saveField(field); 297 298 field = new Field (); 299 field.setDefaultValue(""); 300 field.setFieldContentlet("date1"); 301 field.setFieldName("Publish Date"); 302 field.setFieldType(WebKeys.TypeField.DATETIME); 303 field.setHint("<br>The date this news item will be displayed"); 304 field.setRegexCheck(""); 305 field.setRequired(true); 306 field.setSortOrder(2); 307 field.setStructureInode(st.getInode()); 308 field.setFieldRelationType(""); 309 field.setVelocityVarName("NewsPublishDate"); 310 field.setListed(true); 311 FieldFactory.saveField(field); 312 313 field = new Field (); 314 field.setDefaultValue(""); 315 field.setFieldContentlet("date2"); 316 field.setFieldName("Expire Date"); 317 field.setFieldType(WebKeys.TypeField.DATETIME); 318 field.setHint("<br>The date this item will expire"); 319 field.setRegexCheck(""); 320 field.setRequired(false); 321 field.setSortOrder(3); 322 field.setStructureInode(st.getInode()); 323 field.setFieldRelationType(""); 324 field.setVelocityVarName("NewsExpireDate"); 325 FieldFactory.saveField(field); 326 327 328 field = new Field (); 329 field.setDefaultValue(""); 330 field.setFieldContentlet("text_area2"); 331 field.setFieldName("Body"); 332 field.setFieldType(WebKeys.TypeField.WYSIWYG); 333 field.setHint(""); 334 field.setRegexCheck(""); 335 field.setRequired(true); 336 field.setSortOrder(4); 337 field.setStructureInode(st.getInode()); 338 field.setFieldRelationType(""); 339 field.setIndexed(true); 340 field.setVelocityVarName("NewsBody"); 341 FieldFactory.saveField(field); 342 343 344 345 346 } 347 } 348 } 349 | Popular Tags |