#!/bin/sh # Copyright for URLibService (c) 1995 - 2002, # by Gerald Banon - INPE. All rights reserved. # Version 2.1 # metadataArray2ASCII \ exec /usr/local/bin/tclsh "$0" ${1+"$@"} #
# metadataArray2ASCII converts metadataArray (of URLibService) into an
# ASCII table
package provide dpi.inpe.br/banon/2002/08.01.15.28 2.1
namespace eval dpi.inpe.br/banon/2002/08.01.15.28 {
# >
# ----------------------------------------------------------------------
# metadataArray2ASCII
proc metadataArray2ASCII {pathList {filter 0}} {
global orderingTable
global inverseTable
# Create fieldNameArray
set referenceTypeList [array names orderingTable *,referencetype]
regsub -all {,referencetype} $referenceTypeList {} referenceTypeList
foreach referenceType $referenceTypeList {
set fieldNameList [lsort -command FieldCompare \
[array names orderingTable $referenceType,*]]
regsub -all "$referenceType," $fieldNameList {} fieldNameList
set fieldNameList [join $fieldNameList]
set fieldNameArray($referenceType) $fieldNameList
}
# Create fieldNameArray - end
foreach path $pathList {
# puts $path
source $path
# Create table
set keyList [array names metadataArray *,referencetype]
regsub -all {,referencetype} $keyList {} keyList
set i 0 ;# i is used for testing only (see if below)
foreach key $keyList {
incr i
if $filter {
# insert only references having a secondary type field
if ![info exists metadataArray($key,secondarytype)] {
# missing secondarytype
# set log [list $path $key]
# Store log @log auto 0 a
continue
}
}
set referenceType $metadataArray($key,referencetype)
set keyList [array names metadataArray $key,*]
set line "$key \t"
foreach fieldName $fieldNameArray($referenceType) {
if [info exists metadataArray($key,$fieldName)] {
set fieldValue $metadataArray($key,$fieldName)
if [regexp {%A|%E|%Y|%\?} $inverseTable($referenceType,$fieldName)] {
regsub -all {,\}} $fieldValue "\}" fieldValue ;# drop trailing comma
set fieldValue [string trim [join $fieldValue {; }] {; }] ;# put ; between author names
}
append line "$fieldValue\t"
} else {
append line "\t"
}
}
append table($referenceType) "[string trim $line \t]\n"
# if {$i == 5} {break} ;# for testing only
}
# Create table - end
# Create files
foreach referenceType [array names table] {
if ![file exists table$referenceType.txt ] {
set header urlibkey\t[join $fieldNameArray($referenceType) \t]\n
Store header table$referenceType.txt
}
Store table($referenceType) table$referenceType.txt auto 0 a
}
# Create files - end
if [info exists table] {unset table}
unset metadataArray
}
return done
}
# ----------------------------------------------------------------------
# <
}
# Example:
# cd /home/banon/URLib/col/dpi.inpe.br/banon/2002/08.01.15.28/doc
# cd C:/usuario/gerald/URLib/col/dpi.inpe.br/banon/2002/08.01.15.28/doc
# cd /dados/URLib/col/dpi.inpe.br/banon/2002/08.01.15.28/doc
# source metadataArray2ASCII.tcl
# done
global referRepository
set referRepository dpi.inpe.br/banon/1999/08.08.19.14
source ../../../../../dpi.inpe.br/banon/1998/08.02.08.56/doc/utilities1.tcl
source ../../../../../dpi.inpe.br/banon/1998/08.02.08.56/doc/utilitiesStart.tcl
source ../../../../../dpi.inpe.br/banon/1998/08.02.08.56/doc/utilitiesMirror.tcl
source ../../../../../$referRepository/doc/referTables.tcl
array set orderingTable [CreateOrderingTable]
array set inverseTable [CreateInverseTable]
# set path C:/usuario/gerald/URLib/col/dpi.inpe.br/banon/1998/08.02.08.56/auxdoc/.metadataArray.tcl
## set path /dados/URLib/col/dpi.inpe.br/banon/1998/08.02.08.56/auxdoc/.metadataArray.tcl
## set path /iris3/URLibSRE/col/dpi.inpe.br/banon/1998/08.02.08.56/auxdoc/.metadataArray.tcl
## set path /dados/URLibSBSR/col/dpi.inpe.br/banon/1998/08.02.08.56/auxdoc/.metadataArray.tcl
# puts [dpi.inpe.br/banon/2002/08.01.15.28::metadataArray2ASCII $path]
#