Patch title: CSV <-> database
Abstract:
Sample application for CSV interchange with Pliant database
File: /DataBase/csv_db.page
Key:
    Removed line
    Added line
module "/pliant/language/unsafe.pli"
module "/pliant/language/stream.pli"
module "/pliant/language/stream/filesystembase.pli"
module "/pliant/language/os.pli"
module "/pliant/admin/file.pli"
module "/pliant/appli/file_browser.pli"
module "newcsv.pli"

var Str s := page:http_request:lang
gvar Str langue := s 0 2

var Array:Str frl
frl+="Conversion d'un fichier csv en base de donn饢 #0
frl+="Cr顴ion ou appel de la base de donn饳" #1
frl+=" Base de donn饳 : " #2
frl+="Point de montage : " #3
frl+="valider" #4
frl+="aide" #5
frl+="D飬aration d'une base de donn饳" #6
frl+="Retour" #7
frl+="Cr顴ion d'une base de donn饳 ࠰artir d'un fichier ' .csv '" #8
frl+="Fichier CSV ࠣonvertir : " #9
frl+=" d鬩miteur : " #10
frl+="Convertir" #11 
frl+="Appel d'un fichier CSV" #12
frl+="Cr顴ion d'un fichier CSV ࠰artir d'une base de donn饳" #13
frl+="Fichier CSV de sortie : " #14
frl+=" d鬩miteur : " #15
frl+="D馩nition d'un fichier cible" #16
frl+="Pour d飬arer ou appeler une Base de Donn饠on doit : " #17
frl+=" - d'une part indiquer le nom du fichier '.pdb' dans le quel elle sera stock饠[lf] en respectant la syntaxe des chemins (voir plus bas)[lf]" #18
frl+=" cas particulier : la base est stock饠dans '/pliant_data', exemple :'data:/pliant/mabase.pdb'[lf] ou dans 'pliant_security' exemple : 'security:/mabase2.pdb'[lf]" #19 
frl+=" - d'autre part (facultatif) indiquer l'emplacement virtuel de cette base dans l'arborescence 'Data'[lf][lf]" #20
frl+="On doit d馩nir le fichier '.csv' source, et indiquer son d鬩miteur (s鰡rateur)[lf] en respectant la syntaxe des chemins (voir plus bas)" #21
frl+="On doit d馩nir le fichier '.csv' cible, et indiquer son d鬩miteur (s鰡rateur)[lf] en respectant la syntaxe des chemins (voir plus bas)[lf][lf]" #22




#English Dictionary
var Array:Str enl
enl+="Conversion of a csv file to a Data Base"
enl+="Create or call the Data Base"
enl+=" Data Base : "
enl+="Mount point : "
enl+="enter"
enl+="Help ?"
enl+="Declarating a Data Base"
enl+="Back"
enl+="Creating a Data Base from a csv file"
enl+="CSV file to be converted : "
enl+=" d鬩miter : "
enl+="Convert"
enl+="Call a CSV file"
enl+="Creating a CSV file from a Data Base"
enl+="Output CSV file : "
enl+=" d鬩miter : "
enl+="Target csv file definition "
enl+="To declare or call a DataBase you must : " #17
enl+=" - first, indicate the name of a '.pdb' file in which datas will be registerd [lf] you have to follow the Pliant syntax for trees (please see below)[lf]" #18
enl+=" special case: the Database is saved in '/pliant_data', e.g. 'data:/pliant/mybase.pdb' or in 'pliant_security' e.g. 'security:/mybase2.pdb'[lf]" #19 
enl+=" - second (optional) indicate the virtual address of this base in Pliant 'Data' tree[lf]" #20
enl+="You must define the '.csv' source, and indicathe its delimiter, [lf] you have to follow the Pliant syntax for trees (please see below)[lf]" #21
enl+="You must define the '.csv' source, and indicathe its delimiter, [lf] you have to follow the Pliant syntax for trees (please see below)[lf]" #22

#dictionnaire portuguais
var Array:Str ptl
ptl+="Convers㯠de um ficheiro csv en base de dados"
ptl+="Cria磯 ou chamada da base de dados"
ptl+="Base de dados : "
ptl+="Ponto de montagem "
ptl+="Validar"
ptl+="Ajuda"
ptl+="Declara磯 de uma base de dados"
ptl+="Voltar "
ptl+="Cria磯 de uma base de dados a partir de um ficheiro '.csv'"
ptl+="Ficheiro CSV a converter : "
ptl+="Delimitador : "
ptl+="Converter"
ptl+="Chamada de um ficheiro CSV"
ptl+="Cria磯 de um ficheiro CSV a partir de uma base de dados"
ptl+="Fichero CSV albo : "
ptl+="Delimitador : "
ptl+="Definicao de um ficheiro albo : "
ptl+="Para declarar ou chamar uma Base de Dados deve-se:"
ptl+="- de um lado indicar o nome do ficheiro '.pdb' no qual serᠭemorisada respeitando a sintaxe dos caminhos (ver mais a baixo)[lf]"
ptl+="Caso particular: a base 頭emorisada em '/pliant_data', exemplo 'data:/pliant/mabse.pdb' � 'pliant_security' exemplo 'security:/mabase2.pdb'[lf]"
ptl+="- de outro lado (facultativo) indicar o lugar virtual dessa base na arborescence 'Data'.[lf][lf]"
ptl+="Deve-se definir o ficheiro'.csv' de origem e indicar o seu limite (separador) respeitando a sintaxe dos caminhos (ver mais a baixo)[lf][lf]"
ptl+="Deve-se definir o ficheiro'.csv' albo e indicar o seu delimitador (separador)respeitando a sintaxe dos caminhos (ver mais a baixo)[lf][lf]"






# Choix de la langue #language choice
gvar Array:Str label

if langue = "fr"
  label := frl
eif langue = "en"
  label :=enl
eif langue = "pt"
  label := ptl  
else
  label := frl

  
#############################################################################################    
title label:0

var Str fich  := "/home/michel/DataBase/sample.csv"
var Str delim := ";"
var Str delim2 := ";"
var Str newbase := "/home/michel/DataBase/essai.pdb"
var Str implantation := "/pliant/csv"
var Str sortie := "/home/michel/DataBase/out.csv"
newbase := "/home/michel/DataBase/essai.pdb"
######################"Cr顴ion ou appel de la base de donn饳"
header label:1
input label:2 newbase length 40 noeol
input label:3 implantation length 20 noeol
button label:4
  page reload_page
note label:5
  title label:6
  bold 
    text label:17 
  eol
  text label:18
  text label:19
  text label:20
  
  execute_dynamic_page "pliant:/home/michel/DataBase/chemins"+langue+".html"
  button "retour"  
    goto_backward  

##############"Cr顴ion d'une base de donn饳 ࠰artir d'un fichier ' .csv '"
header label:8
input label:9 fich length 40 noeol
input label:10 delim length 4 noeol
button label:11
  (gvar Database:CSVDatabase mabase) load newbase mount implantation
  gvar Data:CSVDatabase  madb :> mabase data
  (gvar Stream input) open fich in+safe
  to_db input delim madb
  mabase store # (鶩te le log de toutes les op鲡tions)
#  page goto_backward 1
note label:5
  title label:12 #"Appel d'un fichier CSV"
  text label:21

  execute_dynamic_page "pliant:/home/michel/DataBase/chemins"+langue+".html"
  button "retour"
    goto_backward  

#############"Cr顴ion d'un fichier CSV ࠰artir d'une base de donn饳"      
header label:13
input label:14 sortie length 40 noeol
input label:10 delim2 length 4 noeol
button label:11
  (gvar Database:CSVDatabase mabase) load newbase mount implantation
  gvar Data:CSVDatabase  madb :> mabase data  
  (gvar Stream output) open sortie out+safe
  to_csv madb delim2 output
  output close
#  page goto_backward 1
note label:5
  title label:16
  text label:22

  execute_dynamic_page "pliant:/home/michel/DataBase/chemins"+langue+".html"
  button "retour"
    goto_backward