KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > de > webman > content > eventhandler > CEArrangeMoveHandler


1 package de.webman.content.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.db.queries.content.*;
10 import com.teamkonzept.webman.mainint.events.*;
11 import com.teamkonzept.lib.*;
12 import com.teamkonzept.field.*;
13 import com.teamkonzept.field.db.*;
14 import com.teamkonzept.db.*;
15 import com.teamkonzept.publishing.markups.*;
16
17 import java.sql.*;
18 import java.io.*;
19
20 /**
21 * Verschieben von Knoten im Contenttree
22 * danach: Anzeigen der Maske zum Neuordnen des Contenttree
23 * @author $Author: alex $
24 * @version $Revision: 1.3 $
25 */

26 public class CEArrangeMoveHandler extends DefaultEventHandler implements ParameterTypes, FrameConstants, DatabaseDefaults
27 {
28     // private static final String BEFORE = "1";
29
// private static final String AFTER = "-1";
30
private static final String JavaDoc INSIDE ="0";
31     
32     private CEArrangeMoveHandler()
33     {}
34     
35     private static CEArrangeMoveHandler instance = new CEArrangeMoveHandler();
36     
37     public static CEArrangeMoveHandler getInstance()
38     {
39         return instance;
40     }
41     
42     public void handleEvent(TKEvent evt) throws TKException
43     {
44         try
45         {
46             CEUtils.checkEvent(evt);
47             String JavaDoc mode = evt.getParameter( PARAMETER, "MOVE_MODE" );
48             String JavaDoc src = evt.getParameter( PARAMETER, "SRC_NODE" );
49             String JavaDoc dst = evt.getParameter( PARAMETER, "DST_NODE" );
50             
51             /** erstmal prüfen, ob die Verschiebungen konsistent sind
52                 d.h. Forms kompatibel
53                 Wenn der modus innerhalb ist, ist der Vater markiert !!!
54                 Bedeutung der Modi :
55                 1 = davor
56                 -1 = danach
57                 0 = mittenrein
58             */

59             if( (mode != null) && (src != null) && (dst != null) )
60             {
61                 TKQuery q;
62                 // src und dest muessen verglichen werden !!!
63
// SRC Query
64
q = TKDBManager.newQuery(SelectContentTree.class);
65                 q.setQueryParams( "ID", new Integer JavaDoc( src ) );
66                 q.execute();
67                 ResultSet rs = q.fetchResultSet();
68                 rs.next();
69                 String JavaDoc srcType = rs.getString("CONTENT_NODE_TYPE");
70                 String JavaDoc srcForm = rs.getString("CONTENT_FORM");
71                 
72                 // DEST Query !!!
73
q = TKDBManager.newQuery(TKDBContentTreeGetParentInfo.class);
74                 // sonst ...
75
q.setQueryParams( "CONTENT_NODE_ID", new Integer JavaDoc( dst ) );
76                 q.execute();
77                 rs = q.fetchResultSet();
78                 rs.next();
79                 // erst kommt Papa dann der eigentliche Knoten
80
// falls Papa ein GroupNode, sollten die Forms übereinstimmen !!
81
String JavaDoc destParentTyp = rs.getString("CONTENT_NODE_TYPE");
82                 String JavaDoc destParentForm = rs.getString("CONTENT_FORM");
83                 rs.next();
84                 // erst kommt Papa dann der eigentliche Knoten
85
// falls Papa ein GroupNode, sollten die Forms übereinstimmen !!
86
String JavaDoc destTyp = rs.getString("CONTENT_NODE_TYPE");
87                 String JavaDoc destForm = rs.getString("CONTENT_FORM");
88                 
89                 if (destTyp.equals(DIRECTORY_NODE))
90                 {
91                     // Dest ist Directory -> alles egal
92
}
93                 else if (destTyp.equals(SINGLE))
94                 {
95                     // Dest ist Content -> Parent Verzeichis ? egal, Parent Group ? Form checken
96
if (destParentTyp.equals(GROUP) && !destParentForm.equals(srcForm))
97                         throw new TKUserException("Typen stimmen nicht ueberein", NO_MATCHING_TYPES, USER_SEVERITY, false, null);
98                     // sonst egal
99
}
100                 else
101                 {
102                     // Dest ist Group ? innerhalb ? Form checken davor danach egal !
103
if (srcType.equals(DIRECTORY_NODE))
104                         throw new TKUserException("Typen stimmen nicht ueberein", NO_MATCHING_TYPES, USER_SEVERITY, false, null);
105                      
106                     if (mode.equals(INSIDE))
107                     {
108                         if ( !destForm.equals(srcForm))
109                             throw new TKUserException("Typen stimmen nicht ueberein", NO_MATCHING_TYPES, USER_SEVERITY, false, null);
110                     }
111                     else
112                     {
113                         // eigentlich auch egal !
114
}
115                 }
116                     // so geht das nicht
117
// dann verschieben
118
q = TKDBManager.newQuery(TKDBContentTreeMoveNode.class);
119                 q.setQueryParams( "SRC_NODE_ID", new Integer JavaDoc( src ) );
120                 q.setQueryParams( "DEST_NODE_ID", new Integer JavaDoc( dst ) );
121                 q.setQueryParams( "UPORDOWN", new Integer JavaDoc( mode ) );
122                 q.execute();
123             }
124             CEArrangeShowHandler.getInstance().handleEvent(evt);
125         }
126         catch (Throwable JavaDoc e)
127         {
128             // TO DO : Analyze Exception !
129
throw WebmanExceptionHandler.getException(e);
130         }
131     }
132     
133     public boolean isHandler(TKEvent evt)
134     {
135         return evt.getName().equalsIgnoreCase("CE_ARRANGE_MOVE");
136     }
137 }
138
Popular Tags