Source Code Cross Referenced for LinkModule.java in  » Content-Management-System » openedit » org » openedit » links » Java Source Code / Java DocumentationJava Source Code and Java Documentation

Java Source Code / Java Documentation
1. 6.0 JDK Core
2. 6.0 JDK Modules
3. 6.0 JDK Modules com.sun
4. 6.0 JDK Modules com.sun.java
5. 6.0 JDK Modules sun
6. 6.0 JDK Platform
7. Ajax
8. Apache Harmony Java SE
9. Aspect oriented
10. Authentication Authorization
11. Blogger System
12. Build
13. Byte Code
14. Cache
15. Chart
16. Chat
17. Code Analyzer
18. Collaboration
19. Content Management System
20. Database Client
21. Database DBMS
22. Database JDBC Connection Pool
23. Database ORM
24. Development
25. EJB Server geronimo
26. EJB Server GlassFish
27. EJB Server JBoss 4.2.1
28. EJB Server resin 3.1.5
29. ERP CRM Financial
30. ESB
31. Forum
32. GIS
33. Graphic Library
34. Groupware
35. HTML Parser
36. IDE
37. IDE Eclipse
38. IDE Netbeans
39. Installer
40. Internationalization Localization
41. Inversion of Control
42. Issue Tracking
43. J2EE
44. JBoss
45. JMS
46. JMX
47. Library
48. Mail Clients
49. Net
50. Parser
51. PDF
52. Portal
53. Profiler
54. Project Management
55. Report
56. RSS RDF
57. Rule Engine
58. Science
59. Scripting
60. Search Engine
61. Security
62. Sevlet Container
63. Source Control
64. Swing Library
65. Template Engine
66. Test Coverage
67. Testing
68. UML
69. Web Crawler
70. Web Framework
71. Web Mail
72. Web Server
73. Web Services
74. Web Services apache cxf 2.0.1
75. Web Services AXIS2
76. Wiki Engine
77. Workflow Engines
78. XML
79. XML UI
Java
Java Tutorial
Java Open Source
Jar File Download
Java Articles
Java Products
Java by API
Photoshop Tutorials
Maya Tutorials
Flash Tutorials
3ds-Max Tutorials
Illustrator Tutorials
GIMP Tutorials
C# / C Sharp
C# / CSharp Tutorial
C# / CSharp Open Source
ASP.Net
ASP.NET Tutorial
JavaScript DHTML
JavaScript Tutorial
JavaScript Reference
HTML / CSS
HTML CSS Reference
C / ANSI-C
C Tutorial
C++
C++ Tutorial
Ruby
PHP
Python
Python Tutorial
Python Open Source
SQL Server / T-SQL
SQL Server / T-SQL Tutorial
Oracle PL / SQL
Oracle PL/SQL Tutorial
PostgreSQL
SQL / MySQL
MySQL Tutorial
VB.Net
VB.Net Tutorial
Flash / Flex / ActionScript
VBA / Excel / Access / Word
XML
XML Tutorial
Microsoft Office PowerPoint 2007 Tutorial
Microsoft Office Excel 2007 Tutorial
Microsoft Office Word 2007 Tutorial
Java Source Code / Java Documentation » Content Management System » openedit » org.openedit.links 
Source Cross Referenced  Class Diagram Java Document (Java Doc) 


001:        /*
002:         * Created on Dec 22, 2004
003:         */
004:        package org.openedit.links;
005:
006:        import java.io.StringWriter;
007:        import java.io.Writer;
008:
009:        import org.apache.commons.logging.Log;
010:        import org.apache.commons.logging.LogFactory;
011:        import org.openedit.links.webtree.LinkTreeModel;
012:        import org.openedit.repository.ContentItem;
013:        import org.openedit.repository.filesystem.StringItem;
014:
015:        import com.openedit.OpenEditException;
016:        import com.openedit.PageAccessListener;
017:        import com.openedit.WebPageRequest;
018:        import com.openedit.modules.BaseModule;
019:        import com.openedit.modules.workflow.WorkFlow;
020:        import com.openedit.page.Page;
021:        import com.openedit.page.manage.PageManager;
022:        import com.openedit.users.User;
023:        import com.openedit.util.PathUtilities;
024:        import com.openedit.webui.tree.WebTree;
025:        import com.openedit.webui.tree.WebTreeNodeTreeRenderer;
026:
027:        /**
028:         * TODO: Make the linktree name a param that can be set externally
029:         * @author cburkey
030:         *
031:         */
032:        public class LinkModule extends BaseModule implements 
033:                PageAccessListener {
034:            protected static final String FILESIZE = "filesize";
035:            protected FileSize fieldFileSize;
036:            private static final Log log = LogFactory.getLog(LinkModule.class);
037:            protected boolean fieldForceReload;
038:            protected WorkFlow fieldWorkFlow;
039:
040:            public FileSize getFileSize() {
041:                //TODO: Move this to its own module method
042:                if (fieldFileSize == null) {
043:                    fieldFileSize = new FileSize();
044:                    fieldFileSize.setPageManager(getPageManager());
045:                    fieldFileSize.setRoot(getRoot());
046:                }
047:                return fieldFileSize;
048:            }
049:
050:            public void setFileSize(FileSize inFileSize) {
051:                fieldFileSize = inFileSize;
052:            }
053:
054:            public LinkTree loadLinks(WebPageRequest inReq)
055:                    throws OpenEditException {
056:                return getLinkTree(inReq);
057:            }
058:
059:            public void setSelectedLinkByUrl(WebPageRequest inReq)
060:                    throws OpenEditException {
061:                LinkTree tree = getLinkTree(inReq);
062:                String path = inReq.getContentPage().getPath();
063:
064:                Link newselection = tree.findSelectedLinkByUrl(path);
065:                tree.setSelectedLink(newselection);
066:            }
067:
068:            protected void init() {
069:                getPageManager().addPageAccessListener(this );
070:
071:            }
072:
073:            protected LinkTree getLinkTree(WebPageRequest inReq)
074:                    throws OpenEditException {
075:                String path = inReq.findValue("linkpath");
076:                if (path == null) {
077:                    path = "/links.xml";
078:                }
079:                String name = inReq.findValue("linktreename");
080:
081:                if (name == null) {
082:                    name = "linktree";
083:                }
084:
085:                Page linkpage = getPageManager().getPage(path, inReq); //may be draft if it exists
086:                //		String id = null;
087:
088:                //		User user = inReq.getUser();
089:                //		if ( user != null)
090:                //		{
091:                //			if ( user.hasProperty("oe.edit.draftmode" ))
092:                //			{
093:                //				String draftPath = PathUtilities.createDraftPath(path);
094:                //				id = name + draftPath;				
095:                //			}
096:                //		}
097:                //		if( id == null)
098:                //		{
099:                String draft = "false";
100:                User user = inReq.getUser();
101:                if (user != null && user.hasPermission("oe.edit.draftmode")) {
102:                    draft = "true";
103:                }
104:                String id = path + "_" + draft + "_" + name + "_"
105:                        + getLoaderName(inReq);
106:                //		}
107:                LinkTree tree = (LinkTree) inReq.getSessionValue(id);
108:
109:                if (tree == null && !linkpage.exists()) {
110:                    log.info(path + " not found");
111:                    tree = new LinkTree();
112:                    Link root = new Link();
113:                    root.setPath("/index.html");
114:                    root.setId("index");
115:                    root.setText("Index");
116:                    tree.setRootLink(root);
117:                    tree.setPage(linkpage);
118:                    tree.setId(id);
119:                    //throw new OpenEditException("could not find " + slink);
120:                } else {
121:                    boolean needsUpdate = true;
122:                    String selectedLink = null;
123:                    long newModified = linkpage.getLastModified().getTime();
124:                    if (tree != null) {
125:                        needsUpdate = (tree.getLastModified() != newModified);
126:                        if (tree.getSelectedLink() != null) {
127:                            selectedLink = tree.getSelectedLink().getId();
128:                        }
129:                    }
130:                    if (isForceReload()) {
131:                        //TODO: Change this to work for multiple browsers. 
132:                        //TODO: Being used by htmlLinkLoader
133:                        setForceReload(false);
134:                        needsUpdate = true;
135:                    }
136:                    if (needsUpdate) {
137:                        if (linkpage.exists()) {
138:                            XmlLinkLoader loader = getLinkLoader(inReq);
139:                            tree = loader.loadLinks(linkpage);
140:                            //				    log.info("loaded " + linkpage.getContentItem().getActualPath() + " into " + id);
141:                            //					log.info("Count " + tree.getRootLink().getChildren().size());
142:                            tree.setLastModified(newModified);
143:                        } else {
144:                            log.info("deleted links.xml file");
145:                        }
146:                        tree.setSelectedLink(selectedLink);
147:                        tree.setId(id);
148:                        inReq.putSessionValue(id, tree);
149:                        tree.setPage(linkpage);
150:                    }
151:                }
152:                //need to put the right tree in here if we are in draft mode
153:                //		log.info(tree.getRootLink().hashCode() + "Returning " + id +" Count " + tree.getRootLink().getChildren().size());
154:                inReq.putPageValue(name, tree);
155:                //loadSizer(inReq); call the action if needed
156:                return tree;
157:            }
158:
159:            public String getLoaderName(WebPageRequest inReq) {
160:                String linkLoader = inReq.getPage().get("linkloader");
161:
162:                if (linkLoader == null && inReq.getCurrentAction() != null) {
163:                    linkLoader = inReq.getCurrentAction().getChildValue(
164:                            "linkloader");
165:                }
166:                if (linkLoader == null) {
167:                    linkLoader = "htmlLinkLoader";
168:                }
169:                if (linkLoader.equals("SimpleLinkLoader")) //Old name
170:                {
171:                    linkLoader = "xmlLinkLoader";
172:                }
173:                return linkLoader;
174:            }
175:
176:            public XmlLinkLoader getLinkLoader(WebPageRequest inReq)
177:                    throws OpenEditException {
178:                String linkLoader = getLoaderName(inReq);
179:                return (XmlLinkLoader) getModuleManager().getBean(linkLoader);
180:            }
181:
182:            public void loadSizer(WebPageRequest inReq) {
183:                inReq.putSessionValue(FILESIZE, getFileSize());
184:            }
185:
186:            protected void save(WebPageRequest inReq, String inMessage)
187:                    throws Exception {
188:                LinkTree tree = getLinkTree(inReq);
189:                XmlLinkLoader loader = new XmlLinkLoader();
190:
191:                //TODO: Dont hard code the links.xml location
192:                String path = tree.getPath();
193:                path = PathUtilities.createDraftPath(path);
194:
195:                Page linkpage = getPageManager().getPage(path, inReq);
196:
197:                Writer out = new StringWriter();
198:                try {
199:                    loader
200:                            .saveLinks(tree, out, linkpage
201:                                    .getCharacterEncoding());
202:                } finally {
203:                    out.close();
204:                }
205:                StringItem item = new StringItem(linkpage.getPath(), out
206:                        .toString(), linkpage.getCharacterEncoding());
207:                item.setAuthor(inReq.getUser().getUserName());
208:                item.setMessage(inMessage);
209:                item.setType(ContentItem.TYPE_EDITED);
210:                linkpage.setContentItem(item);
211:                getPageManager().putPage(linkpage);
212:                //log.info("Saved: " + tree.getPath() );
213:
214:            }
215:
216:            public void saveLink(WebPageRequest inReq) throws Exception {
217:                inReq.getUser().put("oe.edit.draftmode", "true");
218:
219:                LinkTree tree = getLinkTree(inReq);
220:                Link link = tree.getSelectedLink();
221:
222:                String name = inReq.getRequestParameter("linktext");
223:                String url = inReq.getRequestParameter("url");
224:                String userdata = inReq.getRequestParameter("userdata");
225:                String newLinkId = inReq.getRequestParameter("newlinkid");
226:                if (newLinkId != null && !newLinkId.equals(link.getId())) {
227:                    getLinkTree(inReq).changeLinkId(link, newLinkId);
228:                }
229:                link.setUserData(userdata);
230:                link.setText(name);
231:                link.setPath(url);
232:
233:                String redirectpath = inReq.getRequestParameter("redirectPath");
234:                String accessKey = inReq.getRequestParameter("accesskey");
235:                link.setRedirectPath(redirectpath);
236:                String autoloadchildren = inReq
237:                        .getRequestParameter("autoloadchildren");
238:                link
239:                        .setAutoLoadChildren(Boolean
240:                                .parseBoolean(autoloadchildren));
241:                link.setAccessKey(accessKey);
242:                save(inReq, "Saved " + name);
243:
244:            }
245:
246:            public void appendLink(WebPageRequest inReq) throws Exception {
247:                inReq.getUser().put("oe.edit.draftmode", "true");
248:
249:                LinkTree tree = getLinkTree(inReq);
250:
251:                Link newlink = new Link();//getLinkTree().addLink(userdata,getLinkTree().nextId(),parentId,url,name);
252:                String userdata = inReq.getRequestParameter("userdata");
253:                newlink.setUserData(userdata);
254:                String name = inReq.getRequestParameter("linktext");
255:                if (name == null) {
256:                    name = "New Link";
257:                }
258:                newlink.setText(name);
259:
260:                if (tree.getRootLink() == null) {
261:                    newlink.setId("index");
262:                    tree.setRootLink(newlink);
263:                    log.error("No index link. Creating one.");
264:                    return;
265:                }
266:                String parentId = inReq.getRequestParameter("linkid");
267:                if (parentId == null) {
268:                    parentId = "index";
269:                }
270:                Link link = tree.getLink(parentId);
271:                if (link == null) {
272:                    log.error("No link selected");
273:                    return;
274:                }
275:                String url = inReq.getRequestParameter("url");
276:                if (url == null) {
277:                    url = PathUtilities.extractDirectoryPath(link.getUrl())
278:                            + "/newlink.html"; //inReq.getRequestParameter("url");
279:                }
280:                String newid = inReq.getRequestParameter("newlinkid");
281:                if (newid == null) {
282:                    newid = tree.nextId();
283:                }
284:                newlink.setId(newid);
285:
286:                newlink.setPath(url);
287:                tree.addLink(parentId, newlink);
288:                save(inReq, "Added New link " + url);
289:
290:                //getLinkTree(inReq).setSelectedLink(newlink);
291:                tree.setSelectedLink(newlink.getId());
292:            }
293:
294:            public void copyLink(WebPageRequest inReq) throws Exception {
295:                inReq.getUser().put("oe.edit.draftmode", "true");
296:
297:                LinkTree tree = getLinkTree(inReq);
298:                Link link = tree.getSelectedLink();
299:                if (link == null) {
300:                    log.error("No link selected");
301:                    return;
302:                }
303:                link = link.getParentLink();
304:
305:                String name = inReq.getRequestParameter("linktext");
306:                String url = inReq.getRequestParameter("url");
307:                String userdata = inReq.getRequestParameter("userdata");
308:
309:                Link newlink = new Link();//getLinkTree().addLink(userdata,getLinkTree().nextId(),parentId,url,name);
310:                newlink.setUserData(userdata);
311:                String newLinkId = inReq.getRequestParameter("newlinkid");
312:                if (tree.getLink(newLinkId) != null) {
313:                    newlink.setId(tree.nextId());
314:                } else {
315:                    newlink.setId(newLinkId);
316:                }
317:                newlink.setPath(url);
318:                newlink.setText(name);
319:
320:                tree.addLink(link.getId(), newlink);
321:                save(inReq, "Copy link");
322:
323:                //getLinkTree(inReq).setSelectedLink(newlink);
324:                tree.setSelectedLink(newlink.getId());
325:
326:            }
327:
328:            public void selectLink(WebPageRequest inReq) throws Exception {
329:                String linkId = inReq.getRequestParameter("linkid");
330:                if (linkId != null) {
331:                    inReq.getUser().put("oe.edit.draftmode", "true");
332:                    getLinkTree(inReq).setSelectedLink(linkId);
333:                }
334:            }
335:
336:            public void removeLink(WebPageRequest inReq) throws Exception {
337:                inReq.getUser().put("oe.edit.draftmode", "true");
338:
339:                Link link = getLinkTree(inReq).getSelectedLink();
340:                getLinkTree(inReq).removeLink(link);
341:                save(inReq, "Removed Link");
342:            }
343:
344:            public void moveUp(WebPageRequest inReq) throws Exception {
345:                inReq.getUser().put("oe.edit.draftmode", "true");
346:
347:                Link link = getLinkTree(inReq).getSelectedLink();
348:                getLinkTree(inReq).moveUp(link);
349:                save(inReq, "Moved up");
350:            }
351:
352:            public void moveDown(WebPageRequest inReq) throws Exception {
353:                inReq.getUser().put("oe.edit.draftmode", "true");
354:
355:                Link link = getLinkTree(inReq).getSelectedLink();
356:                getLinkTree(inReq).moveDown(link);
357:                save(inReq, "Moved down");
358:            }
359:
360:            public void moveRight(WebPageRequest inReq) throws Exception {
361:                inReq.getUser().put("oe.edit.draftmode", "true");
362:
363:                Link link = getLinkTree(inReq).getSelectedLink();
364:                getLinkTree(inReq).moveRight(link);
365:                save(inReq, "Moved Right");
366:            }
367:
368:            public void moveLeft(WebPageRequest inReq) throws Exception {
369:                inReq.getUser().put("oe.edit.draftmode", "true");
370:
371:                Link link = getLinkTree(inReq).getSelectedLink();
372:                getLinkTree(inReq).moveLeft(link);
373:                save(inReq, "Moved left");
374:            }
375:
376:            /**
377:             * @param inReq
378:             * @param pageManager
379:             * @throws OpenEditException
380:             */
381:            public void checkLinksRedirect(WebPageRequest inReq)
382:                    throws OpenEditException {
383:                if (!inReq.getContentPage().isHtml()) {
384:                    return;
385:                }
386:                LinkTree tree = loadLinks(inReq);
387:                if (tree != null) {
388:                    //look in the /links.xml file, if a matching link has a redirectPath defined, then redirect
389:                    String redirect = tree.findRedirect(inReq.getPath());
390:                    if (redirect != null) {
391:                        if (redirect.toLowerCase().startsWith("http")) {
392:                            inReq.redirectPermanently(redirect);
393:                        } else {
394:                            PageManager pageManager = getPageManager();
395:
396:                            Page redirectPage = pageManager.getPage(redirect);
397:                            if (redirectPage.exists()) {
398:                                inReq.redirectPermanently(redirect);
399:                            }
400:
401:                        }
402:                    }
403:
404:                }
405:            }
406:
407:            public void pageAdded(Page inPage) {
408:                setForceReload(true);
409:            }
410:
411:            public void pageModified(Page inPage) {
412:                setForceReload(true);
413:            }
414:
415:            public void pageRemoved(Page inPage) {
416:                setForceReload(true);
417:            }
418:
419:            public void pageRequested(Page inPage) {
420:            }
421:
422:            public boolean isForceReload() {
423:                return fieldForceReload;
424:            }
425:
426:            public void setForceReload(boolean inForceReload) {
427:                fieldForceReload = inForceReload;
428:            }
429:
430:            public WebTree getWebTree(WebPageRequest inRequest)
431:                    throws OpenEditException {
432:                String name = inRequest.findValue("tree-name");
433:
434:                String treeid = inRequest.getRequestParameter("treeid");
435:                if (treeid == null) {
436:                    treeid = name + inRequest.getUserName();
437:                }
438:                WebTree webTree = (WebTree) inRequest.getSessionValue(treeid);
439:
440:                LinkTree linktree = getLinkTree(inRequest);
441:                if (webTree == null) {
442:                    log.info("No web link tree in Session, creating new "
443:                            + name);
444:
445:                    webTree = new WebTree();
446:                    webTree.setName(name);
447:                    webTree.setId(treeid);
448:                    WebTreeNodeTreeRenderer renderer = new WebTreeNodeTreeRenderer(
449:                            webTree);
450:                    renderer.setFoldersLinked(true);
451:                    String prefix = inRequest.findValue("url-prefix");
452:                    prefix = inRequest.getPage().getPageSettings()
453:                            .replaceProperty(prefix);
454:                    renderer.setUrlPrefix(prefix);
455:                    String postfix = inRequest.findValue("url-postfix");
456:                    renderer.setUrlPostfix(postfix);
457:                    webTree.setTreeRenderer(renderer);
458:                    String home = (String) inRequest.getPageValue("home");
459:                    renderer.setHome(home);
460:
461:                    //expand just the top level
462:                    /*			for (Iterator iter = main.getChildren().iterator(); iter.hasNext();)
463:                     {
464:                     Category child = (Category) iter.next();
465:                     renderer.expandNode(child);
466:                     }*/
467:                    LinkTreeModel model = new LinkTreeModel(linktree);
468:                    webTree.setModel(model);
469:                    renderer.expandAll(model.getRoot());
470:                    inRequest.putSessionValue(treeid, webTree);
471:                } else {
472:                    LinkTreeModel model = new LinkTreeModel(linktree);
473:                    webTree.setModel(model);
474:                }
475:
476:                inRequest.putPageValue(name, webTree);
477:                return webTree;
478:            }
479:
480:            public void approveDraft(WebPageRequest inReq)
481:                    throws OpenEditException {
482:                LinkTree tree = loadLinks(inReq);
483:                if (tree.isDraft()) {
484:                    getWorkFlow().approve(tree.getPage().getPath(),
485:                            inReq.getUser());
486:                }
487:            }
488:
489:            public WorkFlow getWorkFlow() {
490:                return fieldWorkFlow;
491:            }
492:
493:            public void setWorkFlow(WorkFlow inWorkFlow) {
494:                fieldWorkFlow = inWorkFlow;
495:            }
496:
497:        }
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.