1    package com.instantbank.lettertemplate.control.ejb.handlers;
2    
3    import java.util.ArrayList;
4    import java.rmi.RemoteException;
5    import javax.naming.InitialContext;
6    import javax.naming.NamingException;
7    import javax.ejb.CreateException;
8    import javax.ejb.DuplicateKeyException;
9    import javax.ejb.FinderException;
10   
11   import com.instantbank.common.utilcomponents.JNDINames;
12   import com.instantbank.common.utilcomponents.Debug;
13   import com.instantbank.lettertemplate.control.event.TemplatesEvent;
14   import com.instantbank.common.utilcomponents.CodeDescription;
15   import com.instantbank.component.lettertemplate.ejb.LetterTemplate;
16   import com.instantbank.lettertemplate.control.LetterTemplateEventException;
17   import com.instantbank.lettertemplate.control.event.LetterTemplateEvent;
18   
19   /**
20    *  Letter Templates usecase: handler of user requests in the Services layer
21    *
22    * @author Instant-bank (Roberto Contreras)
23    * @created August 2002
24    */
25   public class TemplatesHandler extends StateHandlerSupport {
26   
27     private Debug debug = null;
28   
29   
30     /**
31      *  principal method that process an TemplatesEvent invoking Model EJBs
32      *  methods
33      *
34      * @param event event corresponding to user request
35      * @return answer to event
36      * @exception LetterTemplateEventException
37      */
38     public Object perform(LetterTemplateEvent event)
39        throws LetterTemplateEventException {
40       debug = new Debug();
41       debug.setDebugginOn(true);
42       debug.setPreMessage("** TemplatesHandler-services tier: ");
43   
44       Object answer = "";
45       TemplatesEvent ce = (TemplatesEvent)event;
46   
47       switch (ce.getActionType()) {
48   
49         case TemplatesEvent.LIST_TEMPLATES_NAMES:
50         {
51           debug.println("LIST_TEMPLATES_NAMES event");
52           try {
53             LetterTemplate letterTemplate
54                = machine.getLetterTemplateControllerEJB()
55               .getLetterTemplate
56               (ce.getCompanyId(), ce.getUserId());
57   
58             // invoking EJB methods :
59             ArrayList listsTemplatesCategories = new ArrayList(2);
60   
61             CodeDescription[] listCategories =
62               letterTemplate.loadCategories();
63   
64             ArrayList listTemplates
65                = letterTemplate.loadAllTemplatesDescription();
66   
67             listsTemplatesCategories.add(listCategories);
68             listsTemplatesCategories.add(listTemplates);
69   
70             answer = listsTemplatesCategories;
71           }
72           catch(Exception e) {
73             // podrian distinguirse: RemoteException,
74             // CreateException, FinderException, NamingException, ...
75             throw new LetterTemplateEventException(e.getMessage());
76           }
77   
78         }
79           break;
80         case TemplatesEvent.UPDATE_TEMPLATES_NAMES:
81         {
82           debug.println("UPDATE_TEMPLATES_NAMES event");
83           try {
84             LetterTemplate letterTemplate
85                = machine.getLetterTemplateControllerEJB()
86               .getLetterTemplate
87               (ce.getCompanyId(), ce.getUserId());
88   
89             answer = letterTemplate.applyItemsTemplate(ce.getItems());
90           }
91           catch(Exception e) {
92             throw new LetterTemplateEventException(e.getMessage());
93           }
94   
95         }
96           break;
97         default:
98           debug.println("Error: not implemented yet");
99           break;
100      }
101      return answer;
102    }
103  }
104  
105