KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > dotmarketing > portlets > structure > factories > StructureFactory


1 package com.dotmarketing.portlets.structure.factories;
2
3 import java.util.ArrayList JavaDoc;
4 import java.util.List JavaDoc;
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     //### READ ###
19
public static Structure getStructureByInode(long inode)
20     {
21         return (Structure) InodeFactory.getInode(inode,Structure.class);
22     }
23
24     public static Structure getStructureByInode(String JavaDoc inode)
25     {
26         return (Structure) InodeFactory.getInode(inode,Structure.class);
27     }
28
29     public static Structure getStructureByType(String JavaDoc type)
30     {
31         Structure structure = null;
32         String JavaDoc condition = " name = '" + type + "'";
33         List JavaDoc 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 JavaDoc querie = new StringBuffer JavaDoc();
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 JavaDoc dbTrue = com.dotmarketing.db.DbConnectionFactory.getDBTrue();
61         String JavaDoc condition = "default_structure = " + dbTrue;
62         List JavaDoc 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 JavaDoc getStructures()
75     {
76         String JavaDoc orderBy = "name";
77         int limit = -1;
78         return getStructures(orderBy,limit);
79     }
80
81     public static List JavaDoc<Structure> getStructuresWithWritePermissions(User user)
82     {
83         String JavaDoc orderBy = "name";
84         int limit = -1;
85         List JavaDoc<Structure> all = getStructures(orderBy,limit);
86         List JavaDoc<Structure> retList = new ArrayList JavaDoc<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 JavaDoc<Structure> getStructuresWithReadPermissions(User user)
96     {
97         String JavaDoc orderBy = "name";
98         int limit = -1;
99         List JavaDoc<Structure> all = getStructures(orderBy,limit);
100         List JavaDoc<Structure> retList = new ArrayList JavaDoc<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 JavaDoc getStructures(int limit)
110     {
111         String JavaDoc orderBy = "title asc";
112         return getStructures(orderBy,limit);
113     }
114
115     @SuppressWarnings JavaDoc("unchecked")
116     public static List JavaDoc<Structure> getStructures(String JavaDoc orderBy,int limit)
117     {
118         List JavaDoc<Structure> list = new ArrayList JavaDoc<Structure>();
119         String JavaDoc condition = "";
120         list = InodeFactory.getInodesOfClassByConditionAndOrderBy(Structure.class,condition,orderBy,limit);
121         return list;
122     }
123
124     //### CREATE AND UPDATE
125
public static void saveStructure(Structure structure)
126     {
127         InodeFactory.saveInode(structure);
128     }
129
130     //### DELETE ###
131
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 JavaDoc 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 JavaDoc typeField = WebKeys.TypeField.IMAGE;
170         return getTotals(structure,typeField);
171     }
172
173     public static int getTotalFiles(Structure structure)
174     {
175         String JavaDoc typeField = WebKeys.TypeField.FILE;
176         return getTotals(structure,typeField);
177     }
178
179     public static int getTotalLinks(Structure structure)
180     {
181         String JavaDoc typeField = WebKeys.TypeField.LINK;
182         return getTotals(structure,typeField);
183     }
184
185     public static int getTotalTextAreas(Structure structure)
186     {
187         String JavaDoc typeField = WebKeys.TypeField.TEXTAREA;
188         return getTotals(structure,typeField);
189     }
190
191     public static int getTotalWYSIWYG(Structure structure)
192     {
193         String JavaDoc typeField = WebKeys.TypeField.WYSIWYG;
194         return getTotals(structure,typeField);
195     }
196
197     public static int getTotals(Structure structure,String JavaDoc typeField)
198     {
199         List JavaDoc 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     /**
213      * Create the default cms contentlet structure
214      *
215      */

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             /* Let's create a News Items structure as well */
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