summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJérémy Zurcher <jeremy@asynk.ch>2012-04-13 21:16:12 +0200
committerJérémy Zurcher <jeremy@asynk.ch>2012-04-13 21:16:12 +0200
commiteeb9927c89d6d2425a74c33ff8773bceba39af1c (patch)
treee5e770fc041fa27b6e13a78dc9c3dc3f75c7c213
parent99561b834dbd9d52b83aa7b0fb980431fa1aa056 (diff)
downloadpyevenja-eeb9927c89d6d2425a74c33ff8773bceba39af1c.zip
pyevenja-eeb9927c89d6d2425a74c33ff8773bceba39af1c.tar.gz
reformat filesHEADmaster
-rw-r--r--OSconfig.py2
-rw-r--r--OSlinux.py2
-rw-r--r--evenjastrings.py16
-rw-r--r--fconfig.py1042
-rw-r--r--fdoor_cout.py22
-rw-r--r--fdoor_file.py102
-rw-r--r--fevenboard.py60
-rw-r--r--fevendata.py1166
-rw-r--r--fevendoor.py136
-rw-r--r--fevenprg.py68
-rw-r--r--flist.py208
-rw-r--r--flisthash.py180
-rw-r--r--fport.py210
-rw-r--r--fportbkpevendata.py54
-rw-r--r--fportlist.py16
-rw-r--r--fportlisthash.py20
-rw-r--r--fposition.py398
-rw-r--r--fprg_concat.py42
-rw-r--r--frouter.py374
-rw-r--r--fstarter.py188
-rw-r--r--fstringhash.py192
-rw-r--r--fviewer.py16
-rw-r--r--globalvars.py82
-rw-r--r--pyevenja.py166
-rw-r--r--returncodes.py8
25 files changed, 2385 insertions, 2385 deletions
diff --git a/OSconfig.py b/OSconfig.py
index f1d08fb..3b822b8 100644
--- a/OSconfig.py
+++ b/OSconfig.py
@@ -20,6 +20,6 @@
#
"""only the Linux version available"""
-
+
from OSlinux import *
diff --git a/OSlinux.py b/OSlinux.py
index 0a7ce9a..33ca5db 100644
--- a/OSlinux.py
+++ b/OSlinux.py
@@ -24,7 +24,7 @@
__all__ = ["MAX_TREELEVEL","START_ELEMENTS","INC_ELEMENTS"]
-MAX_TREELEVEL = 8 # not used yet
+MAX_TREELEVEL = 8 # not used yet
# only used in flisthash.py tests
START_ELEMENTS = 100 #/* Start with a list of 100 elements */
diff --git a/evenjastrings.py b/evenjastrings.py
index ef10bc6..fd30858 100644
--- a/evenjastrings.py
+++ b/evenjastrings.py
@@ -74,7 +74,7 @@ ACT_SYS_CONTINUE = "SYS_CONTINUE" #/** Continue the work inside the port (af
ACT_SYS_ADDDEST = "SYS_ADDDEST" #/** Add a special destination to an evenDoor */
ACT_SYS_REMDEST = "SYS_REMDEST" #/** Remove a special destination to an evenDoor */
ACT_SYS_TESTMODE = "SYS_TESTMODE" #/** Enable the check of a port with the configuration of them, at runtime */
-
+
#// -------------------------------------------------------------------------
#/** SOFTWARE ACTIONS.
# Standard actions implemented in the evenja kernel.
@@ -131,13 +131,13 @@ ACT_ERROR = "error"
#/** Format of the wait time when ACT_WAIT is used */
ACT_WAIT_NOTHING = ' ' #/** In fact, don't wait */
-ACT_WAIT_YEAR = 'y'
-ACT_WAIT_MONTH = 'n'
-ACT_WAIT_DAY = 'd'
-ACT_WAIT_HOUR = 'h'
-ACT_WAIT_MINUTE = 'm'
-ACT_WAIT_SECOND = 's'
-ACT_WAIT_MILLISEC = 'x'
+ACT_WAIT_YEAR = 'y'
+ACT_WAIT_MONTH = 'n'
+ACT_WAIT_DAY = 'd'
+ACT_WAIT_HOUR = 'h'
+ACT_WAIT_MINUTE = 'm'
+ACT_WAIT_SECOND = 's'
+ACT_WAIT_MILLISEC = 'x'
#// -------------------------------------------------------------------------
#/** Internal Names
diff --git a/fconfig.py b/fconfig.py
index d3c3e50..6ad1860 100644
--- a/fconfig.py
+++ b/fconfig.py
@@ -35,19 +35,19 @@
- Methods Find and FindNext enable to search by name an tree Node.
Fconfig is a generic caller for a tree access. This enable to change the type of supported tree XML,
- LDAP or others, without having to update the evenja kernel.
-
+ LDAP or others, without having to update the evenja kernel.
+
*@author Fabian Padilla
*/"""
__all__ = ["Fconfig"]
try:
- import libxml2
+ import libxml2
except:
- print "libxml2 not available ... aborting !!"
- import sys
- sys.exit(1)
+ print "libxml2 not available ... aborting !!"
+ import sys
+ sys.exit(1)
from flist import Flist
from fstringhash import FstringHash
@@ -55,532 +55,532 @@ import returncodes as RC
import evenjastrings as ES
class Fconfig(FstringHash):
- """ This class gives you the ability to walk around and through an XML document.
- This document can be created from sratch, read from a file, completed and modified, and so on.
- You can also execute some research queries... Everything seems to be safe /~\/~\."""
-
- def __init__(self):
- FstringHash.__init__(self) # force contrustor
- self.fileName = None # yeah, this is it !
- self.doc = None # the document
- self.root = None # the root node
- self.firstCurrent = None # the first node of the tree
- self.current = None # the current node
- self.stackCurrent = Flist() # a stack used to push and pop self.current
-
- def __str__(self):
- return "\t"+FstringHash.__str__(self) +\
- " Fconfig - File : "+str(self.fileName)+\
- " - Current_Name : "+str(self.getName())+\
- " - Current_Content : "+str(self.getContent())+"\n"
-
- def startXml(self, param):
- """/** Read an XML tree, param may be a file name or an xmlNode. */"""
- if isinstance(param,str):
- # a filename is given, parse this file
- self.fileName = param
- try:
- self.doc = libxml2.parseFile(param)
- except:
- return RC.RET_CANNOTACCESS
- param = self.doc.children
- # a node is given or we have one now
- if not isinstance(param,libxml2.xmlNode):
- return RC.RET_CANNOTACCESS
- self.root = param.doc.children
- self.firstCurrent = param
- self.current = param
- if self.gotoChildren() != RC.RET_OK:
- return RC.RET_NOTEXIST
- # find <evenja_name> tag and put it's content in our FstringHash
- if self.Find(ES.XML_NAME, False) != RC.RET_OK:
- return RC.RET_NONAME
- string = self.getContent()
- if string == RC.RET_NONODESELECTED: # don't need this ...
- return RC.RET_NONAME
- self.setString(string)
- self.resetCurrent()
- return RC.RET_OK
-
- def startNewXml(self, fileName = None):
- """/** Create a new XML tree. */"""
- if fileName:
- self.fileName = fileName
- else:
- self.fileName = None
- try:
- self.doc = libxml2.newDoc(ES.XML_VERSION)
- self.doc.newChild(None, ES.XML_XML, None)
- except:
- return RC.RET_CANNOTCREATE
- self.root = self.doc.children
- self.firstCurrent = self.root
- self.current = self.root
- self.setString(ES.TXT_NEW)
- return RC.RET_OK
-
- def endXml(self):
- """/** Close the XML tree. Save it if a file name exists. */"""
- if self.doc and self.fileName:
- if self.doc.saveFile(self.fileName) == -1:
- return RC.RET_CANNOTEND
- if self.doc:
- self.doc.freeDoc()
- self.doc = None
- self.root = None
- self.firstCurrent = None
- self.current = None
- self.fileName = None
- return RC.RET_OK
-
- def getCurrent(self):
- """/** Get the current node. */"""
- return self.current
-
+ """ This class gives you the ability to walk around and through an XML document.
+ This document can be created from sratch, read from a file, completed and modified, and so on.
+ You can also execute some research queries... Everything seems to be safe /~\/~\."""
+
+ def __init__(self):
+ FstringHash.__init__(self) # force contrustor
+ self.fileName = None # yeah, this is it !
+ self.doc = None # the document
+ self.root = None # the root node
+ self.firstCurrent = None # the first node of the tree
+ self.current = None # the current node
+ self.stackCurrent = Flist() # a stack used to push and pop self.current
+
+ def __str__(self):
+ return "\t"+FstringHash.__str__(self) +\
+ " Fconfig - File : "+str(self.fileName)+\
+ " - Current_Name : "+str(self.getName())+\
+ " - Current_Content : "+str(self.getContent())+"\n"
+
+ def startXml(self, param):
+ """/** Read an XML tree, param may be a file name or an xmlNode. */"""
+ if isinstance(param,str):
+ # a filename is given, parse this file
+ self.fileName = param
+ try:
+ self.doc = libxml2.parseFile(param)
+ except:
+ return RC.RET_CANNOTACCESS
+ param = self.doc.children
+ # a node is given or we have one now
+ if not isinstance(param,libxml2.xmlNode):
+ return RC.RET_CANNOTACCESS
+ self.root = param.doc.children
+ self.firstCurrent = param
+ self.current = param
+ if self.gotoChildren() != RC.RET_OK:
+ return RC.RET_NOTEXIST
+ # find <evenja_name> tag and put it's content in our FstringHash
+ if self.Find(ES.XML_NAME, False) != RC.RET_OK:
+ return RC.RET_NONAME
+ string = self.getContent()
+ if string == RC.RET_NONODESELECTED: # don't need this ...
+ return RC.RET_NONAME
+ self.setString(string)
+ self.resetCurrent()
+ return RC.RET_OK
+
+ def startNewXml(self, fileName = None):
+ """/** Create a new XML tree. */"""
+ if fileName:
+ self.fileName = fileName
+ else:
+ self.fileName = None
+ try:
+ self.doc = libxml2.newDoc(ES.XML_VERSION)
+ self.doc.newChild(None, ES.XML_XML, None)
+ except:
+ return RC.RET_CANNOTCREATE
+ self.root = self.doc.children
+ self.firstCurrent = self.root
+ self.current = self.root
+ self.setString(ES.TXT_NEW)
+ return RC.RET_OK
+
+ def endXml(self):
+ """/** Close the XML tree. Save it if a file name exists. */"""
+ if self.doc and self.fileName:
+ if self.doc.saveFile(self.fileName) == -1:
+ return RC.RET_CANNOTEND
+ if self.doc:
+ self.doc.freeDoc()
+ self.doc = None
+ self.root = None
+ self.firstCurrent = None
+ self.current = None
+ self.fileName = None
+ return RC.RET_OK
+
+ def getCurrent(self):
+ """/** Get the current node. */"""
+ return self.current
+
# WALKING METHODS
- def resetCurrent(self, fromRoot = False):
- """/** Set current node to the root one if fromRoot, otherwise to the first one. */"""
- if fromRoot:
- self.current = self.root
- else:
- self.current = self.firstCurrent
-
- def gotoFirst(self):
- """/** Go to the first node of the current branch. */"""
- if not self.current:
- return RC.RET_NONODESELECTED
- self.current = self.current.parent.children
- if self.current.type != "element":
- return self.gotoNext()
- return RC.RET_OK
-
- def gotoLast(self):
- """/** Go to the last node of the current branch. */"""
- if not self.current:
- return RC.RET_NONODESELECTED
- self.current = self.current.parent.last
- if self.current.type != "element":
- return self.gotoPrev()
- return RC.RET_OK
-
- def gotoNext(self):
- """/** Go to the next node of the current branch. */"""
- if not self.current:
- return RC.RET_NONODESELECTED
- if not self.current.next:
- return RC.RET_NOTEXIST
- node = self.current.next
- while node.type != "element" and node.next: # walk 'till you find
- node = node.next
- if node.type == "element":
- self.current = node
- return RC.RET_OK
- return RC.RET_NOTEXIST
-
- def gotoPrev(self):
- """/** Go to the previous node of the current branch. */"""
- if not self.current:
- return RC.RET_NONODESELECTED
- if not self.current.prev:
- return RC.RET_NOTEXIST
- node = self.current.prev
- while node.type != "element" and node.prev: # walk 'till you find
- node = node.prev
- if node.type == "element":
- self.current = node
- return RC.RET_OK
- return RC.RET_NOTEXIST
-
- def gotoChildren(self):
- """/** Go to the children node of the current node. */"""
- if not self.current:
- return RC.RET_NONODESELECTED
- if not self.current.children:
- return RC.RET_NOTEXIST
- tmp = self.current
- self.current = self.current.children
- if self.current.type == "element":
- return RC.RET_OK
- ret = self.gotoNext()
- if ret == RC.RET_NOTEXIST:
- self.current = tmp
- return ret
-
- def gotoParent(self):
- """/** Go to the parent node of the current node. */"""
- if not self.current:
- return RC.RET_NONODESELECTED
- if not self.current.parent:
- return RC.RET_NOTEXIST
- tmp = self.current
- self.current = self.current.parent
- if self.current.type == "element":
- return RC.RET_OK
- ret = self.gotoPrev()
- if ret == RC.RET_NOTEXIST:
- self.current = tmp
- return ret
-
- def Search(self, name, subTree = True):
- """/** Find a name, with or without tree recusivity, using preorder path.
- self.current is saved from not_found case */"""
- if not self.current:
- return RC.RET_NONODESELECTED
- bkp = self.current # save self.current
- while True:
- if self.getName() == name:
- return RC.RET_OK
- if subTree and self.current.children: # maybe deeper ??
- if self.gotoChildren() == RC.RET_OK:
- if self.Search(name,subTree) == RC.RET_OK:
- return RC.RET_OK
- else:
- self.gotoParent()
- if RC.RET_OK !=self.gotoNext(): # maybe further ??
- self.current = bkp # recover self.current
- return RC.RET_NOTFOUND
-
- def Find(self, name, subTree = True):
- """/** Find a name from th etop of the tree, with or without tree recusivity. */"""
- ret = self.gotoFirst()
- if ret != RC.RET_OK:
- return ret
- return self.Search(name,subTree)
-
- def FindNext(self, name, subTree = True):
- """/** Find next name, with or without tree recusivity. */"""
- ret = self.gotoNext()
- if ret != RC.RET_OK:
- return ret
- return self.Search(name,subTree)
-
+ def resetCurrent(self, fromRoot = False):
+ """/** Set current node to the root one if fromRoot, otherwise to the first one. */"""
+ if fromRoot:
+ self.current = self.root
+ else:
+ self.current = self.firstCurrent
+
+ def gotoFirst(self):
+ """/** Go to the first node of the current branch. */"""
+ if not self.current:
+ return RC.RET_NONODESELECTED
+ self.current = self.current.parent.children
+ if self.current.type != "element":
+ return self.gotoNext()
+ return RC.RET_OK
+
+ def gotoLast(self):
+ """/** Go to the last node of the current branch. */"""
+ if not self.current:
+ return RC.RET_NONODESELECTED
+ self.current = self.current.parent.last
+ if self.current.type != "element":
+ return self.gotoPrev()
+ return RC.RET_OK
+
+ def gotoNext(self):
+ """/** Go to the next node of the current branch. */"""
+ if not self.current:
+ return RC.RET_NONODESELECTED
+ if not self.current.next:
+ return RC.RET_NOTEXIST
+ node = self.current.next
+ while node.type != "element" and node.next: # walk 'till you find
+ node = node.next
+ if node.type == "element":
+ self.current = node
+ return RC.RET_OK
+ return RC.RET_NOTEXIST
+
+ def gotoPrev(self):
+ """/** Go to the previous node of the current branch. */"""
+ if not self.current:
+ return RC.RET_NONODESELECTED
+ if not self.current.prev:
+ return RC.RET_NOTEXIST
+ node = self.current.prev
+ while node.type != "element" and node.prev: # walk 'till you find
+ node = node.prev
+ if node.type == "element":
+ self.current = node
+ return RC.RET_OK
+ return RC.RET_NOTEXIST
+
+ def gotoChildren(self):
+ """/** Go to the children node of the current node. */"""
+ if not self.current:
+ return RC.RET_NONODESELECTED
+ if not self.current.children:
+ return RC.RET_NOTEXIST
+ tmp = self.current
+ self.current = self.current.children
+ if self.current.type == "element":
+ return RC.RET_OK
+ ret = self.gotoNext()
+ if ret == RC.RET_NOTEXIST:
+ self.current = tmp
+ return ret
+
+ def gotoParent(self):
+ """/** Go to the parent node of the current node. */"""
+ if not self.current:
+ return RC.RET_NONODESELECTED
+ if not self.current.parent:
+ return RC.RET_NOTEXIST
+ tmp = self.current
+ self.current = self.current.parent
+ if self.current.type == "element":
+ return RC.RET_OK
+ ret = self.gotoPrev()
+ if ret == RC.RET_NOTEXIST:
+ self.current = tmp
+ return ret
+
+ def Search(self, name, subTree = True):
+ """/** Find a name, with or without tree recusivity, using preorder path.
+ self.current is saved from not_found case */"""
+ if not self.current:
+ return RC.RET_NONODESELECTED
+ bkp = self.current # save self.current
+ while True:
+ if self.getName() == name:
+ return RC.RET_OK
+ if subTree and self.current.children: # maybe deeper ??
+ if self.gotoChildren() == RC.RET_OK:
+ if self.Search(name,subTree) == RC.RET_OK:
+ return RC.RET_OK
+ else:
+ self.gotoParent()
+ if RC.RET_OK !=self.gotoNext(): # maybe further ??
+ self.current = bkp # recover self.current
+ return RC.RET_NOTFOUND
+
+ def Find(self, name, subTree = True):
+ """/** Find a name from th etop of the tree, with or without tree recusivity. */"""
+ ret = self.gotoFirst()
+ if ret != RC.RET_OK:
+ return ret
+ return self.Search(name,subTree)
+
+ def FindNext(self, name, subTree = True):
+ """/** Find next name, with or without tree recusivity. */"""
+ ret = self.gotoNext()
+ if ret != RC.RET_OK:
+ return ret
+ return self.Search(name,subTree)
+
# RETRIEVE INFORMATIONS
- def getName(self):
- """/** Get the Name of the current Node. */"""
- if self.current:
- return self.current.name
- return RC.RET_NONODESELECTED
-
- def setName(self, name):
- """/** Set the Name of the current Node. */"""
- if not self.current:
- return RC.RET_NONODESELECTED
- self.current.setName(name)
- return RC.RET_OK
-
- def getContent(self):
- """/** Get the Content of the current Node. */"""
- if not self.current:
- return RC.RET_NONODESELECTED
- currentA = self.current.children
- if currentA:
- return currentA.content
- return ES.TXT_NULL
-
- def setContent(self, content):
- """/** Set the Content of the current Node. */"""
- if not self.current:
- return RC.RET_NONODESELECTED
- if content <> None:
- self.current.setContent(content)
- else:
- self.current.setContent(ES.TXT_NULL)
- return RC.RET_OK
+ def getName(self):
+ """/** Get the Name of the current Node. */"""
+ if self.current:
+ return self.current.name
+ return RC.RET_NONODESELECTED
+
+ def setName(self, name):
+ """/** Set the Name of the current Node. */"""
+ if not self.current:
+ return RC.RET_NONODESELECTED
+ self.current.setName(name)
+ return RC.RET_OK
+
+ def getContent(self):
+ """/** Get the Content of the current Node. */"""
+ if not self.current:
+ return RC.RET_NONODESELECTED
+ currentA = self.current.children
+ if currentA:
+ return currentA.content
+ return ES.TXT_NULL
+
+ def setContent(self, content):
+ """/** Set the Content of the current Node. */"""
+ if not self.current:
+ return RC.RET_NONODESELECTED
+ if content <> None:
+ self.current.setContent(content)
+ else:
+ self.current.setContent(ES.TXT_NULL)
+ return RC.RET_OK
# CREATE ADN DELETE NODES
- def addChildren(self, name, content = None):
- """/** Create a new node (the current node is the parent). */"""
- if not self.current:
- return RC.RET_NONODESELECTED
- self.current.newChild(None,name,content)
- if self.doc and not self.root:
- self.root = self.doc.children
- self.firstCurrent = self.root
- self.current = self.root
- return RC.RET_OK
-
- def removeCurrent(self):
- """/** Remove the current node (recursively).
- After remove operation, goto the previous node if exists or to the next, or the parent*/"""
- str = self.getName()
- if str == RC.RET_NONODESELECTED or str is None:
- return RC.RET_NONODESELECTED
- if str.upper() == ES.XML_XML.upper(): # TzurTcH - case insensitive should be ok
- return RC.RET_OK
- toRemove = self.current
- if self.current.prev:
- self.gotoPrev()
- elif self.current.next:
- self.gotoNext()
- elif self.current.parent:
- self.gotoParent()
- # maybe it will empty this tree ...
- if self.root == toRemove or self.firstCurrent == toRemove or self.root.doc.children == toRemove:
- self.root = None
- self.firstCurrent = None
- self.current = None
- toRemove.unlinkNode()
- toRemove.freeNode()
- return RC.RET_OK
+ def addChildren(self, name, content = None):
+ """/** Create a new node (the current node is the parent). */"""
+ if not self.current:
+ return RC.RET_NONODESELECTED
+ self.current.newChild(None,name,content)
+ if self.doc and not self.root:
+ self.root = self.doc.children
+ self.firstCurrent = self.root
+ self.current = self.root
+ return RC.RET_OK
+
+ def removeCurrent(self):
+ """/** Remove the current node (recursively).
+ After remove operation, goto the previous node if exists or to the next, or the parent*/"""
+ str = self.getName()
+ if str == RC.RET_NONODESELECTED or str is None:
+ return RC.RET_NONODESELECTED
+ if str.upper() == ES.XML_XML.upper(): # TzurTcH - case insensitive should be ok
+ return RC.RET_OK
+ toRemove = self.current
+ if self.current.prev:
+ self.gotoPrev()
+ elif self.current.next:
+ self.gotoNext()
+ elif self.current.parent:
+ self.gotoParent()
+ # maybe it will empty this tree ...
+ if self.root == toRemove or self.firstCurrent == toRemove or self.root.doc.children == toRemove:
+ self.root = None
+ self.firstCurrent = None
+ self.current = None
+ toRemove.unlinkNode()
+ toRemove.freeNode()
+ return RC.RET_OK
# STACK MEMORY CAPABILITIES
- def pushCurrent(self):
- """/** Push the Current position to the stack. */"""
- self.stackCurrent.add(self.current)
+ def pushCurrent(self):
+ """/** Push the Current position to the stack. */"""
+ self.stackCurrent.add(self.current)
+
+ def popCurrent(self):
+ """/** Pop the Current position from the stack. */"""
+ if self.stackCurrent.getCount():
+ self.current = self.stackCurrent.removeStack()
- def popCurrent(self):
- """/** Pop the Current position from the stack. */"""
- if self.stackCurrent.getCount():
- self.current = self.stackCurrent.removeStack()
-
if __name__ == '__main__':
- import unittest
- from evenjastrings import *
-
- conf = Fconfig()
-
- class FconfigTestCase(unittest.TestCase):
-
- def test1FileName(self):
- self.assertEquals(conf.startXml( "testezlog.xml"),RC.RET_OK)
- self.assertEquals(conf.endXml(),RC.RET_OK)
-
- def test2NewTree(self):
- self.assertEquals(conf.startNewXml(),RC.RET_OK)
- self.assertEquals(conf.endXml(),RC.RET_OK)
- self.assertEquals(conf.startNewXml( "testezlog_addnode.xml"),RC.RET_OK)
- self.assertEquals(conf.endXml(),RC.RET_OK)
-
- def test3StartNode(self):
- self.assertEquals(conf.startXml( "testezlog.xml"),RC.RET_OK)
- conf1 = Fconfig()
- conf1.startXml( conf.getCurrent())
- conf1.gotoChildren()
- self.assertEquals(ES.XML_NAME.upper(),conf1.getName().upper())
- conf1.endXml()
- self.assertEquals(conf.endXml(),RC.RET_OK)
-
- def test4Node(self):
- self.assertEquals(conf.startXml( "testezlog.xml"),RC.RET_OK)
- conf.gotoChildren()
- self.assertEquals(ES.XML_NAME, conf.getName())
- self.assertEquals("TEST00", conf.getContent())
- conf.gotoNext()
- self.assertEquals(ES.XML_ROOM, conf.getName())
- conf.gotoChildren()
- self.assertEquals(ES.XML_NAME, conf.getName())
- self.assertEquals("Room1", conf.getContent())
- conf.gotoNext()
- self.assertEquals(ES.XML_DOC, conf.getName())
- self.assertEquals("FirstRoom", conf.getContent())
- conf.gotoNext()
- conf.gotoPrev()
- self.assertEquals(ES.XML_DOC, conf.getName())
- self.assertEquals("FirstRoom", conf.getContent())
- conf.gotoPrev()
- conf.gotoNext()
- self.assertEquals(ES.XML_DOC, conf.getName())
- self.assertEquals("FirstRoom", conf.getContent())
- self.assertEquals(conf.endXml(),RC.RET_OK)
-
- def test5ParentChildren(self):
- self.assertEquals(conf.startXml( "testezlog.xml"),RC.RET_OK)
- self.assertEquals(ES.XML_XML.upper(), conf.getName().upper())
- self.assertEquals(conf.gotoChildren(),RC.RET_OK)
-
- self.assertEquals(ES.XML_NAME, conf.getName())
- self.assertEquals("TEST00", conf.getContent())
- self.assertEquals(conf.gotoChildren(),RC.RET_NOTEXIST)
- self.assertEquals(ES.XML_NAME, conf.getName())
- self.assertEquals("TEST00", conf.getContent())
-
- self.assertEquals(conf.gotoParent(),RC.RET_OK)
- self.assertEquals(ES.XML_XML.upper(), conf.getName().upper())
- self.assertEquals(conf.gotoParent(),RC.RET_NOTEXIST)
-
- conf.resetCurrent()
- self.assertEquals(conf.gotoChildren(),RC.RET_OK)
- self.assertEquals(ES.XML_NAME, conf.getName())
- self.assertEquals(conf.endXml(),RC.RET_OK)
-
- def test6FirstLast(self):
- self.assertEquals(conf.startXml( "testezlog.xml"),RC.RET_OK)
- conf.gotoChildren()
- conf.gotoNext()
- conf.gotoChildren()
- conf.gotoLast()
- self.assertEquals(ES.XML_CONF, conf.getName())
- self.assertEquals(conf.gotoNext(),RC.RET_NOTEXIST)
- conf.gotoFirst()
- self.assertEquals(ES.XML_NAME, conf.getName())
- self.assertEquals(conf.gotoPrev(),RC.RET_NOTEXIST)
- conf.gotoNext()
- self.assertEquals(ES.XML_DOC, conf.getName())
- self.assertEquals(conf.endXml(),RC.RET_OK)
-
- def test7Find(self):
- self.assertEquals(conf.startXml( "testezlog.xml"),RC.RET_OK)
- if conf.Find(ES.XML_NAME):
- self.assertEquals(ES.XML_NAME, conf.getName())
- self.assertEquals("Room1", conf.getContent())
- conf.pushCurrent()
- conf.FindNext(ES.XML_DOC)
- self.assertEquals(ES.XML_DOC, conf.getName())
- self.assertEquals("FirstRoom", conf.getContent())
- conf.popCurrent()
- conf.FindNext(ES.XML_DOC, false)
- self.assertEquals(conf.Find(ES.TXT_NULL),RC.RET_NOTFOUND)
- self.assertEquals(conf.endXml(),RC.RET_OK)
-
- def test8NewNode(self):
- self.assertEquals(conf.startNewXml( "testezlog_addnode.xml"),RC.RET_OK)
- conf.addChildren( ES.XML_NAME, "Room1")
- conf.addChildren( ES.XML_DOC, "FirstRoom")
- conf.addChildren( ES.XML_CONF, "REMOVETEST")
-
- conf.gotoChildren()
- conf.gotoLast()
- self.assertEquals(ES.XML_CONF, conf.getName())
- conf.removeCurrent()
- self.assertEquals(ES.XML_DOC, conf.getName())
- self.assertEquals("FirstRoom", conf.getContent())
-
- conf.gotoParent() # XML
- self.assertEquals(ES.XML_XML, conf.getName())
- conf.addChildren(ES.XML_CONF, "REMOVETEST")
- conf.gotoChildren()
- conf.gotoLast()
- conf.gotoPrev()
- self.assertEquals(ES.XML_DOC, conf.getName())
- self.assertEquals("FirstRoom", conf.getContent())
- conf.removeCurrent()
- self.assertEquals(ES.XML_NAME, conf.getName())
- self.assertEquals("Room1", conf.getContent())
-
- conf.gotoParent()
- conf.addChildren(ES.XML_DOC, "FirstRoom")
- conf.gotoChildren()
- conf.removeCurrent()
- self.assertEquals(ES.XML_CONF, conf.getName())
- self.assertEquals("REMOVETEST", conf.getContent())
-
- self.assertEquals(conf.endXml(),RC.RET_OK)
-
- def testBigBuild(self):
- """TzurTcH's test suite"""
- self.assertEquals(conf.startNewXml( "DEEP.xml"),RC.RET_OK)
- self.assertEquals(conf.getName(),XML_XML)
- self.assertEquals(conf.addChildren( ES.XML_NAME, "Room1"),RC.RET_OK)
- self.assertEquals(conf.addChildren( ES.XML_NAME, "Room2"),RC.RET_OK)
- self.assertEquals(conf.addChildren( ES.XML_NAME, "Room3"),RC.RET_OK)
- self.assertEquals(conf.addChildren( ES.XML_NAME, "Room4"),RC.RET_OK)
- self.assertEquals(conf.addChildren( ES.XML_NAME, "Room5"),RC.RET_OK)
- self.assertEquals(conf.gotoChildren(),RC.RET_OK)
- self.assertEquals(conf.getContent(),"Room1")
-
- self.assertEquals(conf.gotoLast(),RC.RET_OK)
- self.assertEquals(conf.getContent(),"Room5")
- self.assertEquals(conf.gotoLast(),RC.RET_OK)
- self.assertEquals(conf.getContent(),"Room5")
-
- self.assertEquals(conf.addChildren( ES.XML_DOC, "child_of_5"),RC.RET_OK)
- self.assertEquals(conf.gotoNext(),RC.RET_NOTEXIST)
- self.assertEquals(conf.getContent(),"Room5")
-
- self.assertEquals(conf.addChildren( ES.XML_DOC, "child_of_5_two"),RC.RET_OK)
- self.assertEquals(conf.addChildren( ES.XML_DOC, "child_of_5_three"),RC.RET_OK)
- self.assertEquals(conf.getContent(),"Room5")
-
- self.assertEquals(conf.gotoFirst(),RC.RET_OK)
- self.assertEquals(conf.getContent(),"Room1")
- self.assertEquals(conf.gotoFirst(),RC.RET_OK)
- self.assertEquals(conf.getContent(),"Room1")
- self.assertEquals(conf.addChildren( ES.XML_DOC, "child_of_1"),RC.RET_OK)
- self.assertEquals(conf.gotoPrev(),RC.RET_NOTEXIST)
- self.assertEquals(conf.getContent(),"Room1")
-
- self.assertEquals(conf.addChildren( ES.XML_DOC, "child_of_1_two"),RC.RET_OK)
- self.assertEquals(conf.getContent(),"Room1")
- self.assertEquals(conf.addChildren( ES.XML_DOC, "child_of_1_three"),RC.RET_OK)
-
- self.assertEquals(conf.gotoNext(),RC.RET_OK)
- self.assertEquals(conf.getContent(),"Room2")
- self.assertEquals(conf.gotoNext(),RC.RET_OK)
- self.assertEquals(conf.getContent(),"Room3")
- self.assertEquals(conf.gotoNext(),RC.RET_OK)
- self.assertEquals(conf.getContent(),"Room4")
- self.assertEquals(conf.addChildren( ES.XML_DOC, "child_of_4"),RC.RET_OK)
- self.assertEquals(conf.gotoPrev(),RC.RET_OK)
- self.assertEquals(conf.getContent(),"Room3")
- self.assertEquals(conf.gotoPrev(),RC.RET_OK)
- self.assertEquals(conf.getContent(),"Room2")
- self.assertEquals(conf.addChildren( ES.XML_DOC, "child_of_2"),RC.RET_OK)
- self.assertEquals(conf.gotoNext(),RC.RET_OK)
- self.assertEquals(conf.getContent(),"Room3")
-
- self.assertEquals(conf.addChildren( ES.XML_DOC, "child_of_3"),RC.RET_OK)
- self.assertEquals(conf.addChildren( "SEARCH", "child_of_3_two"),RC.RET_OK)
-
- conf.pushCurrent()
- self.assertEquals(conf.getContent(),"Room3")
- conf.resetCurrent(False)
- self.assertEquals(conf.getName(),XML_XML)
- self.assertEquals(conf.Find("SEARCH"),RC.RET_OK)
- conf.popCurrent()
-
- self.assertEquals(conf.addChildren( ES.XML_DOC, "child_of_3_three"),RC.RET_OK)
- self.assertEquals(conf.getContent(),"Room3")
- self.assertEquals(conf.gotoChildren(),RC.RET_OK)
- self.assertEquals(conf.getContent(),"child_of_3")
- self.assertEquals(conf.gotoLast(),RC.RET_OK)
- self.assertEquals(conf.getContent(),"child_of_3_three")
- self.assertEquals(conf.gotoChildren(),RC.RET_NOTEXIST)
- self.assertEquals(conf.getContent(),"child_of_3_three")
-
- self.assertEquals(conf.gotoParent(),RC.RET_OK)
- self.assertEquals(conf.getContent(),"Room3")
- self.assertEquals(conf.gotoParent(),RC.RET_OK)
- self.assertEquals(conf.gotoChildren(),RC.RET_OK)
- self.assertEquals(conf.getContent(),"Room1")
-
- self.assertEquals(conf.gotoParent(),RC.RET_OK)
- self.assertEquals(conf.getName(),ES.XML_XML)
- self.assertEquals(conf.gotoParent(),RC.RET_NOTEXIST)
- self.assertEquals(conf.gotoParent(),RC.RET_NOTEXIST)
- self.assertEquals(conf.getName(),ES.XML_XML)
- self.assertEquals(conf.removeCurrent(),RC.RET_OK)
-
- self.assertEquals(conf.gotoChildren(),RC.RET_OK)
- self.assertEquals(conf.getContent(),"Room1")
- self.assertEquals(conf.gotoChildren(),RC.RET_OK)
- self.assertEquals(conf.getContent(),"child_of_1")
- self.assertEquals(conf.gotoParent(),RC.RET_OK)
- self.assertEquals(conf.removeCurrent(),RC.RET_OK)
- self.assertEquals(conf.getContent(),"Room2")
- self.assertEquals(conf.Find("NOTHING"),RC.RET_NOTFOUND)
- self.assertEquals(conf.getContent(),"Room2")
- self.assertEquals(conf.FindNext("NOTHING"),RC.RET_NOTFOUND)
- self.assertEquals(conf.getContent(),"Room3")
-
- self.assertEquals(conf.gotoPrev(),RC.RET_OK)
- self.assertEquals(conf.FindNext("SEARCH"),RC.RET_OK)
- self.assertEquals(conf.getContent(),"child_of_3_two")
- self.assertEquals(conf.gotoParent(),RC.RET_OK)
- self.assertEquals(conf.FindNext("SEARCH"),RC.RET_NOTFOUND)
- self.assertEquals(conf.getContent(),"Room4")
- self.assertEquals(conf.getName(),ES.XML_NAME)
- self.assertEquals(conf.gotoNext(),RC.RET_OK)
- self.assertEquals(conf.getContent(),"Room5")
-
- self.assertEquals(conf.gotoParent(),RC.RET_OK)
- self.assertEquals(conf.getName(),XML_XML)
- self.assertEquals(conf.endXml(),RC.RET_OK)
-
-
- unittest.main()
+ import unittest
+ from evenjastrings import *
+
+ conf = Fconfig()
+
+ class FconfigTestCase(unittest.TestCase):
+
+ def test1FileName(self):
+ self.assertEquals(conf.startXml( "testezlog.xml"),RC.RET_OK)
+ self.assertEquals(conf.endXml(),RC.RET_OK)
+
+ def test2NewTree(self):
+ self.assertEquals(conf.startNewXml(),RC.RET_OK)
+ self.assertEquals(conf.endXml(),RC.RET_OK)
+ self.assertEquals(conf.startNewXml( "testezlog_addnode.xml"),RC.RET_OK)
+ self.assertEquals(conf.endXml(),RC.RET_OK)
+
+ def test3StartNode(self):
+ self.assertEquals(conf.startXml( "testezlog.xml"),RC.RET_OK)
+ conf1 = Fconfig()
+ conf1.startXml( conf.getCurrent())
+ conf1.gotoChildren()
+ self.assertEquals(ES.XML_NAME.upper(),conf1.getName().upper())
+ conf1.endXml()
+ self.assertEquals(conf.endXml(),RC.RET_OK)
+
+ def test4Node(self):
+ self.assertEquals(conf.startXml( "testezlog.xml"),RC.RET_OK)
+ conf.gotoChildren()
+ self.assertEquals(ES.XML_NAME, conf.getName())
+ self.assertEquals("TEST00", conf.getContent())
+ conf.gotoNext()
+ self.assertEquals(ES.XML_ROOM, conf.getName())
+ conf.gotoChildren()
+ self.assertEquals(ES.XML_NAME, conf.getName())
+ self.assertEquals("Room1", conf.getContent())
+ conf.gotoNext()
+ self.assertEquals(ES.XML_DOC, conf.getName())
+ self.assertEquals("FirstRoom", conf.getContent())
+ conf.gotoNext()
+ conf.gotoPrev()
+ self.assertEquals(ES.XML_DOC, conf.getName())
+ self.assertEquals("FirstRoom", conf.getContent())
+ conf.gotoPrev()
+ conf.gotoNext()
+ self.assertEquals(ES.XML_DOC, conf.getName())
+ self.assertEquals("FirstRoom", conf.getContent())
+ self.assertEquals(conf.endXml(),RC.RET_OK)
+
+ def test5ParentChildren(self):
+ self.assertEquals(conf.startXml( "testezlog.xml"),RC.RET_OK)
+ self.assertEquals(ES.XML_XML.upper(), conf.getName().upper())
+ self.assertEquals(conf.gotoChildren(),RC.RET_OK)
+
+ self.assertEquals(ES.XML_NAME, conf.getName())
+ self.assertEquals("TEST00", conf.getContent())
+ self.assertEquals(conf.gotoChildren(),RC.RET_NOTEXIST)
+ self.assertEquals(ES.XML_NAME, conf.getName())
+ self.assertEquals("TEST00", conf.getContent())
+
+ self.assertEquals(conf.gotoParent(),RC.RET_OK)
+ self.assertEquals(ES.XML_XML.upper(), conf.getName().upper())
+ self.assertEquals(conf.gotoParent(),RC.RET_NOTEXIST)
+
+ conf.resetCurrent()
+ self.assertEquals(conf.gotoChildren(),RC.RET_OK)
+ self.assertEquals(ES.XML_NAME, conf.getName())
+ self.assertEquals(conf.endXml(),RC.RET_OK)
+
+ def test6FirstLast(self):
+ self.assertEquals(conf.startXml( "testezlog.xml"),RC.RET_OK)
+ conf.gotoChildren()
+ conf.gotoNext()
+ conf.gotoChildren()
+ conf.gotoLast()
+ self.assertEquals(ES.XML_CONF, conf.getName())
+ self.assertEquals(conf.gotoNext(),RC.RET_NOTEXIST)
+ conf.gotoFirst()
+ self.assertEquals(ES.XML_NAME, conf.getName())
+ self.assertEquals(conf.gotoPrev(),RC.RET_NOTEXIST)
+ conf.gotoNext()
+ self.assertEquals(ES.XML_DOC, conf.getName())
+ self.assertEquals(conf.endXml(),RC.RET_OK)
+
+ def test7Find(self):
+ self.assertEquals(conf.startXml( "testezlog.xml"),RC.RET_OK)
+ if conf.Find(ES.XML_NAME):
+ self.assertEquals(ES.XML_NAME, conf.getName())
+ self.assertEquals("Room1", conf.getContent())
+ conf.pushCurrent()
+ conf.FindNext(ES.XML_DOC)
+ self.assertEquals(ES.XML_DOC, conf.getName())
+ self.assertEquals("FirstRoom", conf.getContent())
+ conf.popCurrent()
+ conf.FindNext(ES.XML_DOC, false)
+ self.assertEquals(conf.Find(ES.TXT_NULL),RC.RET_NOTFOUND)
+ self.assertEquals(conf.endXml(),RC.RET_OK)
+
+ def test8NewNode(self):
+ self.assertEquals(conf.startNewXml( "testezlog_addnode.xml"),RC.RET_OK)
+ conf.addChildren( ES.XML_NAME, "Room1")
+ conf.addChildren( ES.XML_DOC, "FirstRoom")
+ conf.addChildren( ES.XML_CONF, "REMOVETEST")
+
+ conf.gotoChildren()
+ conf.gotoLast()
+ self.assertEquals(ES.XML_CONF, conf.getName())
+ conf.removeCurrent()
+ self.assertEquals(ES.XML_DOC, conf.getName())
+ self.assertEquals("FirstRoom", conf.getContent())
+
+ conf.gotoParent() # XML
+ self.assertEquals(ES.XML_XML, conf.getName())
+ conf.addChildren(ES.XML_CONF, "REMOVETEST")
+ conf.gotoChildren()
+ conf.gotoLast()
+ conf.gotoPrev()
+ self.assertEquals(ES.XML_DOC, conf.getName())
+ self.assertEquals("FirstRoom", conf.getContent())
+ conf.removeCurrent()
+ self.assertEquals(ES.XML_NAME, conf.getName())
+ self.assertEquals("Room1", conf.getContent())
+
+ conf.gotoParent()
+ conf.addChildren(ES.XML_DOC, "FirstRoom")
+ conf.gotoChildren()
+ conf.removeCurrent()
+ self.assertEquals(ES.XML_CONF, conf.getName())
+ self.assertEquals("REMOVETEST", conf.getContent())
+
+ self.assertEquals(conf.endXml(),RC.RET_OK)
+
+ def testBigBuild(self):
+ """TzurTcH's test suite"""
+ self.assertEquals(conf.startNewXml( "DEEP.xml"),RC.RET_OK)
+ self.assertEquals(conf.getName(),XML_XML)
+ self.assertEquals(conf.addChildren( ES.XML_NAME, "Room1"),RC.RET_OK)
+ self.assertEquals(conf.addChildren( ES.XML_NAME, "Room2"),RC.RET_OK)
+ self.assertEquals(conf.addChildren( ES.XML_NAME, "Room3"),RC.RET_OK)
+ self.assertEquals(conf.addChildren( ES.XML_NAME, "Room4"),RC.RET_OK)
+ self.assertEquals(conf.addChildren( ES.XML_NAME, "Room5"),RC.RET_OK)
+ self.assertEquals(conf.gotoChildren(),RC.RET_OK)
+ self.assertEquals(conf.getContent(),"Room1")
+
+ self.assertEquals(conf.gotoLast(),RC.RET_OK)
+ self.assertEquals(conf.getContent(),"Room5")
+ self.assertEquals(conf.gotoLast(),RC.RET_OK)
+ self.assertEquals(conf.getContent(),"Room5")
+
+ self.assertEquals(conf.addChildren( ES.XML_DOC, "child_of_5"),RC.RET_OK)
+ self.assertEquals(conf.gotoNext(),RC.RET_NOTEXIST)
+ self.assertEquals(conf.getContent(),"Room5")
+
+ self.assertEquals(conf.addChildren( ES.XML_DOC, "child_of_5_two"),RC.RET_OK)
+ self.assertEquals(conf.addChildren( ES.XML_DOC, "child_of_5_three"),RC.RET_OK)
+ self.assertEquals(conf.getContent(),"Room5")
+
+ self.assertEquals(conf.gotoFirst(),RC.RET_OK)
+ self.assertEquals(conf.getContent(),"Room1")
+ self.assertEquals(conf.gotoFirst(),RC.RET_OK)
+ self.assertEquals(conf.getContent(),"Room1")
+ self.assertEquals(conf.addChildren( ES.XML_DOC, "child_of_1"),RC.RET_OK)
+ self.assertEquals(conf.gotoPrev(),RC.RET_NOTEXIST)
+ self.assertEquals(conf.getContent(),"Room1")
+
+ self.assertEquals(conf.addChildren( ES.XML_DOC, "child_of_1_two"),RC.RET_OK)
+ self.assertEquals(conf.getContent(),"Room1")
+ self.assertEquals(conf.addChildren( ES.XML_DOC, "child_of_1_three"),RC.RET_OK)
+
+ self.assertEquals(conf.gotoNext(),RC.RET_OK)
+ self.assertEquals(conf.getContent(),"Room2")
+ self.assertEquals(conf.gotoNext(),RC.RET_OK)
+ self.assertEquals(conf.getContent(),"Room3")
+ self.assertEquals(conf.gotoNext(),RC.RET_OK)
+ self.assertEquals(conf.getContent(),"Room4")
+ self.assertEquals(conf.addChildren( ES.XML_DOC, "child_of_4"),RC.RET_OK)
+ self.assertEquals(conf.gotoPrev(),RC.RET_OK)
+ self.assertEquals(conf.getContent(),"Room3")
+ self.assertEquals(conf.gotoPrev(),RC.RET_OK)
+ self.assertEquals(conf.getContent(),"Room2")
+ self.assertEquals(conf.addChildren( ES.XML_DOC, "child_of_2"),RC.RET_OK)
+ self.assertEquals(conf.gotoNext(),RC.RET_OK)
+ self.assertEquals(conf.getContent(),"Room3")
+
+ self.assertEquals(conf.addChildren( ES.XML_DOC, "child_of_3"),RC.RET_OK)
+ self.assertEquals(conf.addChildren( "SEARCH", "child_of_3_two"),RC.RET_OK)
+
+ conf.pushCurrent()
+ self.assertEquals(conf.getContent(),"Room3")
+ conf.resetCurrent(False)
+ self.assertEquals(conf.getName(),XML_XML)
+ self.assertEquals(conf.Find("SEARCH"),RC.RET_OK)
+ conf.popCurrent()
+
+ self.assertEquals(conf.addChildren( ES.XML_DOC, "child_of_3_three"),RC.RET_OK)
+ self.assertEquals(conf.getContent(),"Room3")
+ self.assertEquals(conf.gotoChildren(),RC.RET_OK)
+ self.assertEquals(conf.getContent(),"child_of_3")
+ self.assertEquals(conf.gotoLast(),RC.RET_OK)
+ self.assertEquals(conf.getContent(),"child_of_3_three")
+ self.assertEquals(conf.gotoChildren(),RC.RET_NOTEXIST)
+ self.assertEquals(conf.getContent(),"child_of_3_three")
+
+ self.assertEquals(conf.gotoParent(),RC.RET_OK)
+ self.assertEquals(conf.getContent(),"Room3")
+ self.assertEquals(conf.gotoParent(),RC.RET_OK)
+ self.assertEquals(conf.gotoChildren(),RC.RET_OK)
+ self.assertEquals(conf.getContent(),"Room1")
+
+ self.assertEquals(conf.gotoParent(),RC.RET_OK)
+ self.assertEquals(conf.getName(),ES.XML_XML)
+ self.assertEquals(conf.gotoParent(),RC.RET_NOTEXIST)
+ self.assertEquals(conf.gotoParent(),RC.RET_NOTEXIST)
+ self.assertEquals(conf.getName(),ES.XML_XML)
+ self.assertEquals(conf.removeCurrent(),RC.RET_OK)
+
+ self.assertEquals(conf.gotoChildren(),RC.RET_OK)
+ self.assertEquals(conf.getContent(),"Room1")
+ self.assertEquals(conf.gotoChildren(),RC.RET_OK)
+ self.assertEquals(conf.getContent(),"child_of_1")
+ self.assertEquals(conf.gotoParent(),RC.RET_OK)
+ self.assertEquals(conf.removeCurrent(),RC.RET_OK)
+ self.assertEquals(conf.getContent(),"Room2")
+ self.assertEquals(conf.Find("NOTHING"),RC.RET_NOTFOUND)
+ self.assertEquals(conf.getContent(),"Room2")
+ self.assertEquals(conf.FindNext("NOTHING"),RC.RET_NOTFOUND)
+ self.assertEquals(conf.getContent(),"Room3")
+
+ self.assertEquals(conf.gotoPrev(),RC.RET_OK)
+ self.assertEquals(conf.FindNext("SEARCH"),RC.RET_OK)
+ self.assertEquals(conf.getContent(),"child_of_3_two")
+ self.assertEquals(conf.gotoParent(),RC.RET_OK)
+ self.assertEquals(conf.FindNext("SEARCH"),RC.RET_NOTFOUND)
+ self.assertEquals(conf.getContent(),"Room4")
+ self.assertEquals(conf.getName(),ES.XML_NAME)
+ self.assertEquals(conf.gotoNext(),RC.RET_OK)
+ self.assertEquals(conf.getContent(),"Room5")
+
+ self.assertEquals(conf.gotoParent(),RC.RET_OK)
+ self.assertEquals(conf.getName(),XML_XML)
+ self.assertEquals(conf.endXml(),RC.RET_OK)
+
+
+ unittest.main()
diff --git a/fdoor_cout.py b/fdoor_cout.py
index 322596b..31507bc 100644
--- a/fdoor_cout.py
+++ b/fdoor_cout.py
@@ -20,7 +20,7 @@
#
""" doc """
-
+
__all__ = ["Fdoor_cout"]
@@ -30,13 +30,13 @@ from sys import stdout
class Fdoor_cout(FevenDoor):
- def __init__(self):
- FevenDoor.__init__(self) # force constructor
-
- def __str__(self):
- return "\t"+FevenDoor.__str__(self)+\
- "Fdoor_cout - (null)\n"
-
- def receive_evenData(self,evenData):
- stdout.write("%s"%evenData.getData("TXT"))
- return RET_OK
+ def __init__(self):
+ FevenDoor.__init__(self) # force constructor
+
+ def __str__(self):
+ return "\t"+FevenDoor.__str__(self)+\
+ "Fdoor_cout - (null)\n"
+
+ def receive_evenData(self,evenData):
+ stdout.write("%s"%evenData.getData("TXT"))
+ return RET_OK
diff --git a/fdoor_file.py b/fdoor_file.py
index d2819b6..0606bac 100644
--- a/fdoor_file.py
+++ b/fdoor_file.py
@@ -35,55 +35,55 @@ from returncodes import RET_CANNOTSAVE
class Fdoor_file(FevenDoor):
- def __init__(self):
- FevenDoor.__init__(self) # force constructor
- self.file = None
-
- def __str__(self):
- return "\t"+FevenDoor.__str__(self)+\
- "Fdoor_file - file : "+str(self.file)+"\n"
-
- def start(self,port,node):
- ret = Fport.start(self,port,node)
- if ret == RET_OK:
- self.gotoChildren()
- if self.Find("filename",False) == RET_OK:
- str = self.getContent()
- try:
- self.file = file(str,"rw")
- except:
- return RET_CANNOTACCESS
- self.filename = str
- if file <> None:
- data = self.getFreeEvenData()
- data.definePortAction(ACT_GET,self.getString())
- self.sendEvenData(data)
- else:
- return RET_CANNOTACCESS
- return ret
-
- def receive_evenData(self,evenData):
- if evenData.getCurrentDestination().getAction().equals(gvActionGet):
- line = self.file.readline()
- if line:
- # send line
- evenData.reset()
- evenData.setData("filename",self.filename)
- evenData.setData("TXT",line)
- self.sendEvenData(evenData)
+ def __init__(self):
+ FevenDoor.__init__(self) # force constructor
+ self.file = None
- # say "I got more"
- data = self.getFreeEvenData()
- data.definePortAction(ACT_GET, self.getString())
- self.sendEvenData(data)
- return RET_OK
-
-
- def end(self):
- ret = Fport.end(self)
- if ret == RET_OK and self.file <> None:
- try:
- self.file.close()
- except:
- return RET_CANNOTSAVE
- return ret
+ def __str__(self):
+ return "\t"+FevenDoor.__str__(self)+\
+ "Fdoor_file - file : "+str(self.file)+"\n"
+
+ def start(self,port,node):
+ ret = Fport.start(self,port,node)
+ if ret == RET_OK:
+ self.gotoChildren()
+ if self.Find("filename",False) == RET_OK:
+ str = self.getContent()
+ try:
+ self.file = file(str,"rw")
+ except:
+ return RET_CANNOTACCESS
+ self.filename = str
+ if file <> None:
+ data = self.getFreeEvenData()
+ data.definePortAction(ACT_GET,self.getString())
+ self.sendEvenData(data)
+ else:
+ return RET_CANNOTACCESS
+ return ret
+
+ def receive_evenData(self,evenData):
+ if evenData.getCurrentDestination().getAction().equals(gvActionGet):
+ line = self.file.readline()
+ if line:
+ # send line
+ evenData.reset()
+ evenData.setData("filename",self.filename)
+ evenData.setData("TXT",line)
+ self.sendEvenData(evenData)
+
+ # say "I got more"
+ data = self.getFreeEvenData()
+ data.definePortAction(ACT_GET, self.getString())
+ self.sendEvenData(data)
+ return RET_OK
+
+
+ def end(self):
+ ret = Fport.end(self)
+ if ret == RET_OK and self.file <> None:
+ try:
+ self.file.close()
+ except:
+ return RET_CANNOTSAVE
+ return ret
diff --git a/fevenboard.py b/fevenboard.py
index 6aecee2..10b314e 100644
--- a/fevenboard.py
+++ b/fevenboard.py
@@ -52,33 +52,33 @@ from globalvars import gvActionFollowDestination
class FevenBoard(FportListHash):
- def __init__(self):
- FportListHash.__init__(self) # force contrustor
-
- def __str__(self):
- return "\t"+FportListHash.__str__(self)+\
- "FevenBoard - (null)\n"
-
- def receive_evenData(self,evenData):
- """/** Receive the evenData and apply the action to know what to do with */"""
- action = evenData.getCurrentDestination().getAction()
-
- if action.equals(gvActionDestination1Data):
- if evenData.selectNextDestination() != RET_OK:
- evenData.definePortAction(ACT_ERROR)
- else:
- dataPresent = self.listHash.addOrRemove(evenData)
- if dataPresent <> None:
- if action.equals(gvActionFollowDestination):
- provData = dataPresent
- dataPresent = evenData
- evenData = provData
- evenData.setEvenDataB(dataPresent)
- if evenData.selectNextDestination() != RET_OK:
- evenData.definePortAction(ACT_ERROR)
- self.sendEvenData(evenData)
- else:
- if action.equals(gvActionWait):
- print "NOT IMPLEMENTED YET"
- return RET_OK
-
+ def __init__(self):
+ FportListHash.__init__(self) # force contrustor
+
+ def __str__(self):
+ return "\t"+FportListHash.__str__(self)+\
+ "FevenBoard - (null)\n"
+
+ def receive_evenData(self,evenData):
+ """/** Receive the evenData and apply the action to know what to do with */"""
+ action = evenData.getCurrentDestination().getAction()
+
+ if action.equals(gvActionDestination1Data):
+ if evenData.selectNextDestination() != RET_OK:
+ evenData.definePortAction(ACT_ERROR)
+ else:
+ dataPresent = self.listHash.addOrRemove(evenData)
+ if dataPresent <> None:
+ if action.equals(gvActionFollowDestination):
+ provData = dataPresent
+ dataPresent = evenData
+ evenData = provData
+ evenData.setEvenDataB(dataPresent)
+ if evenData.selectNextDestination() != RET_OK:
+ evenData.definePortAction(ACT_ERROR)
+ self.sendEvenData(evenData)
+ else:
+ if action.equals(gvActionWait):
+ print "NOT IMPLEMENTED YET"
+ return RET_OK
+
diff --git a/fevendata.py b/fevendata.py
index 6cb7a05..c9869df 100644
--- a/fevendata.py
+++ b/fevendata.py
@@ -28,18 +28,18 @@
evenDoor or evenBoard.
THIS SCENARIO OF USE IS COVERED BY THE FPL Foundaion Public Licence.
COPYRIGHT 1992-2004 Fabian Padilla.
-
+
*@author Fabian Padilla
*/"""
__all__ = ["FevenData"]
try:
- import libxml2
+ import libxml2
except:
- print "libxml2 not available ... aborting !!"
- import sys
- sys.exit(1)
+ print "libxml2 not available ... aborting !!"
+ import sys
+ sys.exit(1)
from time import time
@@ -52,591 +52,591 @@ import evenjastrings as ES
import returncodes as RC
# TzurTcH - speed up ;))
-PREF = ES.XML_DESTINATION + ES.TREE_SEPARATOR_STR
+PREF = ES.XML_DESTINATION + ES.TREE_SEPARATOR_STR
PREF_DESTCOUNT = PREF + ES.XML_DESTCOUNT
PREF_CURRENTDEST = PREF + ES.XML_CURRENTDEST
PREF_DESTNUMBER = PREF + ES.XML_DESTNUMBER
-
+
class FevenData(Fconfig):
- def __init__(self):
- Fconfig.__init__(self) # force constructor
- self.source = Fposition() # Where the evenData as been created
- self.startToUse = 0 # Date and time when this evenData as been sent from the evenDoor
- self.destination = Flist() # Where the evenData want to go
- self.currentDestination = 0 # this is it
- self.activePort = None # The Active actual port where the data will be sent
- self.linkFieldsNames = Flist() # Name of the fields that link two evenData
- self.datas = None # Pointer of the start of datas
- self.splitBuffer = None # Used for string splitting actions
- self.xmlBuffer = None # Pointersof the xmlBuffer when methods
- # setDatasFromString and getDatasFromString are called
- self.evenDataB = None # When a merge is done in the evenBoards it contains the other evenData
- self.initDatas()
-
- def __str__(self):
- """you want a trace of all processed messages : print data in fstarter.execute"""
- level = 0
- buff = self.getDatasToString()
- ret = ""
- for I in range(len(buff)):
- ret += buff[I]
- if buff[I] == '>':
- if buff[I-1] == '?': # start
- pass
- elif buff[-1] == '/' or buff[I:I+3] == '></': # end of an empty attribute
- ret += '\n'+level*'\t'
- elif buff[I+1] != '<': # attribute
- ret += '\n'+(level+1)*'\t'
- else: # new level
- level += 1
- ret += '\n'+level*'\t'
- if buff[I] =='<':
- if buff[I-1] == '\n': # start
- pass
- if buff[I-1] != '>' and buff[I-1] != '\n': # end of an attribute
- ret = ret[:-1]
- ret += '\n'+level*'\t'+'<'
- if buff[I+1] == '/': # end of a level
- level -=1
- return "\t"+Fconfig.__str__(self)+ret
-
- def __del__(self):
- """/** I beleive this is for no use. */"""
- self.xmlBuffer = None # should be ok like this
- self.reset()
- self.endXml()
-
- def initDatas(self):
- """/** Init the Datas Structure. */"""
- self.startNewXml()
- self.addChildren(ES.XML_DATAS,None)
- self.gotoChildren()
- self.Find(ES.XML_DATAS,False)
- self.datas = self.current
- self.setString(ES.TXT_NOVALUES)
-
- def getSplitted(self,separator,string = ES.TXT_NULL):
- """/** Split string using separator, returns first part, keeps the rest in splitBuffer. */"""
- if string:
- self.splitBuffer = string.split(separator)
- if self.splitBuffer:
- if len(self.splitBuffer) >=2:
- ret, self.splitBuffer = self.splitBuffer[0], self.splitBuffer[1:]
- else:
- ret, self.splitBuffer = self.splitBuffer[0], None
- return ret
- return None
-
- def gotoTagName(self,name,create = True,onlyDatas = True):
- """/** Access the right TAG name in the Tree, or create it */"""
- str = self.getSplitted(ES.TREE_SEPARATOR, name)
- if onlyDatas:
- self.current = self.datas
- else:
- self.current = self.root
- while str:
- ret = self.gotoChildren()
- if ret == RC.RET_NOTEXIST and create: # no children, but can create
- self.addChildren(str,None)
- self.gotoChildren()
-
- elif ret == RC.RET_NOTEXIST and not create: # no children and can't create, sorry
- return RC.RET_NOTFOUND
-
- ret = self.Find(str,False) # search for str no deep search !!
- if ret == RC.RET_NOTFOUND and create: # not found, but can create
- self.gotoParent()
- self.addChildren(str,None)
- self.gotoChildren()
- self.Find(str,False) # go to this new node
-
- elif ret == RC.RET_NOTFOUND and not create: # not found and can't create, sorry
- return RC.RET_NOTFOUND
- str = self.getSplitted(ES.TREE_SEPARATOR) # next...
- return RC.RET_OK
-
- def setMetaEvenDatasToXml(self):
- """/** put META evenData => Source, Destination, startTime, etc... */"""
-
- def SETMETADATA(A,B):
- self.gotoTagName(A,True,False)
- self.setContent(str(B))
-
- SETMETADATA(ES.XML_SOURCE,self.source.getString()) # set source
- SETMETADATA(ES.XML_STARTTIME,self.startToUse) # set startToUse
- self.gotoTagName(ES.XML_DESTINATION,True,False)
- SETMETADATA(PREF_DESTCOUNT,self.destination.getCount()) # nbDest
- SETMETADATA(PREF_CURRENTDEST,self.currentDestination) # set currentDestination
-
- for I in range(self.destination.getCount()): # set destinations
- SETMETADATA(PREF_DESTNUMBER%I,self.destination.get(I).getString())
-
- S = ""
- for I in range(self.linkFieldsNames.getCount()): # set linkFieldsNames
- S += self.linkFieldsNames.get(I).getString() + ES.FIELD_SEPARATOR_STR
- if S:
- S = S[:-1]
- SETMETADATA(ES.XML_LINKFIELDS,S)
-
- def getMetaEvenDatasFromXml(self):
- """/** get META evenData => Source, Destination, startTime, etc... */"""
- nbDest = 0
-
- def GETMETADATA(A,B=None):
- ret = self.gotoTagName(A,False,False)
- if ret == RC.RET_OK:
- if B:
- B(self.getContent())
- else:
- return self.getContent()
- else: # TzurTcH - I hope never beeing there
- from sys import exit
- from sys import stderr
- stderr.write("ERRRROOORRRR\n")
- exit(1)
-
- GETMETADATA(ES.XML_SOURCE,self.setSource) # get source
- self.startToUse = float(GETMETADATA(ES.XML_STARTTIME)) # get startToUse
- nbDest = int(GETMETADATA(PREF_DESTCOUNT)) # get nbDest
- self.currentDestination = int(GETMETADATA(PREF_CURRENTDEST)) # get currentDestination
-
- for I in range(nbDest):
- GETMETADATA(PREF_DESTNUMBER%I,self.addDestination) # get destinations
- GETMETADATA(ES.XML_LINKFIELDS,self.setLinkFieldsNames) # get linkFieldsNames
-
- def setDatasFromXXX(self,newDoc):
- """/** end the sequence of importing datas to the tree */"""
- ret = RC.RET_OK
- if newDoc:
- self.endXml()
- self.doc = newDoc
- ret = self.startXml(self.doc.children)
- self.resetCurrent()
- self.gotoChildren()
- self.Find(ES.XML_DATAS,False)
- self.datas = self.current
- self.getMetaEvenDatasFromXml()
- self.updateHashValue()
- return ret
- return RC.RET_CONNATACCESS
-
- def updateHashValue(self,fieldName = None):
- """/** Update the hashValue. Take Data in the tree and update HashValue of the evenData
- fieldname : name of the field (in the data tree updated) */"""
- update = False
- count = self.linkFieldsNames.getCount()
- if fieldName:
- for I in range(count):
- if self.linkFieldsNames.get(I).getString()==fieldName:
- update = True
- break
- else:
- update = True
- if update:
- bkpCurrent = self.current
- nbExists = 0
- str =""
- for I in range(count):
- value = self.getData(self.linkFieldsNames.get(I).getString())
- if value != RC.RET_NOTFOUND:
- nbExists += 1
- str += value
- if nbExists == count:
- self.setString(str)
- else:
- self.setString(ES.TXT_NULL)
- self.current = bkpCurrent
-
- def setSource(self,source):
- """/** Set the source position => from where the evenData comes. */"""
- return self.source.setPosition(source)
-
- def getSource(self):
- """/** Get the source position => from where the evenData comes. */"""
- return self.source
-
- def addDestination(self,destinationA):
- """/** Set the destination position => to where the evenData goes. */"""
- ret = RC.RET_OK
- str = self.getSplitted(ES.DESTINATION_SEPARATOR, destinationA)
- while str:
- pos = Fposition()
- pos.setPosition(str)
- ret = self.destination.add(pos)
- str = self.getSplitted(ES.TREE_SEPARATOR)
- return ret
-
- def getCurrentDestination(self):
- """/** Get the destination position => to where the evenData goes. */"""
- return self.destination.get(self.currentDestination)
-
- def selectNextDestination(self):
- """/** Select next destination, ex.: after a evenBoard this can be a evenPrg */"""
- if self.currentDestination+1 < self.destination.getCount():
- self.currentDestination += 1
- self.activePort = 0
- return RC.RET_OK
- else:
- return RC.RET_NOTEXIST
-
- def resetDestination(self):
- """/** Remove all the destinations from the list */"""
- for I in range(self.destination.getCount()):
- self.destination.remove(0)
- self.currentDestination = 0
-
- def setLinkFieldsNames(self,linkFieldsNamesString):
- """/** Name of the fields that represent the link between two evenDatas. */"""
- str = self.getSplitted(ES.FIELD_SEPARATOR, linkFieldsNamesString)
- if self.linkFieldsNames.getCount():
- self.resetLinkFieldsNames()
- while str:
- s = FstringHash()
- s.setString(str)
- self.linkFieldsNames.add(s)
- str = self.getSplitted(ES.TREE_SEPARATOR)
- self.updateHashValue()
- if self.evenDataB:
- evenDataB = None
- return RC.RET_OK
-
- def resetLinkFieldsNames(self):
- """/** Remove all the destinations from the list */"""
- for I in range(self.linkFieldsNames.getCount()):
- self.linkFieldsNames.remove(0)
-
-
- def reset(self):
- """/** Reset the datas ( erase all informations) */"""
- self.source.setString(ES.TXT_NULL)
- self.startToUse = time()
- self.resetDestination()
- self.resetLinkFieldsNames()
- self.endXml()
- self.initDatas()
-
- def getStartToUse(self):
- """/** When the evenData as entered for the first time into a room. */"""
- return self.startToUse
-
- def setEvenDataB(self,evenData):
- """/** Set the other evenData merged with this */"""
- self.evenDataB = evenData
-
- def getEvenDataB(self):
- """/** Get the other evenData merged with this ( and remove the pointer) */"""
- tmp = self.evenDataB
- self.evenDataB = None
- return tmp
-
- def setData(self,nodeName,value):
- """/** Set a "Value" in the datastree. */"""
- ret = self.gotoTagName(nodeName)
- if ret == RC.RET_OK:
- ret = self.setContent(value)
- self.updateHashValue(nodeName)
- return ret
-
- def getData(self,nodeName):
- """/** Get the "Value" of the nodeName in the datastree. */"""
- ret = self.gotoTagName(nodeName, False)
- if ret == RC.RET_OK:
- return self.getContent()
- return ret
-
- def setDataInt(self,nodeName,value):
- """/** Set a int "Value" in the datastree. */"""
- ret = self.gotoTagName(nodeName)
- if ret == RC.RET_OK:
- ret = self.setContent(str(value))
- self.updateHashValue(nodeName)
- return ret
-
- def getDataInt(self,nodeName):
- """/** Get the int "Value" of the nodeName in the datastree. */"""
- ret = self.gotoTagName(nodeName, False)
- if ret == RC.RET_OK:
- return int(self.getContent())
- return ret
-
- def setDatasFromString(self,string):
- """/** Set ALL the datas of the datastree. All this new datas replace the old datas. */"""
- return self.setDatasFromXXX(libxml2.parseMemory(string, len(string)))
-
- def setDatasFromFile(self,fileName):
- """/** Set ALL the datas of the datastree. From a File or a stream. */"""
- return self.setDatasFromXXX(libxml2.parseFile(fileName))
-
- def getDatasToString(self,):
- """/** Get ALL the datas to a string (ex.: XML format). */"""
- if self.xmlBuffer:
- self.xmlFree(self.xmlBuffer)
- self.setMetaEvenDatasToXml()
- # no xmlDocDumpMemory !! # TzurTcH !!!!! Achtung !!!!!
- f=file(".__temp__XML","w")
- self.doc.dump(f)
- f.close()
- f=file(".__temp__XML","r")
- S = f.read()
- f.close()
- return S
-
- def getDatasToFile(self,fileName):
- """/** Get ALL the datas To a File or a stream. */"""
- self.setMetaEvenDatasToXml()
- if self.doc.saveFile(fileName):
- return RC.RET_OK
- return RC.RET_CANNOTSAVE
-
- def copyFrom(self,data):
- """/** Copy all information from another evenData. */"""
- return self.setDatasFromString(data.getDatasToString())
-
- def setActivePort(self,port):
- """/** Set the active port */"""
- self.activePort = port
-
- def getActivePort(self):
- """/** Get the active port */"""
- return self.activePort
-
- def definePortAction(self,action,portName = None):
- """/** Do an action */"""
- str=""
- if portName:
- str += portName
- str += ":" + action
- self.addDestination(str)
- if self.destination.getCount():
- self.currentDestination = self.destination.getCount()-1
- else:
- self.currentDestination = 0
- return RC.RET_OK
-
-
- def DUMP(self):
- return self.doc.saveFile("dump.xml")
+ def __init__(self):
+ Fconfig.__init__(self) # force constructor
+ self.source = Fposition() # Where the evenData as been created
+ self.startToUse = 0 # Date and time when this evenData as been sent from the evenDoor
+ self.destination = Flist() # Where the evenData want to go
+ self.currentDestination = 0 # this is it
+ self.activePort = None # The Active actual port where the data will be sent
+ self.linkFieldsNames = Flist() # Name of the fields that link two evenData
+ self.datas = None # Pointer of the start of datas
+ self.splitBuffer = None # Used for string splitting actions
+ self.xmlBuffer = None # Pointersof the xmlBuffer when methods
+ # setDatasFromString and getDatasFromString are called
+ self.evenDataB = None # When a merge is done in the evenBoards it contains the other evenData
+ self.initDatas()
+
+ def __str__(self):
+ """you want a trace of all processed messages : print data in fstarter.execute"""
+ level = 0
+ buff = self.getDatasToString()
+ ret = ""
+ for I in range(len(buff)):
+ ret += buff[I]
+ if buff[I] == '>':
+ if buff[I-1] == '?': # start
+ pass
+ elif buff[-1] == '/' or buff[I:I+3] == '></': # end of an empty attribute
+ ret += '\n'+level*'\t'
+ elif buff[I+1] != '<': # attribute
+ ret += '\n'+(level+1)*'\t'
+ else: # new level
+ level += 1
+ ret += '\n'+level*'\t'
+ if buff[I] =='<':
+ if buff[I-1] == '\n': # start
+ pass
+ if buff[I-1] != '>' and buff[I-1] != '\n': # end of an attribute
+ ret = ret[:-1]
+ ret += '\n'+level*'\t'+'<'
+ if buff[I+1] == '/': # end of a level
+ level -=1
+ return "\t"+Fconfig.__str__(self)+ret
+
+ def __del__(self):
+ """/** I beleive this is for no use. */"""
+ self.xmlBuffer = None # should be ok like this
+ self.reset()
+ self.endXml()
+
+ def initDatas(self):
+ """/** Init the Datas Structure. */"""
+ self.startNewXml()
+ self.addChildren(ES.XML_DATAS,None)
+ self.gotoChildren()
+ self.Find(ES.XML_DATAS,False)
+ self.datas = self.current
+ self.setString(ES.TXT_NOVALUES)
+
+ def getSplitted(self,separator,string = ES.TXT_NULL):
+ """/** Split string using separator, returns first part, keeps the rest in splitBuffer. */"""
+ if string:
+ self.splitBuffer = string.split(separator)
+ if self.splitBuffer:
+ if len(self.splitBuffer) >=2:
+ ret, self.splitBuffer = self.splitBuffer[0], self.splitBuffer[1:]
+ else:
+ ret, self.splitBuffer = self.splitBuffer[0], None
+ return ret
+ return None
+
+ def gotoTagName(self,name,create = True,onlyDatas = True):
+ """/** Access the right TAG name in the Tree, or create it */"""
+ str = self.getSplitted(ES.TREE_SEPARATOR, name)
+ if onlyDatas:
+ self.current = self.datas
+ else:
+ self.current = self.root
+ while str:
+ ret = self.gotoChildren()
+ if ret == RC.RET_NOTEXIST and create: # no children, but can create
+ self.addChildren(str,None)
+ self.gotoChildren()
+
+ elif ret == RC.RET_NOTEXIST and not create: # no children and can't create, sorry
+ return RC.RET_NOTFOUND
+
+ ret = self.Find(str,False) # search for str no deep search !!
+ if ret == RC.RET_NOTFOUND and create: # not found, but can create
+ self.gotoParent()
+ self.addChildren(str,None)
+ self.gotoChildren()
+ self.Find(str,False) # go to this new node
+
+ elif ret == RC.RET_NOTFOUND and not create: # not found and can't create, sorry
+ return RC.RET_NOTFOUND
+ str = self.getSplitted(ES.TREE_SEPARATOR) # next...
+ return RC.RET_OK
+
+ def setMetaEvenDatasToXml(self):
+ """/** put META evenData => Source, Destination, startTime, etc... */"""
+
+ def SETMETADATA(A,B):
+ self.gotoTagName(A,True,False)
+ self.setContent(str(B))
+
+ SETMETADATA(ES.XML_SOURCE,self.source.getString()) # set source
+ SETMETADATA(ES.XML_STARTTIME,self.startToUse) # set startToUse
+ self.gotoTagName(ES.XML_DESTINATION,True,False)
+ SETMETADATA(PREF_DESTCOUNT,self.destination.getCount()) # nbDest
+ SETMETADATA(PREF_CURRENTDEST,self.currentDestination) # set currentDestination
+
+ for I in range(self.destination.getCount()): # set destinations
+ SETMETADATA(PREF_DESTNUMBER%I,self.destination.get(I).getString())
+
+ S = ""
+ for I in range(self.linkFieldsNames.getCount()): # set linkFieldsNames
+ S += self.linkFieldsNames.get(I).getString() + ES.FIELD_SEPARATOR_STR
+ if S:
+ S = S[:-1]
+ SETMETADATA(ES.XML_LINKFIELDS,S)
+
+ def getMetaEvenDatasFromXml(self):
+ """/** get META evenData => Source, Destination, startTime, etc... */"""
+ nbDest = 0
+
+ def GETMETADATA(A,B=None):
+ ret = self.gotoTagName(A,False,False)
+ if ret == RC.RET_OK:
+ if B:
+ B(self.getContent())
+ else:
+ return self.getContent()
+ else: # TzurTcH - I hope never beeing there
+ from sys import exit
+ from sys import stderr
+ stderr.write("ERRRROOORRRR\n")
+ exit(1)
+
+ GETMETADATA(ES.XML_SOURCE,self.setSource) # get source
+ self.startToUse = float(GETMETADATA(ES.XML_STARTTIME)) # get startToUse
+ nbDest = int(GETMETADATA(PREF_DESTCOUNT)) # get nbDest
+ self.currentDestination = int(GETMETADATA(PREF_CURRENTDEST)) # get currentDestination
+
+ for I in range(nbDest):
+ GETMETADATA(PREF_DESTNUMBER%I,self.addDestination) # get destinations
+ GETMETADATA(ES.XML_LINKFIELDS,self.setLinkFieldsNames) # get linkFieldsNames
+
+ def setDatasFromXXX(self,newDoc):
+ """/** end the sequence of importing datas to the tree */"""
+ ret = RC.RET_OK
+ if newDoc:
+ self.endXml()
+ self.doc = newDoc
+ ret = self.startXml(self.doc.children)
+ self.resetCurrent()
+ self.gotoChildren()
+ self.Find(ES.XML_DATAS,False)
+ self.datas = self.current
+ self.getMetaEvenDatasFromXml()
+ self.updateHashValue()
+ return ret
+ return RC.RET_CONNATACCESS
+
+ def updateHashValue(self,fieldName = None):
+ """/** Update the hashValue. Take Data in the tree and update HashValue of the evenData
+ fieldname : name of the field (in the data tree updated) */"""
+ update = False
+ count = self.linkFieldsNames.getCount()
+ if fieldName:
+ for I in range(count):
+ if self.linkFieldsNames.get(I).getString()==fieldName:
+ update = True
+ break
+ else:
+ update = True
+ if update:
+ bkpCurrent = self.current
+ nbExists = 0
+ str =""
+ for I in range(count):
+ value = self.getData(self.linkFieldsNames.get(I).getString())
+ if value != RC.RET_NOTFOUND:
+ nbExists += 1
+ str += value
+ if nbExists == count:
+ self.setString(str)
+ else:
+ self.setString(ES.TXT_NULL)
+ self.current = bkpCurrent
+
+ def setSource(self,source):
+ """/** Set the source position => from where the evenData comes. */"""
+ return self.source.setPosition(source)
+
+ def getSource(self):
+ """/** Get the source position => from where the evenData comes. */"""
+ return self.source
+
+ def addDestination(self,destinationA):
+ """/** Set the destination position => to where the evenData goes. */"""
+ ret = RC.RET_OK
+ str = self.getSplitted(ES.DESTINATION_SEPARATOR, destinationA)
+ while str:
+ pos = Fposition()
+ pos.setPosition(str)
+ ret = self.destination.add(pos)
+ str = self.getSplitted(ES.TREE_SEPARATOR)
+ return ret
+
+ def getCurrentDestination(self):
+ """/** Get the destination position => to where the evenData goes. */"""
+ return self.destination.get(self.currentDestination)
+
+ def selectNextDestination(self):
+ """/** Select next destination, ex.: after a evenBoard this can be a evenPrg */"""
+ if self.currentDestination+1 < self.destination.getCount():
+ self.currentDestination += 1
+ self.activePort = 0
+ return RC.RET_OK
+ else:
+ return RC.RET_NOTEXIST
+
+ def resetDestination(self):
+ """/** Remove all the destinations from the list */"""
+ for I in range(self.destination.getCount()):
+ self.destination.remove(0)
+ self.currentDestination = 0
+
+ def setLinkFieldsNames(self,linkFieldsNamesString):
+ """/** Name of the fields that represent the link between two evenDatas. */"""
+ str = self.getSplitted(ES.FIELD_SEPARATOR, linkFieldsNamesString)
+ if self.linkFieldsNames.getCount():
+ self.resetLinkFieldsNames()
+ while str:
+ s = FstringHash()
+ s.setString(str)
+ self.linkFieldsNames.add(s)
+ str = self.getSplitted(ES.TREE_SEPARATOR)
+ self.updateHashValue()
+ if self.evenDataB:
+ evenDataB = None
+ return RC.RET_OK
+
+ def resetLinkFieldsNames(self):
+ """/** Remove all the destinations from the list */"""
+ for I in range(self.linkFieldsNames.getCount()):
+ self.linkFieldsNames.remove(0)
+
+
+ def reset(self):
+ """/** Reset the datas ( erase all informations) */"""
+ self.source.setString(ES.TXT_NULL)
+ self.startToUse = time()
+ self.resetDestination()
+ self.resetLinkFieldsNames()
+ self.endXml()
+ self.initDatas()
+
+ def getStartToUse(self):
+ """/** When the evenData as entered for the first time into a room. */"""
+ return self.startToUse
+
+ def setEvenDataB(self,evenData):
+ """/** Set the other evenData merged with this */"""
+ self.evenDataB = evenData
+
+ def getEvenDataB(self):
+ """/** Get the other evenData merged with this ( and remove the pointer) */"""
+ tmp = self.evenDataB
+ self.evenDataB = None
+ return tmp
+
+ def setData(self,nodeName,value):
+ """/** Set a "Value" in the datastree. */"""
+ ret = self.gotoTagName(nodeName)
+ if ret == RC.RET_OK:
+ ret = self.setContent(value)
+ self.updateHashValue(nodeName)
+ return ret
+
+ def getData(self,nodeName):
+ """/** Get the "Value" of the nodeName in the datastree. */"""
+ ret = self.gotoTagName(nodeName, False)
+ if ret == RC.RET_OK:
+ return self.getContent()
+ return ret
+
+ def setDataInt(self,nodeName,value):
+ """/** Set a int "Value" in the datastree. */"""
+ ret = self.gotoTagName(nodeName)
+ if ret == RC.RET_OK:
+ ret = self.setContent(str(value))
+ self.updateHashValue(nodeName)
+ return ret
+
+ def getDataInt(self,nodeName):
+ """/** Get the int "Value" of the nodeName in the datastree. */"""
+ ret = self.gotoTagName(nodeName, False)
+ if ret == RC.RET_OK:
+ return int(self.getContent())
+ return ret
+
+ def setDatasFromString(self,string):
+ """/** Set ALL the datas of the datastree. All this new datas replace the old datas. */"""
+ return self.setDatasFromXXX(libxml2.parseMemory(string, len(string)))
+
+ def setDatasFromFile(self,fileName):
+ """/** Set ALL the datas of the datastree. From a File or a stream. */"""
+ return self.setDatasFromXXX(libxml2.parseFile(fileName))
+
+ def getDatasToString(self,):
+ """/** Get ALL the datas to a string (ex.: XML format). */"""
+ if self.xmlBuffer:
+ self.xmlFree(self.xmlBuffer)
+ self.setMetaEvenDatasToXml()
+ # no xmlDocDumpMemory !! # TzurTcH !!!!! Achtung !!!!!
+ f=file(".__temp__XML","w")
+ self.doc.dump(f)
+ f.close()
+ f=file(".__temp__XML","r")
+ S = f.read()
+ f.close()
+ return S
+
+ def getDatasToFile(self,fileName):
+ """/** Get ALL the datas To a File or a stream. */"""
+ self.setMetaEvenDatasToXml()
+ if self.doc.saveFile(fileName):
+ return RC.RET_OK
+ return RC.RET_CANNOTSAVE
+
+ def copyFrom(self,data):
+ """/** Copy all information from another evenData. */"""
+ return self.setDatasFromString(data.getDatasToString())
+
+ def setActivePort(self,port):
+ """/** Set the active port */"""
+ self.activePort = port
+
+ def getActivePort(self):
+ """/** Get the active port */"""
+ return self.activePort
+
+ def definePortAction(self,action,portName = None):
+ """/** Do an action */"""
+ str=""
+ if portName:
+ str += portName
+ str += ":" + action
+ self.addDestination(str)
+ if self.destination.getCount():
+ self.currentDestination = self.destination.getCount()-1
+ else:
+ self.currentDestination = 0
+ return RC.RET_OK
+
+
+ def DUMP(self):
+ return self.doc.saveFile("dump.xml")
if __name__ == '__main__':
- import unittest
-
- def getLinkFieldsNames(self):
- return self.linkFieldsNames
-
- FILE = "testezlog_save.xml"
-
- class FevendataTestCase(unittest.TestCase):
-
-
- def test1Source(self):
- data1 = FevenData()
- data1.setSource( "MySQL")
- self.assertEquals("MySQL",data1.getSource().getString())
-
- def test2Destination(self):
- data1 = FevenData()
- data1.addDestination( "gateUI")
- self.assertEquals(data1.getCurrentDestination().getPort().getString(),"gateUI")
- self.assertEquals(data1.selectNextDestination(),RC.RET_NOTEXIST)
-
- data1.resetDestination()
-
- data1.addDestination( "boardUI1")
- data1.addDestination( "prgUI1")
- data1.addDestination( "boardUI2")
- data1.addDestination( "prgUI2")
-
- self.assertEquals( data1.getCurrentDestination().getPort().getString(),"boardUI1")
- self.assertEquals( data1.selectNextDestination(),RC.RET_OK)
- self.assertEquals( data1.getCurrentDestination().getPort().getString(),"prgUI1")
- self.assertEquals( data1.selectNextDestination(),RC.RET_OK)
- self.assertEquals( data1.getCurrentDestination().getPort().getString(),"boardUI2")
- self.assertEquals( data1.selectNextDestination(),RC.RET_OK)
- self.assertEquals( data1.getCurrentDestination().getPort().getString(),"prgUI2")
- self.assertEquals( data1.selectNextDestination(),RC.RET_NOTEXIST)
-
- data1.resetDestination()
-
- data1.addDestination( "boardUI1;prgUI1;boardUI2;prgUI2");
-
- self.assertEquals( data1.getCurrentDestination().getPort().getString(),"boardUI1")
- self.assertEquals( data1.selectNextDestination(),RC.RET_OK)
- self.assertEquals( data1.getCurrentDestination().getPort().getString(),"prgUI1")
- self.assertEquals( data1.selectNextDestination(),RC.RET_OK)
- self.assertEquals( data1.getCurrentDestination().getPort().getString(),"boardUI2")
- self.assertEquals( data1.selectNextDestination(),RC.RET_OK)
- self.assertEquals( data1.getCurrentDestination().getPort().getString(),"prgUI2")
- self.assertEquals( data1.selectNextDestination(),RC.RET_NOTEXIST)
-
- def test3LnkFieldsname(self):
- data2 = FevenData()
- data2.setLinkFieldsNames( "Client/Address/Name,Client/AccountNumber")
- LINK2=data2.__dict__['linkFieldsNames']
-
- self.assertEquals( "Client/Address/Name",LINK2.get(0).getString())
- self.assertEquals( "Client/AccountNumber", LINK2.get(1).getString())
-
- #// Check a change of the linkFieldsNames directly without creating a new evenData
- data2.setLinkFieldsNames( "Ref1/Ref2/Ref3,Val1/Val2,Data1")
-
- self.assertEquals( "Ref1/Ref2/Ref3",LINK2.get( 0).getString())
- self.assertEquals( "Val1/Val2",LINK2.get(1).getString())
- self.assertEquals( "Data1", LINK2.get(2).getString())
-
- def test4Timer(self):
- data1 = FevenData()
- T = time()
- data1.reset()
- T1 = data1.getStartToUse()
- self.assertEquals( abs(T - T1) < 2,True)
-
- def test5SetAndGetDatas(self):
- data1 = FevenData()
- data1.setData( "Name", "Dupont")
- self.assertEquals( data1.getData( "Name"),"Dupont")
- data1.setData( "Account/Number", "012345678901234567")
- data1.setData( "Account/Name", "BANK Dupond")
- data1.setData( "Account/Devises/Rate/CHF", "1,234")
- data1.setData( "Account/Devises/Rate/DM", "1,2")
- self.assertEquals( data1.getData( "Account/Number"),"012345678901234567")
- self.assertEquals( data1.getData( "Account/Name"),"BANK Dupond")
- self.assertEquals( data1.getData( "Account/Devises/Rate/CHF"),"1,234")
- self.assertEquals( data1.getData( "Account/Devises/Rate/DM"),"1,2")
-
- def test6SetAndGetDatasInt(self):
- data1 = FevenData()
- data1.setDataInt( "Name", 10)
- self.assertEquals( data1.getDataInt( "Name"),10)
- data1.setDataInt( "Account/Number", 123)
- data1.setDataInt( "Account/Name", 200)
- data1.setDataInt( "Account/Devises/Rate/CHF", -176)
- data1.setDataInt( "Account/Devises/Rate/DM", 182)
- self.assertEquals( data1.getDataInt( "Account/Number"),123)
- self.assertEquals( data1.getDataInt( "Account/Name") ,200)
- self.assertEquals( data1.getDataInt( "Account/Devises/Rate/CHF"), -176)
- self.assertEquals( data1.getDataInt( "Account/Devises/Rate/DM"), 182)
-
- def test7SaveDatasFile(self):
- data1 = FevenData()
- data1 = FevenData()
- data1.setSource( "MySQL")
-
- data1.addDestination( "boardUI1")
- data1.addDestination( "prgUI1")
- data1.addDestination( "boardUI2")
- data1.addDestination( "prgUI2")
- data1.setLinkFieldsNames( "Client/Address/Name,Client/AccountNumber")
-
- data1.setData( "Account/Number", "123")
- data1.setData( "Account/Name", "200")
- data1.setDataInt( "Account/Devises/Rate/CHF", 176)
- data1.setDataInt( "Account/Devises/Rate/DM", 182)
-
- data1.getDatasToFile(FILE)
-
- S = "<?xml version=\"1.0\"?>\n<XML><evendata_datas><Account><Number>123</Number><Name>200</Name><Devises><Rate><CHF>176</CHF><DM>182</DM></Rate></Devises></Account></evendata_datas><evendata_source>MySQL</evendata_source><evendata_starttime>0</evendata_starttime><evendata_destination><evendata_destcount>4</evendata_destcount><evendata_currentdest>0</evendata_currentdest><evendata_dest0>boardUI1</evendata_dest0><evendata_dest1>prgUI1</evendata_dest1><evendata_dest2>boardUI2</evendata_dest2><evendata_dest3>prgUI2</evendata_dest3></evendata_destination><evendata_linkfields>Client/Address/Name,Client/AccountNumber</evendata_linkfields></XML>\n"
- self.assertEquals(S,file(FILE, "r").read())
-
- def test8LoadDatasFile(self):
- data2 = FevenData()
- LINK2=data2.__dict__['linkFieldsNames']
- data2.setDatasFromFile(FILE)
- self.assertEquals( data2.getSource().getString(),"MySQL")
- self.assertEquals( data2.getCurrentDestination().getString(),"boardUI1")
- data2.selectNextDestination()
- self.assertEquals( data2.getCurrentDestination().getString(),"prgUI1")
- data2.selectNextDestination()
- self.assertEquals( data2.getCurrentDestination().getString(),"boardUI2")
- data2.selectNextDestination()
- self.assertEquals( data2.getCurrentDestination().getString(),"prgUI2")
- self.assertEquals(data2.selectNextDestination(), RC.RET_NOTEXIST)
-
- self.assertEquals( "Client/Address/Name", LINK2.get(0).getString())
- self.assertEquals( "Client/AccountNumber", LINK2.get(1).getString())
-
- self.assertEquals( data2.getData( "Account/Number"),"123")
- self.assertEquals( data2.getData( "Account/Name"),"200")
- self.assertEquals( data2.getDataInt( "Account/Devises/Rate/CHF"), 176)
- self.assertEquals( data2.getDataInt( "Account/Devises/Rate/DM"), 182)
-
- def test9SaveDatasMemory(self):
- data1 = FevenData()
- data1.setSource( "MySQL")
- data1.addDestination( "boardUI1")
- data1.addDestination( "prgUI1")
- data1.addDestination( "boardUI2")
- data1.addDestination( "prgUI2")
- data1.setLinkFieldsNames( "Client/Address/Name,Client/AccountNumber")
-
-
- data1.setData( "Account/Number", "123")
- data1.setData( "Account/Name", "200")
- data1.setDataInt( "Account/Devises/Rate/CHF", 176)
- data1.setDataInt( "Account/Devises/Rate/DM", 182)
-
- global buff
- buff = data1.getDatasToString()
-
- S = "<?xml version=\"1.0\"?>\n<XML><evendata_datas><Account><Number>123</Number><Name>200</Name><Devises><Rate><CHF>176</CHF><DM>182</DM></Rate></Devises></Account></evendata_datas><evendata_source>MySQL</evendata_source><evendata_starttime>0</evendata_starttime><evendata_destination><evendata_destcount>4</evendata_destcount><evendata_currentdest>0</evendata_currentdest><evendata_dest0>boardUI1</evendata_dest0><evendata_dest1>prgUI1</evendata_dest1><evendata_dest2>boardUI2</evendata_dest2><evendata_dest3>prgUI2</evendata_dest3></evendata_destination><evendata_linkfields>Client/Address/Name,Client/AccountNumber</evendata_linkfields></XML>\n"
-
- self.assertEquals(S,buff)
-
- def test10LoadDatasMemory(self):
- data2 = FevenData()
- self.test9SaveDatasMemory()
- data2.setDatasFromString( buff)
- LINK2=data2.__dict__['linkFieldsNames']
-
- self.assertEquals(data2.getSource().getString(),"MySQL")
- self.assertEquals( data2.getCurrentDestination().getString(),"boardUI1")
- data2.selectNextDestination()
- self.assertEquals( data2.getCurrentDestination().getString(),"prgUI1")
- data2.selectNextDestination()
- self.assertEquals( data2.getCurrentDestination().getString(),"boardUI2")
- data2.selectNextDestination()
- self.assertEquals( data2.getCurrentDestination().getString(),"prgUI2")
- self.assertEquals( data2.selectNextDestination(), RC.RET_NOTEXIST)
-
- self.assertEquals( "Client/Address/Name", LINK2.get(0).getString())
- self.assertEquals( "Client/AccountNumber", LINK2.get(1).getString())
-
- self.assertEquals( data2.getData( "Account/Number"), "123")
- self.assertEquals( data2.getData( "Account/Name"), "200")
- self.assertEquals( data2.getDataInt( "Account/Devises/Rate/CHF"), 176)
- self.assertEquals( data2.getDataInt( "Account/Devises/Rate/DM"), 182)
-
- def test11HashValue(self):
- return
- data1.setLinkFieldsNames( "Client/Address/Name,Client/AccountNumber")
- data1.setData( "Client/Address/Name", "Dupont")
- data1.setData( "Client/AccountNumber", "200")
-
- strH = FstringHash()
- strH.setString( "Dupont200")
- self.assertEquals(strH.equals( data1),True)
-
- strH.setString( "Dupont201")
- self.assertEquals(strH.equals( data1),False)
-
- def test12CopyFrom(self):
- return
- data1.setDatasFromFile("testezlog_save.xml")
- data1.setLinkFieldsNames( "Client/Address/Name,Client/AccountNumber")
- data1.setData( "Client/Address/Name", "Dupont")
- data1.setData( "Client/AccountNumber", "200")
-
- data2.copyFrom( data1)
-
- self.assertEquals(data1.equals( data2),True)
-
- buff1 = data1.getDatasToString()
- buff2 = data2.getDatasToString()
- self.asserEquals(len(buff1),len(buff2))
- self.asserEquals(buff1,buff2)
-
-
- unittest.main()
+ import unittest
+
+ def getLinkFieldsNames(self):
+ return self.linkFieldsNames
+
+ FILE = "testezlog_save.xml"
+
+ class FevendataTestCase(unittest.TestCase):
+
+
+ def test1Source(self):
+ data1 = FevenData()
+ data1.setSource( "MySQL")
+ self.assertEquals("MySQL",data1.getSource().getString())
+
+ def test2Destination(self):
+ data1 = FevenData()
+ data1.addDestination( "gateUI")
+ self.assertEquals(data1.getCurrentDestination().getPort().getString(),"gateUI")
+ self.assertEquals(data1.selectNextDestination(),RC.RET_NOTEXIST)
+
+ data1.resetDestination()
+
+ data1.addDestination( "boardUI1")
+ data1.addDestination( "prgUI1")
+ data1.addDestination( "boardUI2")
+ data1.addDestination( "prgUI2")
+
+ self.assertEquals( data1.getCurrentDestination().getPort().getString(),"boardUI1")
+ self.assertEquals( data1.selectNextDestination(),RC.RET_OK)
+ self.assertEquals( data1.getCurrentDestination().getPort().getString(),"prgUI1")
+ self.assertEquals( data1.selectNextDestination(),RC.RET_OK)
+ self.assertEquals( data1.getCurrentDestination().getPort().getString(),"boardUI2")
+ self.assertEquals( data1.selectNextDestination(),RC.RET_OK)
+ self.assertEquals( data1.getCurrentDestination().getPort().getString(),"prgUI2")
+ self.assertEquals( data1.selectNextDestination(),RC.RET_NOTEXIST)
+
+ data1.resetDestination()
+
+ data1.addDestination( "boardUI1;prgUI1;boardUI2;prgUI2");
+
+ self.assertEquals( data1.getCurrentDestination().getPort().getString(),"boardUI1")
+ self.assertEquals( data1.selectNextDestination(),RC.RET_OK)
+ self.assertEquals( data1.getCurrentDestination().getPort().getString(),"prgUI1")
+ self.assertEquals( data1.selectNextDestination(),RC.RET_OK)
+ self.assertEquals( data1.getCurrentDestination().getPort().getString(),"boardUI2")
+ self.assertEquals( data1.selectNextDestination(),RC.RET_OK)
+ self.assertEquals( data1.getCurrentDestination().getPort().getString(),"prgUI2")
+ self.assertEquals( data1.selectNextDestination(),RC.RET_NOTEXIST)
+
+ def test3LnkFieldsname(self):
+ data2 = FevenData()
+ data2.setLinkFieldsNames( "Client/Address/Name,Client/AccountNumber")
+ LINK2=data2.__dict__['linkFieldsNames']
+
+ self.assertEquals( "Client/Address/Name",LINK2.get(0).getString())
+ self.assertEquals( "Client/AccountNumber", LINK2.get(1).getString())
+
+ #// Check a change of the linkFieldsNames directly without creating a new evenData
+ data2.setLinkFieldsNames( "Ref1/Ref2/Ref3,Val1/Val2,Data1")
+
+ self.assertEquals( "Ref1/Ref2/Ref3",LINK2.get( 0).getString())
+ self.assertEquals( "Val1/Val2",LINK2.get(1).getString())
+ self.assertEquals( "Data1", LINK2.get(2).getString())
+
+ def test4Timer(self):
+ data1 = FevenData()
+ T = time()
+ data1.reset()
+ T1 = data1.getStartToUse()
+ self.assertEquals( abs(T - T1) < 2,True)
+
+ def test5SetAndGetDatas(self):
+ data1 = FevenData()
+ data1.setData( "Name", "Dupont")
+ self.assertEquals( data1.getData( "Name"),"Dupont")
+ data1.setData( "Account/Number", "012345678901234567")
+ data1.setData( "Account/Name", "BANK Dupond")
+ data1.setData( "Account/Devises/Rate/CHF", "1,234")
+ data1.setData( "Account/Devises/Rate/DM", "1,2")
+ self.assertEquals( data1.getData( "Account/Number"),"012345678901234567")
+ self.assertEquals( data1.getData( "Account/Name"),"BANK Dupond")
+ self.assertEquals( data1.getData( "Account/Devises/Rate/CHF"),"1,234")
+ self.assertEquals( data1.getData( "Account/Devises/Rate/DM"),"1,2")
+
+ def test6SetAndGetDatasInt(self):
+ data1 = FevenData()
+ data1.setDataInt( "Name", 10)
+ self.assertEquals( data1.getDataInt( "Name"),10)
+ data1.setDataInt( "Account/Number", 123)
+ data1.setDataInt( "Account/Name", 200)
+ data1.setDataInt( "Account/Devises/Rate/CHF", -176)
+ data1.setDataInt( "Account/Devises/Rate/DM", 182)
+ self.assertEquals( data1.getDataInt( "Account/Number"),123)
+ self.assertEquals( data1.getDataInt( "Account/Name") ,200)
+ self.assertEquals( data1.getDataInt( "Account/Devises/Rate/CHF"), -176)
+ self.assertEquals( data1.getDataInt( "Account/Devises/Rate/DM"), 182)
+
+ def test7SaveDatasFile(self):
+ data1 = FevenData()
+ data1 = FevenData()
+ data1.setSource( "MySQL")
+
+ data1.addDestination( "boardUI1")
+ data1.addDestination( "prgUI1")
+ data1.addDestination( "boardUI2")
+ data1.addDestination( "prgUI2")
+ data1.setLinkFieldsNames( "Client/Address/Name,Client/AccountNumber")
+
+ data1.setData( "Account/Number", "123")
+ data1.setData( "Account/Name", "200")
+ data1.setDataInt( "Account/Devises/Rate/CHF", 176)
+ data1.setDataInt( "Account/Devises/Rate/DM", 182)
+
+ data1.getDatasToFile(FILE)
+
+ S = "<?xml version=\"1.0\"?>\n<XML><evendata_datas><Account><Number>123</Number><Name>200</Name><Devises><Rate><CHF>176</CHF><DM>182</DM></Rate></Devises></Account></evendata_datas><evendata_source>MySQL</evendata_source><evendata_starttime>0</evendata_starttime><evendata_destination><evendata_destcount>4</evendata_destcount><evendata_currentdest>0</evendata_currentdest><evendata_dest0>boardUI1</evendata_dest0><evendata_dest1>prgUI1</evendata_dest1><evendata_dest2>boardUI2</evendata_dest2><evendata_dest3>prgUI2</evendata_dest3></evendata_destination><evendata_linkfields>Client/Address/Name,Client/AccountNumber</evendata_linkfields></XML>\n"
+ self.assertEquals(S,file(FILE, "r").read())
+
+ def test8LoadDatasFile(self):
+ data2 = FevenData()
+ LINK2=data2.__dict__['linkFieldsNames']
+ data2.setDatasFromFile(FILE)
+ self.assertEquals( data2.getSource().getString(),"MySQL")
+ self.assertEquals( data2.getCurrentDestination().getString(),"boardUI1")
+ data2.selectNextDestination()
+ self.assertEquals( data2.getCurrentDestination().getString(),"prgUI1")
+ data2.selectNextDestination()
+ self.assertEquals( data2.getCurrentDestination().getString(),"boardUI2")
+ data2.selectNextDestination()
+ self.assertEquals( data2.getCurrentDestination().getString(),"prgUI2")
+ self.assertEquals(data2.selectNextDestination(), RC.RET_NOTEXIST)
+
+ self.assertEquals( "Client/Address/Name", LINK2.get(0).getString())
+ self.assertEquals( "Client/AccountNumber", LINK2.get(1).getString())
+
+ self.assertEquals( data2.getData( "Account/Number"),"123")
+ self.assertEquals( data2.getData( "Account/Name"),"200")
+ self.assertEquals( data2.getDataInt( "Account/Devises/Rate/CHF"), 176)
+ self.assertEquals( data2.getDataInt( "Account/Devises/Rate/DM"), 182)
+
+ def test9SaveDatasMemory(self):
+ data1 = FevenData()
+ data1.setSource( "MySQL")
+ data1.addDestination( "boardUI1")
+ data1.addDestination( "prgUI1")
+ data1.addDestination( "boardUI2")
+ data1.addDestination( "prgUI2")
+ data1.setLinkFieldsNames( "Client/Address/Name,Client/AccountNumber")
+
+
+ data1.setData( "Account/Number", "123")
+ data1.setData( "Account/Name", "200")
+ data1.setDataInt( "Account/Devises/Rate/CHF", 176)
+ data1.setDataInt( "Account/Devises/Rate/DM", 182)
+
+ global buff
+ buff = data1.getDatasToString()
+
+ S = "<?xml version=\"1.0\"?>\n<XML><evendata_datas><Account><Number>123</Number><Name>200</Name><Devises><Rate><CHF>176</CHF><DM>182</DM></Rate></Devises></Account></evendata_datas><evendata_source>MySQL</evendata_source><evendata_starttime>0</evendata_starttime><evendata_destination><evendata_destcount>4</evendata_destcount><evendata_currentdest>0</evendata_currentdest><evendata_dest0>boardUI1</evendata_dest0><evendata_dest1>prgUI1</evendata_dest1><evendata_dest2>boardUI2</evendata_dest2><evendata_dest3>prgUI2</evendata_dest3></evendata_destination><evendata_linkfields>Client/Address/Name,Client/AccountNumber</evendata_linkfields></XML>\n"
+
+ self.assertEquals(S,buff)
+
+ def test10LoadDatasMemory(self):
+ data2 = FevenData()
+ self.test9SaveDatasMemory()
+ data2.setDatasFromString( buff)
+ LINK2=data2.__dict__['linkFieldsNames']
+
+ self.assertEquals(data2.getSource().getString(),"MySQL")
+ self.assertEquals( data2.getCurrentDestination().getString(),"boardUI1")
+ data2.selectNextDestination()
+ self.assertEquals( data2.getCurrentDestination().getString(),"prgUI1")
+ data2.selectNextDestination()
+ self.assertEquals( data2.getCurrentDestination().getString(),"boardUI2")
+ data2.selectNextDestination()
+ self.assertEquals( data2.getCurrentDestination().getString(),"prgUI2")
+ self.assertEquals( data2.selectNextDestination(), RC.RET_NOTEXIST)
+
+ self.assertEquals( "Client/Address/Name", LINK2.get(0).getString())
+ self.assertEquals( "Client/AccountNumber", LINK2.get(1).getString())
+
+ self.assertEquals( data2.getData( "Account/Number"), "123")
+ self.assertEquals( data2.getData( "Account/Name"), "200")
+ self.assertEquals( data2.getDataInt( "Account/Devises/Rate/CHF"), 176)
+ self.assertEquals( data2.getDataInt( "Account/Devises/Rate/DM"), 182)
+
+ def test11HashValue(self):
+ return
+ data1.setLinkFieldsNames( "Client/Address/Name,Client/AccountNumber")
+ data1.setData( "Client/Address/Name", "Dupont")
+ data1.setData( "Client/AccountNumber", "200")
+
+ strH = FstringHash()
+ strH.setString( "Dupont200")
+ self.assertEquals(strH.equals( data1),True)
+
+ strH.setString( "Dupont201")
+ self.assertEquals(strH.equals( data1),False)
+
+ def test12CopyFrom(self):
+ return
+ data1.setDatasFromFile("testezlog_save.xml")
+ data1.setLinkFieldsNames( "Client/Address/Name,Client/AccountNumber")
+ data1.setData( "Client/Address/Name", "Dupont")
+ data1.setData( "Client/AccountNumber", "200")
+
+ data2.copyFrom( data1)
+
+ self.assertEquals(data1.equals( data2),True)
+
+ buff1 = data1.getDatasToString()
+ buff2 = data2.getDatasToString()
+ self.asserEquals(len(buff1),len(buff2))
+ self.asserEquals(buff1,buff2)
+
+
+ unittest.main()
diff --git a/fevendoor.py b/fevendoor.py
index a378844..2e4d8a5 100644
--- a/fevendoor.py
+++ b/fevendoor.py
@@ -27,7 +27,7 @@
description : evenDoor would convert a specific data format to the internal
evenData format and the evenData format to the external data format.
-
+
*@author Fabian Padilla
*/"""
@@ -48,75 +48,75 @@ from evenjastrings import XML_LNKDEST
from evenjastrings import TXT_NULL
class FspecialDestination:
- """ """
+ """ """
- def __init__(self, linkTypesNames, valueA, linkFieldsNames, linkDest):
- self.type = FstringHash()
- self.value = FstringHash()
- self.fields = FstringHash()
- self.dest = FstringHash()
+ def __init__(self, linkTypesNames, valueA, linkFieldsNames, linkDest):
+ self.type = FstringHash()
+ self.value = FstringHash()
+ self.fields = FstringHash()
+ self.dest = FstringHash()
- self.type.setString(linkTypesNames)
- self.value.setString(valueA)
- self.fields.setString(linkFieldsNames)
- self.dest.setString(linkDest)
+ self.type.setString(linkTypesNames)
+ self.value.setString(valueA)
+ self.fields.setString(linkFieldsNames)
+ self.dest.setString(linkDest)
class FevenDoor(FportBkpEvenData):
- """ """
- def __init__(self):
- FportBkpEvenData.__init__(self) # force constructor
- self.list = Flist() #/** List of special destination */a
-
- def __del__(self):
- """I believe this is for no use."""
- while self.list.getCount():
- self.list.remove(0)
-
- def __str__(self):
- return "\t"+FportBkpEvenData.__str__(self)+\
- "FevenDoor - list : "+str(self.list)+"\n"
-
- def justDoItSys(self,evenData):
- """/** Methods called by Fstarter. */"""
- ret = RET_OK
- if evenData.getCurrentDestination().getAction().equals(gvActionSysAddDest):
- ret = self.list.add( FspecialDestination(evenData.getData(XML_LNKTYPE),\
- evenData.getData(XML_LNKVALUE),\
- evenData.getData(XML_LNKFIELDS),\
- evenData.getData(XML_LNKDEST)))
- self.setFreeEvenData(evenData)
- return ret
-
- def sendEvenData(self,evenData):
- """/** Methods to enable all ports to sends evenDatas to a port. */"""
- spDestToDo = None
- if evenData.getCurrentDestination() != RET_NOTEXIST:
- return FportBkpEvenData.sendEvenData(self,evenData)
- for I in range(self.list.getCount()):
- spDest = self.list.get(I)
- spDestString = spDest.type.getString()
- if spDestString != TXT_NULL: # if we got a destination
- evenData.setLinkFieldsNames(spDestString)
- if spDestString == TXT_NULL or evenData.equals(spDest.value):
- if spDestToDo <> None:
- evenDataToDo = getFreeEvenData()
- evenDataToDo = copyFrom(evenData)
- evenDataToDo.setSource(self.getString())
- evenDataToDo.setLinkFieldsNames(spDestToDo.fields.getString())
- evenDataToDo.resetDestination()
- evenDataToDo.addDestinatio(spDestToDo.dest.getString())
- FportBkpEvenData.sendEvenData(self,evenDataToDo)
- spDestToDo = spDest
- if spDestToDo: # something to send
- evenData.setSource(self.getString())
- evenData.setLinkFieldsNames(spDestToDo.fields.getString())
- evenData.resetDestination()
- evenData.addDestination(spDestToDo.dest.getString())
- FportBkpEvenData.sendEvenData(self,evenData)
- else:
- self.parent.setFreeEvenData(evenData)
-
- def getFreeEvenData(self):
- """/** Get a new evenData. */"""
- return self.parent.getFreeEvenData()
+ """ """
+ def __init__(self):
+ FportBkpEvenData.__init__(self) # force constructor
+ self.list = Flist() #/** List of special destination */a
+
+ def __del__(self):
+ """I believe this is for no use."""
+ while self.list.getCount():
+ self.list.remove(0)
+
+ def __str__(self):
+ return "\t"+FportBkpEvenData.__str__(self)+\
+ "FevenDoor - list : "+str(self.list)+"\n"
+
+ def justDoItSys(self,evenData):
+ """/** Methods called by Fstarter. */"""
+ ret = RET_OK
+ if evenData.getCurrentDestination().getAction().equals(gvActionSysAddDest):
+ ret = self.list.add( FspecialDestination(evenData.getData(XML_LNKTYPE),\
+ evenData.getData(XML_LNKVALUE),\
+ evenData.getData(XML_LNKFIELDS),\
+ evenData.getData(XML_LNKDEST)))
+ self.setFreeEvenData(evenData)
+ return ret
+
+ def sendEvenData(self,evenData):
+ """/** Methods to enable all ports to sends evenDatas to a port. */"""
+ spDestToDo = None
+ if evenData.getCurrentDestination() != RET_NOTEXIST:
+ return FportBkpEvenData.sendEvenData(self,evenData)
+ for I in range(self.list.getCount()):
+ spDest = self.list.get(I)
+ spDestString = spDest.type.getString()
+ if spDestString != TXT_NULL: # if we got a destination
+ evenData.setLinkFieldsNames(spDestString)
+ if spDestString == TXT_NULL or evenData.equals(spDest.value):
+ if spDestToDo <> None:
+ evenDataToDo = getFreeEvenData()
+ evenDataToDo = copyFrom(evenData)
+ evenDataToDo.setSource(self.getString())
+ evenDataToDo.setLinkFieldsNames(spDestToDo.fields.getString())
+ evenDataToDo.resetDestination()
+ evenDataToDo.addDestinatio(spDestToDo.dest.getString())
+ FportBkpEvenData.sendEvenData(self,evenDataToDo)
+ spDestToDo = spDest
+ if spDestToDo: # something to send
+ evenData.setSource(self.getString())
+ evenData.setLinkFieldsNames(spDestToDo.fields.getString())
+ evenData.resetDestination()
+ evenData.addDestination(spDestToDo.dest.getString())
+ FportBkpEvenData.sendEvenData(self,evenData)
+ else:
+ self.parent.setFreeEvenData(evenData)
+
+ def getFreeEvenData(self):
+ """/** Get a new evenData. */"""
+ return self.parent.getFreeEvenData()
diff --git a/fevenprg.py b/fevenprg.py
index caa7dac..158e458 100644
--- a/fevenprg.py
+++ b/fevenprg.py
@@ -26,7 +26,7 @@
description : Must contain only the behavior to modify datas and "if" concerning the
modification of datas. Do not implement in a evenPrg "if" about end user
functionnalities. See the withepaper.pdf at www.evenja.org.
-
+
*@author Fabian Padilla
*/"""
@@ -38,36 +38,36 @@ from fportbkpevendata import FportBkpEvenData
from evenjastrings import ACT_ERROR
class FevenPrg(FportBkpEvenData):
- """ This class is the interface for all evenPrg"""
-
- def __init__(self):
- FportBkpEvenData.__init__(self) # force constructor
- self.evenDataB = None #/** Backup of the evenDatas that need to be sends by sendEvenData */
-
- def __str__(self):
- return "\t"+FportBkpEvenData.__str__(self)+\
- "FevenPrg - evenDataB : "+str(self.evenDataB)+"\n"
-
- def justDoIt(self,evenData):
- """/** Methods called by Fstarter */"""
- self.evenDataB = evenData.getEvenDataB()
- if self.evenDataB <> None:
- evenData.setEvenDataB(self.evenDataB)
- ret = FportBkpEvenData.justDoIt(self,evenData)
- if self.evenDataB <> None:
- self.evenDataB.definePortAction(ACT_ERROR)
- self.sendEvenData(self.evenDataB)
- return ret
-
- def sendEvenData(self,evenData):
- """/** Methods to enable all ports to sends evenDatas to a port */"""
- if self.evenDataB == evenData:
- self.evenDataB = None
- FportBkpEvenData.sendEvenData(self,evenData)
-
- def sendEvenDataSys(self,evenData):
- """/** Methods to enable all ports to sends evenDatas to a port */"""
- if self.evenDataB == evenData:
- self.evenDataB = None
- FportBkpEvenData.sendEvenDataSys(self,evenData)
-
+ """ This class is the interface for all evenPrg"""
+
+ def __init__(self):
+ FportBkpEvenData.__init__(self) # force constructor
+ self.evenDataB = None #/** Backup of the evenDatas that need to be sends by sendEvenData */
+
+ def __str__(self):
+ return "\t"+FportBkpEvenData.__str__(self)+\
+ "FevenPrg - evenDataB : "+str(self.evenDataB)+"\n"
+
+ def justDoIt(self,evenData):
+ """/** Methods called by Fstarter */"""
+ self.evenDataB = evenData.getEvenDataB()
+ if self.evenDataB <> None:
+ evenData.setEvenDataB(self.evenDataB)
+ ret = FportBkpEvenData.justDoIt(self,evenData)
+ if self.evenDataB <> None:
+ self.evenDataB.definePortAction(ACT_ERROR)
+ self.sendEvenData(self.evenDataB)
+ return ret
+
+ def sendEvenData(self,evenData):
+ """/** Methods to enable all ports to sends evenDatas to a port */"""
+ if self.evenDataB == evenData:
+ self.evenDataB = None
+ FportBkpEvenData.sendEvenData(self,evenData)
+
+ def sendEvenDataSys(self,evenData):
+ """/** Methods to enable all ports to sends evenDatas to a port */"""
+ if self.evenDataB == evenData:
+ self.evenDataB = None
+ FportBkpEvenData.sendEvenDataSys(self,evenData)
+
diff --git a/flist.py b/flist.py
index 292112e..2035221 100644
--- a/flist.py
+++ b/flist.py
@@ -37,110 +37,110 @@ __all__ = ["Flist"]
from returncodes import RET_NOTEXIST
class Flist:
- """ This class is just an other wrapper around the python builtin list.
- It dosen't use exceptions 'cause exceptions suck ! """
- def __init__(self):
- self.L = []
-
- def __str__(self):
- ret = ''
- for I in self.L:
- ret += str(I.__class__)+' : '+I.getString()+' - '
- return 'Flist - '+ret
-
- def add(self, el):
- self.L.append(el)
- #return RET_OK # TzurTcH - no need
-
- def get(self, idx):
- if idx<0 or idx>=len(self.L):
- return RET_NOTEXIST
- return self.L[idx]
-
- def remove(self, idx):
- if idx<0 or idx>=len(self.L):
- return RET_NOTEXIST
- tmp,self.L = self.L[idx], self.L[:idx]+self.L[idx+1:]
- return tmp
-
- def removeFifo(self):
- if len(self.L) == 0:
- return RET_NOTEXIST
- tmp, self.L = self.L[0], self.L[1:]
- return tmp
-
- def removeStack(self):
- if len(self.L) == 0:
- return RET_NOTEXIST
- return self.L.pop()
-
- def getCount(self):
- return len(self.L)
-
+ """ This class is just an other wrapper around the python builtin list.
+ It dosen't use exceptions 'cause exceptions suck ! """
+ def __init__(self):
+ self.L = []
+
+ def __str__(self):
+ ret = ''
+ for I in self.L:
+ ret += str(I.__class__)+' : '+I.getString()+' - '
+ return 'Flist - '+ret
+
+ def add(self, el):
+ self.L.append(el)
+ #return RET_OK # TzurTcH - no need
+
+ def get(self, idx):
+ if idx<0 or idx>=len(self.L):
+ return RET_NOTEXIST
+ return self.L[idx]
+
+ def remove(self, idx):
+ if idx<0 or idx>=len(self.L):
+ return RET_NOTEXIST
+ tmp,self.L = self.L[idx], self.L[:idx]+self.L[idx+1:]
+ return tmp
+
+ def removeFifo(self):
+ if len(self.L) == 0:
+ return RET_NOTEXIST
+ tmp, self.L = self.L[0], self.L[1:]
+ return tmp
+
+ def removeStack(self):
+ if len(self.L) == 0:
+ return RET_NOTEXIST
+ return self.L.pop()
+
+ def getCount(self):
+ return len(self.L)
+
if __name__ == '__main__':
- import unittest
-
-
- class FlistTestCase(unittest.TestCase):
-
- def test1AddGetRemove(self):
- list = Flist()
- list.add("A")
- list.add("B")
- list.add("C")
- list.add("D")
- list.add("E")
- self.assertEquals(list.get(0),"A")
- self.assertEquals(list.get(1),"B")
- self.assertEquals(list.get(2),"C")
- self.assertEquals(list.get(3),"D")
- self.assertEquals(list.get(4),"E")
- self.assertEquals(list.remove(5),RET_NOTEXIST)
- self.assertEquals(list.remove(0),"A")
- self.assertEquals(list.remove(1),"C")
- self.assertEquals(list.remove(2),"E")
- self.assertEquals(list.remove(2),RET_NOTEXIST)
- self.assertEquals(list.remove(1),"D")
- self.assertEquals(list.remove(0),"B")
- self.assertEquals(list.remove(0),RET_NOTEXIST)
-
- def test2RemoveFifo(self):
- list = Flist()
- list.add("A")
- list.add("B")
- list.add("C")
- list.add("D")
- list.add("E")
- self.assertEquals(list.removeFifo(),"A")
- self.assertEquals(list.removeFifo(),"B")
- self.assertEquals(list.removeFifo(),"C")
- self.assertEquals(list.removeFifo(),"D")
- self.assertEquals(list.removeFifo(),"E")
- self.assertEquals(list.removeFifo(),RET_NOTEXIST)
-
- def test3RemoveStack(self):
- list = Flist()
- list.add("A")
- list.add("B")
- list.add("C")
- list.add("D")
- list.add("E")
- self.assertEquals(list.removeStack(),"E")
- self.assertEquals(list.removeStack(),"D")
- self.assertEquals(list.removeStack(),"C")
- self.assertEquals(list.removeStack(),"B")
- self.assertEquals(list.removeStack(),"A")
- self.assertEquals(list.removeStack(),RET_NOTEXIST)
-
- def test4GetCount(self):
- list = Flist()
- list.add("A")
- list.add("B")
- list.add("C")
- list.add("D")
- list.add("E")
- self.assertEquals(list.getCount(),5)
-
- unittest.main()
+ import unittest
+
+
+ class FlistTestCase(unittest.TestCase):
+
+ def test1AddGetRemove(self):
+ list = Flist()
+ list.add("A")
+ list.add("B")
+ list.add("C")
+ list.add("D")
+ list.add("E")
+ self.assertEquals(list.get(0),"A")
+ self.assertEquals(list.get(1),"B")
+ self.assertEquals(list.get(2),"C")
+ self.assertEquals(list.get(3),"D")
+ self.assertEquals(list.get(4),"E")
+ self.assertEquals(list.remove(5),RET_NOTEXIST)
+ self.assertEquals(list.remove(0),"A")
+ self.assertEquals(list.remove(1),"C")
+ self.assertEquals(list.remove(2),"E")
+ self.assertEquals(list.remove(2),RET_NOTEXIST)
+ self.assertEquals(list.remove(1),"D")
+ self.assertEquals(list.remove(0),"B")
+ self.assertEquals(list.remove(0),RET_NOTEXIST)
+
+ def test2RemoveFifo(self):
+ list = Flist()
+ list.add("A")
+ list.add("B")
+ list.add("C")
+ list.add("D")
+ list.add("E")
+ self.assertEquals(list.removeFifo(),"A")
+ self.assertEquals(list.removeFifo(),"B")
+ self.assertEquals(list.removeFifo(),"C")
+ self.assertEquals(list.removeFifo(),"D")
+ self.assertEquals(list.removeFifo(),"E")
+ self.assertEquals(list.removeFifo(),RET_NOTEXIST)
+
+ def test3RemoveStack(self):
+ list = Flist()
+ list.add("A")
+ list.add("B")
+ list.add("C")
+ list.add("D")
+ list.add("E")
+ self.assertEquals(list.removeStack(),"E")
+ self.assertEquals(list.removeStack(),"D")
+ self.assertEquals(list.removeStack(),"C")
+ self.assertEquals(list.removeStack(),"B")
+ self.assertEquals(list.removeStack(),"A")
+ self.assertEquals(list.removeStack(),RET_NOTEXIST)
+
+ def test4GetCount(self):
+ list = Flist()
+ list.add("A")
+ list.add("B")
+ list.add("C")
+ list.add("D")
+ list.add("E")
+ self.assertEquals(list.getCount(),5)
+
+ unittest.main()
diff --git a/flisthash.py b/flisthash.py
index 345cac4..5134931 100644
--- a/flisthash.py
+++ b/flisthash.py
@@ -38,96 +38,96 @@ from flist import Flist
from fstringhash import FstringHash
class FlistHash(Flist):
- """ This class is a wrapper arounf the flist class, providing some search capabilities"""
-
- def __init__(self):
- Flist.__init__(self) # force constructor
-
- def __str__(self):
- return "\t"+Flist.__str__(self)+\
- "FlistHash - (null)\n"
-
- #def SearchPos(self,fstringHash):
- # """/** Search the position of the stringhash name.
- # Return the position in the list or None if not found. */"""
- # ret = None
- # print self.L
- # for I in self.L:
- # if I.equals(fstringHash):
- # return self.L.index(I)
- # return ret
-
-
- def Search(self,fstringHash):
- """/** Search if same name (stringhash) exist */"""
- for I in self.L:
- if I.equals(fstringHash):
- return I
- return None
-
- def addOrGet(self,fstringHash):
- """/** If the same name exist in the list then get it from the list.
- If not, add stringhash in the list then return None. */"""
- pos = self.Search(fstringHash)
- if pos <> None:
- return pos
- self.add(fstringHash)
- return None
-
- def addOrRemove(self,fstringHash):
- """/** If the same name exist in the list, then removes and return it.
- If not, then add to the list and return None. */"""
- pos = self.Search(fstringHash)
- if pos <> None:
- self.L.remove(pos)
- return pos
- self.add(fstringHash)
- return None
-
+ """ This class is a wrapper arounf the flist class, providing some search capabilities"""
+
+ def __init__(self):
+ Flist.__init__(self) # force constructor
+
+ def __str__(self):
+ return "\t"+Flist.__str__(self)+\
+ "FlistHash - (null)\n"
+
+ #def SearchPos(self,fstringHash):
+ # """/** Search the position of the stringhash name.
+ # Return the position in the list or None if not found. */"""
+ # ret = None
+ # print self.L
+ # for I in self.L:
+ # if I.equals(fstringHash):
+ # return self.L.index(I)
+ # return ret
+
+
+ def Search(self,fstringHash):
+ """/** Search if same name (stringhash) exist */"""
+ for I in self.L:
+ if I.equals(fstringHash):
+ return I
+ return None
+
+ def addOrGet(self,fstringHash):
+ """/** If the same name exist in the list then get it from the list.
+ If not, add stringhash in the list then return None. */"""
+ pos = self.Search(fstringHash)
+ if pos <> None:
+ return pos
+ self.add(fstringHash)
+ return None
+
+ def addOrRemove(self,fstringHash):
+ """/** If the same name exist in the list, then removes and return it.
+ If not, then add to the list and return None. */"""
+ pos = self.Search(fstringHash)
+ if pos <> None:
+ self.L.remove(pos)
+ return pos
+ self.add(fstringHash)
+ return None
+
if __name__ == '__main__':
- import unittest
- from OSconfig import START_ELEMENTS
-
- List = FlistHash()
-
- str=[FstringHash(),FstringHash(),FstringHash(),FstringHash(),FstringHash()]
- STR=["TEST", "TEST1", "TEST", "TEST1", "TEST2"]
- str[0].setString(STR[0])
- str[1].setString(STR[1])
- str[2].setString(STR[2])
- str[3].setString(STR[3])
- str[4].setString(STR[4])
-
- class FlistHashTestCase(unittest.TestCase):
-
- def test1HashAddOrGet(self):
- self.assertEquals(List.addOrGet(str[0]),None)
- self.assertEquals(List.addOrGet(str[1]),None)
- self.assertEquals(List.addOrGet(str[2]).equals(str[2]),True)
- self.assertEquals(List.addOrGet(str[3]).equals(str[3]),True)
- self.assertEquals(List.addOrGet(str[4]),None)
-
- def test2HashAddOrRemove(self):
- self.assertEquals(List.addOrRemove(str[0]).equals(str[0]),True)
- self.assertEquals(List.addOrRemove(str[1]).equals(str[1]),True)
- self.assertEquals(List.addOrRemove(str[2]),None)
- self.assertEquals(List.addOrRemove(str[3]),None)
- self.assertEquals(List.addOrRemove(str[4]).equals(str[4]),True)
- self.assertEquals(List.addOrRemove(str[2]).equals(str[2]),True)
- self.assertEquals(List.addOrRemove(str[3]).equals(str[3]),True)
-
- def test3HashSearch(self):
- for I in range (START_ELEMENTS+10):
- buffer = "TEST%d"%I
- str1 = FstringHash()
- str1.setString(buffer)
- self.assertEquals(List.addOrGet( str1),None)
- buffer = "TEST%d"%(START_ELEMENTS-10)
- str1 = FstringHash()
- str1.setString(buffer)
- self.assertEquals(List.Search(str1).getString(),"TEST%d"%(START_ELEMENTS-10))
-
-
- unittest.main()
+ import unittest
+ from OSconfig import START_ELEMENTS
+
+ List = FlistHash()
+
+ str=[FstringHash(),FstringHash(),FstringHash(),FstringHash(),FstringHash()]
+ STR=["TEST", "TEST1", "TEST", "TEST1", "TEST2"]
+ str[0].setString(STR[0])
+ str[1].setString(STR[1])
+ str[2].setString(STR[2])
+ str[3].setString(STR[3])
+ str[4].setString(STR[4])
+
+ class FlistHashTestCase(unittest.TestCase):
+
+ def test1HashAddOrGet(self):
+ self.assertEquals(List.addOrGet(str[0]),None)
+ self.assertEquals(List.addOrGet(str[1]),None)
+ self.assertEquals(List.addOrGet(str[2]).equals(str[2]),True)
+ self.assertEquals(List.addOrGet(str[3]).equals(str[3]),True)
+ self.assertEquals(List.addOrGet(str[4]),None)
+
+ def test2HashAddOrRemove(self):
+ self.assertEquals(List.addOrRemove(str[0]).equals(str[0]),True)
+ self.assertEquals(List.addOrRemove(str[1]).equals(str[1]),True)
+ self.assertEquals(List.addOrRemove(str[2]),None)
+ self.assertEquals(List.addOrRemove(str[3]),None)
+ self.assertEquals(List.addOrRemove(str[4]).equals(str[4]),True)
+ self.assertEquals(List.addOrRemove(str[2]).equals(str[2]),True)
+ self.assertEquals(List.addOrRemove(str[3]).equals(str[3]),True)
+
+ def test3HashSearch(self):
+ for I in range (START_ELEMENTS+10):
+ buffer = "TEST%d"%I
+ str1 = FstringHash()
+ str1.setString(buffer)
+ self.assertEquals(List.addOrGet( str1),None)
+ buffer = "TEST%d"%(START_ELEMENTS-10)
+ str1 = FstringHash()
+ str1.setString(buffer)
+ self.assertEquals(List.Search(str1).getString(),"TEST%d"%(START_ELEMENTS-10))
+
+
+ unittest.main()
diff --git a/fport.py b/fport.py
index e12f28d..450f0a0 100644
--- a/fport.py
+++ b/fport.py
@@ -35,7 +35,7 @@
*/"""
__all__ =["Fport"]
-
+
from flist import Flist
from fconfig import Fconfig
from fevendata import FevenData
@@ -46,108 +46,108 @@ from evenjastrings import XML_NAME
class Fport(Fconfig):
- """This is the abstract class for all kind of port.
- It manages viewer and got some generic and high level data manipulation methods"""
-
- # class attribute
- listMsg = Flist() #/** List of all waiting envenData to be send to a port */
- listMsgSys = Flist() #/** List of all wainting envenData with system datas to be send to a port */
-
- def __init__(self):
- Fconfig.__init__(self) # force constructor
- self.parent = None #/** Router this port is connected to and receives from */
- self.viewer = None #/** Enable to view the datas inside the port (evenDoor or evenBoard). */
- self.freeEvenData = FlistHash() #/** List of Free and Available evenDatas (faster than new and delete ;) */
-
- def __str__(self):
- return "\t"+Fconfig.__str__(self)+\
- " Fport - parent : "+str(self.parent)+\
- " - Viewer : "+str(self.viewer)+\
- " - freeEvenData : "+str(self.freeEvenData.getCount())+"\n"
-
- def start(self,port,config):
- """/** Starts import the config file ( or other stream), and sets the parent
- router. If the port (evenDoor and evenBoard) need to send an evenData. */"""
- self.parent = port
- return self.startXml(config) # TzurTcH ??
- #if ret == RET_OK: # we found the <evenja_name> tag and get it's content
- # self.pushCurrent() # so why look for it another time and expect not to find it ???
- # self.gotoChildren()
- # ret = self.Find(XML_NAME,False)
- # if ret != RET_OK:
- # self.setString(self.getContent())
- # self.popCurrent()
- #return ret
-
- def receive_evenData(self,evenData):
- """/** Work in all ports => router, evenPrg, evenDoor or evenBoard are only
- done inside this overload method.
- If it is a evenDoor the surcharged method will receive an evenData
- that needs to be exported from the room to the external format of the evenDoor.
- If it is a evenBoard the surcharged method will receive an evenData
- and modify or wait for another evenData. */"""
- print "This method MUST be overriden !!"
- from sys import exit
- exit(1)
-
- def end(self):
- """/** To force futur developer to implement the right behavior for evenDoor and evenBoard */"""
- return self.endXml()
-
- def setViewer(self,viewer):
- """/** Set the debug viewer. Where all incoming evenDatas are displayed with the config of the port. */"""
- self.viewer = viewer
- #return RET_OK # TzurTcH - no need
-
- def justDoIt(self,evenData):
- """/** Methods called by Fstarter */"""
- ret = RET_OK
- if self.viewer:
- ret = self.viewer.receive_evenData(evenData)
- if ret == RET_OK:
- ret = self.receive_evenData(evenData)
- return ret
-
- def justDoItSys(self,evenData):
- """/** Methods called by Fstarter */"""
- self.setFreeEvenData(evenData)
- #return RET_OK # TzurTcH - ne need
-
- def sendEvenData(self,evenData,portDestination = None):
- """/** Methods to enable all ports to sends evenDatas to a port */"""
- if portDestination:
- evenData.setActivePort(portDestination)
- elif self.parent:
- evenData.setActivePort(self.parent)
- else:
- evenData.setActivePort(self)
- self.listMsg.add(evenData)
-
- def sendEvenDataSys(self,evenData,portDestination = None):
- """/** Methods to enable all ports to sends evenDatas to a port */"""
- if portDestination:
- evenData.setActivePort(portDestination)
- elif self.parent:
- evenData.setActivePort(self.parent)
- else:
- evenData.setActivePort(self)
- self.listMsgSys.add(evenData)
-
-
- def setFreeEvenData(self, evenData):
- """/** set an evenData free */"""
- self.freeEvenData.add(evenData)
-
- def getFreeEvenData(self):
- """/** Get an evenData free */"""
- if self.freeEvenData.getCount():
- data = self.freeEvenData.remove(0)
- else:
- data = FevenData()
- data.reset()
- return data
-
- def evendoor_condition(self,evenData,port):
- """/** USED BY THE EVENDOOR LIBRARY. FUTUR IMPLEMENTATION. */"""
- return RET_NOTIMPLEMENTED
+ """This is the abstract class for all kind of port.
+ It manages viewer and got some generic and high level data manipulation methods"""
+
+ # class attribute
+ listMsg = Flist() #/** List of all waiting envenData to be send to a port */
+ listMsgSys = Flist() #/** List of all wainting envenData with system datas to be send to a port */
+
+ def __init__(self):
+ Fconfig.__init__(self) # force constructor
+ self.parent = None #/** Router this port is connected to and receives from */
+ self.viewer = None #/** Enable to view the datas inside the port (evenDoor or evenBoard). */
+ self.freeEvenData = FlistHash() #/** List of Free and Available evenDatas (faster than new and delete ;) */
+
+ def __str__(self):
+ return "\t"+Fconfig.__str__(self)+\
+ " Fport - parent : "+str(self.parent)+\
+ " - Viewer : "+str(self.viewer)+\
+ " - freeEvenData : "+str(self.freeEvenData.getCount())+"\n"
+
+ def start(self,port,config):
+ """/** Starts import the config file ( or other stream), and sets the parent
+ router. If the port (evenDoor and evenBoard) need to send an evenData. */"""
+ self.parent = port
+ return self.startXml(config) # TzurTcH ??
+ #if ret == RET_OK: # we found the <evenja_name> tag and get it's content
+ # self.pushCurrent() # so why look for it another time and expect not to find it ???
+ # self.gotoChildren()
+ # ret = self.Find(XML_NAME,False)
+ # if ret != RET_OK:
+ # self.setString(self.getContent())
+ # self.popCurrent()
+ #return ret
+
+ def receive_evenData(self,evenData):
+ """/** Work in all ports => router, evenPrg, evenDoor or evenBoard are only
+ done inside this overload method.
+ If it is a evenDoor the surcharged method will receive an evenData
+ that needs to be exported from the room to the external format of the evenDoor.
+ If it is a evenBoard the surcharged method will receive an evenData
+ and modify or wait for another evenData. */"""
+ print "This method MUST be overriden !!"
+ from sys import exit
+ exit(1)
+
+ def end(self):
+ """/** To force futur developer to implement the right behavior for evenDoor and evenBoard */"""
+ return self.endXml()
+
+ def setViewer(self,viewer):
+ """/** Set the debug viewer. Where all incoming evenDatas are displayed with the config of the port. */"""
+ self.viewer = viewer
+ #return RET_OK # TzurTcH - no need
+
+ def justDoIt(self,evenData):
+ """/** Methods called by Fstarter */"""
+ ret = RET_OK
+ if self.viewer:
+ ret = self.viewer.receive_evenData(evenData)
+ if ret == RET_OK:
+ ret = self.receive_evenData(evenData)
+ return ret
+
+ def justDoItSys(self,evenData):
+ """/** Methods called by Fstarter */"""
+ self.setFreeEvenData(evenData)
+ #return RET_OK # TzurTcH - ne need
+
+ def sendEvenData(self,evenData,portDestination = None):
+ """/** Methods to enable all ports to sends evenDatas to a port */"""
+ if portDestination:
+ evenData.setActivePort(portDestination)
+ elif self.parent:
+ evenData.setActivePort(self.parent)
+ else:
+ evenData.setActivePort(self)
+ self.listMsg.add(evenData)
+
+ def sendEvenDataSys(self,evenData,portDestination = None):
+ """/** Methods to enable all ports to sends evenDatas to a port */"""
+ if portDestination:
+ evenData.setActivePort(portDestination)
+ elif self.parent:
+ evenData.setActivePort(self.parent)
+ else:
+ evenData.setActivePort(self)
+ self.listMsgSys.add(evenData)
+
+
+ def setFreeEvenData(self, evenData):
+ """/** set an evenData free */"""
+ self.freeEvenData.add(evenData)
+
+ def getFreeEvenData(self):
+ """/** Get an evenData free */"""
+ if self.freeEvenData.getCount():
+ data = self.freeEvenData.remove(0)
+ else:
+ data = FevenData()
+ data.reset()
+ return data
+
+ def evendoor_condition(self,evenData,port):
+ """/** USED BY THE EVENDOOR LIBRARY. FUTUR IMPLEMENTATION. */"""
+ return RET_NOTIMPLEMENTED
diff --git a/fportbkpevendata.py b/fportbkpevendata.py
index 3533f82..cfaa39b 100644
--- a/fportbkpevendata.py
+++ b/fportbkpevendata.py
@@ -34,33 +34,33 @@ from fport import Fport
from evenjastrings import ACT_ERROR
class FportBkpEvenData(Fport):
- """This class is a wrapper arounf Fport class for security purpose"""
+ """This class is a wrapper arounf Fport class for security purpose"""
- def __init__(self):
- Fport.__init__(self) # force constructor
- self.evenDataA = None #/** Backup of the evenDatas that need to be sends by sendEvenData */
+ def __init__(self):
+ Fport.__init__(self) # force constructor
+ self.evenDataA = None #/** Backup of the evenDatas that need to be sends by sendEvenData */
- def __str__(self):
- return "\t"+Fport.__str__(self)+\
- "FportBkpEvenData - evenDataA : "+str(self.evenDataA)+"\n"
+ def __str__(self):
+ return "\t"+Fport.__str__(self)+\
+ "FportBkpEvenData - evenDataA : "+str(self.evenDataA)+"\n"
- def justDoIt(self,evenData):
- """/** Methods called by Fstarter */"""
- self.evenDataA = evenData
- ret = Fport.justDoIt(self,evenData)
- if self.evenDataA:
- self.evenDataA.definePortAction(ACT_ERROR)
- self.sendEvenData(self.evenDataA)
- return ret
-
- def sendEvenData(self,evenData,portDestination = None):
- """/** Methods to enable all ports to sends evenDatas to a port */"""
- if (self.evenDataA == evenData):
- self.evenDataA = None
- Fport.sendEvenData(self,evenData,portDestination)
-
- def sendEvenDataSys(self,evenData,portDestination = None):
- """/** Methods to enable all ports to sends evenDatas to a port */"""
- if (self.evenDataA == evenData):
- self.evenDataA = None
- Fport.sendEvenDataSys(self,evenData,portDestination)
+ def justDoIt(self,evenData):
+ """/** Methods called by Fstarter */"""
+ self.evenDataA = evenData
+ ret = Fport.justDoIt(self,evenData)
+ if self.evenDataA:
+ self.evenDataA.definePortAction(ACT_ERROR)
+ self.sendEvenData(self.evenDataA)
+ return ret
+
+ def sendEvenData(self,evenData,portDestination = None):
+ """/** Methods to enable all ports to sends evenDatas to a port */"""
+ if (self.evenDataA == evenData):
+ self.evenDataA = None
+ Fport.sendEvenData(self,evenData,portDestination)
+
+ def sendEvenDataSys(self,evenData,portDestination = None):
+ """/** Methods to enable all ports to sends evenDatas to a port */"""
+ if (self.evenDataA == evenData):
+ self.evenDataA = None
+ Fport.sendEvenDataSys(self,evenData,portDestination)
diff --git a/fportlist.py b/fportlist.py
index 38da1aa..efa0b7c 100644
--- a/fportlist.py
+++ b/fportlist.py
@@ -22,7 +22,7 @@
"""/** Inherited from Fport to add a listHash.
function : maintain a list in
- FevenDoor :
+ FevenDoor :
description : work as Fport.
@@ -36,12 +36,12 @@ from flist import Flist
class FportList(Fport):
- """This class is nothing but a fport with a flist as atribute"""
+ """This class is nothing but a fport with a flist as atribute"""
- def __init__(self):
- Fport.__init__(self) # force constructor
- self.list = Flist #/** List of inherited class from FstringHash ( found them faster). */
+ def __init__(self):
+ Fport.__init__(self) # force constructor
+ self.list = Flist #/** List of inherited class from FstringHash ( found them faster). */
- def __str__(self):
- return "\t"+Fport.__str__(self)+\
- "FportList - list : "+str(self.list)+"\n"
+ def __str__(self):
+ return "\t"+Fport.__str__(self)+\
+ "FportList - list : "+str(self.list)+"\n"
diff --git a/fportlisthash.py b/fportlisthash.py
index 1fffd3c..908c4d6 100644
--- a/fportlisthash.py
+++ b/fportlisthash.py
@@ -40,18 +40,18 @@
*/"""
__all__ = ["FportListHash"]
-
+
from fport import Fport
from flisthash import FlistHash
class FportListHash(Fport):
- """ This is a Fport with Flist attribute"""
-
- def __init__(self):
- Fport.__init__(self) # force constructor
- self.listHash = FlistHash() #/** List of inherited class from FstringHash ( found them faster). */
-
- def __str__(self):
- return "\t"+Fport.__str__(self)+\
- "FportListHash - list : "+str(self.listHash)+"\n"
+ """ This is a Fport with Flist attribute"""
+
+ def __init__(self):
+ Fport.__init__(self) # force constructor
+ self.listHash = FlistHash() #/** List of inherited class from FstringHash ( found them faster). */
+
+ def __str__(self):
+ return "\t"+Fport.__str__(self)+\
+ "FportListHash - list : "+str(self.listHash)+"\n"
diff --git a/fposition.py b/fposition.py
index 09cc62e..308ceb9 100644
--- a/fposition.py
+++ b/fposition.py
@@ -22,7 +22,7 @@
"""/** Define the position ( source OR destination) of the evenData.
function : maintain the stringHashs for the computer, rooms, port, action.
- Format example : www.revena.com/room1/room2/port:normal
+ Format example : www.revena.com/room1/room2/port:normal
description : method "setPosition" set all position informations this mean
- compute
@@ -46,206 +46,206 @@ from evenjastrings import ACT_NORMAL
from evenjastrings import TXT_NULL
class Fposition(FstringHash):
- """This class keeps informations on the computer / a list of rooms / a port /an action / and time"""
-
- def __init__(self):
- FstringHash.__init__(self) # force constructor
- self.computer = FstringHash() # /** computer destination or source. */
- self.rooms = Flist() # /** room destination or source. */
- self.nbLevel = 0
- self.port = FstringHash() # /** port destination or source. */
- self.action = FstringHash() # /** action to do at the position (source or destination). */
- self.waitTime = 0 # /** wait time in the action */
- #/** waitTime unit (ex.: y(year), n(month), d(day), h(hour), m(minute), s(seconde) or x(milliseconde))*/
- self.unitWaitTime = ACT_WAIT_NOTHING
- self.positionActived = False
-
- def __del__(self):
- """I belive this is for no use"""
- self.resetPosition()
-
- def __str__(self):
- return "\t"+FstringHash.__str__(self)+\
- "Fposition - computer : "+str(self.computer)+\
- " - rooms : "+str(self.rooms)+\
- " - nbLevel : "+str(self.nbLevel)+\
- " - port : "+str(self.port)+\
- " - action : "+str(self.action)+\
- " - waitTime : "+str(self.waitTime)+\
- " - unitWaitTime : "+str(self.unitWaitTime)+\
- " - positionAtived : "+str(self.positionActived)+"\n"
-
- def resetPosition(self):
- """/** reset position (erase datas) */"""
- if self.positionActived:
- self.computer.setString(TXT_NULL)
- # delete rooms
- for I in range(self.nbLevel):
- self.rooms.remove(0) # TzurTcH - no self.getRoom()
- self.nbLevel = 0
- self.port.setString(TXT_NULL)
- self.action.setString(TXT_NULL)
- self.waitTime = 0
- self.unitWaitTime = ACT_WAIT_NOTHING
- self.positionActived = False
-
- def setPosition(self, position):
- """/** Set the source or the destination of an evenData. */"""
- self.resetPosition()
- self.nbLevel = 0
- self.setString(position)
-
- # search for - computer/rooms<F2>
- buffer = position.split("/")
- if len(buffer) > 1:
- # computer name ?
- ret = None
- try:
- ret = buffer[0].index(".")
- except:
- None
- if ret:
- self.computer.setString(buffer[0])
- buffer = buffer[1:]
- # import rooms
- bufferRooms=""
- for I in buffer[:-1]:
- self.rooms.add( FstringHash())
- if self.nbLevel:
- bufferRooms += "/"
- bufferRooms += I
- self.rooms.get(self.nbLevel).setString(bufferRooms)
- self.nbLevel += 1
- # search for - port:action
- buffer = buffer[-1].split(":")
- self.port.setString(buffer[0])
- if len(buffer) > 1:
- # search for - action,time
- buffer = buffer[1].split(",")
- self.action.setString(buffer[0])
- if len(buffer) > 1:
- self.waitTime = int(buffer[1][:-1])
- self.unitWaitTime = buffer[1][-1]
- else:
- self.waitTime = 0
- self.unitWaitTime = ACT_WAIT_NOTHING
- else:
- self.action.setString(ACT_NORMAL)
- self.waitTime = 0
- self.unitWaitTime = ACT_WAIT_NOTHING
- self.positionActived = True
- return RET_OK
-
- def getComputer(self):
- """/** Get the computer name. If the evenData needs to go to another computer. */"""
- return self.computer
-
- def getRoom(self, level = 0):
- """/** Get the room for destination or source. */"""
- if level < self.nbLevel:
- return self.rooms.get(level)
- else:
- return None
-
- def getNbLevel(self):
- """/** Number of levels in the rooms routing tree. */"""
- return self.nbLevel
-
- def getPort(self):
- """/** Get the port of the position (source or destination). This means an evenDoor or a evenBoard. */"""
- return self.port
-
- def getAction(self):
- """/** Get the action of the position (source or destination). */"""
- return self.action
-
- def getWaitTime(self):
- """/** Get the amount of waiting time (unity is another get function) */"""
- return self.waitTime
-
- def getUnitWaitTime(self):
- """/** Get the unity time y,n,d,h,m,s or x */"""
- return self.unitWaitTime
-
- def copyFrom(self, pos):
- """/** Copy a position From another Fposition class */"""
- self.resetPosition()
- self.computer.copyFrom(pos.getComputer())
-
- for I in range(pos.getNbLevel()):
- new = FstringHash()
- new.copyFrom(pos.getRoom(I))
- self.rooms.add(new)
- self.nbLevel = pos.getNbLevel()
- self.port.copyFrom(pos.getPort())
- self.action.copyFrom(pos.getAction())
- self.waitTime = pos.getWaitTime()
- self.unitWaitTime = pos.getUnitWaitTime()
- self.positionActived = True
+ """This class keeps informations on the computer / a list of rooms / a port /an action / and time"""
+
+ def __init__(self):
+ FstringHash.__init__(self) # force constructor
+ self.computer = FstringHash() # /** computer destination or source. */
+ self.rooms = Flist() # /** room destination or source. */
+ self.nbLevel = 0
+ self.port = FstringHash() # /** port destination or source. */
+ self.action = FstringHash() # /** action to do at the position (source or destination). */
+ self.waitTime = 0 # /** wait time in the action */
+ #/** waitTime unit (ex.: y(year), n(month), d(day), h(hour), m(minute), s(seconde) or x(milliseconde))*/
+ self.unitWaitTime = ACT_WAIT_NOTHING
+ self.positionActived = False
+
+ def __del__(self):
+ """I belive this is for no use"""
+ self.resetPosition()
+
+ def __str__(self):
+ return "\t"+FstringHash.__str__(self)+\
+ "Fposition - computer : "+str(self.computer)+\
+ " - rooms : "+str(self.rooms)+\
+ " - nbLevel : "+str(self.nbLevel)+\
+ " - port : "+str(self.port)+\
+ " - action : "+str(self.action)+\
+ " - waitTime : "+str(self.waitTime)+\
+ " - unitWaitTime : "+str(self.unitWaitTime)+\
+ " - positionAtived : "+str(self.positionActived)+"\n"
+
+ def resetPosition(self):
+ """/** reset position (erase datas) */"""
+ if self.positionActived:
+ self.computer.setString(TXT_NULL)
+ # delete rooms
+ for I in range(self.nbLevel):
+ self.rooms.remove(0) # TzurTcH - no self.getRoom()
+ self.nbLevel = 0
+ self.port.setString(TXT_NULL)
+ self.action.setString(TXT_NULL)
+ self.waitTime = 0
+ self.unitWaitTime = ACT_WAIT_NOTHING
+ self.positionActived = False
+
+ def setPosition(self, position):
+ """/** Set the source or the destination of an evenData. */"""
+ self.resetPosition()
+ self.nbLevel = 0
+ self.setString(position)
+
+ # search for - computer/rooms<F2>
+ buffer = position.split("/")
+ if len(buffer) > 1:
+ # computer name ?
+ ret = None
+ try:
+ ret = buffer[0].index(".")
+ except:
+ None
+ if ret:
+ self.computer.setString(buffer[0])
+ buffer = buffer[1:]
+ # import rooms
+ bufferRooms=""
+ for I in buffer[:-1]:
+ self.rooms.add( FstringHash())
+ if self.nbLevel:
+ bufferRooms += "/"
+ bufferRooms += I
+ self.rooms.get(self.nbLevel).setString(bufferRooms)
+ self.nbLevel += 1
+ # search for - port:action
+ buffer = buffer[-1].split(":")
+ self.port.setString(buffer[0])
+ if len(buffer) > 1:
+ # search for - action,time
+ buffer = buffer[1].split(",")
+ self.action.setString(buffer[0])
+ if len(buffer) > 1:
+ self.waitTime = int(buffer[1][:-1])
+ self.unitWaitTime = buffer[1][-1]
+ else:
+ self.waitTime = 0
+ self.unitWaitTime = ACT_WAIT_NOTHING
+ else:
+ self.action.setString(ACT_NORMAL)
+ self.waitTime = 0
+ self.unitWaitTime = ACT_WAIT_NOTHING
+ self.positionActived = True
+ return RET_OK
+
+ def getComputer(self):
+ """/** Get the computer name. If the evenData needs to go to another computer. */"""
+ return self.computer
+
+ def getRoom(self, level = 0):
+ """/** Get the room for destination or source. */"""
+ if level < self.nbLevel:
+ return self.rooms.get(level)
+ else:
+ return None
+
+ def getNbLevel(self):
+ """/** Number of levels in the rooms routing tree. */"""
+ return self.nbLevel
+
+ def getPort(self):
+ """/** Get the port of the position (source or destination). This means an evenDoor or a evenBoard. */"""
+ return self.port
+
+ def getAction(self):
+ """/** Get the action of the position (source or destination). */"""
+ return self.action
+
+ def getWaitTime(self):
+ """/** Get the amount of waiting time (unity is another get function) */"""
+ return self.waitTime
+
+ def getUnitWaitTime(self):
+ """/** Get the unity time y,n,d,h,m,s or x */"""
+ return self.unitWaitTime
+
+ def copyFrom(self, pos):
+ """/** Copy a position From another Fposition class */"""
+ self.resetPosition()
+ self.computer.copyFrom(pos.getComputer())
+
+ for I in range(pos.getNbLevel()):
+ new = FstringHash()
+ new.copyFrom(pos.getRoom(I))
+ self.rooms.add(new)
+ self.nbLevel = pos.getNbLevel()
+ self.port.copyFrom(pos.getPort())
+ self.action.copyFrom(pos.getAction())
+ self.waitTime = pos.getWaitTime()
+ self.unitWaitTime = pos.getUnitWaitTime()
+ self.positionActived = True
if __name__ == '__main__':
- import unittest
- from evenjastrings import *
-
- pos1 = Fposition()
- pos2 = Fposition()
-
- class FpositionTestCase(unittest.TestCase):
-
- def test1Splitting(self):
- pos1.setPosition( "WWW.TEST.ORG/room1/room2/port")
- self.assertEquals(pos1.getNbLevel(),2)
- self.assertEquals("WWW.TEST.ORG",pos1.getComputer().getString())
- self.assertEquals("room1",pos1.getRoom(0).getString())
- self.assertEquals("room1/room2",pos1.getRoom(1).getString())
- self.assertEquals("port",pos1.getPort().getString())
- self.assertEquals(ACT_NORMAL,pos1.getAction().getString())
-
- pos1.setPosition("room1/room2/port:destination1Data")
- self.assertEquals(pos1.getNbLevel(),2)
- self.assertEquals(TXT_NULL,pos1.getComputer().getString())
- self.assertEquals("room1",pos1.getRoom(0).getString())
- self.assertEquals("room1/room2",pos1.getRoom(1).getString())
- self.assertEquals("port",pos1.getPort().getString())
- self.assertEquals(ACT_DESTINATION1DATA,pos1.getAction().getString())
-
- pos1.setPosition( "port:wait,5s")
- self.assertEquals(pos1.getNbLevel(),0)
- self.assertEquals(TXT_NULL,pos1.getComputer().getString())
- self.assertEquals(pos1.getRoom(0),None)
- self.assertEquals("port",pos1.getPort().getString())
- self.assertEquals(ACT_WAIT,pos1.getAction().getString())
- self.assertEquals(pos1.getWaitTime(),5)
- self.assertEquals( pos1.getUnitWaitTime(),ACT_WAIT_SECOND)
-
- pos1.setPosition( ":wait,5d")
- self.assertEquals(pos1.getNbLevel(),0)
- self.assertEquals(TXT_NULL,pos1.getComputer().getString())
- self.assertEquals(pos1.getRoom(0),None)
- self.assertEquals(TXT_NULL,pos1.getPort().getString())
- self.assertEquals(ACT_WAIT,pos1.getAction().getString())
- self.assertEquals(pos1.getWaitTime(),5)
- self.assertEquals(pos1.getUnitWaitTime(),ACT_WAIT_DAY)
-
- pos1.setPosition( ":end")
- self.assertEquals(pos1.getNbLevel(),0)
- self.assertEquals(TXT_NULL,pos1.getComputer().getString())
- self.assertEquals(pos1.getRoom(0),None)
- self.assertEquals(TXT_NULL,pos1.getPort().getString())
- self.assertEquals(ACT_END,pos1.getAction().getString())
-
- def test2Copy(self):
- pos1.setPosition( "WWW.TEST.ORG/room1/room2/port:wait,1d")
- pos2.copyFrom( pos1)
- self.assertEquals(pos1.getComputer().equals( pos2.getComputer()),True)
- self.assertEquals(pos1.getRoom(0).equals(pos2.getRoom(0)),True)
- self.assertEquals(pos1.getRoom( 1).equals( pos2.getRoom( 1)),True)
- self.assertEquals(pos1.getPort().equals( pos2.getPort()),True)
- self.assertEquals(pos1.getAction().equals( pos2.getAction()),True)
- self.assertEquals(pos1.getWaitTime(),pos2.getWaitTime())
- self.assertEquals(pos1.getUnitWaitTime(),pos2.getUnitWaitTime())
-
- unittest.main()
+ import unittest
+ from evenjastrings import *
+
+ pos1 = Fposition()
+ pos2 = Fposition()
+
+ class FpositionTestCase(unittest.TestCase):
+
+ def test1Splitting(self):
+ pos1.setPosition( "WWW.TEST.ORG/room1/room2/port")
+ self.assertEquals(pos1.getNbLevel(),2)
+ self.assertEquals("WWW.TEST.ORG",pos1.getComputer().getString())
+ self.assertEquals("room1",pos1.getRoom(0).getString())
+ self.assertEquals("room1/room2",pos1.getRoom(1).getString())
+ self.assertEquals("port",pos1.getPort().getString())
+ self.assertEquals(ACT_NORMAL,pos1.getAction().getString())
+
+ pos1.setPosition("room1/room2/port:destination1Data")
+ self.assertEquals(pos1.getNbLevel(),2)
+ self.assertEquals(TXT_NULL,pos1.getComputer().getString())
+ self.assertEquals("room1",pos1.getRoom(0).getString())
+ self.assertEquals("room1/room2",pos1.getRoom(1).getString())
+ self.assertEquals("port",pos1.getPort().getString())
+ self.assertEquals(ACT_DESTINATION1DATA,pos1.getAction().getString())
+
+ pos1.setPosition( "port:wait,5s")
+ self.assertEquals(pos1.getNbLevel(),0)
+ self.assertEquals(TXT_NULL,pos1.getComputer().getString())
+ self.assertEquals(pos1.getRoom(0),None)
+ self.assertEquals("port",pos1.getPort().getString())
+ self.assertEquals(ACT_WAIT,pos1.getAction().getString())
+ self.assertEquals(pos1.getWaitTime(),5)
+ self.assertEquals( pos1.getUnitWaitTime(),ACT_WAIT_SECOND)
+
+ pos1.setPosition( ":wait,5d")
+ self.assertEquals(pos1.getNbLevel(),0)
+ self.assertEquals(TXT_NULL,pos1.getComputer().getString())
+ self.assertEquals(pos1.getRoom(0),None)
+ self.assertEquals(TXT_NULL,pos1.getPort().getString())
+ self.assertEquals(ACT_WAIT,pos1.getAction().getString())
+ self.assertEquals(pos1.getWaitTime(),5)
+ self.assertEquals(pos1.getUnitWaitTime(),ACT_WAIT_DAY)
+
+ pos1.setPosition( ":end")
+ self.assertEquals(pos1.getNbLevel(),0)
+ self.assertEquals(TXT_NULL,pos1.getComputer().getString())
+ self.assertEquals(pos1.getRoom(0),None)
+ self.assertEquals(TXT_NULL,pos1.getPort().getString())
+ self.assertEquals(ACT_END,pos1.getAction().getString())
+
+ def test2Copy(self):
+ pos1.setPosition( "WWW.TEST.ORG/room1/room2/port:wait,1d")
+ pos2.copyFrom( pos1)
+ self.assertEquals(pos1.getComputer().equals( pos2.getComputer()),True)
+ self.assertEquals(pos1.getRoom(0).equals(pos2.getRoom(0)),True)
+ self.assertEquals(pos1.getRoom( 1).equals( pos2.getRoom( 1)),True)
+ self.assertEquals(pos1.getPort().equals( pos2.getPort()),True)
+ self.assertEquals(pos1.getAction().equals( pos2.getAction()),True)
+ self.assertEquals(pos1.getWaitTime(),pos2.getWaitTime())
+ self.assertEquals(pos1.getUnitWaitTime(),pos2.getUnitWaitTime())
+
+ unittest.main()
diff --git a/fprg_concat.py b/fprg_concat.py
index 8ce3556..dc3f308 100644
--- a/fprg_concat.py
+++ b/fprg_concat.py
@@ -30,24 +30,24 @@ from evenjastrings import ACT_END
class Fdoor_concat(FevenPrg):
- def __init__(self):
- FevenPrg.__init__(self) # force construstor
-
- def __str__(self):
- return "\t"+FevenPrg.__str__(self)+\
- "Fdoor_concat - (null)\n"
-
- def receive_evenData(self,evenData):
- evenDataB = evenData.getEvenDataB()
-
- str = evenData.getData("TXT")
- str += evenDataB.getData("TXT")
- evenData.setData("TXT",str)
- evenData.resetDestination()
- evenData.addDestination("printf")
- self.sendEvenData(evenData)
-
- evenDataB.definePortAction(ACT_END)
- self.sendEvenData(evenDataB)
-
- return RET_OK
+ def __init__(self):
+ FevenPrg.__init__(self) # force construstor
+
+ def __str__(self):
+ return "\t"+FevenPrg.__str__(self)+\
+ "Fdoor_concat - (null)\n"
+
+ def receive_evenData(self,evenData):
+ evenDataB = evenData.getEvenDataB()
+
+ str = evenData.getData("TXT")
+ str += evenDataB.getData("TXT")
+ evenData.setData("TXT",str)
+ evenData.resetDestination()
+ evenData.addDestination("printf")
+ self.sendEvenData(evenData)
+
+ evenDataB.definePortAction(ACT_END)
+ self.sendEvenData(evenDataB)
+
+ return RET_OK
diff --git a/frouter.py b/frouter.py
index 186ac02..5bc6fa5 100644
--- a/frouter.py
+++ b/frouter.py
@@ -32,7 +32,7 @@ __all__ = ["Frouter"]
from fdoor_file import Fdoor_file
from fdoor_cout import Fdoor_cout
from fprg_concat import Fdoor_concat
-
+
from fport import Fport
from fconfig import Fconfig
from fevenboard import FevenBoard
@@ -50,193 +50,193 @@ from returncodes import RET_NOTEXIST
class Frouter(FportListHash):
- def __init__(self):
- FportListHash.__init__(self)
-
- def __str__(self):
- return "\t"+FportListHash.__str__(self)+\
- "Frouter - (null)\n"
-
- def start(self,port,param):
- """/** Starts import the config file ( or other stream), and sets the parentrouter.
- If the port (evenDoor and evenBoard) need to send an evenData. */"""
- ret = Fport.start(self,port,param)
- if ret == RET_OK:
- return self.createRoom()
- return ret
-
- def getClassInfos(self,classInfo):
- """/** Get the informations concerning the creation of a port (room, evenprg, etc...) */"""
- ret = RET_OK
- self.pushCurrent()
- if self.gotoChildren() != RET_OK:
- return RET_NOTEXIST
-
- def search(string):
- if self.Find(string) == RET_OK:
- return self.getContent()
- return None
-
- classInfo['type'] = search(ES.XML_CLASS)
- classInfo['conf'] = search(ES.XML_CONF)
- classInfo['lib'] = search(ES.XML_LIB)
- classInfo['debug'] = search(ES.XML_DEBUG)
-
- self.popCurrent()
- return ret
-
- def getLinkInfos(self,linkInfo):
- """/** Get the informations concerning the cration of a port (room, evenprg, etc...) */"""
- ret = RET_OK
- self.pushCurrent()
- if self.gotoChildren() != RET_OK:
- return RET_NOTEXIST
-
- def search(string):
- if self.Find(string) == RET_OK:
- return self.getContent()
- return None
-
- linkInfo['source'] = search(ES.XML_LNKSOURCE)
- linkInfo['type'] = search(ES.XML_LNKTYPE)
- linkInfo['value'] = search(ES.XML_LNKVALUE)
- linkInfo['fields'] = search(ES.XML_LNKFIELDS)
- linkInfo['dest'] = search(ES.XML_LNKDEST)
-
- self.popCurrent()
- return ret
-
- def createRoom(self):
- """/** Create a room with a structure defined by the config or node in start method */"""
- classInfos = { 'type':None,\
- 'conf':None,\
- 'lib':None,\
- 'debug':None}
-
- linkInfos = { 'source':None,\
- 'type':None,\
- 'value':None,\
- 'fields':None,\
- 'dest':None}
- strH = FstringHash()
- port = Fport
-
- # search for rooms, boards, doors and programms
- def IMPORT_PORTS(A,B,CLASS):
- if self.Find(A,False) == RET_OK:
- while True:
- self.pushCurrent()
- # read informations
- self.getClassInfos(classInfos)
- # let's build and start this
- # if both are None or strcasecmp
- # TODO ugliest code in this library
- if ((classInfos['type']==None and B==None) or \
- (B <> None and classInfos['type'] <> None\
- and (classInfos['type'].upper() == B.upper()))):
- childRoom = CLASS()
- if classInfos['conf'] <> None:
- childRoom.start(self,classInfos['conf'])
- else:
- childRoom.start(self,self.current)
- ptr = self.listHash.addOrGet(childRoom)
- if ptr <> None:
- ptr = None
- return RET_PORTEXIST
- self.popCurrent()
- # search for a next one
- if self.FindNext(A,False) != RET_OK:
- break
-
- self.resetCurrent()
- if self.gotoChildren() != RET_OK:
- return RET_NOINFOS
- # search and build
- IMPORT_PORTS( ES.XML_ROOM,None,Frouter)
- IMPORT_PORTS( ES.XML_ROOM,"ROOM",Frouter)
- IMPORT_PORTS( ES.XML_BOARD,None,FevenBoard)
- IMPORT_PORTS( ES.XML_BOARD,"BOARD",FevenBoard)
-
- IMPORT_PORTS( ES.XML_DOOR, "file", Fdoor_file)
- IMPORT_PORTS( ES.XML_DOOR, "cout", Fdoor_cout)
- IMPORT_PORTS( ES.XML_PRG, "concat", Fdoor_concat)
-
- # seach for <envenja_link>, if dosen't exists, create an evendata and send it
- if self.Find(ES.XML_LNK, False) != RET_OK:
- return RET_OK
- while True:
- self.pushCurrent()
- self.getLinkInfos(linkInfos)
- if linkInfos['source'] <> None:
- strH.setString(linkInfos['source'])
- port = self.listHash.Search(strH)
- # if this source has been built, send a ACT_SYS_ADDDEST msg
- if port <> None:
- data = self.getFreeEvenData()
- data.setData( ES.XML_LNKTYPE, linkInfos['type'])
- data.setData( ES.XML_LNKVALUE, linkInfos['value'])
- data.setData( ES.XML_LNKFIELDS, linkInfos['fields'])
- data.setData( ES.XML_LNKDEST, linkInfos['dest'])
-
- data.definePortAction( ES.ACT_SYS_ADDDEST, linkInfos['source'])
- self.sendEvenDataSys(data,port)
- self.popCurrent()
- if self.FindNext( ES.XML_LNK,False) != RET_OK:
- break
- return RET_OK
-
- def receive_evenData(self,evenData):
- """/** Receive the evenData to be routed to the right router or port. */"""
- port = self.listHash.Search(evenData.getCurrentDestination().getPort())
- if port <> None:
- #// ... then send to it the evenData
- #// Now it send the evenData by sndMsg, but normally this will change after the realeas of V3.0
- #// sendEvenData( evenData, port);
- #// return RET_OK;
- #// ...this will work well too, but it is another principle
- return port.justDoIt(evenData)
- evenData.definePortAction(ES.ACT_ERROR)
- return RET_OK
-
- def justDoIt(self,evenData):
- """/** Methods called by Fstarter */"""
- tmp = evenData.getCurrentDestination().getAction()
- if tmp.equals(gvActionEnd) or tmp.equals(gvActionError):
- self.setFreeEvenData(evenData)
- return RET_OK
- return Fport.justDoIt(self,evenData)
-
- def end(self):
- """/** Deploy the end() until the port. */"""
- for I in range(self.listHash.getCount()):
- self.listHash.get(I).end()
- return Fconfig.endXml(self)
+ def __init__(self):
+ FportListHash.__init__(self)
+
+ def __str__(self):
+ return "\t"+FportListHash.__str__(self)+\
+ "Frouter - (null)\n"
+
+ def start(self,port,param):
+ """/** Starts import the config file ( or other stream), and sets the parentrouter.
+ If the port (evenDoor and evenBoard) need to send an evenData. */"""
+ ret = Fport.start(self,port,param)
+ if ret == RET_OK:
+ return self.createRoom()
+ return ret
+
+ def getClassInfos(self,classInfo):
+ """/** Get the informations concerning the creation of a port (room, evenprg, etc...) */"""
+ ret = RET_OK
+ self.pushCurrent()
+ if self.gotoChildren() != RET_OK:
+ return RET_NOTEXIST
+
+ def search(string):
+ if self.Find(string) == RET_OK:
+ return self.getContent()
+ return None
+
+ classInfo['type'] = search(ES.XML_CLASS)
+ classInfo['conf'] = search(ES.XML_CONF)
+ classInfo['lib'] = search(ES.XML_LIB)
+ classInfo['debug'] = search(ES.XML_DEBUG)
+
+ self.popCurrent()
+ return ret
+
+ def getLinkInfos(self,linkInfo):
+ """/** Get the informations concerning the cration of a port (room, evenprg, etc...) */"""
+ ret = RET_OK
+ self.pushCurrent()
+ if self.gotoChildren() != RET_OK:
+ return RET_NOTEXIST
+
+ def search(string):
+ if self.Find(string) == RET_OK:
+ return self.getContent()
+ return None
+
+ linkInfo['source'] = search(ES.XML_LNKSOURCE)
+ linkInfo['type'] = search(ES.XML_LNKTYPE)
+ linkInfo['value'] = search(ES.XML_LNKVALUE)
+ linkInfo['fields'] = search(ES.XML_LNKFIELDS)
+ linkInfo['dest'] = search(ES.XML_LNKDEST)
+
+ self.popCurrent()
+ return ret
+
+ def createRoom(self):
+ """/** Create a room with a structure defined by the config or node in start method */"""
+ classInfos = { 'type':None,\
+ 'conf':None,\
+ 'lib':None,\
+ 'debug':None}
+
+ linkInfos = { 'source':None,\
+ 'type':None,\
+ 'value':None,\
+ 'fields':None,\
+ 'dest':None}
+ strH = FstringHash()
+ port = Fport
+
+ # search for rooms, boards, doors and programms
+ def IMPORT_PORTS(A,B,CLASS):
+ if self.Find(A,False) == RET_OK:
+ while True:
+ self.pushCurrent()
+ # read informations
+ self.getClassInfos(classInfos)
+ # let's build and start this
+ # if both are None or strcasecmp
+ # TODO ugliest code in this library
+ if ((classInfos['type']==None and B==None) or \
+ (B <> None and classInfos['type'] <> None\
+ and (classInfos['type'].upper() == B.upper()))):
+ childRoom = CLASS()
+ if classInfos['conf'] <> None:
+ childRoom.start(self,classInfos['conf'])
+ else:
+ childRoom.start(self,self.current)
+ ptr = self.listHash.addOrGet(childRoom)
+ if ptr <> None:
+ ptr = None
+ return RET_PORTEXIST
+ self.popCurrent()
+ # search for a next one
+ if self.FindNext(A,False) != RET_OK:
+ break
+
+ self.resetCurrent()
+ if self.gotoChildren() != RET_OK:
+ return RET_NOINFOS
+ # search and build
+ IMPORT_PORTS( ES.XML_ROOM,None,Frouter)
+ IMPORT_PORTS( ES.XML_ROOM,"ROOM",Frouter)
+ IMPORT_PORTS( ES.XML_BOARD,None,FevenBoard)
+ IMPORT_PORTS( ES.XML_BOARD,"BOARD",FevenBoard)
+
+ IMPORT_PORTS( ES.XML_DOOR, "file", Fdoor_file)
+ IMPORT_PORTS( ES.XML_DOOR, "cout", Fdoor_cout)
+ IMPORT_PORTS( ES.XML_PRG, "concat", Fdoor_concat)
+
+ # seach for <envenja_link>, if dosen't exists, create an evendata and send it
+ if self.Find(ES.XML_LNK, False) != RET_OK:
+ return RET_OK
+ while True:
+ self.pushCurrent()
+ self.getLinkInfos(linkInfos)
+ if linkInfos['source'] <> None:
+ strH.setString(linkInfos['source'])
+ port = self.listHash.Search(strH)
+ # if this source has been built, send a ACT_SYS_ADDDEST msg
+ if port <> None:
+ data = self.getFreeEvenData()
+ data.setData( ES.XML_LNKTYPE, linkInfos['type'])
+ data.setData( ES.XML_LNKVALUE, linkInfos['value'])
+ data.setData( ES.XML_LNKFIELDS, linkInfos['fields'])
+ data.setData( ES.XML_LNKDEST, linkInfos['dest'])
+
+ data.definePortAction( ES.ACT_SYS_ADDDEST, linkInfos['source'])
+ self.sendEvenDataSys(data,port)
+ self.popCurrent()
+ if self.FindNext( ES.XML_LNK,False) != RET_OK:
+ break
+ return RET_OK
+
+ def receive_evenData(self,evenData):
+ """/** Receive the evenData to be routed to the right router or port. */"""
+ port = self.listHash.Search(evenData.getCurrentDestination().getPort())
+ if port <> None:
+ #// ... then send to it the evenData
+ #// Now it send the evenData by sndMsg, but normally this will change after the realeas of V3.0
+ #// sendEvenData( evenData, port);
+ #// return RET_OK;
+ #// ...this will work well too, but it is another principle
+ return port.justDoIt(evenData)
+ evenData.definePortAction(ES.ACT_ERROR)
+ return RET_OK
+
+ def justDoIt(self,evenData):
+ """/** Methods called by Fstarter */"""
+ tmp = evenData.getCurrentDestination().getAction()
+ if tmp.equals(gvActionEnd) or tmp.equals(gvActionError):
+ self.setFreeEvenData(evenData)
+ return RET_OK
+ return Fport.justDoIt(self,evenData)
+
+ def end(self):
+ """/** Deploy the end() until the port. */"""
+ for I in range(self.listHash.getCount()):
+ self.listHash.get(I).end()
+ return Fconfig.endXml(self)
if __name__ == '__main__':
- import unittest
-
- router1 = Frouter()
- router2 = Frouter()
-
- class FrouterTestCase(unittest.TestCase):
-
- def test1Name(self):
- self.assertEquals(router1.start( None, "testezlog.xml"),RET_OK)
- strH = FstringHash()
- strH.setString( "TEST00")
-
- #// TEST Name from file
- self.assertEquals(router1.equals( strH),True)
-
- #// TEST from node config
- conf = Fconfig()
- conf.startXml( "testezlog.xml")
- router2.start( None, conf.getCurrent())
- self.assertEquals(router2.equals( strH),True)
- router1.end()
- router2.end()
-
-
- unittest.main()
+ import unittest
+
+ router1 = Frouter()
+ router2 = Frouter()
+
+ class FrouterTestCase(unittest.TestCase):
+
+ def test1Name(self):
+ self.assertEquals(router1.start( None, "testezlog.xml"),RET_OK)
+ strH = FstringHash()
+ strH.setString( "TEST00")
+
+ #// TEST Name from file
+ self.assertEquals(router1.equals( strH),True)
+
+ #// TEST from node config
+ conf = Fconfig()
+ conf.startXml( "testezlog.xml")
+ router2.start( None, conf.getCurrent())
+ self.assertEquals(router2.equals( strH),True)
+ router1.end()
+ router2.end()
+
+
+ unittest.main()
diff --git a/fstarter.py b/fstarter.py
index 28567e7..88dd7c0 100644
--- a/fstarter.py
+++ b/fstarter.py
@@ -19,7 +19,7 @@
# from C++ to python by Jeremy Zurcher <jeremy@asynk.ch>
#
-"""/** First class of evenja and evendoor to be created.
+"""/** First class of evenja and evendoor to be created.
This class will ask the firstRouter to create the first level of classes.
*@author Fabian Padilla
@@ -37,102 +37,102 @@ from returncodes import RET_OK
from evenjastrings import XML_SERVER
class Fstarter(Frouter):
- """This is the main dispather, it receives all messages"""
-
- def __init__(self):
- Frouter.__init__(self) # force constructor
- #/** Is the software a server (deamon) or a normal software.
- # A Server or deamon software wait until a signal ask for the end
- # A normal software wil end when nothing is to do (at the end) */
- self.server = False
- self.exit = False
-
- def __str__(self):
- return "\t"+Frouter.__str__(self)+\
- "Fstarter - (null)\n"
-
- def setExit(self):
- """/** Kill the application */"""
- self.exit = True
-
- def start(self,FileName):
- """/** Open the config file and transmit the first level of the rooms to the firstRouter. */"""
- ret = Frouter.start(self,None,FileName) # set None as parent router
- if ret == RET_OK:
- self.pushCurrent()
- self.server = not self.Find(XML_SERVER)
- self.popCurrent()
- return ret
-
- def execute(self,trace):
- """/** Method called by the "main" of the application.
- It send an evenData to all evenBoard and then to all evenDoor to really start the work of the rooms.
- And wait until a TERM signal arrives from theself.__class__. OS. */"""
-
- if trace:
- while True:
- while self.listMsgSys.getCount() or self.listMsg.getCount():
- if self.listMsgSys.getCount():
- data = self.listMsgSys.removeFifo()
- print '<?xml version="1.0"?>'
- print '< *** SYS MSG *** />'
- print data
- data.getActivePort().justDoItSys(data)
- else:
- data = self.listMsg.removeFifo()
- print '<?xml version="1.0"?>'
- print '< *** MSG *** />'
- print data
- data.getActivePort().justDoIt(data)
- if self.exit:
- break
- if not self.server or self.exit:
- break
- # TODO a small time out maybe ???
-
- else:
- while True:
- while self.listMsgSys.getCount() or self.listMsg.getCount():
- if self.listMsgSys.getCount():
- data = self.listMsgSys.removeFifo()
- data.getActivePort().justDoItSys(data)
- else:
- data = self.listMsg.removeFifo()
- data.getActivePort().justDoIt(data)
- if self.exit:
- break
- if not self.server or self.exit:
- break
- # TODO a small time out maybe ???
-
- return RET_OK
-
- def end(self):
- """/** Manage if Fstarter saves the config file ( in a dinamyc configuration of rooms).
- Or if it is not needed because it is a static configuration. */"""
- return Frouter.end(self)
+ """This is the main dispather, it receives all messages"""
+
+ def __init__(self):
+ Frouter.__init__(self) # force constructor
+ #/** Is the software a server (deamon) or a normal software.
+ # A Server or deamon software wait until a signal ask for the end
+ # A normal software wil end when nothing is to do (at the end) */
+ self.server = False
+ self.exit = False
+
+ def __str__(self):
+ return "\t"+Frouter.__str__(self)+\
+ "Fstarter - (null)\n"
+
+ def setExit(self):
+ """/** Kill the application */"""
+ self.exit = True
+
+ def start(self,FileName):
+ """/** Open the config file and transmit the first level of the rooms to the firstRouter. */"""
+ ret = Frouter.start(self,None,FileName) # set None as parent router
+ if ret == RET_OK:
+ self.pushCurrent()
+ self.server = not self.Find(XML_SERVER)
+ self.popCurrent()
+ return ret
+
+ def execute(self,trace):
+ """/** Method called by the "main" of the application.
+ It send an evenData to all evenBoard and then to all evenDoor to really start the work of the rooms.
+ And wait until a TERM signal arrives from theself.__class__. OS. */"""
+
+ if trace:
+ while True:
+ while self.listMsgSys.getCount() or self.listMsg.getCount():
+ if self.listMsgSys.getCount():
+ data = self.listMsgSys.removeFifo()
+ print '<?xml version="1.0"?>'
+ print '< *** SYS MSG *** />'
+ print data
+ data.getActivePort().justDoItSys(data)
+ else:
+ data = self.listMsg.removeFifo()
+ print '<?xml version="1.0"?>'
+ print '< *** MSG *** />'
+ print data
+ data.getActivePort().justDoIt(data)
+ if self.exit:
+ break
+ if not self.server or self.exit:
+ break
+ # TODO a small time out maybe ???
+
+ else:
+ while True:
+ while self.listMsgSys.getCount() or self.listMsg.getCount():
+ if self.listMsgSys.getCount():
+ data = self.listMsgSys.removeFifo()
+ data.getActivePort().justDoItSys(data)
+ else:
+ data = self.listMsg.removeFifo()
+ data.getActivePort().justDoIt(data)
+ if self.exit:
+ break
+ if not self.server or self.exit:
+ break
+ # TODO a small time out maybe ???
+
+ return RET_OK
+
+ def end(self):
+ """/** Manage if Fstarter saves the config file ( in a dinamyc configuration of rooms).
+ Or if it is not needed because it is a static configuration. */"""
+ return Frouter.end(self)
if __name__ == '__main__':
- import unittest
-
- starter1 = Fstarter();
- starter2 = Fstarter();
-
- class FstarterTestCase(unittest.TestCase):
-
- def test1Name(self):
- self.assertEquals(starter1.start( "testezlog.xml"),RET_OK)
-
- strH = FstringHash()
- strH.setString( "TEST00")
-
- #// TEST Name from file
- self.assertEquals(starter1.equals( strH),True)
-
- starter1.end()
-
- unittest.main()
+ import unittest
+
+ starter1 = Fstarter();
+ starter2 = Fstarter();
+
+ class FstarterTestCase(unittest.TestCase):
+
+ def test1Name(self):
+ self.assertEquals(starter1.start( "testezlog.xml"),RET_OK)
+
+ strH = FstringHash()
+ strH.setString( "TEST00")
+
+ #// TEST Name from file
+ self.assertEquals(starter1.equals( strH),True)
+
+ starter1.end()
+
+ unittest.main()
diff --git a/fstringhash.py b/fstringhash.py
index dbde39c..bd36618 100644
--- a/fstringhash.py
+++ b/fstringhash.py
@@ -22,15 +22,15 @@
# TODO method equals should be __eq__ for the beauty ...
# TODO do we really need this, as python allready provides it's hash value technology in PyObject [ obj.__hash__() ]
#
-# ob_sval == char*
-# ob_size == strlen()
+# ob_sval == char*
+# ob_size == strlen()
#
# int
# _PyString_Eq(PyObject *o1, PyObject *o2)
# {
-# PyStringObject *a, *b;
-# a = (PyStringObject*)o1;
-# b = (PyStringObject*)o2;
+# PyStringObject *a, *b;
+# a = (PyStringObject*)o1;
+# b = (PyStringObject*)o2;
# return a->ob_size == b->ob_size
# && *a->ob_sval == *b->ob_sval
# && memcmp(a->ob_sval, b->ob_sval, a->ob_size) == 0;
@@ -40,21 +40,21 @@
# string_hash(PyStringObject *a)
# {
# register int len;
-# register unsigned char *p;
-# register long x;
+# register unsigned char *p;
+# register long x;
#
-# if (a->ob_shash != -1)
-# return a->ob_shash;
-# len = a->ob_size;
-# p = (unsigned char *) a->ob_sval;
-# x = *p << 7;
-# while (--len >= 0)
-# x = (1000003*x) ^ *p++;
-# x ^= a->ob_size;
-# if (x == -1)
-# x = -2;
-# a->ob_shash = x;
-# return x;
+# if (a->ob_shash != -1)
+# return a->ob_shash;
+# len = a->ob_size;
+# p = (unsigned char *) a->ob_sval;
+# x = *p << 7;
+# while (--len >= 0)
+# x = (1000003*x) ^ *p++;
+# x ^= a->ob_size;
+# if (x == -1)
+# x = -2;
+# a->ob_shash = x;
+# return x;
# }
@@ -62,11 +62,11 @@
"""/** To speed up the process of comparaison between values, we use a hash technology.
function : hash a string and show hashvalue and string.
-
- description : the method "setString" is used to set the the value of the stringhash.
- Then the hash value is available.
- This will speedup the comparaison between the different "string" in evenja rooms.
- ( it is faster to compare two int than complete string).
+
+ description : the method "setString" is used to set the the value of the stringhash.
+ Then the hash value is available.
+ This will speedup the comparaison between the different "string" in evenja rooms.
+ ( it is faster to compare two int than complete string).
*@author Fabian Padilla
*/"""
@@ -74,83 +74,83 @@
__all__ =["FstringHash"]
try:
- import hashlib
+ import hashlib
except:
- print "no MD5 capabilities ... aborting"
- import sys
- sys.exit(1)
+ print "no MD5 capabilities ... aborting"
+ import sys
+ sys.exit(1)
class FstringHash:
- """This class is wrapper around the python builtin string providing an extra (virtual) hash function"""
- def __init__(self):
- self.string = None
- self.hashValue = None
-
- def __str__(self):
- return "FstringHash : "+str(self.string)+"\n"
-
- def __hash(self):
- """ default hash function, may be overriden """
- return hashlib.md5(self.string).hexdigest()
-
- def setString(self,string):
- self.string = string
- if string is None:
- self.hashValue = None
- else:
- self.hashValue = self.__hash()
-
- def getString(self):
- return self.string
-
- def getHashValue(self):
- return self.hashValue
-
- def copyFrom(self,other):
- """copy my attributes from other"""
- self.string = other.string
- self.hashValue = other.hashValue
-
- #def __eq__(self,other):
- def equals(self,other):
- return self.string == other.string and self.hashValue == other.hashValue
+ """This class is wrapper around the python builtin string providing an extra (virtual) hash function"""
+ def __init__(self):
+ self.string = None
+ self.hashValue = None
+
+ def __str__(self):
+ return "FstringHash : "+str(self.string)+"\n"
+
+ def __hash(self):
+ """ default hash function, may be overriden """
+ return hashlib.md5(self.string).hexdigest()
+
+ def setString(self,string):
+ self.string = string
+ if string is None:
+ self.hashValue = None
+ else:
+ self.hashValue = self.__hash()
+
+ def getString(self):
+ return self.string
+
+ def getHashValue(self):
+ return self.hashValue
+
+ def copyFrom(self,other):
+ """copy my attributes from other"""
+ self.string = other.string
+ self.hashValue = other.hashValue
+
+ #def __eq__(self,other):
+ def equals(self,other):
+ return self.string == other.string and self.hashValue == other.hashValue
if __name__ == '__main__':
- import unittest
-
- str1 = FstringHash()
- str2 = FstringHash()
-
- class FstringHashTestCase(unittest.TestCase):
-
- def test1Equal(self):
- str1.setString("WWW.TEST.ORG")
- str2.setString("WWW.TEST.ORG")
- self.assertEquals(str1.equals(str2),1)
-
- def test2NotEqual(self):
- str1.setString("WWW.TEST.ORG")
- str2.setString("WWW.NOTEST.ORG")
- self.assertEquals(str1.equals(str2),0)
-
- def test3Copy(self):
- str1.setString("WWW.TEST.ORG")
- str2.copyFrom(str1)
- self.assertEquals(str1.equals(str2),1)
-
- def test4Hash(self):
- str1.setString("WWW.TEST.ORG")
- self.assertEquals(hashlib.md5("WWW.TEST.ORG").hexdigest(),str1.getHashValue())
-
- def test5None(self):
- str1.setString("WWW.TEST.ORG")
- str1.setString(None)
- self.assertEquals(str1.getHashValue(),None)
- self.assertEquals(str1.getString(),None)
-
-
-
- unittest.main()
+ import unittest
+
+ str1 = FstringHash()
+ str2 = FstringHash()
+
+ class FstringHashTestCase(unittest.TestCase):
+
+ def test1Equal(self):
+ str1.setString("WWW.TEST.ORG")
+ str2.setString("WWW.TEST.ORG")
+ self.assertEquals(str1.equals(str2),1)
+
+ def test2NotEqual(self):
+ str1.setString("WWW.TEST.ORG")
+ str2.setString("WWW.NOTEST.ORG")
+ self.assertEquals(str1.equals(str2),0)
+
+ def test3Copy(self):
+ str1.setString("WWW.TEST.ORG")
+ str2.copyFrom(str1)
+ self.assertEquals(str1.equals(str2),1)
+
+ def test4Hash(self):
+ str1.setString("WWW.TEST.ORG")
+ self.assertEquals(hashlib.md5("WWW.TEST.ORG").hexdigest(),str1.getHashValue())
+
+ def test5None(self):
+ str1.setString("WWW.TEST.ORG")
+ str1.setString(None)
+ self.assertEquals(str1.getHashValue(),None)
+ self.assertEquals(str1.getString(),None)
+
+
+
+ unittest.main()
diff --git a/fviewer.py b/fviewer.py
index fb03225..4da69d3 100644
--- a/fviewer.py
+++ b/fviewer.py
@@ -30,9 +30,9 @@
access the head information :
- source
- destination
- and access the data information.
+ and access the data information.
WITHOUT HAVING TO DO A VERSIONNING.
-
+
*@author Fabian Padilla
*/"""
@@ -42,10 +42,10 @@ from fport import Fport
from fevendata import FevenData
class Fviewer(Fport):
- """This class is form debugging purpose """
- def __init__(self):
- Fport.__init__(self) # force constructor
+ """This class is form debugging purpose """
+ def __init__(self):
+ Fport.__init__(self) # force constructor
- def __str__(self):
- return "\t"+Fport.__str__(self)+\
- "Fviewer - (null)\n"
+ def __str__(self):
+ return "\t"+Fport.__str__(self)+\
+ "Fviewer - (null)\n"
diff --git a/globalvars.py b/globalvars.py
index dcd397d..ed2284a 100644
--- a/globalvars.py
+++ b/globalvars.py
@@ -46,22 +46,22 @@ import evenjastrings as ES
#gvNoValues = None
#def initGlobalVars():
-#
-# global gvActionNormal
-# global gvActionDestination1Data
-# global gvActionDestination2Data
-# global gvActionFollowDestination
-# global gvActionWait
-# global gvActionAdd
-# global gvActionUpdate
-# global gvActionDelete
-# global gvActionGet
-# global gvActionFind
-# global gvActionEnd
-# global gvActionError
-# global gvActionSysAddDest
-# global gvNoValues
-#
+#
+# global gvActionNormal
+# global gvActionDestination1Data
+# global gvActionDestination2Data
+# global gvActionFollowDestination
+# global gvActionWait
+# global gvActionAdd
+# global gvActionUpdate
+# global gvActionDelete
+# global gvActionGet
+# global gvActionFind
+# global gvActionEnd
+# global gvActionError
+# global gvActionSysAddDest
+# global gvNoValues
+#
gvActionNormal = FstringHash()
gvActionNormal.setString(ES.ACT_NORMAL)
@@ -106,29 +106,29 @@ gvNoValues.setString(ES.TXT_NOVALUES)
#if __name__ == '__main__':
-#
-# import unittest
-# D = dir()
-# L=[ ES.ACT_ADD,\
-# ES.ACT_DELETE,\
-# ES.ACT_DESTINATION1DATA,\
-# ES.ACT_DESTINATION2DATA,\
-# ES.ACT_END,\
-# ES.ACT_ERROR,\
-# ES.ACT_FIND,\
-# ES.ACT_FOLLOWDESTINATION,\
-# ES.ACT_GET,\
-# ES.ACT_NORMAL,\
-# ES.ACT_SYS_ADDDEST,\
-# ES.ACT_UPDATE,\
-# ES.ACT_WAIT,\
-# ES.TXT_NOVALUES]
-#
-# class globalvarsTestCase(unittest.TestCase):
#
-# def testInit(self):
-# initGlobalVars()
-# for I in D:
-# if I[:2]=="gv":
-# self.assertNotEquals(eval(D[D.index(I)]).getString(),D.index(I))
-# unittest.main()
+# import unittest
+# D = dir()
+# L=[ ES.ACT_ADD,\
+# ES.ACT_DELETE,\
+# ES.ACT_DESTINATION1DATA,\
+# ES.ACT_DESTINATION2DATA,\
+# ES.ACT_END,\
+# ES.ACT_ERROR,\
+# ES.ACT_FIND,\
+# ES.ACT_FOLLOWDESTINATION,\
+# ES.ACT_GET,\
+# ES.ACT_NORMAL,\
+# ES.ACT_SYS_ADDDEST,\
+# ES.ACT_UPDATE,\
+# ES.ACT_WAIT,\
+# ES.TXT_NOVALUES]
+#
+# class globalvarsTestCase(unittest.TestCase):
+#
+# def testInit(self):
+# initGlobalVars()
+# for I in D:
+# if I[:2]=="gv":
+# self.assertNotEquals(eval(D[D.index(I)]).getString(),D.index(I))
+# unittest.main()
diff --git a/pyevenja.py b/pyevenja.py
index 9fcc574..1a2b6b4 100644
--- a/pyevenja.py
+++ b/pyevenja.py
@@ -41,97 +41,97 @@ vers = '0.0.9'
#----------------------------------------------------------------------------
def usage(name):
- print 'usage :'+name+' ['+shorts+'] xml_file'
- print ' h - help'
- print ' v - version'
- print ' t - trace\tfstarter.execute() will print all received messages'
- print ' c - compile\tclean and rebuild files'
+ print 'usage :'+name+' ['+shorts+'] xml_file'
+ print ' h - help'
+ print ' v - version'
+ print ' t - trace\tfstarter.execute() will print all received messages'
+ print ' c - compile\tclean and rebuild files'
#----------------------------------------------------------------------------
def version(name):
- print(name+', version '+str(vers))
- print 'written by jeremy zurcher tzurtch@bluemail.ch'
- print 'stolen from evenja-2.9.72-beta1, written by Fabian Padilla fp@bridgethink.com'
- print '''\nthis version should be ok, but isn't written in "pure" python style ;))'''
- print 'the work is in progress ...'
+ print(name+', version '+str(vers))
+ print 'written by jeremy zurcher tzurtch@bluemail.ch'
+ print 'stolen from evenja-2.9.72-beta1, written by Fabian Padilla fp@bridgethink.com'
+ print '''\nthis version should be ok, but isn't written in "pure" python style ;))'''
+ print 'the work is in progress ...'
+
-
#----------------------------------------------------------------------------
def main():
- path,name=os.path.split(sys.argv[0])
- trace = False
- try:
- opts,args = getopt.getopt(sys.argv[1:],shorts,longs)
- except getopt.GetoptError:
- print('try '+name+' --help')
- sys.exit(0)
-
- for opt,arg in opts:
- if opt in ('-'+shorts[0],'--'+longs[0]):
- usage(name)
- sys.exit(0)
- if opt in ('-'+shorts[1],'--'+longs[1]):
- version(name)
- sys.exit(0)
- if opt in ('-'+shorts[2],'--'+longs[2]):
- trace = True
- if opt in ('-'+shorts[3],'--'+longs[3]):
- L=[ 'OSconfig.py',\
- 'OSlinux.py',\
- 'evenjastrings.py',\
- 'fconfig.py',\
- 'fdoor_cout.py',\
- 'fdoor_file.py',\
- 'fevendoor.py',\
- 'fevenboard.py',\
- 'fevendata.py',\
- 'fevenprg.py',\
- 'flist.py',\
- 'flisthash.py',\
- 'fport.py',\
- 'fportbkpevendata.py',\
- 'fportlist.py',\
- 'fportlisthash.py',\
- 'fposition.py',\
- 'fprg_concat.py',\
- 'frouter.py',\
- 'fstarter.py',\
- 'fstringhash.py',\
- 'fviewer.py',\
- 'globalvars.py',\
- 'returncodes.py']
- if sys.platform != 'linux2':
- print "Would you please install an acceptable OS, thanks."
- os.system('rm *.pyc *.pyo 2>/dev/null')
- for I in L:
- print 'python -O -W all '+I
- os.system('python -O -W all '+I)
- sys.exit(0)
-
- if not args:
- usage(name)
- sys.exit(1)
-
- # here we go ... with this buggy verion ...
-
- starter = Fstarter()
-
- if starter:
- ret = starter.start(args[0])
- if ret == RET_OK:
- starter.execute(trace) # launch the stuff
- ret = starter.end() # for dynamc configuration
- else:
- print "can't start the starter *sigh*"
- sys.exit(-1)
- else:
- print "can't instanciate the starter ... really bad !!!!"
- sys.exit(-1)
- sys.exit(0)
-
+ path,name=os.path.split(sys.argv[0])
+ trace = False
+ try:
+ opts,args = getopt.getopt(sys.argv[1:],shorts,longs)
+ except getopt.GetoptError:
+ print('try '+name+' --help')
+ sys.exit(0)
+
+ for opt,arg in opts:
+ if opt in ('-'+shorts[0],'--'+longs[0]):
+ usage(name)
+ sys.exit(0)
+ if opt in ('-'+shorts[1],'--'+longs[1]):
+ version(name)
+ sys.exit(0)
+ if opt in ('-'+shorts[2],'--'+longs[2]):
+ trace = True
+ if opt in ('-'+shorts[3],'--'+longs[3]):
+ L=[ 'OSconfig.py',\
+ 'OSlinux.py',\
+ 'evenjastrings.py',\
+ 'fconfig.py',\
+ 'fdoor_cout.py',\
+ 'fdoor_file.py',\
+ 'fevendoor.py',\
+ 'fevenboard.py',\
+ 'fevendata.py',\
+ 'fevenprg.py',\
+ 'flist.py',\
+ 'flisthash.py',\
+ 'fport.py',\
+ 'fportbkpevendata.py',\
+ 'fportlist.py',\
+ 'fportlisthash.py',\
+ 'fposition.py',\
+ 'fprg_concat.py',\
+ 'frouter.py',\
+ 'fstarter.py',\
+ 'fstringhash.py',\
+ 'fviewer.py',\
+ 'globalvars.py',\
+ 'returncodes.py']
+ if sys.platform != 'linux2':
+ print "Would you please install an acceptable OS, thanks."
+ os.system('rm *.pyc *.pyo 2>/dev/null')
+ for I in L:
+ print 'python -O -W all '+I
+ os.system('python -O -W all '+I)
+ sys.exit(0)
+
+ if not args:
+ usage(name)
+ sys.exit(1)
+
+ # here we go ... with this buggy verion ...
+
+ starter = Fstarter()
+
+ if starter:
+ ret = starter.start(args[0])
+ if ret == RET_OK:
+ starter.execute(trace) # launch the stuff
+ ret = starter.end() # for dynamc configuration
+ else:
+ print "can't start the starter *sigh*"
+ sys.exit(-1)
+ else:
+ print "can't instanciate the starter ... really bad !!!!"
+ sys.exit(-1)
+ sys.exit(0)
+
#----------------------------------------------------------------------------
if __name__=='__main__':
- main()
+ main()
diff --git a/returncodes.py b/returncodes.py
index 2d8b50a..b89b6fa 100644
--- a/returncodes.py
+++ b/returncodes.py
@@ -30,11 +30,11 @@ RET_KO = -1
RET_MEMORYSPACE = -10
#// developpement errors
-RET_NOTIMPLEMENTED = -1001 #/* Method not already implmented*/
-RET_NOTIMPLEMENTED_TXT = "NOT IMPLEMENTED" #/* Text version */
+RET_NOTIMPLEMENTED = -1001 #/* Method not already implmented*/
+RET_NOTIMPLEMENTED_TXT = "NOT IMPLEMENTED" #/* Text version */
#// Erros which can be generated at start of the application (before the rooms are working)
-RET_NOPARAMS = -2001 #// The parameter is not available
+RET_NOPARAMS = -2001 #// The parameter is not available
#// Returns in normal usage of the evenja and evendoor technology need to be managed by the class
RET_INTERNAL = -10000
@@ -54,5 +54,5 @@ RET_NOTEXIST = RET_TREE - 5 #/* {Next,Prev,Children or Parent} Node not
RET_NOTFOUND = RET_TREE - 6 #/* Nothing found, in the search */
RET_CANNOTSAVE = RET_TREE - 7 #/* Cannot save the file */
-#RET_ = ""
+#RET_ = ""