Source code: jhfc/HylaFaxJobController.java
1
2
3 package jhfc;
4
5 import java.util.*;
6
7 public class HylaFaxJobController
8 {
9 private String hylaFaxHostName;
10 private int hylaFaxHostPort;
11 private boolean debug;
12 private HylaFaxJobDataModel hjdm;
13 // private Vector allParameters;
14 private Vector parameters;
15 private String jobFmt;
16 // private int jobFmtMaskParameterIndex;
17 private String delimiter="|";
18 // private int numberOfAllParameters;
19 private int numberOfParameters;
20 private String columnNames[];
21 // private int fmtMaskIndexMap[];
22 private int numberOfVisibleParameters=0;
23
24 public HylaFaxJobController
25 (
26 String hylaFaxHostName,
27 int hylaFaxHostPort,
28 HylaFaxJobDataModel hjdm,
29 boolean debug
30 )
31 {
32 this.hylaFaxHostName=hylaFaxHostName;
33 this.hylaFaxHostPort=hylaFaxHostPort;
34 this.hjdm=hjdm;
35 this.debug=debug;
36 parameters=new Vector();
37 // allParameters=new Vector();
38
39 defineJobDataModellParameters();
40
41 createColumnNames();
42 // createMappingIndex();
43
44 //int i;
45 //System.out.println(getClass().getName()+": colnames=");
46 //for(i=0;i<columnNames.length;i++)
47 //{
48 // System.out.println(" "+i+" "+columnNames[i]);
49 //}
50 hjdm.setColumnNames(columnNames);
51 }
52
53 private void addParameter
54 (
55 HylaFaxJobParameter hylaFaxJobParameter
56 )
57 {
58
59 // Parameter schon in der kompletten Liste?
60 int index=parameters.indexOf(hylaFaxJobParameter);
61 if(index==-1)
62 {
63 // nein
64 parameters.addElement(hylaFaxJobParameter);
65 numberOfParameters++;
66 }
67
68 if(hylaFaxJobParameter.getIsVisibleInTable()==true)
69 {
70 numberOfVisibleParameters++;
71 /*
72 if(hylaFaxJobParameter.getFormatMask()!=null)
73 {
74 hylaFaxJobParameter.setFormatMaskIndex(numberOfParametersInJobFmt);
75 numberOfParametersInJobFmt++;
76 }
77 */
78 }
79 }
80
81 private void createColumnNames
82 (
83 )
84 {
85 int i;
86 int columnIndex=0;
87
88 HylaFaxJobParameter hfjp;
89
90 columnNames=new String[numberOfVisibleParameters];
91
92 for(i=0;i<parameters.size();i++)
93 {
94 hfjp=(HylaFaxJobParameter)parameters.elementAt(i);
95 if(hfjp.getIsVisibleInTable()==true)
96 {
97 columnNames[columnIndex]=hfjp.getDescription();
98 columnIndex++;
99 }
100 }
101 }
102
103 /*
104 private void createMappingIndex
105 (
106 )
107 {
108 int i;
109 HylaFaxJobParameter hfjp;
110 int wi=0;
111
112 fmtMaskIndexMap=new int[numberOfParametersInJobFmt];
113 System.out.println("numberofPar="+numberOfParameters);
114 fmtMaskIndexMap
115
116 for(i=0;i<numberOfParameters;i++)
117 {
118 hfjp=(HylaFaxJobParameter)parameters.elementAt(i);
119 if(hfjp.getFormatMaskIndex()>=0)
120 {
121 fmtMaskIndexMap[wi]=i;
122 wi++;
123 }
124
125 }
126
127 //for(i=0;i<wi;i++)
128 //{
129 //System.out.println(i+":"+fmtMaskIndexMap[i]);
130 //}
131
132 }
133 */
134
135 private void defineJobDataModellParameters
136 (
137 )
138 {
139 HylaFaxJobParameter hylaFaxJobParameter;
140 // int jobFmtMaskParameterIndex=0;
141
142 // must be first
143 // hylafax must be compiled with support fopr old protocoll!!
144 hylaFaxJobParameter=new HylaFaxJobParameter("SENDTIME", "Time", "%Y");
145 addParameter(hylaFaxJobParameter);
146
147 hylaFaxJobParameter=new HylaFaxJobParameter("EXTERNAL", "Fax#", "%e");
148 addParameter(hylaFaxJobParameter);
149
150 hylaFaxJobParameter=new HylaFaxJobParameter("TOCOMPANY", "to company", "%C");
151 addParameter(hylaFaxJobParameter);
152
153 // hylaFaxJobParameter=new HylaFaxJobParameter("STATE", "State", null);
154 hylaFaxJobParameter=new HylaFaxJobParameter("STATE", "State", "%a");
155 addParameter(hylaFaxJobParameter);
156
157 hylaFaxJobParameter=new HylaFaxJobParameter("STATUS", "Last Error", "%s");
158 addParameter(hylaFaxJobParameter);
159
160 hylaFaxJobParameter=new HylaFaxJobParameter("P", "#pages", "%P");
161 addParameter(hylaFaxJobParameter);
162
163 hylaFaxJobParameter=new HylaFaxJobParameter("D", "#dials", "%D");
164 addParameter(hylaFaxJobParameter);
165
166 // wenn man den owner hier löscht und weiter unten einfügt dann funktioniert
167 // resend nicht mehr und auch die FaxNr wird immer angezeigt weil
168 // der Job dann scheinbar keinen owner hat (siehe transformParameters)
169 hylaFaxJobParameter=new HylaFaxJobParameter("OWNER", "owner", null);
170 addParameter(hylaFaxJobParameter);
171
172 // hylaFaxJobParameter=new HylaFaxJobParameter("FROMUSER", "sender", "%S");
173 // addParameter(hylaFaxJobParameter);
174
175
176
177
178
179 // hylaFaxJobParameter=new HylaFaxJobParameter("DIALSTRING", "dialstring#", "%v");
180 hylaFaxJobParameter=new HylaFaxJobParameter("DIALSTRING", "dialstring#", null);
181 addParameter(hylaFaxJobParameter);
182
183 // hylaFaxJobParameter=new HylaFaxJobParameter("LASTTIME", "Lasttime", "%k", false);
184 hylaFaxJobParameter=new HylaFaxJobParameter("LASTTIME", "Lasttime", null);
185 addParameter(hylaFaxJobParameter);
186
187 // hylaFaxJobParameter=new HylaFaxJobParameter("MAXTRIES", "max tries", "%u", false);
188 hylaFaxJobParameter=new HylaFaxJobParameter("MAXTRIES", "max tries", null);
189 addParameter(hylaFaxJobParameter);
190
191 // hylaFaxJobParameter=new HylaFaxJobParameter("MAXDIALS", "max dials", "%x", false);
192 hylaFaxJobParameter=new HylaFaxJobParameter("MAXDIALS", "max dials", null);
193 addParameter(hylaFaxJobParameter);
194
195 // hylaFaxJobParameter=new HylaFaxJobParameter("ID", "ID", "%j", true);
196 hylaFaxJobParameter=new HylaFaxJobParameter("ID", "ID", "%j");
197 addParameter(hylaFaxJobParameter);
198
199 // hylaFaxJobParameter=new HylaFaxJobParameter("SCHEDPRI", "prio", "%i", false);
200 hylaFaxJobParameter=new HylaFaxJobParameter("SCHEDPRI", "prio", "%i");
201 addParameter(hylaFaxJobParameter);
202
203 // hylaFaxJobParameter=new HylaFaxJobParameter("NOTIFYADDR", "notifAddr", "%M", false);
204 hylaFaxJobParameter=new HylaFaxJobParameter("NOTIFYADDR", "notifAddr", null);
205 addParameter(hylaFaxJobParameter);
206
207 // hylaFaxJobParameter=new HylaFaxJobParameter("VRES", "resolution", "%r", false);
208 hylaFaxJobParameter=new HylaFaxJobParameter("VRES", "resolution", null);
209 addParameter(hylaFaxJobParameter);
210
211 // hylaFaxJobParameter=new HylaFaxJobParameter("PAGEWIDTH", "page width", "%w", false);
212 hylaFaxJobParameter=new HylaFaxJobParameter("PAGEWIDTH", "page width", null);
213 addParameter(hylaFaxJobParameter);
214
215 // hylaFaxJobParameter=new HylaFaxJobParameter("PAGELENGTH", "page length", "%l", false);
216 hylaFaxJobParameter=new HylaFaxJobParameter("PAGELENGTH", "page length", null);
217 addParameter(hylaFaxJobParameter);
218
219 // hylaFaxJobParameter=new HylaFaxJobParameter("NOTIFY", "notify mode", "%n", false);
220 hylaFaxJobParameter=new HylaFaxJobParameter("NOTIFY", "notify mode", null);
221 addParameter(hylaFaxJobParameter);
222
223 // hylaFaxJobParameter=new HylaFaxJobParameter("PAGECHOP", "page chop handling", "%h", false);
224 hylaFaxJobParameter=new HylaFaxJobParameter("PAGECHOP", "page chop handling", null);
225 addParameter(hylaFaxJobParameter);
226
227 // hylaFaxJobParameter=new HylaFaxJobParameter("CHOPTHRESHOLD", "chop thres", "%U", false);
228 hylaFaxJobParameter=new HylaFaxJobParameter("CHOPTHRESHOLD", "chop thres", null);
229 addParameter(hylaFaxJobParameter);
230
231 // hylaFaxJobParameter=new HylaFaxJobParameter("OWNER", "owner", null);
232 // addParameter(hylaFaxJobParameter);
233
234
235 createJobFmt();
236
237 // hylaFaxJobParameter=new HylaFaxJobParameter("LASTTIME", "Time to kill document", "%q");
238 // addParameter(hylaFaxJobParameter);
239
240 // hylaFaxJobParameter=new HylaFaxJobParameter("RETRYTIME", "Time between retries", null);
241 // addParameter(hylaFaxJobParameter);
242
243 // hylaFaxJobParameter=new HylaFaxJobParameter("DOCUMENT", "Document file", null);
244 // addParameter(hylaFaxJobParameter);
245 }
246
247 private void createJobFmt
248 (
249 )
250 {
251 String jobFmtBuf="";
252 HylaFaxJobParameter hylaFaxJobParameter;
253
254 for(Enumeration e=parameters.elements();e.hasMoreElements();)
255 {
256 hylaFaxJobParameter=(HylaFaxJobParameter)e.nextElement();
257
258 if(hylaFaxJobParameter.getFormatMask()!=null)
259 {
260 if(jobFmtBuf.equals(""))
261 {
262 jobFmtBuf=hylaFaxJobParameter.getFormatMask();
263 }
264 else
265 {
266 jobFmtBuf=jobFmtBuf+delimiter+hylaFaxJobParameter.getFormatMask();
267 }
268 }
269 }
270
271 jobFmt=jobFmtBuf;
272 }
273
274 public int getIndexOfParameter
275 (
276 String parameterName
277 )
278 {
279 HylaFaxJobParameter hpm=new HylaFaxJobParameter(parameterName, "x", "x");
280
281 int index=parameters.indexOf(hpm);
282 return(index);
283 }
284
285 public boolean userIsAuthorized
286 (
287 HylaFaxConnectionManager hfcm,
288 int jobID,
289 String user
290 )
291 throws java.io.IOException, jhfc.ProtocollException
292 {
293 hfcm.command("JOB "+jobID);
294 String jobOwner=hfcm.command("JPARM OWNER");
295 hfcm.command("JOB DEFAULT");
296
297 jobOwner=jobOwner.trim().substring(4);
298
299 if(jobOwner!=null)
300 {
301 //System.out.print("ID="+jobID+" jo='"+jobOwner+"', user='"+FaxSetup.account+"'");
302 if(FaxSetup.account.equals(jobOwner))
303 {
304 return(true);
305 }
306 }
307
308 return(false);
309 }
310
311 public String getFileName
312 (
313 HylaFaxConnectionManager hfcm,
314 int jobID
315 )
316 throws java.io.IOException,
317 jhfc.ProtocollException
318 {
319 hfcm.command("JOB "+jobID);
320 String result=hfcm.command("JPARM DOCUMENT");
321 return(result.substring(7));
322 }
323
324 private void retrieveAdditionalJobParametersFromServer
325 (
326 HylaFaxConnectionManager hfcm,
327 HylaFaxJob job
328 )
329 {
330 HylaFaxJobParameter hylaFaxJobParameter;
331 String parameterName;
332 String value;
333
334 try
335 {
336 hfcm.command("JOB "+job.getID());
337
338 for(Enumeration e=parameters.elements();e.hasMoreElements();)
339 {
340 hylaFaxJobParameter=(HylaFaxJobParameter)e.nextElement();
341
342 if(hylaFaxJobParameter.getFormatMask()==null)
343 {
344 parameterName=hylaFaxJobParameter.getName();
345 value=hfcm.command("JPARM "+parameterName).substring(4);
346 /*
347 if(parameterName.equals("SENDTIME"))
348 {
349 // 00000000001111
350 // 01234567890123
351 // 20000102123456
352 // JJJJMMDDhhmmss
353 //System.out.println("1.value='"+value+"'");
354 value=value.substring(8, 10)+":"+
355 value.substring(10, 12)+" "+
356 value.substring(6, 8)+"."+
357 value.substring(4, 6)+"."+
358 value.substring(2, 4);
359
360 //System.out.println("2.value='"+value+"'");
361 //System.exit(0);
362 }
363 */
364
365 job.setParameter(parameterName, value);
366 }
367 }
368 }
369 catch (java.io.IOException ex)
370 {
371 System.out.println(getClass().getName()+": "+ex+" "+ex.getMessage());
372 ex.printStackTrace();
373 }
374 catch (jhfc.ProtocollException ex)
375 {
376 System.out.println(getClass().getName()+": "+ex+" "+ex.getMessage());
377 ex.printStackTrace();
378 }
379 }
380
381 public void resendJob
382 (
383 HylaFaxConnectionManager hfcm,
384 int jobID
385 )
386 throws java.io.IOException,
387 jhfc.ProtocollException
388 {
389 String name;
390
391 if(jobID>0)
392 {
393 hfcm.command("JOB "+jobID);
394
395 String fileNameOnServer="";
396
397 try
398 {
399 fileNameOnServer=getFileName(hfcm, jobID);
400 }
401 catch (java.lang.NullPointerException ex)
402 {
403 return;
404 }
405
406
407
408 HylaFaxJob hfj=new HylaFaxJob(this, numberOfParameters);
409 String value;
410 HylaFaxJobParameter hfjp;
411 int i;
412
413 // get parameters of source-job
414 for(i=0;i<numberOfParameters;i++)
415 {
416 value=null;
417 try
418 {
419 hfjp=(HylaFaxJobParameter)parameters.elementAt(i);
420 //System.out.println("JPARM "+hfjp.getName());
421 value=hfcm.command("JPARM "+hfjp.getName()).substring(4);
422 //System.out.println("value="+value);
423 hfj.setParameter(hfjp.getName(), value);
424 }
425 catch (jhfc.ProtocollException ex)
426 {
427 System.out.println("ex="+ex+": "+ex.getMessage());
428 }
429 //System.out.println("value="+value);
430 }
431
432 String fileName=this.getFileName(hfcm, jobID);
433
434 System.out.println("hfj="+hfj);
435 String owner=hfj.getHylaFaxJobParameterValue("OWNER");
436 System.out.println("owner="+owner);
437 String user=FaxSetup.account;
438 System.out.println("user="+user);
439 if(user.trim().equals(owner.trim()))
440 {
441 // own job!
442 // submit new job based on source job
443
444 hfcm.command("JOB DEFAULT");
445 hfcm.command("JNEW");
446 // get parameters of source-job
447 for(i=0;i<numberOfParameters;i++)
448 {
449 try
450 {
451 value=hfj.getHylaFaxJobParameterValue(i);
452 hfjp=(HylaFaxJobParameter)parameters.elementAt(i);
453 name=hfjp.getName();
454 System.out.println("name="+name);
455 if((!name.equals("SENDTIME"))&&
456 (!name.equals("STATE"))&&
457 (!name.equals("STATUS"))&&
458 (!name.equals("P"))&&
459 (!name.equals("OWNER"))&&
460 (!name.equals("LASTTIME"))&&
461 (!name.equals("ID"))&&
462 (!name.equals("D")))
463 {
464 System.out.println("value="+value);
465 hfcm.command("JPARM "+name+" "+value);
466 }
467 else if(name.equals("LASTTIME"))
468 {
469 hfcm.command("JPARM LASTTIME 000259");
470 }
471 }
472 catch (jhfc.ProtocollException ex)
473 {
474 System.out.println("ex="+ex+": "+ex.getMessage());
475 }
476 }
477 hfcm.command("JPARM DOCUMENT "+fileName);
478 hfcm.command("JSUBM");
479 }
480 else
481 {
482 return;
483 // throw "operation not permitted: not owner!"
484 /*
485 JOptionPane.showMessageDialog(
486 null,
487 "you are not the owner of this job",
488 "JHFC",
489 // JOptionPane.INFORMATION_MESSAGE);
490 JOptionPane.ERROR_MESSAGE);
491 */
492
493 }
494
495
496
497 /*
498 hfcm.command("JPARM FROMUSER "+fromUser);
499 hfcm.command("JPARM LASTTIME 000259");
500 hfcm.command("JPARM MAXDIALS 6");
501 hfcm.command("JPARM MAXTRIES 3");
502 hfcm.command("JPARM SCHEDPRI 127");
503 hfcm.command("JPARM DIALSTRING "+externalDialstring);
504 hfcm.command("JPARM NOTIFYADDR "+notifyAddress);
505 hfcm.command("JPARM VRES 98");
506 hfcm.command("JPARM PAGEWIDTH 209");
507 hfcm.command("JPARM PAGELENGTH 296");
508 hfcm.command("JPARM NOTIFY none");
509 hfcm.command("JPARM PAGECHOP default");
510 hfcm.command("JPARM CHOPTHRESHOLD 3");
511 hfcm.command("JPARM DOCUMENT "+fileNameOnServer);
512 */
513 }
514 }
515
516
517 /*
518 public HylaFaxJob getJobFromServer
519 (
520 HylaFaxConnectionManager hfcm,
521 int jobID
522 )
523 {
524 int i;
525
526 for(i=0;i<numberOfAllParameters;i++)
527 {
528 System.out.println(allParameters.elementAt(i)+" ");
529 }
530 return(null);
531 }
532 */
533
534 private boolean displayDestination
535 (
536 String owner,
537 String sendersIdentity
538 )
539 {
540 if(owner.equals(FaxSetup.account))
541 {
542 return(true);
543 }
544
545 if(sendersIdentity.equals(FaxSetup.account))
546 {
547 return(true);
548 }
549
550 return(false);
551 }
552
553 private boolean displayJob
554 (
555 String tts,
556 int timespan,
557 String status,
558 String owner,
559 String sendersIdentity
560 )
561 {
562 int yearSendtimeJob;
563 int monthSendtimeJob;
564 int daySendtimeJob;
565 Calendar calendarDisplaySince;
566 Calendar calendarSendtimeJob;
567 Date now;
568 boolean jobIsInTimespan;
569
570 now=new Date();
571 calendarDisplaySince=Calendar.getInstance();
572 calendarSendtimeJob=Calendar.getInstance();
573
574 calendarDisplaySince.setTime(now);
575 calendarDisplaySince.add(Calendar.DATE, -timespan);
576
577 jobIsInTimespan=false;
578
579 try
580 {
581 yearSendtimeJob=Integer.parseInt(tts.substring(0,4));
582 monthSendtimeJob=Integer.parseInt(tts.substring(5,7));
583 daySendtimeJob=Integer.parseInt(tts.substring(8,10));
584
585 calendarSendtimeJob.set(
586 yearSendtimeJob,
587 monthSendtimeJob-1,
588 daySendtimeJob, 0, 0, 0);
589 //System.out.println("a="+calendarDisplaySince);
590 //System.out.println("b="+calendarSendtimeJob);
591 //System.out.println(calendarDisplaySince.get(Calendar.DAY_OF_MONTH)+"."+(calendarDisplaySince.get(Calendar.MONTH)+1));
592 //System.out.println(calendarSendtimeJob.get(Calendar.DAY_OF_MONTH)+"."+(calendarSendtimeJob.get(Calendar.MONTH)+1));
593 //System.exit(0);
594 if(calendarDisplaySince.before(calendarSendtimeJob))
595 {
596 jobIsInTimespan=true;
597 }
598 }
599 catch (NumberFormatException ex)
600 {
601 jobIsInTimespan=true;
602 }
603
604
605 if(jobIsInTimespan==false)
606 {
607 return(false);
608 }
609
610
611 if(!status.equals("D"))
612 {
613 return(true);
614 }
615
616 if(displayDestination(owner, sendersIdentity))
617 {
618 return(true);
619 }
620
621 return(false);
622 }
623
624 private void transformParameterValues
625 (
626 HylaFaxJob hfj,
627 String owner,
628 String sendersIdentity
629 )
630 {
631 HylaFaxJobParameter hfjp;
632 int i;
633 String newValue;
634 String oldValue;
635
636 for(i=0;i<parameters.size();i++)
637 {
638 hfjp=(HylaFaxJobParameter)parameters.elementAt(i);
639
640 if(hfjp.getName().equals("STATE"))
641 {
642 oldValue=hfj.getHylaFaxJobParameterValue(i);
643 newValue=oldValue;
644
645 if(oldValue.equals("D")) newValue="DONE";
646 else if(oldValue.equals("S")) newValue="SUSPENDED";
647 else if(oldValue.equals("P")) newValue="PENDING";
648 else if(oldValue.equals("S")) newValue="SLEEPING";
649 else if(oldValue.equals("B")) newValue="BLOCKED";
650 else if(oldValue.equals("R")) newValue="READY";
651 else if(oldValue.equals("A")) newValue="ACTIVE";
652 else if(oldValue.equals("W")) newValue="WAITING";
653 else if(oldValue.equals("U")) newValue="UNDEFINED";
654
655 hfj.setParameter(i, newValue);
656 break;
657 }
658 else if ((hfjp.getName().equals("SENDTIME")))
659 {
660 oldValue=hfj.getHylaFaxJobParameterValue(i);
661 //System
662 hfj.setParameter(i,
663 oldValue.substring(0,4)+"-"+
664 oldValue.substring(5,7)+"-"+
665 oldValue.substring(8,10)+" "+
666 oldValue.substring(11,13)+":"+
667 oldValue.substring(14,16)+":"+
668 oldValue.substring(17,19)
669 );
670 }
671
672 }
673
674 /*
675 for(i=0;i<parameters.size();i++)
676 {
677 hfjp=(HylaFaxJobParameter)parameters.elementAt(i);
678 //System.out.println("param="+hfjp.getName());
679 if(hfjp.getName().equals("OWNER"))
680 {
681 oldValue=hfj.getHylaFaxJobParameterValue(i);
682 //System.out.println("owner="+oldValue);
683 if(oldValue!=null)
684 {
685 if(!oldValue.equals(FaxSetup.account))
686 {
687 hfj.setParameter("EXTERNAL", "");
688 hfj.setParameter("TOCOMPANY", "");
689 }
690 }
691 }
692 }
693 */
694 if(!displayDestination(owner, sendersIdentity))
695 {
696 hfj.setParameter("EXTERNAL", "");
697 hfj.setParameter("TOCOMPANY", "");
698 }
699 }
700
701
702 private void readQueue
703 (
704 HylaFaxConnectionManager hfcm,
705 Vector jobs,
706 String queueName,
707 int timespan
708 )
709 {
710 HylaFaxJob newJob;
711 int index;
712 HylaFaxJobParameter hylaFaxJobParameter;
713 String tts;
714 // int indexCash;
715 String status;
716 String owner;
717 String dummy;
718 String sendersIdentity;
719
720 try
721 {
722 String sendq=hfcm.list(queueName);
723 StringTokenizer st=new StringTokenizer(sendq, "\n");
724
725 while(st.hasMoreTokens())
726 {
727 newJob=new HylaFaxJob(this, numberOfParameters);
728
729
730 String s=st.nextToken();
731 s=s.trim();
732 //System.out.println("s="+s);
733
734 StringTokenizer stJobFmt=new StringTokenizer(
735 s,
736 delimiter,
737 true);
738
739
740 try
741 {
742 String paramValue=stJobFmt.nextToken();
743 if(stJobFmt.hasMoreTokens())
744 {
745 stJobFmt.nextToken();
746 }
747
748 int id=Integer.parseInt(paramValue);
749 newJob.setID(id);
750 System.out.println("*ID="+id);
751
752 status=stJobFmt.nextToken();
753 dummy=stJobFmt.nextToken();
754
755 owner=stJobFmt.nextToken();
756 dummy=stJobFmt.nextToken();
757 //System.out.println("stat="+status+" owner="+owner);
758
759 sendersIdentity=stJobFmt.nextToken();
760 //System.out.println("sendersIdentity="+sendersIdentity);
761 dummy=stJobFmt.nextToken();
762
763
764 // TTS must be next
765 tts=stJobFmt.nextToken();
766 //System.out.println("tts="+tts);
767
768
769 if(displayJob(tts, timespan, status, owner, sendersIdentity)==false)
770 {
771 continue;
772 }
773
774 newJob.setParameter(0, tts);
775
776 paramValue=stJobFmt.nextToken();
777
778 index=1;
779 while (stJobFmt.hasMoreTokens())
780 {
781 paramValue=stJobFmt.nextToken();
782 // indexCash=fmtMaskIndexMap[index];
783 //System.out.println("value='"+paramValue+"', index="+index);
784
785 if(paramValue.equals(delimiter))
786 {
787 if(index!=0)
788 {
789 newJob.setParameter(index, "");
790 }
791 }
792 else
793 {
794 newJob.setParameter(index, paramValue);
795
796 if(stJobFmt.hasMoreTokens())
797 {
798 stJobFmt.nextToken();
799 }
800 }
801
802
803 index++;
804 }
805
806 transformParameterValues(newJob, owner, sendersIdentity);
807 jobs.addElement(newJob);
808 }
809 catch (java.lang.NumberFormatException ex)
810 {
811 System.out.println(getClass().getName()+": "+ex+" "+ex.getMessage()+" data="+s);
812 continue;
813 }
814 /*xxxxxxxx
815 catch (NoSuchElementException ex)
816 {
817 System.out.println(getClass().getName()+": "+ex+" "+ex.getMessage()+" data="+s);
818 continue;
819 }
820 */
821 }
822 }
823 catch (java.io.IOException ex)
824 {
825 System.out.println(getClass().getName()+": Exception="+ex+" getMessage()="+ex.getMessage());
826 }
827 catch (jhfc.ProtocollException ex)
828 {
829 System.out.println(getClass().getName()+": Exception="+ex+" getMessage()="+ex.getMessage());
830 }
831 }
832
833 public void retrieveAllJobsFromServer
834 (
835 int timespan
836 )
837 throws java.io.IOException
838 {
839 HylaFaxJob newJob;
840 Vector jobs=new Vector();
841 HylaFaxConnectionManager hfcm=null;
842
843 // try
844 // {
845 hfcm=new HylaFaxConnectionManager(hylaFaxHostName, hylaFaxHostPort, false);
846 try
847 {
848 hfcm.openConnection();
849
850 // Wird ein Passwort benoetigt?
851 if(hfcm.login(FaxSetup.account)==HylaFaxConnectionManager.NEEDS_PASSWD)
852 {
853 System.out.println(getClass().getName()+": Password wird benötigt");
854 // hfcm.command("PASS " + ipd.in.getText());
855 }
856
857 }
858 catch (java.io.IOException ex)
859 {
860 synchronized (jobs)
861 {
862 hjdm.setJobs(null);
863 }
864 throw ex;
865 }
866 catch (jhfc.ProtocollException ex)
867 {
868 System.out.println(getClass().getName()+".retrieveAllJobsFromServer(): "+ex+" message="+ex.getMessage());
869 return;
870 }
871
872
873
874 HylaFaxJob xJob=new HylaFaxJob(this, numberOfParameters);
875
876 String jobFMT="JOBFMT %j"+delimiter+"%a"+delimiter+"%o"+delimiter+"%S"+delimiter+jobFmt;
877 //System.out.println(getClass().getName()+": "+jobFMT);
878
879 try
880 {
881 hfcm.command(jobFMT);
882 // hfcm.command("IDLE 900");
883 hfcm.command("TZONE LOCAL");
884
885 readQueue(hfcm, jobs, "sendq", timespan);
886 readQueue(hfcm, jobs, "doneq", timespan);
887
888 hfcm.logout();
889 hfcm.closeConnection();
890
891 synchronized (jobs)
892 {
893 hjdm.setJobs(jobs);
894 }
895 }
896 catch (java.io.IOException ex)
897 {
898 synchronized (jobs)
899 {
900 hjdm.setJobs(null);
901 }
902 throw ex;
903 }
904 catch (jhfc.ProtocollException ex)
905 {
906 System.out.println(getClass().getName()+".retrieveAllJobsFromServer(): "+ex+" message="+ex.getMessage());
907 return;
908 }
909 /*
910 }
911 catch (Exception ex1)
912 {
913 System.out.println(getClass().getName()+": Exception="+ex1+" getMessage()="+ex1.getMessage());
914 Thread.dumpStack();
915
916 if(ex1 instanceof ProtocollException ||
917 ex1 instanceof java.net.SocketException ||
918 ex1 instanceof java.net.UnknownHostException )
919 {
920 try
921 {
922 if(hfcm!=null)
923 {
924 hfcm.closeConnection();
925 }
926 }
927 catch (Exception ex2)
928 {
929 }
930 hfcm=null;
931 }
932 }
933 */
934 }
935 }