Package iceprod :: Package core :: Module inventory
[hide private]
[frames] | no frames]

Source Code for Module iceprod.core.inventory

 1  #! /usr/bin/env python 
 2  # 
 3   
 4  """ 
 5    A module for representing and writting XML metadata  
 6   
 7    copyright  (c) 2005 the icecube collaboration 
 8   
 9    @version: $Revision: 1.0 $ 
10    @date: Fri Sep  5 16:27:07 CDT 2008 
11    @author: Juan Carlos Diaz Velez <juancarlos@icecube.wisc.edu> 
12   
13  """ 
14   
15  import sys,os 
16  import string 
17  import re 
18  import logging 
19  import time 
20   
21  from dataclasses import * 
22  from os.path import expandvars 
23  from os.path import join 
24  from iceprod.core import ipxml 
25   
26  logger = logging.getLogger('inventory') 
27   
28  name = 'inventory.xml' 
29   
30 -class FileInventory:
31 """ 32 @brief: List of files and destinations 33 """ 34
35 - def __init__(self):
36 self.filelist = []
37
38 - def AddFile(self,source,target):
39 self.filelist.append({'source':source,'target':target})
40
41 - def Write(self,filename):
42 dom = ipxml.getDOMImplementation() 43 doctype = dom.createDocumentType("IceProdInventory", None, None) 44 doc = dom.createDocument(ipxml.EMPTY_NAMESPACE, "IceProdInventory", doctype) 45 46 docElement = doc.documentElement 47 doc.documentElement.setAttribute('xmlns:xsi', 'http://www.w3.org/2001/XMLSchema-instance') 48 doc.documentElement.setAttribute('xsi:noNamespaceSchemaLocation','inventory.xsd') 49 50 for file in self.filelist: 51 itemElement = doc.createElement( 'item' ) 52 sourceElement = doc.createElement( 'source' ) 53 sourceElement.appendChild(doc.createTextNode(file['source'])) 54 itemElement.appendChild(sourceElement) 55 targetElement = doc.createElement( 'target' ) 56 targetElement.appendChild(doc.createTextNode(file['target'])) 57 itemElement.appendChild(targetElement) 58 doc.documentElement.appendChild(itemElement) 59 60 file_object = open(filename, "w") 61 ipxml.PrettyPrint(doc, file_object) 62 file_object.close()
63 64
65 - def Read(self,file_name,validate=0):
66 67 # get the DOM tree 68 doc = None 69 # open xml file for reading 70 xmlin = open(file_name, 'r') 71 try: # try to validate. 72 73 logger.debug("opened %s" % file_name) 74 75 doc = ipxml.Parse(xmlin, validate=validate) 76 logger.debug("doc = Sax2.FromXmlStream(xmlin, validate=1)") 77 78 except Exception, xe: 79 logger.error("%s : %s" % (sys.exc_type, xe) ) 80 raise Exception, xe 81 82 itemElement = doc.getElementsByTagName('item') 83 self.filelist = [] 84 for item in itemElement: 85 sourceElement = item.getElementsByTagName('source') 86 targetElement = item.getElementsByTagName('target') 87 entry = {} 88 entry['source'] = sourceElement[0].firstChild.data 89 entry['target'] = targetElement[0].firstChild.data 90 self.filelist.append(entry) 91 xmlin.close()
92
93 - def Iter(self):
94 return self.filelist 95