source: vanHelsing/trunk/src/resource.py@ 808

Last change on this file since 808 was 799, checked in by slederer, on Oct 15, 2009 at 6:37:56 PM

Änderungen am Parser, so dass er funktioniert

  • Property svn:keywords set to Id
  • Property svn:mime-type set to text/x-python
File size: 2.6 KB
RevLine 
[775]1'''
2Resource Objects
3Created on 30.06.2009
4
5@author: hmueller
6'''
7
[799]8
9
[775]10class Resource(object):
[799]11 DIRECTIVE="Resource"
12 serial=0
[775]13
[799]14 def __init__(self, level=0,name=None):
15 Resource.serial=Resource.serial+1
[775]16 self.items = []
17 self.comments = []
[798]18 self._recurselevel = level
[799]19 self.name = name
20 self.value = None
21 self.id=Resource.serial
22
[775]23 def __str__(self):
24 s = "\n".join(self.comments)
[799]25 indent=" "*self._recurselevel
26 s += indent+"# id:"+str(self.id)+"\n"
27
28 if len(self.items)==0:
29 return indent+self.name+" = "+self.value+"\n";
30
31 s += indent+self.name + " {\n"
[775]32 for d in self.items:
[799]33 s += str(d)
34 s += indent+"}\n"
[775]35 return s
36
37 def add_comment(self, comment):
38 if not comment.lstrip().startswith("#"):
39 comment = "# " + comment
40 self.comments.append(comment)
[798]41
42 def add_item(self, item):
43 self.items.append(item)
[775]44
[799]45 def add(self,key,value):
46 newRes=Resource()
47 newRes.name=key
48 newRes.value=value
49 newRes._recurselevel=self._recurselevel+1
50 self.items.append(newRes)
51
52 def getById(self,theid):
53 if self.id==theid:
54 return self
55
56 for r in self.items:
57 result=r.getById(theid)
58 if result:
59 return result
60 return None
61
62 def getByName(self,name):
63 result=[]
64 if self.name==name:
65 result.append(self)
66 for i in self.items:
67 r=i.getByName(name)
68 if len(r)!=0:
69 for a in r:
70 result.append(a)
71 return result
72
73
[775]74class Director(Resource):
[798]75 DIRECTIVE="Director"
[775]76 pass
77
78class Job(Resource):
79 DIRECTIVE="Job"
80
81class JobDefs(Resource):
82 DIRECTIVE="JobDefs"
83
84class Schedule(Resource):
85 DIRECTIVE="Schedule"
86
87class FileSet(Resource):
88 DIRECTIVE="FileSet"
89
90class Client(Resource):
91 DIRECTIVE="Client"
92
93class Storage(Resource):
94 DIRECTIVE="Storage"
95
96class Pool(Resource):
97 DIRECTIVE="Pool"
98
99class Catalog(Resource):
100 # ITEMS_DIRD = cdef.dird_cat_items
101 DIRECTIVE="Catalog"
102
103class Messages(Resource):
[798]104 DIRECTIVE="Messages"
[775]105
106class Console(Resource):
[798]107 DIRECTIVE="Console"
[775]108
109class Counter(Resource):
[798]110 DIRECTIVE="Counter"
[775]111
112class Device(Resource):
[798]113 DIRECTIVE="Device"
[775]114
115class Autochanger(Resource):
[798]116 DIRECTIVE="Autochanger"
117
118__cls = locals().copy()
119
120directives = [v.DIRECTIVE for k,v in __cls.iteritems()
121 if k != "Resource" and getattr(v, "DIRECTIVE", None)]
Note: See TracBrowser for help on using the repository browser.