1 package org.paneris.melati.site.model; 2 3 import org.paneris.melati.site.model.generated.PageTableBase; 4 import org.melati.poem.DefinitionSource; 5 import org.melati.poem.Database; 6 import org.melati.poem.PoemException; 7 8 /** 9 * Melati POEM generated, programmer modifiable stub 10 * for a <code>PageTable</code> object. 11 * <p> 12 * Description: 13 * A Page. 14 * </p> 15 * 16 * 17 * <table> 18 * <tr><th colspan='3'> 19 * Field summary for SQL table <code>Page</code> 20 * </th></tr> 21 * <tr><th>Name</th><th>Type</th><th>Description</th></tr> 22 * <tr><td> id </td><td> Integer </td><td> </td></tr> 23 * <tr><td> name </td><td> String </td><td> A file system name, no spaces or 24 * special characters </td></tr> 25 * <tr><td> displayname </td><td> String </td><td> The full name used in the 26 * TITLE. </td></tr> 27 * <tr><td> displayorder </td><td> Integer </td><td> A rank determining where 28 * the page appears in a list </td></tr> 29 * <tr><td> deleted </td><td> Boolean </td><td> Whether or not to include 30 * this Unit </td></tr> 31 * <tr><td> lastencached </td><td> Timestamp </td><td> When the unit was 32 * encached; cleared when the unit is updated </td></tr> 33 * <tr><td> parent </td><td> Page </td><td> The organisation to which this is 34 * affiliated, if any. </td></tr> 35 * <tr><td> template </td><td> Template </td><td> The name of the layout for 36 * this page </td></tr> 37 * <tr><td> style </td><td> Style </td><td> The name of the CSS class for 38 * this page </td></tr> 39 * <tr><td> messageboard </td><td> Board </td><td> A messageboard on which 40 * this unit can be discussed </td></tr> 41 * </table> 42 * 43 * @generator org.melati.poem.prepro.TableDef#generateTableMainJava 44 */ 45 public class PageTable extends PageTableBase { 46 47 /** 48 * Constructor. 49 * 50 * @generator org.melati.poem.prepro.TableDef#generateTableMainJava 51 * @param database the POEM database we are using 52 * @param name the name of this <code>Table</code> 53 * @param definitionSource which definition is being used 54 * @throws PoemException if anything goes wrong 55 */ 56 public PageTable( 57 Database database, String name, 58 DefinitionSource definitionSource) throws PoemException { 59 super(database, name, definitionSource); 60 } 61 62 // programmer's domain-specific code here 63 64 static int displayOrder = 0; 65 66 /** 67 * Create or retrieve existing page by name. 68 * 69 * @return the existing or newly created object 70 */ 71 public Page ensurePage(String displayName){ 72 String name = deSpace(displayName); 73 Page p = (Page)getNameColumn().firstWhereEq(name); 74 if (p == null) { 75 p = (Page)newPersistent(); 76 p.setName(name); 77 p.setDisplayname(displayName); 78 p.setDisplayorder(displayOrder); 79 p.setDeleted(false); 80 p.setDisplay(true); 81 displayOrder = displayOrder + 1; 82 p.makePersistent(); 83 } 84 return p; 85 } 86 87 /** 88 * @param displayName long name of page 89 * @return existing or newly minted Page 90 */ 91 public Page ensure(String displayName){ 92 Page p = ensurePage(displayName); 93 SiteDatabaseTables db = ((SiteDatabaseTables)getDatabase()); 94 db.getDivTable().ensure(p); 95 return p; 96 } 97 98 /** 99 * @param displayName long name of page 100 * @param template special template 101 * @return existing or newly minted Page 102 */ 103 public Page ensure(String displayName, Template template){ 104 Page p = ensurePage(displayName); 105 SiteDatabaseTables db = ((SiteDatabaseTables)getDatabase()); 106 db.getDivTable().ensure(p); 107 p.setTemplate(template); 108 return p; 109 } 110 111 /** 112 * @param displayName long name of page 113 * @param parent the page's parent 114 * @return existing or newly minted Page 115 */ 116 public Page ensure(String displayName, Page parent){ 117 Page p = ensure(displayName); 118 p.setParent(parent); 119 return p; 120 } 121 122 /** 123 * @param displayName long name of page 124 * @param parent the page's parent 125 * @param divSubject name of Div to create 126 * @param divContent Div content 127 * @return existing or newly minted Page 128 */ 129 public Page ensure(String displayName, Page parent, 130 String divSubject, String divContent){ 131 Page p = ensurePage(displayName); 132 p.setParent(parent); 133 ((SiteDatabaseTables)getDatabase()). 134 getDivTable().ensure(p, divSubject, divContent); 135 return p; 136 } 137 138 139 /** 140 * Remove spaces from a string. 141 * @param s the string 142 * @return without spaces 143 */ 144 public static String deSpace(String s) { 145 int l = s.length(); 146 for (int i = 0; i < l; ++i) { 147 char c = s.charAt(i); 148 if (c == ' ') { 149 // damn, found one; catch up to here ... 150 StringBuffer t = new StringBuffer(l -1); 151 for (int j = 0; j < i; ++j) 152 t.append(s.charAt(j)); 153 // ... and continue 154 for (++i; i < l; ++i) { 155 c = s.charAt(i); 156 if (c != ' ') 157 t.append(c); 158 } 159 return t.toString(); 160 } 161 } 162 return s; 163 } 164 }