From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 81741 invoked by alias); 6 Jun 2017 09:26:25 -0000 Mailing-List: contact kawa-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: kawa-owner@sourceware.org Received: (qmail 81714 invoked by uid 89); 6 Jun 2017 09:26:23 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=3.7 required=5.0 tests=AWL,BAYES_50,FOREIGN_BODY1,GIT_PATCH_2,KAM_ASCII_DIVIDERS,KAM_LAZY_DOMAIN_SECURITY autolearn=no version=3.3.2 spammy=httpequiv, http-equiv, iso88591, iso-8859-1 X-HELO: smtps-n.oca.eu Received: from smtps-n.oca.eu (HELO smtps-n.oca.eu) (192.54.174.167) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 06 Jun 2017 09:26:19 +0000 Received: from [192.168.109.88] (natoca100-13.unice.fr [134.59.100.13]) by smtps-n.oca.eu (Postfix) with ESMTPSA id 1EC1980518 for ; Tue, 6 Jun 2017 11:26:21 +0200 (CEST) From: Damien MATTEI To: Kawa mailing list Subject: Re: xml literals Date: Tue, 06 Jun 2017 09:26:00 -0000 User-Agent: KMail/1.9.6 References: <201705151611.09622.Damien.Mattei@unice.fr> <20170515165710.GA2081@moita.oca.eu> <3fbfb5fb-fbcb-b772-45c5-e330112a8498@bothner.com> In-Reply-To: <3fbfb5fb-fbcb-b772-45c5-e330112a8498@bothner.com> MIME-Version: 1.0 Content-Type: Multipart/Mixed; boundary="Boundary-00=_4UnNZTzKaSznmw/" Message-Id: <201706061126.16579.Damien.Mattei@unice.fr> X-IsSubscribed: yes X-SW-Source: 2017-q2/txt/msg00090.txt.bz2 --Boundary-00=_4UnNZTzKaSznmw/ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-length: 13437 Le Monday 15 May 2017 20:51:11 Per Bothner, vous avez =C3=A9crit=C2=A0: > I checked in a fix, in both the master and kawa-2.4 branches. >=20 > The bug only happened when the value of (html:td result) is not used. > You might say: But it is used in: > (set! html-literal-table-data-code > (html:td result)) >=20 > No, because html-literal-table-data-code is not used, so the assignment > is ignored (except for possible side-effects). hello Per, it seems the bug is still active under some circumstances, i have made a few modif. in the code and even if the literal is used i have= the same error: mattei@moita Jkawa]$ java -cp /home/mattei/kawa-2.4/lib/kawa.jar:/home/mat= tei/NetBeansProjects/Sidonie/build/web/WEB-INF/classes kawa.repl --output-f= ormat html -C DBtoWebObserversKawa.scm (compiling DBtoWebObserversKawa.scm to eu.oca.kawafunct.DBtoWebObserversKaw= a) Exception in thread "main" java.lang.Error: gnu.kawa.xml.MakeElement does n= ot implement Externalizable at gnu.expr.LitTable.error(LitTable.java:122) at gnu.expr.LitTable.writeObject(LitTable.java:282) at gnu.expr.LitTable.emit(LitTable.java:85) at gnu.expr.Compilation.generateBytecode(Compilation.java:2210) at gnu.expr.Compilation.process(Compilation.java:1943) at gnu.expr.ModuleInfo.loadByStages(ModuleInfo.java:306) at gnu.expr.ModuleInfo.loadByStages(ModuleInfo.java:288) at kawa.repl.compileFiles(repl.java:780) at kawa.repl.processArgs(repl.java:441) at kawa.repl.main(repl.java:820) i have make some development in the code, and i cannot tell exactly what is= the new instructions causing the same error again, i compiled it with the latest stable kawa-2.4 binary, i suppose your fixs a= re in the binary too. i have provided the source code in attachment, it should compile till it re= ach the error the same way on your host than on mine (i have commeted out s= ome include scheme files from my library but there is no concern about that to compile) youn can compile it with your 2.4 kawa version like this: java -cp kawa-2.4.jar kawa.repl --output-format html -C DBtoWebObserversKaw= a.scm i suppose the news instructions causing the trouble are in those part of my= code: in a let i assign option-lst to '(DIR: "LTR" BORDER: 1 width: 315 id: "tabl= e_observateurs") and use it here: ;; HTML table with options ;; Kawa offers simple slicing: @ not in Scheme R7RS=20 (set! html-literal-table=20 (html:table @option-lst @literal-rows-list)) =20=20=20=20=20 ;; HTML (set! html-literal (html:td align: "center" html-literal-table)) =20=20=20=20=20 (set! html-literal-str (html-literal:toString)) =20=20=20=20=20=20 (display-msg-var-nl "DBtoWebObserversKawa : work : html-literal-str = =3D " html-literal-str) =20=20=20=20=20 (display-msg-var-nl "DBtoWebObserversKawa : work : res =3D " res) =20=20=20=20=20 (append-string-to-result html-literal-str) but i also add some change in the literals in the WHILE loop before, is uppose if i revert all the changes it will compile again at some point... i had made some test in REPL before coding and all was good exept one time = the REPL exit to shell after an error,=20 i have made a lot of test here is a sample that lead to error in shell (i a= dmit my literal input was strange...): [mattei@moita bin]$ ./kawa --output-format html #|kawa:1|# (html:td "foo") foo #|kawa:2|# (define td1 (html:td "foo")) #|kawa:3|# (define td-lst (list td1 td1 td1)) #|kawa:4|# td-lst foo foo foo #|kawa:5|# (car td-lst) foo #|kawa:6|# (eval `(html:table ,td-lst)) java.lang.NullPointerException at gnu.xml.XMLPrinter.getHtmlTag(XMLPrinter.java:525) at gnu.xml.XMLPrinter.startElement(XMLPrinter.java:498) at gnu.lists.TreeList.consumeIRange(TreeList.java:1252) at gnu.lists.TreeList.consumeNext(TreeList.java:1080) at gnu.xml.XMLPrinter.writeObject(XMLPrinter.java:723) at gnu.kawa.xml.NodeConstructor.popNodeContext(NodeConstructor.java= :67) at atEvalLevel-1.run() at gnu.expr.ModuleExp.evalModule2(ModuleExp.java:292) at gnu.expr.ModuleExp.evalModule(ModuleExp.java:211) at kawa.lang.Eval.evalBody(Eval.java:100) at kawa.lang.Eval.evalForm$X(Eval.java:27) at kawa.lib.scheme.eval.eval$X(eval.scm:9) at kawa.lib.scheme.eval.eval$X(eval.scm) at atInteractiveLevel-6.run(stdin:6) at gnu.expr.ModuleExp.evalModule2(ModuleExp.java:292) at gnu.expr.ModuleExp.evalModule(ModuleExp.java:211) at kawa.Shell.run(Shell.java:283) at kawa.Shell.run(Shell.java:196) at kawa.Shell.run(Shell.java:183) at kawa.repl.processArgs(repl.java:714) at kawa.repl.main(repl.java:820) <{null name} #|kawa:7|# `(html:table td-lst) #|kawa:8|# `(html:table ,td-lst) #|kawa:9|# (apply html:table td-lst) #|kawa:10|# (define bar (apply html:table td-lst)) #|kawa:11|# bar #|kawa:12|# (display bar)
foofoof= oo
#|kawa:13|# (define bar2 `(html:table ,td-lst)) #|kawa:14|# bar2 #|kawa:15|# (display bar2) (html:table (foo foo foo)) #|kawa:16|# td-lst #|kawa:17|# (display td-lst) (foo foo foo) #|kawa:18|# DIR: /dev/stdin:18:1: warning - keyword should be quoted if not in argument posi= tion java.lang.RuntimeException: attribute 'DIR' follows non-attribute content at gnu.xml.XMLFilter.error(XMLFilter.java:1474) at gnu.xml.XMLFilter.startAttribute(XMLFilter.java:963) at gnu.xml.XMLFilter.writeObject(XMLFilter.java:700) at atInteractiveLevel-18.run(stdin:18) at gnu.expr.ModuleExp.evalModule2(ModuleExp.java:292) at gnu.expr.ModuleExp.evalModule(ModuleExp.java:211) at kawa.Shell.run(Shell.java:283) at kawa.Shell.run(Shell.java:196) at kawa.Shell.run(Shell.java:183) at kawa.repl.processArgs(repl.java:714) at kawa.repl.main(repl.java:820) #|kawa:19|# (define option-lst '(DIR: "LTR" BORDER: 1 width: 315 id: "table= _observateurs")) #|kawa:20|# option-lst java.lang.RuntimeException: attribute 'DIR' follows non-attribute content at gnu.xml.XMLFilter.error(XMLFilter.java:1474) at gnu.xml.XMLFilter.startAttribute(XMLFilter.java:963) at gnu.xml.XMLFilter.writeObject(XMLFilter.java:700) at gnu.xml.XMLFilter.writeObject(XMLFilter.java:695) at gnu.mapping.Values.writeValues(Values.java:226) at atInteractiveLevel-20.run(stdin:20) at gnu.expr.ModuleExp.evalModule2(ModuleExp.java:292) at gnu.expr.ModuleExp.evalModule(ModuleExp.java:211) at kawa.Shell.run(Shell.java:283) at kawa.Shell.run(Shell.java:196) at kawa.Shell.run(Shell.java:183) at kawa.repl.processArgs(repl.java:714) at kawa.repl.main(repl.java:820) #|kawa:21|# td-lst #|kawa:22|# (display td-lst #|.....23|# ) (foo foo foo) #|kawa:24|# (append option-lst td-lst) java.lang.RuntimeException: attribute 'DIR' follows non-attribute content at gnu.xml.XMLFilter.error(XMLFilter.java:1474) at gnu.xml.XMLFilter.startAttribute(XMLFilter.java:963) at gnu.xml.XMLFilter.writeObject(XMLFilter.java:700) at gnu.xml.XMLFilter.writeObject(XMLFilter.java:695) at gnu.mapping.Values.writeValues(Values.java:226) at atInteractiveLevel-24.run(stdin:24) at gnu.expr.ModuleExp.evalModule2(ModuleExp.java:292) at gnu.expr.ModuleExp.evalModule(ModuleExp.java:211) at kawa.Shell.run(Shell.java:283) at kawa.Shell.run(Shell.java:196) at kawa.Shell.run(Shell.java:183) at kawa.repl.processArgs(repl.java:714) at kawa.repl.main(repl.java:820) #|kawa:25|# (define option-lst '('DIR: "LTR" 'BORDER: 1 'width: 315 'id: "t= able_observateurs")) #|kawa:26|# option-lst java.lang.RuntimeException: attribute 'DIR' follows non-attribute content at gnu.xml.XMLFilter.error(XMLFilter.java:1474) at gnu.xml.XMLFilter.startAttribute(XMLFilter.java:963) at gnu.xml.XMLFilter.writeObject(XMLFilter.java:700) at gnu.xml.XMLFilter.writeObject(XMLFilter.java:695) at gnu.xml.XMLFilter.writeObject(XMLFilter.java:695) at gnu.mapping.Values.writeValues(Values.java:226) at atInteractiveLevel-26.run(stdin:26) at gnu.expr.ModuleExp.evalModule2(ModuleExp.java:292) at gnu.expr.ModuleExp.evalModule(ModuleExp.java:211) at kawa.Shell.run(Shell.java:283) at kawa.Shell.run(Shell.java:196) at kawa.Shell.run(Shell.java:183) at kawa.repl.processArgs(repl.java:714) at kawa.repl.main(repl.java:820) #|kawa:27|# (list DIR: "LTR" BORDER: 1 width: 315 id: "table_observateurs") java.lang.RuntimeException: attribute 'DIR' follows non-attribute content at gnu.xml.XMLFilter.error(XMLFilter.java:1474) at gnu.xml.XMLFilter.startAttribute(XMLFilter.java:963) at gnu.xml.XMLFilter.writeObject(XMLFilter.java:700) at gnu.xml.XMLFilter.writeObject(XMLFilter.java:695) at gnu.mapping.Values.writeValues(Values.java:226) at gnu.mapping.CallContext.writeValue(CallContext.java:333) at gnu.mapping.Procedure.apply(Procedure.java:153) at gnu.mapping.Procedure.apply(Procedure.java:118) at gnu.mapping.CallContext.runUntilDone(CallContext.java:227) at gnu.expr.ModuleExp.evalModule2(ModuleExp.java:349) at gnu.expr.ModuleExp.evalModule(ModuleExp.java:211) at kawa.Shell.run(Shell.java:283) at kawa.Shell.run(Shell.java:196) at kawa.Shell.run(Shell.java:183) at kawa.repl.processArgs(repl.java:714) at kawa.repl.main(repl.java:820) #|kawa:28|# (define tbl-rows (apply html:tr td-lst)) #|kawa:29|# tbl-rows #|kawa:30|# (display tbl-rows) foofoofoo<= /td> #|kawa:31|# html:table #|kawa:32|# list #|kawa:33|# car #|kawa:34|# #|kawa:35|# (define option-lst '(DIR: "LTR" BORDER: 1 width: 315 id: "table= _observateurs")) #|kawa:36|# `(html-table ,@option-lst ,@tbl-rows) Exception in thread "main" java.lang.Error: expected list in quasi-quote sp= licing at kawa.lang.Quote.append$V(Quote.java:418) at atInteractiveLevel-36.run(stdin:36) at gnu.expr.ModuleExp.evalModule2(ModuleExp.java:292) at gnu.expr.ModuleExp.evalModule(ModuleExp.java:211) at kawa.Shell.run(Shell.java:283) at kawa.Shell.run(Shell.java:196) at kawa.Shell.run(Shell.java:183) at kawa.repl.processArgs(repl.java:714) at kawa.repl.main(repl.java:820) shell exit here another run that does not exit with error to shell: [mattei@moita bin]$ ./kawa --output-format html #|kawa:1|# (define option-lst '(DIR: "LTR" BORDER: 1 width: 315 id: "table_= observateurs")) #|kawa:2|# (define td1 (html:td "foo")) #|kawa:3|# (define td-lst (list td1 td1 td1)) #|kawa:4|# td-lst foo foo foo #|kawa:5|# (car td-lst) foo #|kawa:6|# (display td-lst) (foo foo foo) #|kawa:7|# (define tbl-rows (apply html:tr td-lst)) #|kawa:8|# (display tbl-rows) foofoofoo<= /td> #|kawa:9|# (html:tr @td-lst) foofoofoo #|kawa:10|# (map html:tr td-lst) foo foo foo #|kawa:11|# (define tbl-row-lst (map html:tr td-lst)) #|kawa:12|# tbl-row-lst foo foo foo #|kawa:13|# (html:table DIR: "LTR" BORDER: 1 width: 315 id: "table_observat= eurs" @tbl-row-lst)
foo
foo
foo
#|kawa:14|# (html:table @option-lst @tbl-row-lst)
foo
foo
foo
#|kawa:15|# (display option-lst) (DIR: LTR BORDER: 1 width: 315 id: table_observateurs) #|kawa:16|# `(html-table ,@option-lst ,@tbl-row-lst) html-table DIR=3D" LTR " BORDER=3D" 1 " width=3D" 315 " id=3D" table= _observateurs #|kawa:17|# (exit) Vous avez du nouveau courrier dans /var/spool/mail/mattei [mattei@moita bin]$ pwd /home/mattei/kawa-2.4/bin those examples are with kawa-2.4, the last one run well, but when i do simi= lar thing in code i have the error i also test if first with kawa-2.1 as i expected it to do not make error if= the literal was used regards, damien included file: DBtoWebObserversKawa.scm --Boundary-00=_4UnNZTzKaSznmw/ Content-Type: text/plain; charset="utf-8"; name="DBtoWebObserversKawa.scm" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="DBtoWebObserversKawa.scm" Content-length: 13960 ;; Kawa Scheme code for java virtual machine and tomcat web server ;; author: Damien Mattei ;; compilation method: ;; java -cp /usr/local/share/java/kawa-2.1.jar:/home/mattei/NetBeansProject= s/Sidonie/build/web/WEB-INF/classes kawa.repl -C DBtoWebObserversKawa.scm ;;=20 ;; to add more tail-calls optimisations: ;; java -cp /usr/local/share/java/kawa-2.1.jar:/home/mattei/NetBeansProject= s/Sidonie/build/web/WEB-INF/classes kawa.repl --full-tailcalls -C DBtoWebOb= serversKawa.scm=20 ;; jar cf ~/Dropbox/KawaFunctProg.jar eu ;; java -cp /usr/local/share/java/kawa-2.1.jar:/home/mattei/NetBeansProject= s/Sidonie/build/web/WEB-INF/classes kawa.repl --output-format html -C DBtoW= ebObserversKawa.scm ;; ;; java -cp /home/mattei/kawa-2.4/lib/kawa.jar:/home/mattei/NetBeansProject= s/Sidonie/build/web/WEB-INF/classes kawa.repl --output-format html -C DBtoW= ebObserversKawa.scm (module-name "eu.oca.kawafunct.DBtoWebObserversKawa") (require 'regex) ;; (include-relative "../git/LOGIKI/lib/first-and-rest.scm") ;; (include-relative "../git/LOGIKI/lib/syntactic-sugar.scm") ;; YES in ka= wa you can include files from other schemes... ;; (include-relative "../git/LOGIKI/lib/display.scm") ;; (include-relative "../git/LOGIKI/lib/case.scm") ;; for CASE with STRINGS ;; (include-relative "../git/LOGIKI/lib/list.scm") ;; for remove-last used= by map.scm ;; (include-relative "../git/LOGIKI/lib/set.scm") ;; for map-nil* ;; (include-relative "../git/LOGIKI/lib/map.scm") ;; for map-nil* (define-simple-class DBtoWebObserversKawa () =20 (Nom ::java.lang.String init-keyword: Nom:) (res ::java.lang.String init-keyword: res:) =20=20 ((*init* (nomParam ::java.lang.String) ) =20=20=20 (set! Nom nomParam) =20=20=20 #;(work)) =20=20 ;; Need a default constructor as well. ((*init*) #!void) =20=20 ((work) ::java.lang.String ;; do the job: (eu.oca.DataBase:searchDriverStatic) (display "DBtoWebObserversKawa : work : eu.oca.DataBase:searchDriverStat= ic PASSED") (newline) =20=20=20 (eu.oca.DataBase:connectStatic) (display "DBtoWebObserversKawa : work : eu.oca.DataBase:connectStatic PA= SSED") (newline) (eu.oca.DataBase:createStatementStatic) ;; i put the statement here if i= t's true it can be reused for multiple SQL queries (display "DBtoWebObserversKawa : work : eu.oca.DataBase:createStatementS= tatic PASSED") (newline) =20=20=20 (let* ((marequete "SELECT * FROM Obs ORDER BY Auteur") =09=20=20 (rs ::java.sql.ResultSet #!null) (total '()) (result '()) ;; first we fetch the data "outremer" and parse the file to get the obse= rvers code (wds-url "http://ad.usno.navy.mil/wds/Webtextfiles/wdsnewref.txt") ;; (define wds-url "http://ad.usno.navy.mil/wds/Webtextfiles/wdsnewref.t= xt") (wds-data-str &<{&[wds-url]}) ;; could take a few seconds to GET file ;; (define wds-data-str &<{&[wds-url]}) ;;(str1 (substring wds-data-str 0 30)) (len-wds-data-str (string-length wds-data-str)) =09=20=20 ;; get and split using positions of the minus ----- lines (pos-minus=20=20 (regex-match-positions "---------------------------------------------------------------------= --------------------------------------------------------"=20 wds-data-str)) =09=20=20 (pos-minus-end (cdr (car pos-minus))) =09=20=20 (wds-data-str-minus-1 (substring wds-data-str pos-minus-end (- (string-length wds-data-str) 1))) =09=20=20 (pos-minus2=20=20 (regex-match-positions "---------------------------------------------------------------------= --------------------------------------------------------"=20 wds-data-str-minus-1)) =09=20=20 (pos-minus2-end (cdr (car pos-minus2))) =09=20=20 (wds-data-str-minus-2 (substring wds-data-str-minus-1 pos-minus2-end (- (string-length wds-data-str-minus-1) 1))) =09=20=20 ;; get and split using positions of the equals =3D=3D=3D=3D=3D=3D line (pos-equals (regex-match-positions "=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D" wds-data-str-minus-2)) (pos-equals-begin (car (car pos-equals))) (wds-data-str-equals (substring wds-data-str-minus-2 0 (- pos-equals-begin 1))) ;;(wds-data-str-split (regex-split (string #\return) wds-data-str))=20 (wds-data-str-split (regex-split (string #\linefeed) wds-data-str-equals= )) ;; (define wds-data-str-split (regex-split (string #\linefeed) wds-data-= str)) ;; remove null string (rgx (begin=20 (display-nl "DBtoWebObserversKawa : work : creating regex.") (regex "^[a-zA-Z]"))) (tst-space-string (lambda (s) (if (regex-match rgx s) s '()))) (wds-data-str-no-spaces=20 (begin (display-nl "DBtoWebObserversKawa : work : running map-nil-iter-opt= im-tail-calls-call....") ( map-nil-iter-optim-tail-calls-call tst-space-string wds-data-str-sp= lit ))) ;; variables used for creating HTML page using html/xml literals (html-literal-table-rows '()) ;; rows list of the table of observers (html-literal-table-data-observer '()) ;; table data : observer (html-literal-table-data-code '()) ;; table data : code (literal-rows-list '()) ;; list of the litterals rows=20 (html-literal-table '()) ;; table of observers (html-literal '()) ;; the whole set of HTML literals (html-literal-str "") ;; the string of the whole set of HTML literals (option-lst '(DIR: "LTR" BORDER: 1 width: 315 id: "table_observateurs"))= ;; various options for various html tags (here TABLE) ) ;; end of LET ;; debug display (display-nl "DBtoWebObserversKawa : work : after let* declarations.") ;;(display-msg-var-nl "DBtoWebObserversKawa : work : str1 =3D " str1) (display-msg-var-nl "DBtoWebObserversKawa : work : length wds-data-st= r =3D " len-wds-data-str) (display-msg-var-nl "DBtoWebObserversKawa : work : (car wds-data-str-= split) =3D " (car wds-data-str-split)) (display-msg-var-nl "DBtoWebObserversKawa : work : (substring wds-dat= a-str-minus-1 0 50) =3D " (substring wds-data-str-minus-1 0 50)) (display-msg-var-nl "DBtoWebObserversKawa : work : (substring wds-dat= a-str-minus-2 0 50) =3D " (substring wds-data-str-minus-2 0 50)) (display-msg-var-nl "DBtoWebObserversKawa : work : (substring wds-dat= a-str-equals 0 50) =3D " (substring wds-data-str-equals 0 50)) (display-msg-var-nl "DBtoWebObserversKawa : work : (cadr wds-data-str= -split) =3D " (cadr wds-data-str-split)) (display-msg-var-nl "DBtoWebObserversKawa : work : (car wds-data-str-= no-spaces) =3D " (car wds-data-str-no-spaces)) ;;(display-msg-var-nl "DBtoWebObserversKawa : work : option-lst =3D "= option-lst) =20=20=20=20=20 ;; partie HTML =20=20=20=20=20 =20=20=20=20 (set! res=20 (gnu.lists.FString:toString (string-append "" " " " " =09=20=20=20=20=20 #;"" ;;"" " Observateurs - Codes" " " " " "

Codes = utilis=C3=A9s pour les Observateurs : classement par ordre alphab=C3=A9tiqu= e des codes" "

 " " " " " " " " " " " " " " "))) ;;" ") =09=09=20=20=20=20=20=20=20 =09=09=20=20=20=20=20=20=20 ;; 0 : code (set! result (rs:getString 1)) =09=09=20=20 (if (or (rs:wasNull) (string-null? result)) =09=09=20=20=20=20=20=20 (display-nl "DBtoWebObserversKawa : work : result (code) : string = or result set is null") =09=09=20=20=20=20=20=20=09=09=09=20=20=20 (begin ;;(append-string-to-result ""))) =09=09=20=20 =09=09=20=20 ;; 1 : auteur (Observer) (set! result (rs:getString 2)) =09=09=20=20 (if (rs:wasNull) (set! result "NuLL")) =09=09=20=20 ;;(append-string-to-result "") =09=09=20=20 (set! html-literal-table-rows (html:tr html-literal-table-data-code html-literal-table-data-observer)) (display-msg-var-nl "DBtoWebObserversKawa : work : html-literal-table-= rows =3D " html-literal-table-rows) (set! literal-rows-list (cons html-literal-table-rows literal-rows-list)) (rs:next)=20 =09=09=20=20 ) ;; end WHILE (Do While ... Loop)=20 =09=20=20=20 ) ;; end when (test empty SQL result set) (display-msg-var-nl "DBtoWebObserversKawa : work : total =3D " total) =20=20=20=20=20 (display-msg-var-nl "DBtoWebObserversKawa : work :literal-rows-list = =3D " literal-rows-list) (set! literal-rows-list (reverse literal-rows-list)) ;; revert the list so it's well ordered to= display =20=20=20=20=20 (display-msg-var-nl "DBtoWebObserversKawa : work :(reverse literal-ro= ws-list) =3D " literal-rows-list) =20=20=20=20=20 ;; HTML table with options ;; Kawa offers simple slicing: @ not in Scheme R7RS=20 (set! html-literal-table=20 (html:table @option-lst @literal-rows-list)) =20=20=20=20=20 ;; HTML (set! html-literal (html:td align: "center" html-literal-table)) =20=20=20=20=20 (set! html-literal-str (html-literal:toString)) =20=20=20=20=20=20 (display-msg-var-nl "DBtoWebObserversKawa : work : html-literal-str = =3D " html-literal-str) =20=20=20=20=20 (display-msg-var-nl "DBtoWebObserversKawa : work : res =3D " res) =20=20=20=20=20 (append-string-to-result html-literal-str) =20=20=20=20=20 ;; we are in jersey/ path of the URL (append-string-to-result (string-append " " ;; unclosed table (verifier version anglaise) ;;" " "
" " Tout savoir..." "
" " Classement par nom= s" "
"))) =09=20=20=20=20=20=20 =20=20=20=20=20 (display-msg-var-nl "DBtoWebObserversKawa : work : res =3D " res) =20=20=20=20=20 ;; converting from SQL server to MySQL (MariaDB) (set! marequete (sql-server->mysql-server-syntax marequete)) (display-msg-var-nl "DBtoWebObserversKawa : work : Voila la valeur SQ= L de la requ=C3=A8te : marequete =3D " marequete) =20=20=20=20=20 (eu.oca.DataBase:executeQueryStatic=20 marequete "Observateurs") (set! rs eu.oca.DataBase:resultSetObservateurs) =20=20=20=20=20 (rs:first) (set! total 0) =20=20=20=20=20 (rs:beforeFirst) =20=20=20=20=20 (when (rs:next) ;; test SQL empty result set =09=20=20=20 ;; DO WHILE LOOP =09=09 (while (not (rs:isAfterLast)) =09=09=20=20=20=20=20=20=20 (set! total (+ total 1)) =09=09=20=20 ;;(append-string-to-result "
") (set! html-literal-table-data-code (html:td DIR: "LTR" ALIGN: "LEFT" result)) =09=09=09 (display-msg-var-nl "DBtoWebObserversKawa : work : result (code) =3D " = result) ;;(append-string-to-result (string-upcase result)) #;(append-string-to-result "") =09=09=20=20 (set! html-literal-table-data-observer=20 (html:td DIR: "LTR" ALIGN: "LEFT" result)) (display-msg-var-nl "DBtoWebObserversKawa : work : result (Observer) = =3D " result) ;;(append-string-to-result result) ;;(append-string-to-result "" " Tout savoir...
" " " "")) =20=20=20=20=20 (display-msg-var-nl "DBtoWebObserversKawa : work : res =3D " res) =20=20=20=20=20 ) ;; end let* =20=20=20 (eu.oca.DataBase:closeStatic) (display "DBtoWebObserversKawa : work : eu.oca.DataBase:closeStatic PASS= ED") (newline) =20=20=20 ;; (eu.oca.DataBase:deregisterDriverStatic) ;; (display "ResultatGeneralFKawa : work : eu.oca.DataBase:deregisterDri= verStatic PASSED") ;; (newline) =20=20=20 =20=20=20 (display-msg-var-nl "DBtoWebObserversKawa : work : res =3D " res) =20=20=20 res) ;; return a String =20=20 =20=20 =20=20 ;; other Class definition functions =20=20 ((sql-server->mysql-server-syntax query) ;; replace [ and ] by ` (regex-replace* (regex "\\]") (regex-replace* (regex "\\[") query "`") "= `")) =20=20 ((append-string-to-result str) ;; append a string to result (set! res (gnu.lists.FString:toString (string-append res str)))) =20=20 ((string-null? str) (string=3D? str "")) =20=20 ((fix x) (display-nl "DBtoWebObserversKawa.scm :: entering fix") (let ((r (inexact->exact (truncate x)))) (display "ResultatGeneralFKawa.scm :: fix :: r =3D") (display r) (newline) r)) =20=20 ) ;; end of class --Boundary-00=_4UnNZTzKaSznmw/--