Advertisement

10.13.2008 at 01:45PM PDT, ID: 23810830
[x]
Attachment Details

i have this code which works great in test but in live i get an error in the catalina log. i am posting my code and the error please help

[x]
The Solution Rating System

With so many solutions, how can you tell which solutions are most likely to help you and which ones are not? To provide you with a tool to use, we rate our solutions based on various elements that most accurately determine if a solution is a quality solution. To explain what factors affect the solution rating, here are the elements we take into consideration when formulating our solution rating.

  • The Grade of the Solution
  • The Zone Rank of the Expert Providing the Solution
  • The Number of Author and Expert Comments
  • The Number of Experts Contributing
  • The Feedback of the Community

Your Input Matters
Because of the way the system is set up, the most important variable in this equation is you. As a member of Experts Exchange, you are able to cast your vote on the quality of the solutions in regard to how complete, accurate, helpful and easy to understand each solution is. When you provide your feedback, each rating is adjusted accordingly. So, if you see a solution that has a poor rating that you think is a good solution, let us know by rating it. As you do, the rating will be adjusted and will become more accurate for other members of our site.

If you have any suggestions that you would like to make for our rating system, please ask a question in the Suggestions Zone of Community Support.

Thank you!

6.0
i have this code for sending emails to users. the client end is a jsp and it calls a controller. they both work fine in the test environment but in the live environment i can not send attachments the email sending fails. i am attaching both the jsp, the controller class and the catalina error. please help.

catalina error:
java.io.FileNotFoundException: C:\a.txt (No such file or directory)
      at java.io.FileInputStream.open(Native Method)
      at java.io.FileInputStream.<init>(FileInputStream.java:106)
      at java.io.FileInputStream.<init>(FileInputStream.java:66)
      at com.comtrol.actions.EmailAction.emailInsertSave(EmailAction.java:557)
      at com.comtrol.actions.EmailAction.perform(EmailAction.java:103)
      at com.synfoserv.actions.ActionServlet.service(ActionServlet.java:186)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
      at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
      at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
      at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
      at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
      at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
      at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
      at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
      at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
      at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
      at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
      at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:535)
      at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
      at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
      at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
      at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
      at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
      at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
      at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
      at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
      at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
      at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
      at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
      at java.lang.Thread.run(Thread.java:534)


jsp code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>

<%@ include file="/header.jsp" %>
<%@ page import = "com.synfoserv.beans.*" %>
<%@ page import = "java.util.*" %>
<jsp:useBean id="listing" class="java.util.ArrayList" scope="request"></jsp:useBean>

<title><database:label controlname="header_emailedit"/></title>
<script type="text/javascript" src="https://localhost:8443/crm/js/jscripts/tiny_mce/tiny_mce.js"></script>
<script type="text/javascript">
      tinyMCE.init({
            mode : "textareas",
            theme : "advanced",
            plugins : "safari,spellchecker,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,imagemanager,filemanager",
            theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect,fontselect,fontsizeselect",
theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor",
theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,iespell,advhr,|,print,|,ltr,rtl,|,fullscreen",
theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops,spellchecker,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,blockquote,pagebreak,|,insertfile,insertimage",
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "left",
theme_advanced_statusbar_location : "bottom",
theme_advanced_resizing : true,
// Drop lists for link/image/media/template dialogs
template_external_list_url : "js/template_list.js",
external_link_list_url : "js/link_list.js",
external_image_list_url : "js/image_list.js",
media_external_list_url : "js/media_list.js",
spellchecker_rpc_url : "http://localhost:8084/crm/js/jscripts/tiny_mce/plugins/spellchecker/rpc.php",
spellchecker_languages : "+English=en" ,
      });
      </script>
</head>

<body class=stdbody>

<script>
parent.menu.setSubmit();
</script>
<%
//if cmd is to insert a record -> change the command to insert
String sCmd = (String) request.getAttribute ("cmd");

if (sCmd==null) sCmd=request.getParameter ("cmd");

if (sCmd.endsWith ("contextedit") ){
            sCmd = sCmd.substring (0,sCmd.length()-11)+"save";
} else if (sCmd.endsWith ("edit")){
      sCmd = sCmd.substring (0,sCmd.length()-4)+"save";
} else if (sCmd.endsWith ("insert")) {
      sCmd = sCmd + "save";
}
UserBean uBean = (UserBean) session.getAttribute("userbean");
request.setAttribute("browser",uBean.getBrowser());
%>      
<script LANGUAGE="JavaScript1.2">

function removeAttachment(){
  document.dataentry.filelist.remove(document.dataentry.filelist.selectedIndex);
}

function addFile(sFile){
  var option = document.createElement("OPTION");
  option.text = sFile;
  option.value = sFile;
  if(document.dataentry.browser.value == "IE"){
    document.dataentry.filelist.add(option);
  }else{
    document.dataentry.filelist.add(option,null);
  }
  document.dataentry.fileselector.value="";
  document.dataentry.fileselector.text="";
}

function addFiles(fl){
  var newOpt1 = new Option(document.dataentry.file2upload.value, document.dataentry.file2upload.value);
  fl.options[fl.length] = newOpt1;
  document.dataentry.file2upload.value = "";
  updateList(fl);
}

function removeFiles(fl){
  var selItem = fl.selectedIndex;
  fl.options[selItem] = null;
  updateList(fl)
}

function updateList(fl){
  var i;
  document.dataentry.filelist.value = "";
  for (i = 0; i < fl.length; i++){
    document.dataentry.filelist.value = document.dataentry.filelist.value + fl.options[i].value + ";";
  }
}

<!--
function validate(cmd)
{
  var i = 0;
  if ((document.dataentry.emailto.value=="")||
      (document.dataentry.emailfrom.value=="") ||
      (document.dataentry.emailsubject.value=="")) {
          alert ("You must fill in all of the required fields!")
    return false;
  } else {
    setCmd(cmd);
  }
}
//-->
</script>

<form name=dataentry action="Controller?cmd=email_insertsave" ENCTYPE="multipart/form-data" onSubmit="return validate('<%=sCmd%>');" method="post" onClick="highlight(event)" onKeyPress="highlight(event)">

  <input type="hidden" name="action" value="<%=request.getAttribute("action")%>">
  <input type="hidden" name="cmd" value="">
  <input type="hidden" name="browser" value="<%=request.getAttribute("browser")%>">

  <TABLE width="100%" cellpadding="0" cellspacing="1">
    <TR>
      <TD class=headerow colSpan=4>
        <TABLE width="100%" cellpadding="0" cellspacing="0">
          <TR>
            <TD class=headerow colspan="2">
              <database:label controlname="header_emailedit"/>
            </TD>
            <TD align="right">
              <database:nav controlname="button_send" modulename="CALL"
                            isbutton="y" security="CHANGE" buttontype="submit"/>
              <database:nav controlname="button_cancel" modulename="CALL"
                            isbutton="y" security="CHANGE" buttontype="reset"/>
            </TD>
          </TR>
        </TABLE>
      </TD>
    </TR>

    <%
      Iterator iter = listing.iterator();
      boolean isHighlighed = false;
      iter.hasNext();
      CallListBean  clbObj = (CallListBean) iter.next();
    %>      

    <input type="hidden" name="companyid" value="<%=clbObj.getCompanyId()%>">
    <input type="hidden" name="divisionid" value="<%=clbObj.getDivisionId()%>">
    <input type="hidden" name="personid" value="<%=clbObj.getPersonId()%>">
    <input type="hidden" name="callid" value="<%=clbObj.getCallId()%>">
    <input type="hidden" name="assignto" value="<%=clbObj.getAssignTo()%>">
    <input type="hidden" name="activitytype" value="<%=clbObj.getActivityType()%>">
    <input type="hidden" name="regarding" value="<%=clbObj.getRegarding()%>">
    <input type="hidden" name="status" value="<%=clbObj.getStatus()%>">
    <input type="hidden" name="duedate" value="<%=clbObj.getDueDate()%>">
    <input type="hidden" name="duetime" value="<%=clbObj.getDueTime()%>">
    <input type="hidden" name="emailto" value="<%=request.getAttribute("emailto")%>">
    <input type="hidden" name="emailfrom" value="<%=request.getAttribute("emailfrom")%>">
    <input type="hidden" name="from" value="<%=request.getAttribute("from")%>">
    <input type="hidden" name="to" value="<%=request.getAttribute("to")%>">
    <input type="hidden" name="bcc" value="<%=request.getAttribute("to")%>">

    <TR>
      <TD class=labelcolumn><database:label controlname="email_to"/></TD>
      <TD class=textcolumn ><%=request.getAttribute("to")%></TD>
      <TD class=labelcolumn><database:label controlname="email_from"/></TD>
      <TD class=textcolumn><%=request.getAttribute("from")%></TD>
    </TR>
    <TR>
      <TD class=labelcolumn></TD>
      <TD class=textcolumn ><%=request.getAttribute("emailto")%></TD>
      <TD class=labelcolumn></TD>
      <TD class=textcolumn><%=request.getAttribute("emailfrom")%></TD>
    </TR>
    <TR>
      <TD class=labelcolumn colspan='1'>CC:</TD>
      <TD class=textcolumn colspan='3'>
        <INPUT name='cclist' value='' style="WIDTH: 400px;" class="textbox"></INPUT>
        <LABEL>&nbsp;(Use semi-colon as address delimiter)</LABEL>
      </TD>
    </TR>
    <TR>
      <TD class=labelcolumn colspan='1'>BCC:</TD>
      <TD class=textcolumn colspan='3'>
        <INPUT name='bcclist' value='<%=request.getAttribute("bcc")%>'
               style="WIDTH: 400px;" class="textbox"></INPUT>
        <LABEL>&nbsp;(Use semi-colon as address delimiter)</LABEL>
      </TD>
    </TR>
    <TR>
      <TD class=labelcolumn colspan=1><database:label controlname="email_subject"/></TD>
      <TD class=textcolumn colspan=3>
        <INPUT name="emailsubject" class="required" style="WIDTH: 100%;"
               value="<%=clbObj.getSummary()%>"></INPUT>  
        <div class=error><%=request.getAttribute("emailsubject_error")%></div>
      </TD>
    </TR>
    <TR></TR>
    <TR>
      <TD class=labelcolumn colspan="2"><database:label controlname="email_body"/></TD>
      <TD colspan="2" class=textcolumn></TD>
    </TR>
    <TR>
      <TD class=textcolumn colSpan=4>
        <TEXTAREA  name="emailbody" class=required
                   style="WIDTH: 100%; HEIGHT: 200px"><%=clbObj.getNote()%></TEXTAREA>
          <div class=error><%=request.getAttribute("emailbody_error")%></div>
      </TD>
    </TR>
    <TR>
      <TD class=labelcolumn colspan='4'>File Attachment: (attachment is placed in the documents area)</TD>
    </TR>  
    <TR>
      <TD class=labelcolumn colspan='1'>Attach:</TD>
      <TD class=textcolumn colspan='3' align='left'>
        <INPUT type='FILE' name='file2upload' size='50' maxlength='255'></INPUT>
        <INPUT type='button' value='Add' name='fileadd' onclick='addFiles(this.form.uploadlist);'></INPUT>
      </TD>
    </TR>
    <TR>
      <TD colspan='1' align='left'>File List:</TD>
      <TD colspan='3' align='left'>
        <SELECT name='uploadlist' style='WIDTH: 400px' size='10'></SELECT>
        <INPUT type='hidden' name='filelist'></INPUT>
        <INPUT type='button' value='Remove' name='fileremove' onclick='removeFiles(this.form.uploadlist);'></INPUT>
      </TD>
    </TR>
    <TR>
      <TD class=labelcolumn style='HEIGHT: 10px;'></TD>
      <TD class=labelcolumn style='HEIGHT: 10px;'></TD>
      <TD class=labelcolumn style='HEIGHT: 10px;'></TD>
      <TD class=labelcolumn style='HEIGHT: 10px;'></TD>
    </TR>
    <TR>
      <TD class=labelcolumn><database:label controlname="create_date"/></TD>
      <TD class=textcolumn ><%=clbObj.getCreateDate()%></TD>
      <TD class=labelcolumn><database:label controlname="create_user"/></TD>
      <TD  class=textcolumn ><%=clbObj.getCreateUser()%></TD>
    </TR>
    <TR>
      <TD class=labelcolumn><database:label controlname="modify_date"/></TD>
      <TD class=textcolumn ><%=clbObj.getModifyDate()%></TD>
      <TD class=labelcolumn><database:label controlname="modify_user"/></TD>
      <TD class=textcolumn ><%=clbObj.getModifyUser()%></TD>
    </TR>
    <TR>
      <TD class=headerow colSpan=4>
        <TABLE width="100%" cellpadding="0" cellspacing="0">
          <TR>
            <TD class=headerow colspan="2">
              <database:label controlname="header_emailedit"/>
            </TD>
            <TD align="right">
              <database:nav controlname="button_send" modulename="CALL"
                            isbutton="y" security="CHANGE" buttontype="submit"/>
              <database:nav controlname="button_cancel" modulename="CALL"
                            isbutton="y" security="CHANGE" buttontype="reset"/>
            </TD>
          </TR>
        </TABLE>
      </TD>
    </TR>
  </TABLE>
</form>

<script>document.dataentry.emailsubject.focus();</script>
</body>
</html>

j am copying the controller class into the code snippet.

the code works fine. just i need to resolve the error or understand the reason for the error in live.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
230:
231:
232:
233:
234:
235:
236:
237:
238:
239:
240:
241:
242:
243:
244:
245:
246:
247:
248:
249:
250:
251:
252:
253:
254:
255:
256:
257:
258:
259:
260:
261:
262:
263:
264:
265:
266:
267:
268:
269:
270:
271:
272:
273:
274:
275:
276:
277:
278:
279:
280:
281:
282:
283:
284:
285:
286:
287:
288:
289:
290:
291:
292:
293:
294:
295:
296:
297:
298:
299:
300:
301:
302:
303:
304:
305:
306:
307:
308:
309:
310:
311:
312:
313:
314:
315:
316:
317:
318:
319:
320:
321:
322:
323:
324:
325:
326:
327:
328:
329:
330:
331:
332:
333:
334:
335:
336:
337:
338:
339:
340:
341:
342:
343:
344:
345:
346:
347:
348:
349:
350:
351:
352:
353:
354:
355:
356:
357:
358:
359:
360:
361:
362:
363:
364:
365:
366:
367:
368:
369:
370:
371:
372:
373:
374:
375:
376:
377:
378:
379:
380:
381:
382:
383:
384:
385:
386:
387:
388:
389:
390:
391:
392:
393:
394:
395:
396:
397:
398:
399:
400:
401:
402:
403:
404:
405:
406:
407:
408:
409:
410:
411:
412:
413:
414:
415:
416:
417:
418:
419:
420:
421:
422:
423:
424:
425:
426:
427:
428:
429:
430:
431:
432:
433:
434:
435:
436:
437:
438:
439:
440:
441:
442:
443:
444:
445:
446:
447:
448:
449:
450:
451:
452:
453:
454:
455:
456:
457:
458:
459:
460:
461:
462:
463:
464:
465:
466:
467:
468:
469:
470:
471:
472:
473:
474:
475:
476:
477:
478:
479:
480:
481:
482:
483:
484:
485:
486:
487:
488:
489:
490:
491:
492:
493:
494:
495:
496:
497:
498:
499:
500:
501:
502:
503:
504:
505:
506:
507:
508:
509:
510:
511:
512:
513:
514:
515:
516:
517:
518:
519:
520:
521:
522:
523:
524:
525:
526:
527:
528:
529:
530:
531:
532:
533:
534:
535:
536:
537:
538:
539:
540:
541:
542:
543:
544:
545:
546:
547:
548:
549:
550:
551:
552:
553:
554:
555:
556:
557:
558:
559:
560:
561:
562:
563:
564:
565:
566:
567:
568:
569:
570:
571:
572:
573:
574:
575:
576:
577:
578:
579:
580:
581:
582:
583:
584:
585:
586:
587:
588:
589:
590:
591:
592:
593:
594:
595:
596:
597:
598:
599:
600:
601:
602:
603:
604:
605:
606:
607:
608:
609:
610:
611:
612:
613:
614:
615:
616:
617:
618:
619:
620:
621:
622:
623:
624:
625:
626:
627:
628:
629:
630:
631:
632:
633:
634:
635:
636:
637:
638:
639:
640:
641:
642:
643:
644:
645:
646:
647:
648:
649:
650:
651:
652:
653:
654:
655:
656:
657:
658:
659:
660:
661:
662:
663:
664:
665:
666:
667:
668:
669:
670:
671:
672:
673:
674:
675:
676:
677:
678:
679:
680:
681:
682:
683:
684:
685:
686:
687:
688:
689:
690:
691:
692:
693:
694:
695:
696:
697:
698:
699:
700:
701:
702:
703:
704:
705:
706:
707:
708:
709:
710:
711:
712:
713:
714:
715:
716:
717:
718:
719:
720:
721:
722:
723:
724:
725:
726:
727:
728:
729:
730:
731:
732:
733:
734:
735:
736:
737:
738:
739:
740:
741:
742:
743:
744:
745:
746:
747:
748:
749:
750:
751:
752:
753:
754:
755:
756:
757:
758:
759:
760:
761:
762:
763:
764:
765:
766:
767:
768:
769:
770:
771:
772:
773:
774:
775:
776:
777:
778:
779:
780:
781:
782:
783:
784:
785:
786:
787:
788:
789:
790:
791:
792:
793:
794:
795:
796:
797:
798:
799:
800:
801:
802:
803:
804:
805:
806:
807:
808:
809:
810:
811:
812:
813:
814:
815:
816:
817:
818:
819:
820:
821:
822:
823:
824:
825:
826:
827:
828:
829:
830:
831:
832:
833:
834:
835:
836:
837:
838:
839:
840:
841:
842:
843:
844:
845:
846:
847:
848:
849:
850:
851:
852:
853:
854:
855:
856:
857:
858:
859:
860:
861:
862:
863:
864:
865:
866:
867:
868:
869:
870:
871:
872:
873:
874:
875:
876:
877:
878:
879:
880:
881:
882:
883:
884:
885:
886:
887:
888:
889:
890:
891:
892:
893:
894:
895:
896:
897:
898:
899:
900:
901:
902:
903:
904:
905:
906:
907:
908:
909:
910:
911:
912:
913:
914:
915:
916:
917:
918:
919:
920:
921:
922:
923:
924:
925:
926:
927:
928:
929:
930:
931:
932:
933:
934:
935:
936:
937:
938:
939:
940:
941:
942:
943:
944:
945:
946:
947:
948:
949:
950:
951:
952:
953:
954:
955:
956:
957:
958:
959:
960:
961:
962:
963:
964:
965:
966:
967:
968:
969:
970:
971:
972:
973:
974:
975:
976:
977:
978:
979:
980:
981:
982:
983:
984:
985:
986:
987:
988:
989:
990:
991:
992:
993:
994:
995:
996:
997:
998:
999:
1000:
1001:
1002:
1003:
1004:
1005:
1006:
1007:
1008:
1009:
1010:
1011:
1012:
1013:
1014:
1015:
1016:
1017:
1018:
1019:
1020:
1021:
1022:
1023:
1024:
1025:
1026:
1027:
1028:
1029:
1030:
1031:
1032:
1033:
1034:
1035:
1036:
1037:
1038:
1039:
1040:
1041:
1042:
1043:
1044:
1045:
1046:
1047:
1048:
1049:
1050:
1051:
1052:
1053:
1054:
1055:
1056:
1057:
1058:
1059:
1060:
1061:
1062:
1063:
1064:
1065:
1066:
1067:
1068:
1069:
1070:
1071:
1072:
1073:
1074:
1075:
1076:
1077:
1078:
1079:
1080:
1081:
1082:
1083:
1084:
1085:
1086:
1087:
1088:
1089:
1090:
1091:
1092:
1093:
1094:
1095:
1096:
1097:
1098:
1099:
1100:
1101:
1102:
1103:
1104:
1105:
1106:
1107:
1108:
1109:
1110:
1111:
1112:
1113:
1114:
1115:
1116:
1117:
1118:
1119:
1120:
1121:
1122:
1123:
1124:
1125:
1126:
1127:
1128:
1129:
1130:
1131:
1132:
1133:
1134:
1135:
1136:
1137:
1138:
1139:
1140:
1141:
1142:
1143:
1144:
1145:
1146:
1147:
1148:
1149:
1150:
1151:
1152:
1153:
1154:
1155:
1156:
1157:
1158:
1159:
1160:
1161:
1162:
1163:
1164:
1165:
1166:
1167:
1168:
1169:
1170:
1171:
1172:
1173:
1174:
1175:
1176:
1177:
1178:
1179:
1180:
1181:
1182:
1183:
1184:
1185:
1186:
1187:
1188:
1189:
1190:
1191:
1192:
1193:
1194:
1195:
1196:
1197:
1198:
1199:
1200:
1201:
1202:
1203:
1204:
1205:
1206:
1207:
1208:
1209:
1210:
1211:
1212:
1213:
1214:
1215:
1216:
1217:
1218:
1219:
1220:
1221:
1222:
1223:
1224:
1225:
1226:
1227:
1228:
1229:
1230:
1231:
1232:
1233:
1234:
1235:
1236:
1237:
1238:
1239:
1240:
1241:
1242:
1243:
1244:
1245:
1246:
1247:
1248:
1249:
1250:
1251:
1252:
1253:
1254:
1255:
1256:
1257:
1258:
1259:
1260:
1261:
1262:
1263:
1264:
1265:
1266:
1267:
1268:
1269:
1270:
1271:
1272:
package com.comtrol.actions;
 
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.DataHandler;
import java.io.File;
import java.io.FileInputStream;
 
import com.synfoserv.actions.*;
import com.synfoserv.global.connections.*;
import com.synfoserv.global.*;
import com.synfoserv.global.security.*;
import com.synfoserv.beans.*;
import com.synfoserv.global.util.*;
import java.util.*;
 
import com.comtrol.global.util.DataTypeConversion;
import com.comtrol.global.util.SConfigReader;
import com.comtrol.global.util.MultipartRequest;
import com.comtrol.global.CONSTANTS;
import com.comtrol.beans.*;
import com.comtrol.actions.CDMSAction;
 
import java.io.*;
  
/**
 * <p>Title: SynergyCRM</p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2003</p>
 * <p>Company: Comtrol Corporation</p>
 * @author Kevin Wilson
 * @version 1.0
 */
 
public class EmailAction extends ActionBase implements Action {
  private boolean MBLNDEBUGMODE = false; //for debugging message ease
  private HttpSession session= null;
  private String msUsername = null;
  private String msCallId;
  private boolean mbLimit=false;
  private String msNextJsp = "/norecord.jsp";
  private String msContentType = null;
  private File mFile = null;
  
  public EmailAction(){super();}
  
  public ActionRouter perform(HttpServlet servlet, 
                              HttpServletRequest req, 
                              HttpServletResponse res) 
                              throws java.io.IOException, ServletException{
    String sNextJsp = "/norecord.jsp";
    session=req.getSession();
    UserBean ubObject = (UserBean) session.getAttribute("userbean"); //retrieving security user bean
    msUsername = ubObject.getUserId();
    Hashtable htSecurity =  ubObject.getSecurity();
    String sCmd = (String) req.getParameter("cmd");
    
    //bypass this for emailing forgotten passwords.
    if(!sCmd.equals("email_reqpassword") & !sCmd.equals("email_getpassword")){
      //make sure user has valid perms for both
      mbLimit = ((SecurityBean) htSecurity.get("PERSON")).getLimit();
      if(!mbLimit)
        mbLimit = ((SecurityBean) htSecurity.get("CALL")).getLimit();
    }
    
    try{
      getConnection(servlet);
 
      if (sCmd.equals("email_edit")){
        populateErrorFields(req);
        boolean bOverride = true; // action is always based on context
        req.setAttribute("listing",emailEdit(req,bOverride));
        req.setAttribute("action","update"); 
        sNextJsp = msNextJsp;
      }else if (sCmd.equals("email_save")){
        if (isValid(req)){
          emailUpdate(req);
          req.setAttribute("listing",emailEdit(req,false));
        }
        sNextJsp = msNextJsp;
      }else if (sCmd.equals("email_insert")){
        //need to add context check to ensure process is not violated
        ContextBean cBean =  (ContextBean) session.getAttribute("context");
        String sPersonId = cBean.getPersonId();
        boolean bParentsExist = true;
       
        sNextJsp ="/norecord.jsp";  
        
        if(sPersonId == null || sPersonId.equalsIgnoreCase("0")){
          bParentsExist = false;
        }
 
        if(bParentsExist){
          populateErrorFields(req);
          req.setAttribute("listing",emailInsert(req));
          sNextJsp ="/EmailTo.jsp";
        }
      }else if (sCmd.equals("email_insertsave")){
        if (isValid(req)){
          emailInsertSave(servlet,req,res);
          req.setAttribute("listing",emailEdit(req,true));
          req.setAttribute("cmd","email_edit"); //resetting the servlet command to edit mode
          sNextJsp = msNextJsp;
        } else {
          req.setAttribute("cmd","email_insert");
          sNextJsp = "/EmailTo.jsp";
        }
      }else if (sCmd.equals("email_reqpassword")){
        sNextJsp = "/ForgotPassword.jsp";
      }else if (sCmd.equals("email_getpassword")){
        emailPassword(req);
        sNextJsp = "/ForgotPasswordMsg.jsp";
      }else if(sCmd.equals("email_rma")){
        populateErrorFields(req);
        req.setAttribute("listing",emailRMAInfo(req,servlet));
        sNextJsp ="/EmailRMA.jsp";
      }
      else if(sCmd.equals("email_case")){
        populateErrorFields(req);
        req.setAttribute("listing", emailCaseInfo(req, servlet));
        sNextJsp="/EmailTo.jsp";
      }
      else if(sCmd.equals("email_tracking")){
        populateErrorFields(req);
        req.setAttribute("listing", emailTrackingInfo(req, servlet));
        sNextJsp="/EmailTo.jsp";
      }
    }
    catch (Exception _e) {
      _e.printStackTrace();
      sNextJsp="/norecord.jsp";
    }
    finally {
      try{close();}
      catch (Exception _e) {
        _e.printStackTrace();
        sNextJsp="/norecord.jsp";
      }
    }
 
    return new ActionRouter(sNextJsp);
  }
  
  //This must pull the rma, its items and set the info to assign an action.
  private ArrayList emailRMAInfo(HttpServletRequest req,HttpServlet servlet){
    Utils utilObj = new Utils();
    ArrayList alCallList = new ArrayList();
    ArrayList alRMAList = new ArrayList();
    ArrayList alRMAItemList = new ArrayList();
    CallListBean clbObj = new CallListBean();
    CONSTANTS constants = new CONSTANTS();
    int nPorts = 0;
    
    HttpSession  session = req.getSession();
    ContextBean cBean = (ContextBean) session.getAttribute("context");
    UserBean uBean = (UserBean)session.getAttribute("userbean");
    
    String sRMAId = cBean.getRmaId();
    String sPEmail = getEmailFromPersonId(cBean.getPersonId());
    String sUEmail = uBean.getEMailAddress();
    String sPersonFrom = (uBean.getFirstName() + " " + uBean.getLastName());
    
    //setup call activity info
    clbObj.setAssignTo(msUsername);
    clbObj.setRegarding("RMA");
    clbObj.setActivityType("EMAIL");
    clbObj.setStatus("COMPLETED");
    clbObj.setDueDate(utilObj.formatDate(utilObj.currentTimestamp()));
    clbObj.setDueTime(utilObj.formatTime(utilObj.currentTimestamp()));
    clbObj.setComName(cBean.getComName());
    clbObj.setCompanyId(cBean.getCompanyId());
    clbObj.setDivName(cBean.getDivName());
    clbObj.setDivisionId(cBean.getDivisionId());
    clbObj.setFName(cBean.getFName());
    clbObj.setLName(cBean.getLName());
    clbObj.setPersonId(cBean.getPersonId());
    clbObj.setSummary("RMA [#" + sRMAId + "]: Comtrol Return Material Authorization");
    
    req.setAttribute("emailfrom", sUEmail);
    req.setAttribute("emailto", sPEmail);
    req.setAttribute("from", sPersonFrom);
    req.setAttribute("to", (cBean.getFName() + " " + cBean.getLName()));
    req.setAttribute("bcc", sUEmail);
    req.setAttribute("browser",uBean.getBrowser());
 
    String sRmaDate = req.getParameter("rmadate");
    String sRmaType = req.getParameter("type");
    String sAssignTo = req.getParameter("assnto");
    String sAuthBy = req.getParameter("authby");
    String sPrgId = req.getParameter("prgmid");
    String sProgramId = req.getParameter("programid");
    String sRegCode = req.getParameter("programregcode");
    String sRmaStatus = req.getParameter("rmastatus");
    
    StringBuffer sb = new StringBuffer();
    
    sb.append("-CUSTOMER SERVICE CONTACT-\n");
    sb.append(sPersonFrom + "<br>");
    sb.append(sUEmail + "<br>");
    sb.append("Toll Free: 1-800-926-6876<br>");
    sb.append("Local Area: 763-494-4100<br>");
    sb.append("<br>");
    sb.append("-RMA INFORMATION-<br>");
    sb.append("RMA #: " + sRMAId + "<br>");
    sb.append("RMA DATE: " + sRmaDate + "<br>");
    sb.append("RMA STATUS: " + sRmaStatus + "<br>");
    sb.append("ASSIGNED TO: " + sAssignTo + "<br>");
    sb.append("AUTHORIZED BY: " + sAuthBy + "<br>");
    
    sb.append("<br>");
    sb.append("-SHIPPING INSTRUCTIONS-<br>");
    sb.append(constants.msRMAShipInstr);
    sb.append("<br>");
    sb.append("RMA #: " + sRMAId + "<br>");
    sb.append("<br>");
    
    CDMSAction a = new CDMSAction();
    
    if(sProgramId != null && sProgramId.length() > 0){
      ArrayList al = a.getRegisteredProductsList(servlet,sRegCode,sProgramId);
      
      sb.append("\n-PROMOTION INFORMATION-<br>");
      sb.append("PROMOTION: " + sPrgId + "<br>");
      sb.append("REGISTRATION CODE: " + sRegCode + "<br><br>");
      sb.append(constants.msSH2DM1HDR + "<br>");
      
      if(al.size() > 0){
        Iterator i = al.iterator();
        sb.append("\nProducts registered:<br>");
        nPorts = 0;
        while(i.hasNext()){
          CDMSCustomerProductBean cpb = (CDMSCustomerProductBean)i.next();
          sb.append("SKU: " + cpb.getModelNo() + "&nbsp&nbsp&nbsp");
          if(cpb.getNumPorts().equalsIgnoreCase("48")){
            String sPorts = cpb.getNumPorts().trim();
            sPorts = sPorts.substring(0, 1) + "/" + sPorts.substring(1, 2);
            sb.append("PORTS: " + sPorts + "&nbsp&nbsp&nbsp");
            sb.append("S/N: " + cpb.getSerialNo() + "<br>" );
            sb.append("       *4 or 8 port product, using 8 ports to calculate total ports.*<br>");
            nPorts = nPorts + 8;
          }else{
            sb.append("PORTS: " + cpb.getNumPorts() + "&nbsp&nbsp&nbsp");
            sb.append("S/N: " + cpb.getSerialNo() + "<br>" );
            nPorts = nPorts + Integer.parseInt(cpb.getNumPorts());
          }  
        }
        
        sb.append("Total Ports: " + Integer.toString(nPorts) + "<br>");
      }
    }//end promo product listing
    
    if(sRMAId != null && sRMAId.length() > 0){
      alRMAItemList = getRMAItems(sRMAId,servlet);
 
      if(alRMAItemList.size() > 0){
        Iterator it = alRMAItemList.listIterator();
        sb.append("\nProducts returned:<br>");
        nPorts = 0;
        while(it.hasNext()){
          RMAItemListBean bean = (RMAItemListBean)it.next();
          String sPorts = a.getPortCount(servlet,bean.getPartNo());
          
          sb.append("SKU: " + bean.getPartNo() + "&nbsp&nbsp&nbsp");
          
          if(sPorts.equalsIgnoreCase("48")){
            sPorts = sPorts.substring(0, 1) + "/" + sPorts.substring(1, 2);
            sb.append("PORTS: " + sPorts + "&nbsp&nbsp&nbsp");
            sb.append("S/N: " + bean.getSerial() + "<br>" );
            sb.append("       *4 or 8 port product, using 8 ports to calculate total ports.*\n");
            nPorts = nPorts + 8;
          }else{
            sb.append("PORTS: " + sPorts + "&nbsp&nbsp&nbsp");
            sb.append("S/N: " + bean.getSerial() + "<br>" );
            nPorts = nPorts + Integer.parseInt(sPorts);
          }
        }
        
        sb.append("Total Ports: " + Integer.toString(nPorts) + "<br>");
      }
    }
 
    clbObj.setNote(sb.toString());
  
    alCallList.add(clbObj);
    
    return alCallList;
  }
  
  private ArrayList getRMAItems(String sRMAId, HttpServlet servlet){
    ArrayList al = new ArrayList();
    RMAItemAction ria = new RMAItemAction();
    try{al = ria.getRmaItems(servlet,sRMAId);}
    catch(Exception e){e.printStackTrace();}
    return al;
  }
  
  private ArrayList emailCaseInfo(HttpServletRequest req, HttpServlet servlet){
    
    HttpSession  session = req.getSession();
    CallListBean clbObj = new CallListBean();
    ContextBean cBean = (ContextBean) session.getAttribute("context");
    UserBean uBean = (UserBean)session.getAttribute("userbean");
    ArrayList alCallList = new ArrayList();
    
    String sCaseId = cBean.getCaseId();
    String sPEmail = getEmailFromPersonId(cBean.getPersonId());
    String sUEmail = uBean.getEMailAddress();
    String sPersonFrom = (uBean.getFirstName() + " " + uBean.getLastName());
    
    clbObj.setActivityType("EMAIL");
    clbObj.setAssignTo(msUsername);
    clbObj.setStatus("COMPLETED");
    clbObj.setComName(cBean.getComName());
    clbObj.setCompanyId(cBean.getCompanyId());
    clbObj.setDivName(cBean.getDivName());
    clbObj.setDivisionId(cBean.getDivisionId());
    clbObj.setFName(cBean.getFName());
    clbObj.setLName(cBean.getLName());
    clbObj.setPersonId(cBean.getPersonId());
    clbObj.setDueDate(utilObj.formatDate(utilObj.currentTimestamp()));
    clbObj.setDueTime(utilObj.formatTime(utilObj.currentTimestamp()));
    clbObj.setSummary("Case [#" + sCaseId + "]: Comtrol Case Information");
    
    req.setAttribute("emailfrom", sUEmail);
    req.setAttribute("emailto", sPEmail);
    req.setAttribute("from", sPersonFrom);
    req.setAttribute("to", (cBean.getFName() + " " + cBean.getLName()));
    req.setAttribute("bcc", sUEmail);
    req.setAttribute("browser",uBean.getBrowser());
    
    StringBuffer sb = new StringBuffer();
    
    sb.append("Case Info");
    sb.append("<br>" + req.getParameter("summary"));
    sb.append("<br>" + req.getParameter("note"));
    clbObj.setNote(sb.toString());
  
    alCallList.add(clbObj);
    
    return alCallList;
    
  }
  
  //Not implemented
  private ArrayList emailTrackingInfo(HttpServletRequest req, HttpServlet servlet){
    
    HttpSession  session = req.getSession();
    CallListBean clbObj = new CallListBean();
    ContextBean cBean = (ContextBean) session.getAttribute("context");
    UserBean uBean = (UserBean)session.getAttribute("userbean");
    ArrayList alCallList = new ArrayList();
    
    String sRMAId = cBean.getRmaId();
    String sTrackingNo = req.getParameter("trackingno");
    String sPEmail = getEmailFromPersonId(cBean.getPersonId());
    String sUEmail = uBean.getEMailAddress();
    String sPersonFrom = (uBean.getFirstName() + " " + uBean.getLastName());
    
    clbObj.setActivityType("EMAIL");
    clbObj.setAssignTo(msUsername);
    clbObj.setStatus("COMPLETED");
    clbObj.setComName(cBean.getComName());
    clbObj.setCompanyId(cBean.getCompanyId());
    clbObj.setDivName(cBean.getDivName());
    clbObj.setDivisionId(cBean.getDivisionId());
    clbObj.setFName(cBean.getFName());
    clbObj.setLName(cBean.getLName());
    clbObj.setPersonId(cBean.getPersonId());
    clbObj.setDueDate(utilObj.formatDate(utilObj.currentTimestamp()));
    clbObj.setDueTime(utilObj.formatTime(utilObj.currentTimestamp()));
    clbObj.setSummary("Comtrol RMA [#" + sRMAId + "]: Tracking Information");
    
    req.setAttribute("emailfrom", sUEmail);
    req.setAttribute("emailto", sPEmail);
    req.setAttribute("from", sPersonFrom);
    req.setAttribute("to", (cBean.getFName() + " " + cBean.getLName()));
    req.setAttribute("bcc", sUEmail);
    req.setAttribute("browser",uBean.getBrowser());
    
    StringBuffer sb = new StringBuffer();
    
    sb.append("Tracking information for RMA #" + sRMAId);
    sb.append("<br>" + sTrackingNo.toUpperCase());
    StringTokenizer st = new StringTokenizer(sTrackingNo);
    while(st.hasMoreTokens()){
      String sTemp = st.nextToken();
      if (sTemp.length() == 18 && sTemp.substring(0, 2).equalsIgnoreCase("1Z")){ //UPS
        sb.append("<br>Click on the link below to view your shipment's progress:");
        sb.append("<br><br>http://wwwapps.ups.com/WebTracking/processInputRequest?TypeOfInquiryNumber=T&InquiryNumber1="
                    + sTemp);
      }
    }
    
    clbObj.setNote(sb.toString());
  
    alCallList.add(clbObj);
    
    return alCallList;
    
  }
  
  private String getEmailFromPersonId(String sPersonId){
    String sEmailAddy = "";
    
    try{
      String sSQL = "SELECT EMAIL FROM PERSON WHERE PERSON_ID = "+ sPersonId;
      stmt = m_conDb.createStatement();
      stmt.execute(sSQL);
      rs = stmt.getResultSet();
      
      if(rs.next()){
        sEmailAddy = rs.getString("EMAIL");
      }
    }catch(Exception e){
      e.printStackTrace();
    }
    
    return sEmailAddy;
  }
  
  public String getEmailFromPersonId(String sPersonId, Connection conn){
    String sEmailAddy = "";
    
    try{
      String sSQL = "SELECT EMAIL FROM PERSON WHERE PERSON_ID = "+ sPersonId;
      stmt = conn.createStatement();
      stmt.execute(sSQL);
      rs = stmt.getResultSet();
      if(rs.next()){sEmailAddy = rs.getString("EMAIL");}
      rs.close();
      stmt.close();
    }catch(Exception e){e.printStackTrace();}
    
    return sEmailAddy;
  }
  
  private void emailPassword(HttpServletRequest req){
                               
    boolean blnEmailSent = false;
    String sEmailFrom = "indeo@comtrol.com";
    String sEmailTo = req.getParameter("emailaddress");
    String sUserId = null;
    String sPassword = null;
    String sSubject = null;
    String sBody = null;
    
    //find email address in user list
    String sSQL = "SELECT USER_ID,PASSWORD FROM S_USER WHERE LOWER(EMAIL) = '" +
                  sEmailTo.toLowerCase() + "' AND IS_ACTIVE = 'Y' AND ACTIVE = 'Y'";
    try{
      stmt = m_conDb.createStatement();
      stmt.execute(sSQL);
      rs = stmt.getResultSet();
      
      if(rs.next()){
        sUserId = rs.getString("USER_ID");
        sPassword = rs.getString("PASSWORD");
      }
      
      if(sUserId != null & sPassword != null){
        sSubject = "Your Indeo Account Information";
        sBody = "User Name: " + sUserId + "<br>" + "Password: " + sPassword;
        blnEmailSent = processMailItem(sEmailFrom,sEmailTo,sSubject,sBody,req);
        if(!blnEmailSent){
          req.setAttribute("emailpassmsg", 
            "There was a problem emailing your account information. Please contact the application administrator if the problem persists."
          );
        }else{
          req.setAttribute("emailpassmsg", "");
        }
      }else{
        req.setAttribute("emailpassmsg", "Invalid email address or address not found.");
      }
    }catch(Exception e){
      req.setAttribute("emailpassmsg", "Invalid email address or address not found.");
      e.printStackTrace();
    }
  }
  
  //inserts new record
  private void emailInsertSave(HttpServlet servlet,HttpServletRequest req,HttpServletResponse res){
    /*
    ContextBean cBean = (ContextBean) session.getAttribute("context");
    String sCompanyId = cBean.getCompanyId();
    String sDivisionId = cBean.getDivisionId();
    String sPersonId = cBean.getPersonId();
    String sQuoteId = cBean.getQuoteId();
    String sOpportunityId = cBean.getOpportunityId();
    String sOrderId = cBean.getOrderId();
    */
    boolean blnEmailSent = false;
    
    //now send the email
    try{
      String sFilePrefix = "file:///";
      char chUnixSeperator = 47;
      char chWinSeperator = 92;
      String sTempDir = servlet.getServletContext().getRealPath("/") + "temp";
      sTempDir = sTempDir.replace(chWinSeperator, chUnixSeperator);
      
      MultipartRequest mpr = new MultipartRequest(req, sFilePrefix + sTempDir);
            
      if(mpr != null){
        String sURL = sFilePrefix + sTempDir;
        String sEmailTo = mpr.getParameter("emailto");
        String sEmailFrom = mpr.getParameter("emailfrom");
        String sPersonFrom = mpr.getParameter("from");
        String sPersonTo = mpr.getParameter("to");
        String sCCList = mpr.getParameter("cclist");
        String sBCCList = mpr.getParameter("bcclist");
        String sCallId = mpr.getParameter("callid");
        String sAssignto = mpr.getParameter("assignto");
        String sActivityType = mpr.getParameter("activitytype");
        String sRegarding = mpr.getParameter("regarding");
        String sDueDate = mpr.getParameter("duedate");
        String sDueTime = mpr.getParameter("duetime");
        String sStatus = mpr.getParameter("status");
        String sSummary = mpr.getParameter("emailsubject");
        String sNote = mpr.getParameter("emailbody");
        String sCompanyId = mpr.getParameter("companyid");
        String sDivisionId = mpr.getParameter("divisionid");
        String sPersonId = mpr.getParameter("personid");
        
        String sFilesUpload = mpr.getParameter("filelist");
        //System.out.println(sFilesUpload);
        if (sFilesUpload == null) sFilesUpload = "";
 
    
        String sFile = null;
        String strFileSysName = null;
        
        //Gets any files still left in the files2upload input box
        /*Enumeration enumFiles = mpr.getFileNames();
        if(enumFiles.hasMoreElements()) {
          sFile = (String)enumFiles.nextElement();
          msContentType = mpr.getContentType(sFile);
          strFileSysName = mpr.getFilesystemName(sFile);
          sFile = strFileSysName;
          mFile = new File(sTempDir + "/" + sFile);
          System.out.println(sFile);
          //System.out.println(msContentType);
        }
        */
        //Gets all files stored in filelist hidden input
        StringTokenizer st = new StringTokenizer(sFilesUpload, ";");
        String[] sFileList = new String[st.countTokens()];
        File[] fFileList = new File[st.countTokens()];
        //sFile = sFilesUpload + sFile;
        
        int fCount = 0;
        while(st.hasMoreTokens()){
          String sTempName = st.nextToken();
          byte[] bbuf = new byte[(int)new File(sTempName).length()];
          FileInputStream fis = new FileInputStream(sTempName);
          fis.read(bbuf);
          fis.close();
          
          FileOutputStream fos = new FileOutputStream(sTempDir + System.getProperty("file.separator") + 
                                         sTempName.substring(sTempName.lastIndexOf(System.getProperty("file.separator"))+1));
          fos.write(bbuf);
          fos.flush();
          fos.close();
          
          sFileList[fCount] = sTempName.substring(sTempName.lastIndexOf("\\") + 1);
          fFileList[fCount] = new File(sTempDir + "/" + sFileList[fCount]);
          fCount++;
        }
        
        //if true then email was sent successfully
        blnEmailSent = processMailItem(sEmailFrom,sEmailTo,sPersonFrom,
                                       sPersonTo,sSummary,sNote,mpr,req,
                                       sCCList,sBCCList,sFileList,fFileList,sURL);
        
        if(blnEmailSent){                                     
          try{
            boolean blnRtn = false;
 
            blnRtn = insertCallRecord(sCallId,sAssignto,sActivityType,
                                      sRegarding,sDueDate,sDueTime,
                                      sStatus,sSummary,sNote,req,sCCList,
                                      sBCCList,sFileList,sCompanyId,sDivisionId,sPersonId);
 
            if(blnRtn){
              msNextJsp ="/EmailSentMsg.jsp";
            }
            else{
              req.setAttribute("errmsg","Email call record for call_id = " + msCallId + 
                                        "was unable to create activity record but email " + 
                                        "was sent successfully.");
              msNextJsp ="/ErrorMsgPage.jsp"; 
            }
          }
          catch(Exception _e){
            req.setAttribute("errmsg","Email call record for call_id = " + msCallId + 
                                      "was unable to create activity record but email " + 
                                      "was sent successfully. Advise application administrator " + 
                                      "to checks logs for StackTrace Output.");
            msNextJsp ="/ErrorMsgPage.jsp"; 
            _e.printStackTrace();
          }
        }else{
          msNextJsp ="/EmailFailedMsg.jsp";
        }
      }else{
        msNextJsp ="/EmailFailedMsg.jsp"; 
      }
    }
    catch(Exception _e){
      msNextJsp ="/EmailFailedMsg.jsp"; 
      _e.printStackTrace();
    }
  }//end emailInsertSave()
  
  private boolean uploadDocuments(String sCallId,HttpServletRequest req,
                                  HttpServletResponse res,HttpServlet servlet,
                                  String sFile){
    ContextBean cBean = (ContextBean) session.getAttribute("context");
    String sCompanyId = cBean.getCompanyId();
    String sDivisionId = cBean.getDivisionId();
    String sPersonId = cBean.getPersonId();
    String sQuoteId = cBean.getQuoteId();
    String sOpportunityId = cBean.getOpportunityId();
    String sOrderId = cBean.getOrderId();
    String sSummary = "Email Attachment For Activity #" + sCallId;
    
    if(sDivisionId==null || sDivisionId.length()==0){sDivisionId = "0";} 
    if(sPersonId==null || sPersonId.length()==0){sPersonId = "0";} 
    if(sOpportunityId==null || sOpportunityId.length()==0){sOpportunityId = "0";} 
    if(sQuoteId==null || sQuoteId.length()==0){sQuoteId = "0";} 
    if(sOrderId==null || sOrderId.length()==0){sOrderId = "0";} 
    
    try{
      Utils utilObj = new Utils();
      
      StringBuffer sSQL = new StringBuffer();
      sSQL.append("INSERT INTO DOCUMENT ");
      sSQL.append("(DOCUMENT_ID,COMPANY_ID,DIVISION_ID,");
      sSQL.append("PERSON_ID,OPPORTUNITY_ID,QUOTE_ID,ORDER_ID,");
      sSQL.append("CREATE_USER,CREATE_DATE,");
      sSQL.append("FILENAME,CONTENT,MIME_TYPE,MODIFY_USER,MODIFY_DATE,");
      sSQL.append("SYNC_DATE,SYNC_USER,ACTIVE,SUMMARY");
      sSQL.append(") VALUES(");
      sSQL.append("?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
      
      java.sql.Timestamp tsp = utilObj.currentTimestamp();
      byte bBlob[] = null;
      
      int intFileCount = 1;
      for(int i=0; i < intFileCount; i++){
        bBlob = new byte[(int)mFile.length()];
        FileInputStream fis = new FileInputStream(mFile);
        fis.read(bBlob);
        fis.close();
        if(bBlob != null){
          //must have new one for each file
          pstmt = m_conDb.prepareStatement(sSQL.toString());
 
          int iPrimaryKey = KeyGenerator.getInstance().generateKey(req);
          pstmt.setInt(1,iPrimaryKey);
 
          pstmt.setInt(2,Integer.parseInt(sCompanyId));
          pstmt.setInt(3,Integer.parseInt(sDivisionId));
          pstmt.setInt(4,Integer.parseInt(sPersonId));
          pstmt.setInt(5,Integer.parseInt(sOpportunityId));
          pstmt.setInt(6,Integer.parseInt(sQuoteId));
          pstmt.setInt(7,Integer.parseInt(sOrderId));
          pstmt.setString(8,msUsername);
          pstmt.setTimestamp(9,tsp);
          pstmt.setString(10,sFile);
          pstmt.setObject(11,bBlob);
          pstmt.setString(12,msContentType);
          pstmt.setString(13,msUsername);
          pstmt.setTimestamp(14,tsp);
          pstmt.setTimestamp(15,tsp);
          pstmt.setString(16,msUsername);
          pstmt.setString(17,"Y");
          pstmt.setString(18,sSummary);
          pstmt.execute();
          pstmt = null;
        }
        
        bBlob = null;
        fis = null;
      }//end file for loop
      
      return true;
    }
    catch(Exception _e){
      _e.printStackTrace();
      return false;
    }
  }//end uploadDocuments()
  
  private boolean insertCallRecord(String sCallId,String sAssignto,String sActivityType,
                                   String sRegarding,String sDueDate,String sDueTime,
                                   String sStatus,String sSummary,String sNote,
                                   HttpServletRequest req, String sCCList,
                                   String sBCCList,String[] sFile,String sCompanyId,
                                   String sDivisionId,String sPersonId){
 
    /*                                   
    ContextBean cBean = (ContextBean) session.getAttribute("context");
    String sCompanyId = cBean.getCompanyId();
    String sDivisionId = cBean.getDivisionId();
    String sPersonId = cBean.getPersonId();
    String sQuoteId = cBean.getQuoteId();
    String sOpportunityId = cBean.getOpportunityId();
    String sOrderId = cBean.getOrderId();
    */
    
    DataTypeConversion dtc = new DataTypeConversion();
    
    if(sFile != null)
      sNote = "ATTACHMENT: " + sFile + "\n" + sNote;
    
    if(sBCCList != null)
      sNote = "\n" + "BCC: " + sBCCList + "\n" + sNote;
    
    if(sCCList != null)
      sNote = "\n" + "CC: " + sCCList + "\n" + sNote;
    
    try{
      Utils utilObj = new Utils();
      java.sql.Timestamp tsp = utilObj.currentTimestamp();
 
      StringBuffer sSQL = new StringBuffer();
      sSQL.append("INSERT INTO CALL ");
      sSQL.append("(CALL_ID,COMPANY_ID,DIVISION_ID,PERSON_ID,OPPORTUNITY_ID,");
      sSQL.append("QUOTE_ID, ORDER_ID, CREATE_USER, CREATE_DATE,ASSIGN_TO,");
      sSQL.append("STATUS,SUMMARY,NOTE,REGARDING,ACTIVITY_TYPE,DUE_DATE,");
      sSQL.append("DUE_TIME,MODIFY_USER,MODIFY_DATE,SYNC_DATE,SYNC_USER,ACTIVE,DUETIME) ");
      sSQL.append("VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
 
      pstmt = m_conDb.prepareStatement(sSQL.toString());
      int iPrimaryKey = KeyGenerator.getInstance().generateKey(req);
      pstmt.setInt(1,iPrimaryKey);
      pstmt.setInt(2,Integer.parseInt(sCompanyId));
 
      if (sDivisionId==null || sDivisionId.length()==0){
        pstmt.setInt(3, 0);
      } else {
        pstmt.setInt(3,Integer.parseInt(sDivisionId));
      }
 
      if (sPersonId==null || sPersonId.length()==0){
        pstmt.setInt(4, 0);
      } else {
        pstmt.setInt(4,Integer.parseInt(sPersonId));
      }
 
      pstmt.setInt(5, 0);
/*
      if (sOpportunityId==null || sOpportunityId.length()==0){
        pstmt.setInt(5, 0);
      } else {
        pstmt.setInt(5,Integer.parseInt(sOpportunityId));
      }
*/
      pstmt.setInt(6, 0);
/*      
      if (sQuoteId==null || sQuoteId.length()==0){
        pstmt.setInt(6, 0);
      } else {
        pstmt.setInt(6,Integer.parseInt(sQuoteId));
      }
*/
      pstmt.setInt(7, 0);
/*      
      if (sOrderId==null || sOrderId.length()==0){
        pstmt.setInt(7, 0);
      } else {
        pstmt.setInt(7,Integer.parseInt(sOrderId));
      }
*/
      pstmt.setString(8,msUsername);
      pstmt.setTimestamp(9,tsp);
      pstmt.setString(10,sAssignto);
      pstmt.setString(11,sStatus);
      pstmt.setString(12,sSummary);
      pstmt.setString(13,sNote);
      pstmt.setString(14,sRegarding);
      pstmt.setString(15,sActivityType);
      if (sDueDate==null || sDueDate.length()==0){
        pstmt.setDate(16,null);
      } else {
        pstmt.setDate(16,new java.sql.Date(tsp.getTime()));
      }
      pstmt.setString(17,sDueTime);
      pstmt.setString(18,msUsername);
      pstmt.setTimestamp(19,tsp);
      pstmt.setTimestamp(20,tsp);
      pstmt.setString(21,msUsername);
      pstmt.setString(22,"Y");
      pstmt.setTime(23,dtc.getISOTime(sDueTime));
      pstmt.execute();
 
      msCallId = String.valueOf(iPrimaryKey);
      sCallId = msCallId;
      
      return true;
    }
    catch(Exception _e){
      _e.printStackTrace();
      return false;
    }
  }
  
  public boolean processMailItem(String sEmailFrom,String sEmailTo,String sSubject,String sMsg,Connection c,String sCCList) throws Exception{
 
    try{
      Properties mailProps = new Properties();
      String mailHostIP = SConfigReader.getStringConfigValue("email_server",c);
      mailProps.put("mail.host", mailHostIP);
      mailProps.put("mail.transport.protocol", "smtp");
    
      Session mailSession = Session.getInstance(mailProps);
      MimeMessage m = new MimeMessage(mailSession);
      
      InternetAddress addy = null; //generic var used for iteration
      InternetAddress addrTo = new InternetAddress(sEmailTo);
      InternetAddress addrFrom = new InternetAddress(sEmailFrom);
      Address[] addrs = new Address[1];
      Address[] addrsCC = null;
      
      addrs[0] = addrTo;
      m.setRecipient(Message.RecipientType.TO, addrs[0]);
      
      addrs[0] = addrFrom;
      m.setFrom(addrs[0]);
      m.setReplyTo(addrs);
 
      if(sCCList != null && sCCList.length() > 0 && sCCList.indexOf(";") > 0){
        StringTokenizer sCCTokens = new StringTokenizer(sCCList,";");
        addrsCC = new Address[sCCTokens.countTokens()];
        int i = 0;
        while(sCCTokens.hasMoreTokens()){
          addrsCC[i] = new InternetAddress(sCCTokens.nextToken());
          i += 1;
        }
        m.setRecipients(Message.RecipientType.CC, addrsCC);
      }else if(sCCList != null && sCCList.length() > 0){
        addrsCC = new Address[1];
        addrsCC[0] = new InternetAddress(sCCList);
        m.setRecipients(Message.RecipientType.CC, addrsCC);
      }      
      
      m.setSubject(sSubject);
      m.setSentDate(new java.util.Date());
      m.setContent(sMsg, "text/html");
      
      Transport.send(m);
      
      return true;
    }
    catch(Exception _e){
      System.out.println("public->processMailItem() error");
      _e.printStackTrace();
      return false;
    }
  }
  
  public boolean processMailItem(String sEmailFrom,String sEmailTo,
                                  String sSubject,String sMsg, HttpServletRequest req) 
                                  throws Exception{
 
    try{
      Properties mailProps = new Properties();
      String mailHostIP = SConfigReader.getStringConfigValue("email_server",req);
      mailProps.put("mail.host", mailHostIP);
      mailProps.put("mail.transport.protocol", "smtp");
    
      Session mailSession = Session.getInstance(mailProps);
      
      InternetAddress addy = null; //generic var used for iteration
      InternetAddress addrTo = new InternetAddress(sEmailTo);
      InternetAddress addrFrom = new InternetAddress(sEmailFrom);
    
      MimeMessage m = new MimeMessage(mailSession);
      Address[] addrs = new Address[1];
    
      addrs[0] = addrTo;
      m.setRecipient(Message.RecipientType.TO, addrs[0]);
      
      addrs[0] = addrFrom;
      m.setFrom(addrs[0]);
      m.setReplyTo(addrs);
      
      m.setSubject(sSubject);
      m.setSentDate(new java.util.Date());
      m.setContent(sMsg, "text/html");
      
      Transport.send(m);
      
      return true;
    }
    catch(Exception _e){
      System.out.println("public->processMailItem() error");
      _e.printStackTrace();
      return false;
    }
  }
  
  private boolean processMailItem(String sEmailFrom,String sEmailTo, 
                                  String sPersonFrom, String sPersonTo,
                                  String sSubject,String sMsg,
                                  MultipartRequest mpr, HttpServletRequest req,
                                  String sCCList, String sBCCList,
                                  String[] sFile, File[] fFile, String sURL) throws Exception{
 
    try{
      Properties mailProps = new Properties();
      String mailHostIP = SConfigReader.getStringConfigValue("email_server",req);
      mailProps.put("mail.host", mailHostIP);
      mailProps.put("mail.transport.protocol", "smtp");
    
      Session mailSession = Session.getInstance(mailProps);
      
      InternetAddress addy = null; //generic var used for iteration
      InternetAddress addrTo = new InternetAddress(sEmailTo, sPersonTo);
      InternetAddress addrFrom = new InternetAddress(sEmailFrom, sPersonFrom);
    
      Address[] addrsCC = null;
      if(sCCList != null && sCCList.length() > 0 && sCCList.indexOf(";") > 0){
        StringTokenizer sCCTokens = new StringTokenizer(sCCList,";");
        addrsCC = new Address[sCCTokens.countTokens()];
        int i = 0;
        while(sCCTokens.hasMoreTokens()){
          addrsCC[i] = new InternetAddress(sCCTokens.nextToken());
          i += 1;
        }
      }else if(sCCList != null && sCCList.length() > 0){
        addrsCC = new Address[1];
        addrsCC[0] = new InternetAddress(sCCList);
      }
      
      
      Address[] addrsBCC = null;
      if(sBCCList != null  && sBCCList.length() > 0 && sBCCList.indexOf(";") > 0){  
        StringTokenizer sBCCTokens = new StringTokenizer(sBCCList,";");
        addrsBCC = new Address[sBCCTokens.countTokens()];
        int i = 0;
        while(sBCCTokens.hasMoreTokens()){
          addrsBCC[i] = new InternetAddress(sBCCTokens.nextToken());
          i += 1;
        }
      }else if(sBCCList != null && sBCCList.length() > 0){
        addrsBCC = new Address[1];
        addrsBCC[0] = new InternetAddress(sBCCList);
      }
      
      MimeMessage m = new MimeMessage(mailSession);
      Address[] addrs = new Address[1];
    
      addrs[0] = addrTo;
      m.setRecipient(Message.RecipientType.TO, addrs[0]);
      
      addrs[0] = addrFrom;
      m.setFrom(addrs[0]);
      m.setReplyTo(addrs);
      
      if(addrsCC != null)
        m.setRecipients(Message.RecipientType.CC, addrsCC);
      
      if(addrsBCC != null)
        m.setRecipients(Message.RecipientType.BCC,addrsBCC);
 
      m.setSubject(sSubject);
      m.setSentDate(new java.util.Date());
 
      if(sURL != null && sFile.length > 0 && fFile.length > 0){
        javax.mail.internet.MimeBodyPart messageBodyPart = new javax.mail.internet.MimeBodyPart();
        messageBodyPart.setText(sMsg);
        javax.mail.Multipart multipart = new javax.mail.internet.MimeMultipart();
        multipart.addBodyPart(messageBodyPart);
 
        //System.out.println(sURL + "/" + sFile);
        
        // Part two is attachment
        for(int f = 0; f < sFile.length; f++){
          javax.mail.internet.MimeBodyPart attachmentBodyPart = new javax.mail.internet.MimeBodyPart();
          //java.net.URL url = new java.net.URL(sURL + "/" + sFile);
          javax.activation.FileDataSource source = new javax.activation.FileDataSource(fFile[f]);
          //javax.activation.URLDataSource source = new javax.activation.URLDataSource(url);
          attachmentBodyPart.setDataHandler(new DataHandler(source));
          attachmentBodyPart.setFileName(sFile[f]);
          multipart.addBodyPart(attachmentBodyPart);
          m.setContent(multipart);
        }
      }else{
        //System.out.println("sFile or sURL was null for email_to:" + sEmailTo);
        m.setContent(sMsg, "text/html");
      }
      
      Transport.send(m);
      
      return true;
    }
    catch(Exception _e){
      System.out.println("processMailItem() error");
      _e.printStackTrace();
      return false;
    }
  }
  
  // updates the existing record with new data
  private void emailUpdate(HttpServletRequest req){
    
    Utils utilObj = new Utils();
    java.sql.Timestamp tsp = utilObj.currentTimestamp();
    
    try{
      String sCallId = (String) req.getParameter("callid");
      String sAssignto = (String) req.getParameter("assignto");
      String sActivityType = (String) req.getParameter("activitytype");
      String sRegarding = (String) req.getParameter("regarding");
      String sDueDate = (String) req.getParameter("duedate");
      String sDueTime = (String) req.getParameter("duetime");
      String sStatus = (String) req.getParameter("status");
      
      String sSummary = (String) req.getParameter("summary");
      String sNote = (String) req.getParameter("note");
      
      //Call Prepare statement for SAP DB
      StringBuffer sSQL = new StringBuffer();
      sSQL.append("UPDATE CALL ");
      sSQL.append("SET ASSIGN_TO=?, STATUS=?, REGARDING=?, ACTIVITY_TYPE=?, DUE_DATE=?, ");
      sSQL.append("DUE_TIME=?, SUMMARY=?, NOTE=?, MODIFY_DATE=?, MODIFY_USER=?, SYNC_DATE=?, SYNC_USER=? WHERE CALL_ID=?");
      pstmt = m_conDb.prepareStatement(sSQL.toString());
      pstmt.setString(1,sAssignto);
      pstmt.setString(2,sStatus);
      pstmt.setString(3,sRegarding);
      pstmt.setString(4,sActivityType);
      if (sDueDate==null || sDueDate.length()==0){
        pstmt.setDate(5,null);
      } else {
        pstmt.setDate(5,new java.sql.Date(dtf.parse(sDueDate).getTime()));
      }
      pstmt.setString(6,sDueTime);
      pstmt.setString(7,sSummary);
      pstmt.setString(8,sNote);
      pstmt.setTimestamp(9,tsp);
      pstmt.setString(10,msUsername);
      pstmt.setTimestamp(11,tsp);
      pstmt.setString(12,msUsername);
      pstmt.setInt(13,Integer.parseInt(sCallId));
      
      
      pstmt.executeUpdate();
    }
    catch (Exception _e) {
      _e.printStackTrace();
    }
  }
  
    
   //displays edit form in the insert mode
  private ArrayList emailInsert(HttpServletRequest req){
    ArrayList alEmailList = new ArrayList();
    CallListBean clbObj = new CallListBean();
    Utils utilObj = new Utils();
    
    HttpSession  session = req.getSession();
    ContextBean cBean = (ContextBean) session.getAttribute("context");
    UserBean uBean = (UserBean)session.getAttribute("userbean");
    
    clbObj.setAssignTo(msUsername);
    clbObj.setRegarding("OTHER");
    clbObj.setActivityType("EMAIL");
    clbObj.setStatus("COMPLETED");
    clbObj.setDueDate(utilObj.formatDate(utilObj.currentTimestamp()));
    clbObj.setDueTime(utilObj.formatTime(utilObj.currentTimestamp()));
    clbObj.setComName(cBean.getComName());
    clbObj.setCompanyId(cBean.getCompanyId());
    clbObj.setDivName(cBean.getDivName());
    clbObj.setDivisionId(cBean.getDivisionId());
    clbObj.setFName(cBean.getFName());
    clbObj.setLName(cBean.getLName());
    clbObj.setPersonId(cBean.getPersonId());
    
    String sPEmail = (String) req.getParameter("email");
    String sUEmail = uBean.getEMailAddress();
    String sPersonFrom = (uBean.getFirstName() + " " + uBean.getLastName());
    req.setAttribute("emailfrom", sUEmail);
    req.setAttribute("emailto", sPEmail);
    req.setAttribute("from", sPersonFrom);
    req.setAttribute("to", (cBean.getFName() + " " + cBean.getLName()));
    req.setAttribute("bcc", sUEmail);
    req.setAttribute("browser",uBean.getBrowser());
    
    alEmailList.add(clbObj);
    return alEmailList;
  }
  
  private ArrayList emailEdit(HttpServletRequest req, boolean bOverride){
    
    ArrayList alEmailList = new ArrayList();
    
    HttpSession  session = req.getSession();
    ContextBean cBean = (ContextBean) session.getAttribute("context");
    
    String sOrderId="0";
    String sQuoteId="0";
    String sOpportunityId="0";
    String sCompanyId="0";
    String sPersonId="0";
    String sDivisionId="0";
    String sCallId="0";
    String sAssignto = "";
    String sActivityType ="";
    String sRegarding ="";
    String sStatus = "";
    String sCallNum ="";
    String sSummary = "";
    String sStartDate= "";
    String sFName = "";
    String sLName = "";
    String sComName = "";
    String sDivName = "";
    String sEndDate="";
    
    try{
      //getting data from the request object'
      
      if(bOverride){sCallId=msCallId;} 
      else{sCallId = (String) req.getParameter("callid");}
      
      cstmt = m_conDb.prepareCall("{call sp_call_edit(?,?,?,?,?,?,?)}");
      
      cstmt.setString(1,sCallId);
      cstmt.setString(2,"0");
      cstmt.setString(3,"0");
      cstmt.setString(4,"0");
      cstmt.setString(5,"0");
      cstmt.setString(6,"0");
      cstmt.setString(7,"0");
      
      cstmt.execute();
      rs= cstmt.getResultSet();
      
      if (rs.next()){
        CallListBean clbObj = getListBean(rs,true);
        alEmailList.add(clbObj);
      }
    }
    catch (Exception _e) {
      _e.printStackTrace();
    }
 
    return alEmailList;
  }
  
  private CallListBean getListBean(ResultSet _rs, boolean bSetSession ) throws Exception{
    CallListBean clbObj = new CallListBean();
 
    clbObj.setCallId((String) _rs.getString("CALL_ID"));
    
    String sCompanyId = (String) _rs.getString("COMPANY_ID");
    clbObj.setCompanyId(sCompanyId);
    
    String sDivisionId = (String) _rs.getString("DIVISION_ID");
    clbObj.setDivisionId(sDivisionId);
    
    String sPersonId = (String) _rs.getString("PERSON_ID");
    clbObj.setPersonId(sPersonId);
    
    String sOpportunityId = (String) _rs.getString("OPPORTUNITY_ID");
    clbObj.setOpportunityId(sOpportunityId);
    
    String sQuoteId=(String) _rs.getString("QUOTE_ID");
    clbObj.setQuoteId(sQuoteId);
    
    String sOrderId=(String) _rs.getString("ORDER_ID");
    clbObj.setOrderId(sOrderId);
    
    
    clbObj.setAssignTo(utilObj.nullToEmpty((String) _rs.getString("ASSIGN_TO")));
    clbObj.setStatus(utilObj.nullToEmpty((String) _rs.getString("STATUS")));
    clbObj.setRegarding(utilObj.nullToEmpty((String) _rs.getString("REGARDING")));
    clbObj.setActivityType(utilObj.nullToEmpty((String) _rs.getString("ACTIVITY_TYPE")));
    
    Timestamp ts= _rs.getTimestamp("DUE_DATE");
    if (ts==null){
      clbObj.setDueDate("");
    } else {
      java.sql.Date dt = new java.sql.Date(ts.getTime());
      clbObj.setDueDate(dtf.format(dt));
    }
    clbObj.setDueTime(utilObj.nullToEmpty((String) _rs.getString("DUE_TIME")));
    clbObj.setSummary(utilObj.nullToEmpty((String) _rs.getString("SUMMARY")));
    clbObj.setNote(utilObj.nullToEmpty((String) _rs.getString("NOTE")));
    clbObj.setCreateDate(utilObj.formatDateTime(_rs.getTimestamp("CREATE_DATE")));
    clbObj.setCreateUser(utilObj.nullToEmpty((String) _rs.getString("CREATE_USER")));
    clbObj.setModifyDate(utilObj.formatDateTime(_rs.getTimestamp("MODIFY_DATE")));
    clbObj.setModifyUser(utilObj.nullToEmpty((String) _rs.getString("MODIFY_USER")));
    if (bSetSession){
      String sComname = utilObj.nullToEmpty((String) _rs.getString("COM_NAME"));
      clbObj.setComName(sComname);
      
      String sDivname = utilObj.nullToEmpty((String) _rs.getString("DIV_NAME"));
      clbObj.setDivName(sDivname);
      
      
      String sFname = utilObj.nullToEmpty((String) _rs.getString("FNAME"));
      clbObj.setFName(sFname);
      
      String sLname = utilObj.nullToEmpty((String) _rs.getString("LNAME"));
      clbObj.setLName(sLname);
      
      
      
      //setting up context
      
      ContextBean cBean = new ContextBean();
      cBean.setPersonId(sPersonId);
      cBean.setFName(sFname);
      cBean.setLName(sLname);
      
      cBean.setCompanyId(sCompanyId);
      cBean.setComName(sComname);
      
      cBean.setDivisionId(sDivisionId);
      cBean.setDivName(sDivname);
      
      cBean.setOpportunityId(sOpportunityId);
      cBean.setQuoteId(sQuoteId);
      cBean.setOrderId(sOrderId);
      
      session.setAttribute("context",cBean);
    }
    return clbObj;
  }
  
  private boolean isValid(HttpServletRequest req){
    boolean isValid=true;
    
    if (!validate(req,"email_to","emailto"))isValid=false;
    if (!validate(req,"email_from","emailfrom"))isValid=false;
    if (!validate(req,"email_subject","emailsubject"))isValid=false;
    //if (!validate(req,"email_body","emailbody"))isValid=false;
 
    if (!isValid){
      CallListBean clbObj = new CallListBean();
      clbObj.setCallId(req.getParameter("callid"));
      clbObj.setAssignTo(req.getParameter("assignto"));
      clbObj.setActivityType(req.getParameter("activitytype"));
      clbObj.setRegarding(req.getParameter("regarding"));
      clbObj.setDueDate(null);
      clbObj.setDueTime(null);
      clbObj.setStatus(req.getParameter("status"));
      clbObj.setSummary(req.getParameter("emailsubject"));
      clbObj.setNote(req.getParameter("emailbody"));
      
      ArrayList alEmailList = new ArrayList();
      alEmailList.add(clbObj);
      req.setAttribute("listing",alEmailList);
    }
 
    return isValid;
  }
  
  private void populateErrorFields(HttpServletRequest req){
    req.setAttribute("error","&nbsp;");   //error message
    req.setAttribute("emailto_error","");
    req.setAttribute("emailfrom_error","");
    req.setAttribute("emailsubject_error","");
    req.setAttribute("emailbody_error","");
  }
  
}
 
 
 
Expert Comment by dejanpazin:

All comments and solutions are available to Premium Service Members only. Start your 7-day free trial to view the solution to this question.

Already a member? Login to view this solution.

 
 
Author Comment by sadaf_syed:

All comments and solutions are available to Premium Service Members only. Start your 7-day free trial to view the solution to this question.

Already a member? Login to view this solution.

 
 
Accepted Solution by dejanpazin:

All comments and solutions are available to Premium Service Members only. Start your 7-day free trial to view the solution to this question.

Already a member? Login to view this solution.

 
 
Author Comment by sadaf_syed:

All comments and solutions are available to Premium Service Members only. Start your 7-day free trial to view the solution to this question.

Already a member? Login to view this solution.

 
 
Author Comment by sadaf_syed:

All comments and solutions are available to Premium Service Members only. Start your 7-day free trial to view the solution to this question.

Already a member? Login to view this solution.

 
 
Author Comment by sadaf_syed:

All comments and solutions are available to Premium Service Members only. Start your 7-day free trial to view the solution to this question.

Already a member? Login to view this solution.

 
 
Administrative Comment by modus_operandi:

All comments and solutions are available to Premium Service Members only. Start your 7-day free trial to view the solution to this question.

Already a member? Login to view this solution.

 
 
Assisted Solution by TimYates:

All comments and solutions are available to Premium Service Members only. Start your 7-day free trial to view the solution to this question.

Already a member? Login to view this solution.

 
 
Expert Comment by TimYates:

All comments and solutions are available to Premium Service Members only. Start your 7-day free trial to view the solution to this question.

Already a member? Login to view this solution.

 
 
Expert Comment by Venabili:

All comments and solutions are available to Premium Service Members only. Start your 7-day free trial to view the solution to this question.

Already a member? Login to view this solution.

 
 
Expert Comment by Venabili:

All comments and solutions are available to Premium Service Members only. Start your 7-day free trial to view the solution to this question.

Already a member? Login to view this solution.

&n