KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > openedit > generators > AdminToolBarGenerator


1 /*
2  * Created on Dec 28, 2004
3  */

4 package com.openedit.generators;
5
6 import java.io.ByteArrayOutputStream JavaDoc;
7 import java.io.IOException JavaDoc;
8 import java.io.OutputStreamWriter JavaDoc;
9 import java.io.StringWriter JavaDoc;
10 import java.io.Writer JavaDoc;
11
12 import org.apache.commons.logging.Log;
13 import org.apache.commons.logging.LogFactory;
14
15 import com.openedit.ModuleManager;
16 import com.openedit.OpenEditException;
17 import com.openedit.WebPageRequest;
18 import com.openedit.page.Page;
19 import com.openedit.users.User;
20
21 /**
22  * Inserts a decoration header just after the opening "body" tag
23  * and inserts a decoration footer just before the closing "body" tag.
24  *
25  * @author Matthew Avery, mavery@einnovation.com
26  */

27 public class AdminToolBarGenerator extends BaseToolBarGenerator
28 {
29     public static Log log = LogFactory.getLog(AdminToolBarGenerator.class);
30     protected ModuleManager fieldModuleManager;
31     
32     protected String JavaDoc fieldSearch;
33     
34     public AdminToolBarGenerator()
35     {
36     }
37     
38     public void setSearch( String JavaDoc inHtmlTag )
39     {
40         fieldSearch = inHtmlTag;
41     }
42     public void generate( WebPageRequest inContext, Page inPage, Output inOut ) throws OpenEditException
43     {
44         User user = inContext.getUser();
45         if( user == null || !user.hasPermission("oe.administration"))
46         {
47             getWraps().generate(inContext, inPage, inOut);
48             return;
49         }
50         
51         Output oldOut = inContext.getPageStreamer().getOutput();
52         //check login
53

54         try
55         {
56             ByteArrayOutputStream JavaDoc scapture = new ByteArrayOutputStream JavaDoc();
57             Writer JavaDoc capture = new OutputStreamWriter JavaDoc(scapture, inPage.getCharacterEncoding() );
58             Output fakeout = new Output(capture, scapture );
59             inContext.getPageStreamer().setOutput(fakeout);
60             
61             getWraps().generate(inContext, inPage, fakeout);
62             
63             inContext.getPageStreamer().setOutput(oldOut);
64             
65             fakeout.getWriter().flush();
66             String JavaDoc pageContent = scapture.toString(inPage.getCharacterEncoding());
67             int start = pageContent.indexOf(getSearch());
68             if ( start == -1)
69             {
70                 writePage( pageContent, inOut );
71                 return;
72             }
73             int end = pageContent.indexOf("\n", start);
74         
75             inOut.getWriter().write( pageContent.substring(0,end +1 ) );
76             Page header = getPageManager().getPage(getHeaderPath() );
77
78 //No need to run actions right now. Might need some other day
79
// WebPageRequest headerreq = inContext.copy(header);
80
// getModuleManager().executePageActions(headerreq);
81
// if( !headerreq.hasRedirected())
82
// {
83
header.generate(inContext, inOut);
84                     
85                 inOut.getWriter().write(pageContent.substring( end));
86                 inOut.getWriter().flush();
87 // }
88
}
89         catch ( IOException JavaDoc ex)
90         {
91             log.error(ex);
92         }
93         
94     }
95
96     public String JavaDoc getSearch()
97     {
98         return fieldSearch;
99     }
100
101     public ModuleManager getModuleManager()
102     {
103         return fieldModuleManager;
104     }
105
106     public void setModuleManager(ModuleManager inModuleManager)
107     {
108         fieldModuleManager = inModuleManager;
109     }
110
111
112 }
113
Popular Tags