Learning by Example |
Von Thomas Bez am 28.08.2016
Weblog PedigreeAdmin <https://www.tedesca.net/PedigreeAdmin>
Every visitor of the Pedigree Database is allowed to submit changes:
For example, a user navigates to the simple pedigree view <http://www.barnim.net/pedigree/show/66130.html> or the detail view <http://www.barnim.net/pedigree/details/66130.html>, does changes in the update form and presses the Update button.
The changes will not be performed immediately on the Database. Rather, an e-mail is generated and sent to one of the Editors of the Database. The Editor has to do a number of sanity and data integrity checks before he he finally enters the information in the Database.
Here is an example of such e-mail. It reflects the information entered in the update form plus some information automatically added:
start
mode : update
# name : Ciana Blonde de Lady Fontaine la Belle
index : 59036
# title :
title : Ch. France
# colour :
colour : Fauve
# regno :
regno : 1BBr 104277/15210
# sire :
sire : Twiny Blond de la Tour Saint Genin
# dam :
dam : Toya Blonde de Lady Fontaine la Belle
# breeder :
breeder : monique weber-lo giaco, saint-sauveur-sur-ecole, france
# birth : 0000-00-00
birth : 2007-06-19
# owner :
owner : poissonnet jacqueline, itteville, france
# hd :
hd : B/B
# csnb :
csnb : Sain OK
# note :
note : n° Identification : 250269700377544; CACS Nationale Elevage France 2011; Sélection France 2011; Pontoise - 15-05-2011 - CACS,CACIB,BOB - Juge M. Jacques MEDARD-RINGUET; Angers - 27-03-2011 -CACS,CACIB,BOB -Juge Mme Jeannette LARIVE; Paris Dog Show Vincennes - 09-01-2011 -CACS,CACIB,BOB - Juge M Guy MANSENCAL; Chalette-sur-Loing - 19-07-2009-CACS,BOB - Juge M Emmanuel YANNAKIS
# source : Propriétaire : Jacqueline POISSONNET
# email : jacqueline.poissonnet@orange.fr
# editor :
# modific : 2016-08-27
# remote : 82.121.29.3 20160827145654
end
We see:
Now we review and correct the update record. We omit any comment lines here for better readability, however, they do not disturb if we kept them in the final Batch Language script.
We do following corrections:
The rest is good.
start
mode : update
# name : Ciana Blonde de Lady Fontaine la Belle
index : 59036
title : Ch.
colour : fauve
regno : LOF 1.B.Br 104277/15210
sire : Twiny Blond de la Tour Saint Genin
dam : Toya Blonde de Lady Fontaine la Belle
breeder : Monique Weber-Lo Giaco, Saint-Sauveur-sur-Ecole, FR
birth : 2007-06-19
owner : Jacqueline Poissonnet, Itteville, FR
hd : B/B
csnb : Sain OK
note : n° Identification : 250269700377544; CACS Nationale Elevage France 2011; Sélection France 2011; Pontoise - 15-05-2011 - CACS,CACIB,BOB - Juge M. Jacques MEDARD-RINGUET; Angers - 27-03-2011 -CACS,CACIB,BOB -Juge Mme Jeannette LARIVE; Paris Dog Show Vincennes - 09-01-2011 -CACS,CACIB,BOB - Juge M Guy MANSENCAL; Chalette-sur-Loing - 19-07-2009-CACS,BOB - Juge M Emmanuel YANNAKIS
end
The next steps are:
Step 1: Paste your Batch Language sequence (one or more "begin ... end" statements) in the Batch Edit dialog box.
Step 2: Keep the LOAD checkbox clear and push the Send button.
The result listing will show the following:
# Ciana Blonde de Lady Fontaine la Belle = *
Name of the dog and its parents (still empty here) as clickable links.
# name = "Ciana Blonde de Lady Fontaine la Belle", givenname = "", belong = "", kennel = "922", title = "", color = "", sex = "f", callname = "", sire = "0", sirename = "", dam = "0", damname = "", regno = "", country = "", breeder = "", owner = "", birth = "0000-00-00", death = "0000-00-00", reason = "", health = "", hd = "", csnb = "", eu = "", picture = "", internet = "", language = "", editor = "JPoisonnet", hpname = "", hpmail = "", flag = "1"
The current record with almost no information yet available.
update pedigree set title = "Ch.", color = "fauve", sire = "49566", sirename = "Twiny Blond de la Tour Saint Genin", dam = "62963", damname = "Toya blonde de Lady Fontaine la Belle", regno = "LOF 1.B.Br 104277/15210", breeder = "Monique Weber-Lo Giaco, Saint-Sauveur-sur-Ecole, FR", owner = "Jacqueline Poissonnet, Itteville, FR", birth = "2007-06-19", hd = "B/B", csnb = "Sain OK", comment = "n° Identification : 250269700377544; CACS Nationale Elevage France 2011; Sélection France 2011; Pontoise - 15-05-2011 - CACS,CACIB,BOB - Juge M. Jacques MEDARD-RINGUET; Angers - 27-03-2011 -CACS,CACIB,BOB -Juge Mme Jeannette LARIVE; Paris Dog Show Vincennes - 09-01-2011 -CACS,CACIB,BOB - Juge M Guy MANSENCAL; Chalette-sur-Loing - 19-07-2009-CACS,BOB - Juge M Emmanuel YANNAKIS", flag = 1 where idx = 59036;
The update statement in SQL database language. To be digested by SQL experts, not important here.
If any errors were detected or warnings raised by the syntax test, they will be shown as # Boldface Comments.
Step 3: If no errors and no warnings (or acceptable warnings only) are flagged, tick the LOAD checkbox.
Step 4: Push the Send button. If the record has been entered successfully, the result listing says "#OKAY".
More examples with error messages and how to resolve them will follow.
In the next example, a picture has been uploaded. It is already on the server and can be referred to by its identification "20160827_pedigree_145745423463". By the following Batch Language sequence it is linked to a Database entry. There is not much that could be wrong with this kind of entry.
start
mode: update
index: 33923
picture: 20160827_pedigree_145745423463
# source: Brigitte Winterer
# email: brigitte.winterer@gmx.de
flag: 0x0001
modification: 2016-08-27
remote: 2.163.6.186 20160827145745
end
In the following example the comment (note) was changed. The special thing about comments is that they are accumulating. The old comment is not replaced by a new one but the new comment is appended at the end of the old comment.
start
mode : update
# name : Erudit Doré de la Claire Noir
index : 65376
# note : Slowakischer Champion; Kroatischer Show Champion; Deutsche Selektion 2015; Coation-H-3; voll zur Zucht zugelassen
note : Deutscher Champion (VDH); Slowakischer Champion; Kroatischer Show Champion; Deutsche Selektion 2015; Coation-H-3; voll zur Zucht zugelassen
# source : Sandra Hänßel
# email : sandra.haenssel@t-online.de
# editor :
# modific : 2016-08-27
# remote : 79.217.248.179 20160827172732
end
Therefore, we delete from the new comment everything that was already in the previous comment.
start
mode : update
index : 65376
# note : Slowakischer Champion; Kroatischer Show Champion; Deutsche Selektion 2015; Coation-H-3; voll zur Zucht zugelassen
note : Deutscher Champion (VDH)
end
Alternatively, and useful in particular if the old and the new comments are very different, we could clear the comment first and then supply the complete new comment. To clear the old comment, we prepend the Batch Language sequence by a new hand-written statement as shown below, containing a "note:#" line where instead of the comment a single hash sign appears.
start
mode : update
index : 65376
note: #
end
start
mode : update
index : 65376
note : Deutscher Champion (VDH); Slowakischer Champion; Kroatischer Show Champion; Deutsche Selektion 2015; Coation-H-3; voll zur Zucht zugelassen
end
In the next example we test two related changes.
start
mode : update
# name : Grace Hirsute Blonde de Lady Fontaine la Belle
index : 19386
# regno :
regno : LOF 1BBR 81770/12558
# sire :
sire : Antaeüs de la Tour Saint Genin
# dam :
dam : Chabanou da Djerba Brune de la Palomera
# breeder :
breeder : m mme jean-claude larive
# birth : 1991-00-00
birth : 1991-03-13
# owner :
owner : Mme M Bernard Weber, Saint-Sauveur-sur-Ecole, France
# source : Jacqueline Poissonnet
# email : jacqueline.poissonnet@orange.fr
# editor :
# modific : 2016-08-28
# remote : 82.121.29.3 20160828141428
end
start
name : Chabanou da Djerba de la Palomera
colour : noire
sex : f
regno : LOF 1BBr 65243/11132
sire : Trufo du Moulin d'Eau
dam : Volga Blonde de la Palomera
breeder : m mme jean-claude larive
birth : 1987-09-04
death : 0000-00-00
owner : M Mme Jean-Claude Larive
# source : Jacqueline Poissonnet
# email : JPoisonnet
# modific : 2016-08-28
# remote : 82.121.29.3 20160828142924
end
It shows that dam "Chabanou da Djerba Brune de la Palomera" is unknown. This is only a warning. The Database would accept it if we decided to enter it like this, however, the pedigree links would remain broken even if we entered Chabanou at a later time. Lesson: Always ensure that the parents are known to the Database before you enter a descendant.
The record of Chabanou is actually the next one but it should be entered first, before other records referring to it. Therefore, we change the sequence of both records.
We see that the name under which Chabanou shall be entered into the Database is "Chabanou da Djerba de la Palomera". However, the other record uses a longer form "Chabanou da Djerba Brune de la Palomera". Lesson: Never rely upon how users write or spell names – every detail could be wrong. We assume the longer form is the correct one and change the name for entry into the database accordingly.
And, again, we correct all appearances of the all-lowercase "m mme jean-claude larive" to "M Mme Jean-Claude Larive".
start
name : Chabanou da Djerba Brune de la Palomera
colour : noire
sex : f
regno : LOF 1BBr 65243/11132
sire : Trufo du Moulin d'Eau
dam : Volga Blonde de la Palomera
breeder : M Mme Jean-Claude Larive
birth : 1987-09-04
death : 0000-00-00
owner : M Mme Jean-Claude Larive
end
start
mode : update
# name : Grace Hirsute Blonde de Lady Fontaine la Belle
index : 19386
regno : LOF 1BBR 81770/12558
sire : Antaeüs de la Tour Saint Genin
dam : Chabanou da Djerba Brune de la Palomera
breeder : M Mme Jean-Claude Larive
# birth : 1991-00-00
birth : 1991-03-13
owner : Mme M Bernard Weber, Saint-Sauveur-sur-Ecole, France
end
The next test again raises a warning because it was only a test run and Chabanou was not actually stored in the Database yet. If we want to be on the safe side, we test and LOAD both records separately. In this case we double-checked that the sequence of records is good and the spelling of Chabanou's name is correct. We can LOAD both records in the same run.
We tick the LOAD checkbox and press the Send button again. The Database processes both records separately, one-by-one. Chabanou has been stored already and its name can be resolved when it is used in the second record.