| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

In This Package:

FileDescription.py

Go to the documentation of this file.
00001 # FileDescription
00002 #
00003 # Helper class for handling data filenames
00004 #
00005 # Created by: dandwyer@caltech.edu 2010/08/09
00006 
00007 
00008 class FileDescription:
00009     """Class to handle filename parsing"""
00010     def __init__(self, fileName=None):
00011         """Construct using filename string"""
00012         self.dirSep = '/'
00013         self.fileSep = '.'
00014         self.seqStrip = '_'
00015         self.clear()
00016         if fileName!=None:
00017             self.setByFileName( fileName )
00018         return
00019 
00020     def clear(self):
00021         """Clear/initialize file descriptor""" 
00022         self.path = None
00023         self.process = None
00024         self.tag = None
00025         self.runNumber = None
00026         self.streamType = None
00027         self.streamName = None
00028         self.appName = None
00029         self.sequence = None
00030         self.fileType = None
00031         self.isValid = False
00032         return
00033 
00034     def setByFileName(self, fileName):
00035         """Parse filename to initialise file descriptor"""
00036         self.clear()
00037         fname = fileName.strip()
00038         sepLocation = fname.rfind(self.dirSep)
00039         path = None
00040         if sepLocation >= 0:
00041             path = fname[:sepLocation]
00042             fname = fname[sepLocation+1:]
00043         fileParts = fname.split(self.fileSep)
00044         if len(fileParts) != 8:
00045             print "Error: Incorrect filename structure: '%s'" % fname
00046             return
00047         runString = fileParts[2]
00048         if not runString.isdigit():
00049             print "Error: Incorrect run number: '%s'" % runString
00050             return
00051         seqString = fileParts[6].strip(self.seqStrip)
00052         if not seqString.isdigit():
00053             print "Error: Incorrect sequence number: '%s'" % seqString
00054             return
00055         self.set(path, fileParts[0], fileParts[1], int(runString),
00056                  fileParts[3], fileParts[4], fileParts[5], int(seqString),
00057                  fileParts[7])
00058 
00059     def set(self, path, process, tag, runNumber, streamType, streamName,
00060             appName, sequence, fileType):
00061         """Set file descriptor"""
00062         self.path = path
00063         self.process = process
00064         self.tag = tag
00065         self.runNumber = runNumber
00066         self.streamType = streamType
00067         self.streamName = streamName
00068         self.appName = appName
00069         self.sequence = sequence
00070         self.fileType = fileType
00071         self.isValid = True
00072         if self.streamType=="AllStreams":
00073             self.isValid = False
00074         return
00075 
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Mon Apr 11 20:10:14 2011 for ProcessManager by doxygen 1.4.7