1 10 package org.mmbase.module.gui.html; 11 12 import java.util.*; 13 14 import org.mmbase.module.*; 15 import org.mmbase.module.core.*; 16 import org.mmbase.util.*; 17 18 29 public class MMEdit extends ProcessorModule { 30 31 Hashtable commandHandlers; StateManager stateMngr; 34 35 MMBase mmBase; 36 37 41 public void init() { 42 CommandHandlerInterface newHandler; 43 44 mmBase= (MMBase)getModule("MMBASEROOT"); 45 commandHandlers = new Hashtable(); 46 stateMngr = new StateManager(mmBase); 47 commandHandlers.put("STATE", stateMngr); 48 newHandler = new ObjectSelector(stateMngr); 49 commandHandlers.put("SELECT", newHandler); 50 newHandler = new FieldSelector(stateMngr); 51 commandHandlers.put("FIELDS", newHandler); 52 newHandler = new FieldEditor(stateMngr); 53 commandHandlers.put("EDIT", newHandler); 54 } 55 56 59 public MMEdit() {} 60 61 62 public void reload() { 63 } 65 66 67 public void unload() {} 68 69 70 public void shutdown() {} 71 72 73 75 private String leadZero (int m) { 76 if (m < 0 || m > 9) return "" + m; 77 return "0" + m; 78 } 79 80 81 83 private Vector numberList (int begin, int end) { 84 Vector v = new Vector (); 85 86 for (int n = begin; n <= end; n++) v.addElement (leadZero (n)); 87 return v; 88 } 89 90 91 93 private Vector allMonths () { 94 Vector v = new Vector (); 95 96 for (int m = 1; m <= 12; m++) v.addElement (FieldEditor.getMonthString (m)); 97 98 return v; 99 } 100 101 102 104 private Vector editDate (String what) { 105 Vector v = new Vector (); 106 107 if (what.equals ("DAYS")) v = numberList (1, 31); 108 else if (what.equals ("MONTHS")) v = allMonths (); 109 else if (what.equals ("YEARS")) v = numberList (1901, 2005); 110 else if (what.equals ("HOURS")) v = numberList (0, 23); 111 else if (what.equals ("MINUTES")) v = numberList (0, 59); 112 else if (what.equals ("SECONDS")) v = numberList (0, 59); 113 114 return v; 115 } 116 117 118 121 public Vector getList(scanpage sp,StringTagger tagger, String command) throws ParseException { 122 Vector result = new Vector(); 123 CommandHandlerInterface handler; 124 125 StringTokenizer tok = new StringTokenizer(Strip.DoubleQuote(command,Strip.BOTH),"-\n\r"); 126 String token = tok.nextToken(); 127 128 if (token.startsWith ("DATE")) { 129 result = editDate (tok.nextToken ()); 130 } else { 131 if (token.startsWith ("FILES")) { 132 DirectoryLister dirlister = new DirectoryLister(); 133 String path = tok.nextToken(); 134 result = dirlister.getDirectories(path); } 136 else { 137 if (token.startsWith("TYPE_IMAGES")) { 138 String comparefield = "modtime"; 139 DirectoryLister imglister = new DirectoryLister(); 140 String path = tok.nextToken(); 141 Vector unsorted = imglister.getDirectories(path); Vector sorted = imglister.sortDirectories(unsorted,comparefield); 143 result = imglister.createThreeItems(sorted,tagger); 144 tagger.setValue("ITEMS", "3"); 145 String reverse = tagger.Value("REVERSE"); 147 if (reverse!=null) { 148 if(reverse.equals("YES")) { 149 int items = 3; 150 result = imglister.reverse(result,items); 151 } 152 } 153 } else { 154 155 handler = (CommandHandlerInterface)commandHandlers.get(token); 156 157 if (handler != null) { 158 result = handler.getList(sp, tagger, tok); 159 } else { 160 result.addElement("List not defined (MMEdit)"); 161 } 162 } 163 164 } 165 } 166 167 return result; 168 } 169 170 173 public boolean process(scanpage sp, Hashtable cmds, Hashtable vars) { 174 175 CommandHandlerInterface handler; 176 String token, cmdline; 177 178 for (Enumeration h = cmds.keys();h.hasMoreElements();) { 179 cmdline=(String )h.nextElement(); 180 StringTokenizer tok = new StringTokenizer(cmdline,"-\n\r"); 181 token = tok.nextToken(); 182 handler = (CommandHandlerInterface)commandHandlers.get(token); 183 184 if (handler != null) { 185 handler.process(sp, tok, cmds, vars); 186 } else if (token.equals("BUILDER")) { 187 String userName=HttpAuth.getRemoteUser(sp); 192 EditState state = stateMngr.getEditState(userName); 193 MMObjectBuilder builder = state.getBuilder(); 194 vars.put("EDITSTATE",state); 195 builder.process(sp,tok,cmds,vars); 199 } 201 202 } 203 204 return true; 205 } 206 207 211 public String replace(scanpage sp, String command) { 212 CommandHandlerInterface handler; 213 String token; 214 215 StringTokenizer tok = new StringTokenizer(command,"-\n\r"); 216 token = tok.nextToken(); 217 handler = (CommandHandlerInterface)commandHandlers.get(token); 219 220 if (handler != null) return handler.replace(sp, tok); 221 222 return "Command not defined (MMEdit)"; 223 } 224 } 225 | Popular Tags |