diff -r 7685cec9fd3c -r f2ddfa555b0f doc/api/python/virtualbuildarea-pysrc.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doc/api/python/virtualbuildarea-pysrc.html Fri Sep 11 11:54:49 2009 +0100 @@ -0,0 +1,944 @@ + + + +
+Trees | + + +Indices | + + +Help | + ++ |
---|
+ | + +
+ |
+
+ 1 #============================================================================ + 2 #Name : virtualbuildarea.py + 3 #Part of : Helium + 4 + 5 #Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). + 6 #All rights reserved. + 7 #This component and the accompanying materials are made available + 8 #under the terms of the License "Eclipse Public License v1.0" + 9 #which accompanies this distribution, and is available + 10 #at the URL "http://www.eclipse.org/legal/epl-v10.html". + 11 # + 12 #Initial Contributors: + 13 #Nokia Corporation - initial contribution. + 14 # + 15 #Contributors: + 16 # + 17 #Description: + 18 #=============================================================================== + 19 + 20 """ + 21 This modules helps to recreate a fake synergy project for the + 22 ccm toolkit. The fake project can be composed of any real synergy + 23 objects. + 24 """ + 25 + 26 + 27 # pylint: disable-msg=E1103 + 28 + 29 + 30 import ccm + 31 import xml.dom.minidom + 32 import traceback + 33 import sys + 34 DEBUG_VIRTUALDIR = True + 35 ++37 """ Fake directory object. + 38 The four parts name will be: <dirname>-1:dir:fakedb#1 + 39 """ +109 +110 +41 fpn = "%s-1:dir:fakedb#1" % name + 42 ccm.Dir.__init__(self, session, fpn) + 43 self.__data = [] + 44 self._project = project +45 +47 """ Add an object to the directory. """ + 48 if (o.type == 'dir'): + 49 if DEBUG_VIRTUALDIR: + 50 print "Dir adding %s to %s" % (o, self) + 51 vdir = self.getDirNamed(o.name) + 52 if vdir == None: + 53 # Adding a directory, convert it into a virtual one + 54 if DEBUG_VIRTUALDIR: + 55 print "Dir not found creating a virtual one" + 56 vdir = VirtualDir(self._session, o.name, self._project) + 57 self.__data.append(vdir) + 58 elif vdir.type == 'project': + 59 # this is a project, covert it into a directory + 60 self.__data.remove(vdir) + 61 self.addChild(vdir.root_dir(), vdir) + 62 vdir = self.getDirNamed(o.name) + 63 + 64 # Adding content of the directory into the virtual one + 65 for child in o.children(project): + 66 vdir.addChild(child, project) + 67 elif (o.type == 'project'): + 68 # Adding a project + 69 if DEBUG_VIRTUALDIR: + 70 print "Project adding %s to %s" % (o, self) + 71 # check for directory with the same name first + 72 vdir = self.getDirNamed(o.name) + 73 if vdir == None: + 74 # if it is new, just add it + 75 if DEBUG_VIRTUALDIR: + 76 print "Adding project directly" + 77 self.__data.append(o) + 78 else: + 79 if vdir.type == 'project': + 80 if DEBUG_VIRTUALDIR: + 81 print "Replacing project by dir %s" % vdir + 82 self.__data.remove(vdir) + 83 self.addChild(vdir.root_dir(), vdir) + 84 vdir = self.getDirNamed(o.name) + 85 # if a directory already exist grab the content + 86 if DEBUG_VIRTUALDIR: + 87 print "Adding childs under %s" % vdir + 88 for child in o.root_dir().children(o): + 89 vdir.addChild(child, o) + 90 else: + 91 self.__data.append(o) +92 +94 """ Look for a subdirectory named in its children. + 95 The test is done in a case insensitive way. + 96 """ + 97 for o in self.__data: + 98 if (o.name.lower() == name.lower()): + 99 return o +100 return None +101 +105 +112 """ Create a fake project containing on fake directory. +113 The four part name will be <projectname>-1:project:fakedb#1. +114 """ +123 +124 +131 +116 fpn = "%s-1:project:fakedb#1" % name +117 ccm.Project.__init__(self, session, fpn) +118 self._root_dir = VirtualDir(session, name, self) +119 +133 """ Creating a directory structure using the vpath list given as input. +134 """ +135 vpath = __removeEmptyStrings(vpath) +136 if (root.type == 'project'): +137 root = root.root_dir() +138 if (len(vpath) == 0): +139 return root +140 else: +141 name = vpath.pop(0) +142 root.addChild(VirtualDir(root.session, name, root.virtualproject()), root.virtualproject()) +143 return __createVirtualPath(vpath, root.getDirNamed(name)) +144 +146 name = spath.pop(0) +147 if (len(spath) == 0 and dir == None): +148 result = [] +149 for o in project.root_dir().children(project): +150 result.append({'project':project, 'object':o}) +151 return result +152 +153 if (dir == None): +154 root_dir = project.root_dir() +155 if (root_dir.name.lower() == name.lower()): +156 return __getObjects(project, spath, root_dir) +157 else: +158 Exception("getObjects: root_dir.name(%s)!=name(%s)" % (root_dir.name, name)) +159 else: +160 for d in dir.children(project): +161 if d.type == 'dir' and d.name.lower() == name.lower(): +162 return __getObjects(project, spath, d) +163 raise Exception("Could not find object %s" % name) +164 +165 +166 +168 """ Creates a virtual toplevel project using the XML configuration. """ +169 try: +170 dom = xml.dom.minidom.parse(file) +171 #dom = xml.dom.minidom.parseString(input) +172 +173 vba = VirtualProject(session, name) +174 virtualBA = dom.documentElement +175 for child in virtualBA.childNodes: +176 if (child.nodeType == xml.dom.Node.ELEMENT_NODE) and (child.nodeName == 'add'): +177 print "add node :%s (%d)" % (child.getAttribute('project'), len(child.childNodes)) +178 pathobject = __createVirtualPath(child.getAttribute('to').split('/'), vba) +179 if len(child.childNodes) == 0: +180 p = session.create(child.getAttribute('project')) +181 pathobject.addChild(p, p) +182 else: +183 project = session.create(child.getAttribute('project')) +184 for subChild in child.childNodes: +185 if (subChild.nodeType == xml.dom.Node.ELEMENT_NODE) and (subChild.nodeName == 'objects'): +186 spath = __removeEmptyStrings(subChild.getAttribute('from').split('/')) +187 for t in __getObjects(project, spath): +188 pathobject.addChild(t['object'], t['project']) +189 virtualBA.unlink() +190 return vba +191 except Exception, e: +192 traceback.print_exc(file = sys.stdout) +193 raise Exception("XML cannot be parsed properly %s" % e) +194 +
Trees | + + +Indices | + + +Help | + ++ |
---|
+ Generated by Epydoc 3.0beta1 on Wed Sep 09 13:44:22 2009 + | ++ http://epydoc.sourceforge.net + | +