KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > WebManPreview


1 import com.teamkonzept.lib.*;
2 import com.teamkonzept.web.*;
3 import com.teamkonzept.field.*;
4 import com.teamkonzept.field.db.queries.*;
5 import com.teamkonzept.db.*;
6 import com.teamkonzept.webman.*;
7 import com.teamkonzept.webman.db.*;
8 import de.webman.generator.*;
9
10 import java.io.*;
11 import java.util.*;
12 import java.sql.*;
13 import java.text.*;
14 import javax.servlet.http.*;
15
16 import org.apache.log4j.Category;
17
18 public class WebManPreview
19 {
20     
21     private static Category cat = Category.getInstance(WebManPreview.class);
22     
23     // TODO: Usage Meldung!
24
// Usage: WebManPreview docRootPath ownName [queryString]
25
//
26
// Z.B:
27
// c:\tomcat\jakarta-tomcat\webapps\webman webman\servlet\WebManServlet "TK_EV[ST_PREV_INDEX]=P&TK_PAR[SNODE]=3&TK_PAR[DOCNAME]=c_index.html"
28
//
29
public static void main( String JavaDoc[] args ) throws Exception JavaDoc
30     {
31         String JavaDoc docRoot = args[0];
32         String JavaDoc ownUrl = args[1];
33         TKWebmanDBManager.initConnection ("/webmandb.ini",false);
34         //TKWebmanInit.init(docRoot);
35
TKUploadField.initStaticsForUpload(docRoot);
36
37         String JavaDoc stdInData = null;
38         
39         //frank: falls drittes Argument vorhanden, nicht von stdin lesen...
40
if (args.length < 3)
41         {
42             int bufSize = 10;
43             byte inBuf[] = new byte[bufSize];
44             int offset = 0;
45             
46             do {
47                 int run = bufSize-offset;
48                 if (run <= 0) {
49                     run += bufSize;
50                     bufSize = bufSize*2;
51                     byte tmp[] = new byte[bufSize];
52                     System.arraycopy (inBuf,0,tmp,0,offset);
53                     inBuf = tmp;
54                 }
55     
56                 int n = System.in.read (inBuf,offset,run);
57                 if (n <= 0) break;
58     
59                 offset += n;
60     
61             } while (true);
62     
63             stdInData = new String JavaDoc(inBuf,0,0,offset);
64         }
65         
66         try {
67             registerAllFields();
68                 
69             GeneratorContext.setup ();
70             GeneratorContext.setPreviewMode(true);
71             
72             String JavaDoc queryString = args.length > 2 ? args[2] : stdInData;
73             if (queryString == null || queryString.length() == 0) {
74
75                 cat.error ("Querystring fehlt");
76                 return;
77             }
78             
79             TKHashtable pureParams;
80             Hashtable tmpHash = HttpUtils.parseQueryString(queryString);
81             if( tmpHash != null && tmpHash.size() > 0 ) {
82                 pureParams = new TKHashtable( tmpHash.size() );
83                 Enumeration keys = tmpHash.keys();
84             
85                 while( keys.hasMoreElements() ) {
86                     Object JavaDoc key = keys.nextElement();
87                     Object JavaDoc val = tmpHash.get( key );
88                     if( val instanceof Object JavaDoc[] ) {
89                         Object JavaDoc[] valVec = (Object JavaDoc[])val;
90                         if( valVec.length > 1 ) {
91                             pureParams.put( key, new TKVector( valVec ) );
92                         }
93                         else {
94                             pureParams.put( key, valVec[0] );
95                         }
96                     }
97                     else {
98                         pureParams.put( key, val );
99                     }
100                 }
101             }
102             else {
103                 pureParams = new TKHashtable();
104             }
105         
106             TKParams params = new TKParams( pureParams );
107             TKHashtable evClass = params.getClass( "EV" );
108             Enumeration evEnum = ( evClass != null ? evClass.keys() : null );
109
110             String JavaDoc event = ( evEnum != null && evEnum.hasMoreElements() ?
111                 (String JavaDoc) evEnum.nextElement() : null );
112
113             Preview preview = new Preview (ownUrl,docRoot,params,System.out);
114
115             if (event == null) cat.error ("Wrong event: "+event);
116
117             else if (event.equalsIgnoreCase("CE_PREV_INDEX"))
118                 preview.doPreviewIndexPerContent ();
119         
120             else if (event.equalsIgnoreCase("CE_PREVIEW"))
121                 preview.doPreview ();
122
123             else if (event.equalsIgnoreCase("ST_PREV_INDEX"))
124                 preview.doPreviewIndexPerSiteNode ();
125
126             else cat.error ("Wrong event: "+event);
127
128         }
129         catch( Throwable JavaDoc e ) {
130             TKWebmanDBManager.deregister( true );
131             cat.error("main", e);
132         }
133         
134         TKWebmanDBManager.deregister( false );
135     }
136
137     public static void registerAllFields() throws Throwable JavaDoc
138     {
139
140         //---- Die Tabelle FIELD_CLASS ausleisen und in einem Vector speichern ----//
141
TKQuery q = TKWebmanDBManager.newQuery( TKDBFormFieldClassGet.class );
142         q.execute();
143         ResultSet rs = q.fetchResultSet();
144
145         //---- FIELD_TYPE = CLASS_ID FIELD_CLASS = PATH ----//
146
TKVector classVector = new TKVector();
147         while(rs.next()){
148             String JavaDoc rowArray[] = { rs.getString("FIELD_TYPE"), rs.getString("FIELD_CLASS") };
149             classVector.addElement(rowArray);
150         }
151
152         //---- Alle Fields registrieren ----//
153
for (int i=0; i < classVector.size(); i++) {
154             Object JavaDoc element = classVector.elementAt(i);
155             String JavaDoc classInfoArray[] = (String JavaDoc[]) element;
156
157             TKFieldRegistry.registry.registerClass(classInfoArray[0], classInfoArray[1]);
158         }
159
160     }
161
162 }
163
Popular Tags