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,track=False):
39 self.filelist.append({'source':source,'target':target,'track':track})
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 if file['track']: 53 itemElement.setAttribute('track','1') 54 sourceElement = doc.createElement( 'source' ) 55 sourceElement.appendChild(doc.createTextNode(file['source'])) 56 itemElement.appendChild(sourceElement) 57 targetElement = doc.createElement( 'target' ) 58 targetElement.appendChild(doc.createTextNode(file['target'])) 59 itemElement.appendChild(targetElement) 60 doc.documentElement.appendChild(itemElement) 61 62 file_object = open(filename, "w") 63 ipxml.PrettyPrint(doc, file_object) 64 file_object.close()
65 66
67 - def Read(self,file_name,validate=0):
68 69 # get the DOM tree 70 doc = None 71 # open xml file for reading 72 xmlin = open(file_name, 'r') 73 try: # try to validate. 74 75 logger.debug("opened %s" % file_name) 76 77 doc = ipxml.Parse(xmlin, validate=validate) 78 logger.debug("doc = Sax2.FromXmlStream(xmlin, validate=1)") 79 80 except Exception, xe: 81 logger.error("%s : %s" % (sys.exc_type, xe) ) 82 raise Exception, xe 83 84 itemElement = doc.getElementsByTagName('item') 85 self.filelist = [] 86 for item in itemElement: 87 sourceElement = item.getElementsByTagName('source') 88 targetElement = item.getElementsByTagName('target') 89 entry = {} 90 entry['source'] = sourceElement[0].firstChild.data 91 entry['target'] = targetElement[0].firstChild.data 92 entry['track'] = False 93 if item.hasAttribute('track') and item.getAttribute('track') == '1': 94 entry['track'] = True 95 self.filelist.append(entry) 96 xmlin.close()
97
98 - def Iter(self):
99 return self.filelist 100