001: package de.webman.template.eventhandler;
002:
003: import com.teamkonzept.db.*;
004: import com.teamkonzept.webman.mainint.db.queries.*;
005: import com.teamkonzept.webman.mainint.events.*;
006: import com.teamkonzept.webman.mainint.*;
007: import com.teamkonzept.webman.*;
008: import com.teamkonzept.web.*;
009: import com.teamkonzept.lib.*;
010: import java.io.*;
011:
012: /**
013: * Update eines Templates,
014: * wird z.B. nach Umbenennen oder Kopieren aufgerufen
015: *
016: * @author $Author: alex $
017: * @version $Revision: 1.2 $
018: */
019: public class TEUpdateHandler extends DefaultEventHandler implements
020: ParameterTypes, FrameConstants {
021: private TEUpdateHandler() {
022: }
023:
024: private static TEUpdateHandler instance = new TEUpdateHandler();
025:
026: public static TEUpdateHandler getInstance() {
027: return instance;
028: }
029:
030: public void handleEvent(TKEvent evt) throws TKException {
031: try {
032: // Update wird nach Rename aufgerufen und nach Copy,
033: // so das zwei Fälle abgefragt werden mussen
034:
035: String tmplId = evt.getParameter(PARAMETER, "TEMPLATE_ID");
036: // der neue Name des Templates
037: String tmplName = evt.getParameter(PARAMETER,
038: "TEMPLATE_NAME");
039: // prüfen ob es eine gültige Templateendung hat
040: if (!TEUtils.isValidTemplateName(tmplName)) {
041: throw new TKUserException("Ungueltiger Name",
042: WRONG_TEMPLATE_NAME, USER_SEVERITY, false, null);
043: }
044: // der Name des Templates welches umbenannt wird
045: String tmplOldName = null;
046: tmplOldName = evt.getParameter(PARAMETER,
047: "TEMPLATE_OLD_NAME");
048: // der Name des Templates welches kopiert wird
049: String tmplCopyName = null;
050: tmplCopyName = evt.getParameter(PARAMETER,
051: "TEMPLATE_COPY_NAME");
052:
053: if (tmplOldName != null) {
054: // alte templatedatei
055: // TODO: fileNotFound abfangen
056: File dateiOrig = new File(evt.getHttpInterface()
057: .getDocumentRoot()
058: + File.separator
059: + TemplateUtils.getGenerationDirectory()
060: + tmplOldName);
061: File dateiNew = new File(evt.getHttpInterface()
062: .getDocumentRoot()
063: + File.separator
064: + TemplateUtils.getGenerationDirectory()
065: + tmplName);
066:
067: // umbenennen
068: dateiOrig.renameTo(dateiNew);
069:
070: // neu in der DB speichern
071: TKQuery q = TKDBManager.newQuery(TKDBTmplUpdate.class);
072: q.setQueryParams("TEMPLATE_ID", new Integer(tmplId));
073: q.setQueryParams("TEMPLATE_NAME", tmplName);
074: q.execute();
075: q.fetchResultSet();
076: } else if (tmplCopyName != null) {
077: // einlesen des alten Templates
078: File dateiOld = new File(evt.getHttpInterface()
079: .getDocumentRoot()
080: + File.separator
081: + TemplateUtils.getGenerationDirectory()
082: + tmplCopyName);
083: File dateiNew = new File(evt.getHttpInterface()
084: .getDocumentRoot()
085: + File.separator
086: + TemplateUtils.getGenerationDirectory()
087: + tmplName);
088: FileReader in = new FileReader(dateiOld);
089: FileWriter out = new FileWriter(dateiNew);
090: // kopieren
091: int c;
092: while ((c = in.read()) != -1) {
093: out.write(c);
094: }
095: in.close();
096: out.close();
097:
098: // neues Template in der DB anlegen
099: TKQuery query = TKDBManager.newQuery(TKDBTmplNew.class);
100: query.setQueryParams("TEMPLATE_NAME", tmplName);
101: query.execute();
102: query.fetchResultSet();
103: }
104:
105: TKHTMLTemplate frame = evt.getPrepHTMLTemplate("f_te.tmpl");
106: HTMLUtils.fillFrameSet(frame, LEFT_FRAME_WIDTH_SMALL,
107: "TE_SHOWLIST", "EMPTY");
108: WebManEvent.fillEventsIntoTemplate(evt.getRemoteUser(),
109: frame, ContextConstants.TEMPLATES);
110: evt.finishTemplate(frame);
111: } catch (Throwable t) {
112: throw WebmanExceptionHandler.getException(t);
113: }
114:
115: }
116:
117: public boolean isHandler(TKEvent evt) {
118: return evt.getName().equalsIgnoreCase("TE_UPDATE");
119: }
120: }
|