KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > de > webman > sitetree > eventhandler > STExtModifyHandler


1 package de.webman.sitetree.eventhandler;
2
3 import com.teamkonzept.web.*;
4 import com.teamkonzept.webman.*;
5 import com.teamkonzept.webman.db.TKWebmanDBManager;
6 import com.teamkonzept.webman.mainint.*;
7 import com.teamkonzept.webman.mainint.db.*;
8 import com.teamkonzept.webman.mainint.db.queries.*;
9 import com.teamkonzept.webman.mainint.events.*;
10 import com.teamkonzept.lib.*;
11 import com.teamkonzept.field.*;
12 import com.teamkonzept.field.db.*;
13 import com.teamkonzept.db.*;
14 import com.teamkonzept.publishing.markups.*;
15 import de.webman.content.eventhandler.CEUtils;
16 import java.sql.*;
17 import java.io.*;
18 import java.util.*;
19
20 /**
21  * Modifes either a new or an existing structure parameter.
22  *
23  * @author $Author: alex $
24  * @version $Revision: 1.6 $
25  */

26 public class STExtModifyHandler
27     extends DefaultEventHandler
28     implements ParameterTypes,
29                FrameConstants,
30                DatabaseDefaults
31 {
32
33     /** Kontext zum Löschen des Uploads */
34     static final String JavaDoc DELETE = "DELETE";
35     static final String JavaDoc EXT_MODIFY = "EXT_MODIFY";
36     static final String JavaDoc FORM_ID = "FORM_ID";
37     static final String JavaDoc TARGET = "TARGET";
38     static final String JavaDoc UPLOAD = "UPLOAD";
39
40     /**
41      * The singleton instance.
42      */

43     private static final STExtModifyHandler INSTANCE = new STExtModifyHandler();
44
45     /**
46      * Prevents outside instantiation.
47      */

48     private STExtModifyHandler ()
49     {
50         // NOP
51
}
52
53     /**
54      * Returns the singleton instance of this handler.
55      *
56      * @return the singleton instance of this handler.
57      */

58     public static STExtModifyHandler getInstance ()
59     {
60         return INSTANCE;
61     }
62
63     /**
64      * Handles the specified event.
65      *
66      * @param evt the event to be handled.
67      * @throws TKException if any error occurred during event handling.
68      */

69     public void handleEvent (TKEvent evt)
70         throws TKException
71     {
72         try
73         {
74             WebManEvent.checkEvent(evt.getRemoteUser(), evt.getName(), ContextConstants.SITE_TREE);
75             TKHashtable params = evt.getParams().getClass( PARAMETER );
76
77             TKHTMLTemplate t;
78
79             int formID =new Integer JavaDoc((String JavaDoc)params.get(FORM_ID)).intValue();
80
81             TKFormDBData data = new TKFormDBData(formID );
82             TKFormDBInterface.Get( data );
83             TKBaseField field = TKFieldRegistry.getFieldFromDB( data );
84
85             String JavaDoc action = evt.getParameter( ACTION, EXT_MODIFY );
86             String JavaDoc target = evt.getParameter( TARGET, EXT_MODIFY );
87             //---- ACTION: SHOWFILE ----//
88
if( target == null || target.equals("") )
89                 target = evt.getParameter( PARAMETER, TARGET ) ;
90
91             TKUploadField extField = (TKUploadField) field.getTarget( target, "");
92
93             if(action != null && action.equals(UPLOAD)){
94
95                 t = evt.getPrepHTMLTemplate( "st_fields.tmpl" );
96
97                 TKUploadFileInputStream fileInputStr = ((TKUploadFileInputStream)params.get( TKUploadField.GETFILENAMESTREAM ));
98                 File tmpFile = fileInputStr.file;
99                 /* TKUploadField eventually modifies NEW_FILENAME */
100                 String JavaDoc filename = evt.getParameter( PARAMETER,TKUploadField.NEW_FILENAME);
101                 if(filename == null || filename.equals(""))
102                 {
103                     filename = extField.splitBrowserFileName(fileInputStr.getUploadFileName());
104                 }
105                 filename = TKUploadField.checkFileName(filename);
106                 TKHashtable header = fileInputStr.getUploadHeader();
107                 String JavaDoc contentType = TKUploadField.fixContentType(header.get(TKUploadField.CONTENT_TYPE).toString());
108
109                 // Mimetype checken !
110
if (! extField.compareMimes(contentType))
111                 {
112                     throw new TKUserException("Mime Typen matchen nicht", NOT_MATCHING_MIMETYPES, USER_SEVERITY, false, null);
113                 }
114
115                  if (extField.isSaveInDB())
116                 {
117                     // save in DB
118
int newMediaID = MediaManager.storeMedia(tmpFile, filename);
119                     params.put( target+"."+TKUploadField.NEW_MEDIA_ID, String.valueOf(newMediaID));
120                     tmpFile.delete();
121                 }
122                 else
123                 {
124                     // Upload kommt ins Filesystem
125
extField.saveToFilesystem(params, tmpFile, filename);
126                     t.set( TKUploadField.DOCUMENTS_FROM_FILESYSTEM , Boolean.TRUE);
127                     params.remove(target+".MEDIA_ID"); // falls sie vorher (Umschalten im Formular) da war
128

129                 }
130
131                 // delete the tempfile
132
fileInputStr.close();
133
134
135
136                 Object JavaDoc realData = field.compileData( "", evt.getParams().getClass( PARAMETER ), new TKHashtable() );
137
138                 //TKHashtable realDataHash = (TKHashtable)realData;
139

140                 field.fillIntoTemplate( t, realData, "" );
141
142                 extField.extModify(action, t,params, target );
143
144             }
145             else if(action != null && action.equals(DELETE)){
146                 t = evt.getPrepHTMLTemplate( "st_fields.tmpl" );
147
148                 //String oldMediaID=(String) params.put( target+"."+TKUploadField.MEDIA_ID_PARNAME,"");
149
params.put( target+"."+TKUploadField.MEDIA_ID_PARNAME,"");
150                 //String oldname =(String) params.put( target,""); // Filneame
151
params.put( target,""); // Filneame
152
Object JavaDoc realData = field.compileData( "", evt.getParams().getClass( PARAMETER ), new TKHashtable() );
153                 field.fillIntoTemplate( t, realData, "" );
154
155             }
156             else
157             {
158                 // for actions: CANCEL, MODIFY,
159
t = evt.getPrepHTMLTemplate( "ce_upload.tmpl" );
160                 extField.extModify(action, t,params, target );
161             }
162             t.set(params);
163             WebManEvent.fillEventsIntoTemplate(evt.getRemoteUser(), t, SITE_TREE);
164             evt.finishTemplate(t);
165         }
166         catch (Throwable JavaDoc e)
167         {
168             // TO DO : Analyze Exception !
169
throw WebmanExceptionHandler.getException(e);
170         }
171     }
172
173     /**
174      * Checks wether this handler is capable to handle the specified event.
175      *
176      * @param evt the event to be handled.
177      * @return <CODE>true</CODE> if this handler is capable to handle the
178      * specified event, otherwise <CODE>false</CODE>.
179      */

180     public boolean isHandler (TKEvent evt)
181     {
182         return evt.getName().equalsIgnoreCase("ST_EXT_MODIFY");
183     }
184
185 }
186
Popular Tags