Changeset 2066


Ignore:
Timestamp:
26/01/07 17:19:50 (12 years ago)
Author:
selatham
Message:

continued development.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • TI01-discovery/trunk/ingestAutomation/OAIBatch/keywordAdder.py

    r1869 r2066  
    88 
    99def PrettyPrint(elem,indent='',html=0,space='   '): 
    10         '''Lightweight pretty printing of elementTree elements''' 
    11         def estrip(elem): 
    12                 ''' Just want to get rid of unwanted whitespace ''' 
    13                 if elem is None: 
    14                         return '' 
    15                 else: 
    16                         return elem.strip() 
    17         strAttrib='' 
    18         for att in elem.attrib: 
    19                 strAttrib+=' %s="%s"'%(att,elem.attrib[att]) 
    20         result='%s<%s%s>%s'%(indent,elem.tag,strAttrib,estrip(elem.text)) 
    21         children=len(elem) 
    22         if children: 
    23                 for item in elem: 
    24                         result+='\n'+PrettyPrint(item,indent=indent+space) 
    25                 result+='\n%s%s</%s>'%(indent,estrip(item.tail),elem.tag) 
    26         else: 
    27                 result+='</%s>'%(elem.tag) 
    28         return result 
    29  
    30 def addNewElement(parentobject, childname, child): 
    31     if hasattr(parentobject, childname): 
    32         currentattribute=getattr(parentobject,childname) 
    33         if getattr(parentobject,childname) is list: 
    34             currentattribute.append(child) 
    35  
     10    '''Lightweight pretty printing of elementTree elements''' 
     11    def estrip(elem): 
     12        ''' Just want to get rid of unwanted whitespace ''' 
     13        if elem is None: 
     14            return '' 
    3615        else: 
    37             newlist=[currentattribute] 
    38             newlist.append(child) 
    39             setattr(parentobject,childname, newlist) 
     16            return elem.strip() 
     17    strAttrib='' 
     18    for att in elem.attrib: 
     19        strAttrib+=' %s="%s"'%(att,elem.attrib[att]) 
     20    result='%s<%s%s>%s'%(indent,elem.tag,strAttrib,estrip(elem.text)) 
     21    children=len(elem) 
     22    if children: 
     23        for item in elem: 
     24            result+='\n'+PrettyPrint(item,indent=indent+space) 
     25        result+='\n%s%s</%s>'%(indent,estrip(item.tail),elem.tag) 
    4026    else: 
    41         setattr(parentobject,childname, child) 
     27        result+='</%s>'%(elem.tag) 
     28    return result 
    4229 
    4330def main(indir, outdir, keywords): 
    44     if len(sys.argv) < 3 or indir == "" or outdir == "" or keywords == "": 
    45        print "USAGE: keywordAdder(indir, outdir, keywords) " 
    46        print " where indir= full path of directory where MOLES records reside," 
    47        print "       outdir= full path of where you want the updated records to go." 
    48        print "       keywords = nested list of [[keyword, namespace, key],...] which need to be added" 
    49        sys.exit 
     31    if len(sys.argv) < 2 or indir == "" or outdir == "" or keywords == "": 
     32        print "USAGE: keywordAdder(indir, outdir, keywords) " 
     33        print " where indir= full path of directory where MOLES records reside," 
     34        print "       outdir= full path of where you want the updated records to go." 
     35        print "       keywords = nested list of [[keyword, namespace, key],...] which need to be added" 
     36        sys.exit 
    5037 
    5138    print "INFO: moles records are in %s" %indir 
     
    6451    filenames = os.listdir(indir) 
    6552    for filename in filenames: 
    66         if filename.find('.xml') != -1: 
    67                 full_filename = indir + "/" + filename 
    68                 dgMeta=MRW.dgMetadata() 
    69                 try: 
    70                     dgMeta.fromXML(cElementTree.ElementTree(file=full_filename).getroot()) 
    71                 except: 
    72                     print "WARNING: Cannot parse the XML moles document %s. Will not process" %full_filename 
    73                     continue 
     53        if filename.find('.xml') != -1: 
     54            full_filename = indir + "/" + filename 
     55            dgMeta=MRW.dgMetadata() 
     56            try: 
     57                dgMeta.fromXML(cElementTree.ElementTree(file=full_filename).getroot()) 
     58            except: 
     59                print "WARNING: Cannot parse the XML moles document %s. Will not process" %full_filename 
     60                continue 
    7461 
    75                 strValidTerm= str(keywords[0]) 
    76                 strParentListID=str(keywords[1]) 
    77                 strTermID=str(keywords[2]) 
    78                 print strValidTerm, strParentListID, strTermID 
    79                 dgVTID=M.dgValidTermID(ParentListID=strParentListID, TermID=strTermID) 
    80                 dgSK=M.dgStructuredKeyword(dgValidTerm=strValidTerm, dgValidTermID=dgVTID) 
    81                 addNewElement(dgMeta.dgMetadataRecord, 'dgStructuredKeyword', dgSK) 
     62            strValidTerm= str(keywords[1][0]) 
     63            strParentListID=str(keywords[1][1]) 
     64            strTermID=str(keywords[1][2]) 
     65            print strValidTerm, strParentListID, strTermID 
     66            dgVTID=M.dgValidTermID(ParentListID=strParentListID, TermID=strTermID) 
     67            dgSK=M.dgStructuredKeyword(dgValidTerm=strValidTerm, dgValidTermID=dgVTID) 
     68            dgMeta.dgMetadataRecord.addChildElem('dgStructuredKeyword', dgSK) 
    8269 
    83                 # now write out updated document 
    84                 molestree=dgMeta.toXML() 
    85                 moles=PrettyPrint(molestree) 
    86                 f=open(outdir+"/"+filename,'w') 
    87                 f.write(moles) 
    88                 f.close() 
    89                 numfilesproc += 1 
    90         else: 
    91                 print "WARNING: File %s appears not to be XML. Will not be processed." %filename 
     70            # now write out updated document 
     71            print dir(dgMeta.dgMetadataRecord) 
     72            molestree=dgMeta.toXML() 
     73            moles=PrettyPrint(molestree) 
     74            f=open(outdir+"/"+filename,'w') 
     75            f.write(moles) 
     76            f.close() 
     77            numfilesproc += 1 
     78        else: 
     79            print "WARNING: File %s appears not to be XML. Will not be processed." %filename 
    9280 
    9381    print 'INFO: keywordAdder.py ran to end. files processed= %s' %(numfilesproc) 
     
    9583 
    9684if __name__=='__main__': 
    97         indir=sys.argv[1] 
    98         outdir=sys.argv[2] 
    99         keywords=sys.argv[3:] 
    100         main(indir,outdir, keywords) 
     85    indir=sys.argv[1] 
     86    outdir=sys.argv[2] 
     87    keywords=sys.argv[3:] 
     88    main(indir,outdir, keywords) 
Note: See TracChangeset for help on using the changeset viewer.