source: CSML/trunk/Coapec/csmllibs/csmlfiles.py @ 57

Subversion URL: http://proj.badc.rl.ac.uk/svn/ndg/CSML/trunk/Coapec/csmllibs/csmlfiles.py@57
Revision 57, 2.6 KB checked in by domlowe, 15 years ago (diff)

some minor bug fixes

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1#version 0.1
2#Dominic Lowe, BADC 8th December 2005
3import csmllibs
4import sys
5
6
7class FileMapMaker:
8        # class which handles the lower level featurefilemap and directorytree classes
9        #to build a featurefilemap object of featuretypes/files.
10        #current relationships are onetomany, onetoone and mixedft,
11        #but others could be created
12        def __init__(self,topdirectory, ftorftdictionary):
13                self.topdir=topdirectory
14                if type(ftorftdictionary) is str:
15                        self.ft = ftorftdictionary
16                elif type(ftorftdictionary) is dict:
17                        self.ftdictionary=ftorftdictionary
18                else:
19                        #wrong type
20                        print 'FileMapMaker takes a  featuretype string or dictionary'
21                        sys.exit()
22       
23        def onetomany(self):
24                tree = csmllibs.csmldirectory.DirectoryTree()
25                tree.setTopDirectory(self.topdir)
26                tree.readDirectory()
27                subdirs = tree.getSubDirectories()
28                ffmap = csmllibs.csmlfeaturefilemap.FeatureFileMap()
29               
30                for dir in subdirs:
31                        file=tree.getFirstInSubDir(dir)
32                        if file == None:
33                                continue
34                        #create representative file
35                        repfile=csmllibs.csmlfeaturefilemap.representativeFile(file)
36                        repfile.setFeatureType(self.ft)
37                        try:
38                                print dir
39                                otherfiles=tree.getAllCSMLFilesExceptFirst(dir)
40                                errtest=otherfiles[0]
41                        except:
42                                print 'no other csml files in this directory'
43                                #add representative file with no related files.
44                                ffmap.addRepresentativeFile(repfile)
45                                continue
46                       
47                        #add otherfiles as related files with feature type, ft
48                        #note they could have individual featuretypes.
49
50                        for f in otherfiles:
51                                relfile = csmllibs.csmlfeaturefilemap.relatedFile(f)
52                                relfile.setFeatureType(self.ft)
53                                repfile.addRelatedFile(relfile)
54                        ffmap.addRepresentativeFile(repfile)
55                       
56                return ffmap
57               
58        def onetoone(self):
59                tree = csmllibs.csmldirectory.DirectoryTree()
60                tree.setTopDirectory(self.topdir)
61                tree.readDirectory()
62                subdirs = tree.getSubDirectories()
63                ffmap = csmllibs.csmlfeaturefilemap.FeatureFileMap()
64                for dir in subdirs:     
65                        files=tree.getCSMLSupportedFilesInSubDir(dir)
66                        for f in files:
67                                repfile=csmllibs.csmlfeaturefilemap.representativeFile(f)
68                                repfile.setFeatureType(self.ft)
69                                ffmap.addRepresentativeFile(repfile)
70                return ffmap   
71       
72        def mixedft(self):
73                tree = csmllibs.csmldirectory.DirectoryTree()
74                tree.setTopDirectory(self.topdir)
75                tree.readDirectory()
76                subdirs = tree.getSubDirectories()
77                ffmap = csmllibs.csmlfeaturefilemap.FeatureFileMap()
78                for dir in subdirs:     
79                        files=tree.getCSMLSupportedFilesInSubDir(dir)
80                        for f in files:
81                                repfile=csmllibs.csmlfeaturefilemap.representativeFile(f)
82                                #look up feature type in dictionary
83                                ft=self.ftdictionary[f]
84                                repfile.setFeatureType(ft)
85                                ffmap.addRepresentativeFile(repfile)   
86                return ffmap
Note: See TracBrowser for help on using the repository browser.