示例#1
0
 def __init__(self, s=None):
     wx.grid.PyGridTableBase.__init__(self)
     self.colLabels = ['Step']
     if (s != None):
         self.steps = s
     else:
         self.steps = Steps()
示例#2
0
class StepTable(wx.grid.PyGridTableBase):
    def __init__(self, s=None):
        wx.grid.PyGridTableBase.__init__(self)
        self.colLabels = ['Step']
        if (s != None):
            self.steps = s
        else:
            self.steps = Steps()

    def GetNumberRows(self):
        return (self.steps).size()

    def GetNumberCols(self):
        return 1

    def GetColLabelValue(self, col):
        return 'Step'

    def IsEmptyCell(self, row, col):
        return False

    def GetValue(self, row, col):
        return (self.steps[row]).text()

    def SetValue(self, row, col, value):
        self.steps[row].setText(value)

    def AppendRows(self, numRows=1):
        pos = self.steps.size() - 1
        self.InsertRows(pos, numRows)

    def InsertRows(self, pos, numRows=1):
        if (pos == -1):
            pos = 0
        newPos = pos + 1
        if (self.steps.size() == 0):
            lastLabel = 0
        else:
            lastLabel = pos
        newLabel = lastLabel + 1
        try:
            self.steps.append(Step())
        except ARM.ARMException, errorText:
            dlg = wx.MessageDialog(self.GetView(), str(errorText), 'Add Step',
                                   wx.OK | wx.ICON_ERROR)
            dlg.ShowModal()
            dlg.Destroy()
            return

        self.addToView(newLabel)
        grid = self.GetView()
        grid.SetCellEditor(newPos, 0, wx.grid.GridCellAutoWrapStringEditor())
        grid.SetCellRenderer(newPos, 0,
                             wx.grid.GridCellAutoWrapStringRenderer())
        return True
示例#3
0
class StepTable(wx.grid.PyGridTableBase):

  def __init__(self,s = None):
    wx.grid.PyGridTableBase.__init__(self)
    self.colLabels = ['Step']
    if (s != None):
      self.steps = s
    else:
      self.steps = Steps()

  def GetNumberRows(self):
    return (self.steps).size()

  def GetNumberCols(self):
    return 1

  def GetColLabelValue(self,col):
    return 'Step'

  def IsEmptyCell(self,row,col):
    return False

  def GetValue(self,row,col):
    return (self.steps[row]).text()

  def SetValue(self,row,col,value):
    self.steps[row].setText(value)
   
  def AppendRows(self,numRows=1):
    pos = self.steps.size() - 1
    self.InsertRows(pos,numRows)

  def InsertRows(self,pos,numRows=1):
    if (pos == -1):
      pos = 0
    newPos = pos + 1
    if (self.steps.size() == 0):
      lastLabel = 0
    else:
      lastLabel = pos
    newLabel = lastLabel + 1
    try:
      self.steps.append(Step())
    except ARM.ARMException,errorText:
      dlg = wx.MessageDialog(self.GetView(),str(errorText),'Add Step',wx.OK | wx.ICON_ERROR)
      dlg.ShowModal()
      dlg.Destroy()
      return

    self.addToView(newLabel)
    grid = self.GetView()
    grid.SetCellEditor(newPos,0,wx.grid.GridCellAutoWrapStringEditor())
    grid.SetCellRenderer(newPos,0,wx.grid.GridCellAutoWrapStringRenderer())
    return True
示例#4
0
 def resetUseCaseEnvironmentAttributes(self):
     self.theEnvironmentName = ''
     self.inPreconditions = 0
     self.thePreconditions = ''
     self.inPostconditions = 0
     self.thePostconditions = ''
     self.theSteps = Steps()
     self.theCurrentStep = None
     self.theCurrentStepNo = 0
     self.theExcName = ''
     self.theExcType = ''
     self.theExcValue = ''
     self.theExcCat = ''
     self.inDefinition = 0
     self.theDefinition = ''
示例#5
0
 def __init__(self,s = None):
   wx.grid.PyGridTableBase.__init__(self)
   self.colLabels = ['Step']
   if (s != None):
     self.steps = s
   else:
     self.steps = Steps()
 def resetUseCaseEnvironmentAttributes(self):
   self.theEnvironmentName = ''    
   self.inPreconditions = 0
   self.thePreconditions = ''
   self.inPostconditions = 0
   self.thePostconditions = ''
   self.theSteps = Steps()
   self.theCurrentStep = None
   self.theCurrentStepNo = 0
   self.theExcName = ''
   self.theExcType = ''
   self.theExcValue = ''
   self.theExcCat = ''
   self.inDefinition = 0
   self.theDefinition = ''
class UsabilityContentHandler(ContentHandler,EntityResolver):
  def __init__(self):
    self.thePersonas = []
    self.theExternalDocuments = []
    self.theDocumentReferences = []
    self.theConceptReferences = []
    self.thePersonaCharacteristics = []
    self.theTaskCharacteristics = []
    self.theTasks = []
    self.theUseCases = []
    b = Borg()
    self.configDir = b.configDir
    self.resetPersonaAttributes()
    self.resetDocumentReferenceAttributes()
    self.resetConceptReferenceAttributes()
    self.resetPersonaCharacteristicAttributes()
    self.resetTaskCharacteristicAttributes()
    self.resetTaskAttributes()
    self.resetUseCaseAttributes()

  def resolveEntity(self,publicId,systemId):
    return self.configDir + '/usability.dtd'

  def personas(self):
    return self.thePersonas

  def externalDocuments(self):
    return self.theExternalDocuments

  def documentReferences(self):
    return self.theDocumentReferences

  def conceptReferences(self):
    return self.theConceptReferences

  def personaCharacteristics(self):
    return self.thePersonaCharacteristics

  def taskCharacteristics(self):
    return self.theTaskCharacteristics

  def tasks(self):
    return self.theTasks

  def usecases(self):
    return self.theUseCases

  def resetPersonaAttributes(self):
    self.inActivities = 0
    self.inAttitudes = 0
    self.inAptitudes = 0
    self.inMotivations = 0
    self.inSkills = 0
    self.inIntrinsic = 0
    self.inContextual = 0
    self.theName = ''
    self.theTags = []
    self.theType = ''
    self.theImage = ''
    self.isAssumptionPersona = False
    self.theActivities = ''
    self.theAptitudes = ''
    self.theMotivations = ''
    self.theSkills = ''
    self.theIntrinsic = ''
    self.theContextual = ''
    self.theEnvironmentProperties = []
    self.resetPersonaEnvironmentAttributes()

  def resetPersonaEnvironmentAttributes(self):
    self.theEnvironmentName = ''
    self.theRoles = []
    self.isDirect = True
    self.inNarrative = 0
    self.theNarrative = ''

  def resetExternalDocumentAttributes(self):
    self.theName = ''
    self.theVersion = ''
    self.theDate = ''
    self.theAuthors = ''
    self.inDescription = 0
    self.theDescription = ''

  def resetDocumentReferenceAttributes(self):
    self.inExcerpt = 0
    self.theName = ''
    self.theContributor = ''
    self.theDocument = ''
    self.theExcerpt = ''

  def resetConceptReferenceAttributes(self):
    self.inDescription = 0
    self.theName = ''
    self.theConcept = ''
    self.theObject = ''
    self.theDescription = ''

  def resetPersonaCharacteristicAttributes(self):
    self.thePersona = ''
    self.theBvName = ''
    self.theModalQualifier = ''
    self.inDefinition = 0
    self.theDefinition = ''
    self.theGrounds = []
    self.theWarrants = []
    self.theRebuttals = []

  def resetTaskCharacteristicAttributes(self):
    self.theTask = ''
    self.theModalQualifier = ''
    self.inDefinition = 0
    self.theDefinition = ''
    self.theGrounds = []
    self.theWarrants = []
    self.theRebuttals = []

  def resetTaskAttributes(self):
    self.theName = ''
    self.theTags = []
    self.theCode = ''
    self.theAuthor = ''
    self.isAssumptionTask = False
    self.inObjective = 0
    self.theObjective = ''
    self.theEnvironmentProperties = []
    self.resetTaskEnvironmentAttributes()

  def resetTaskEnvironmentAttributes(self):
    self.theEnvironmentName = ''
    self.inDependencies = 0
    self.inNarrative = 0
    self.inConsequences = 0
    self.inBenefits = 0
    self.theDependencies = ''
    self.theNarrative = ''
    self.theConsequences = ''
    self.theBenefits = ''
    self.theTaskPersonas = []
    self.theConcerns = []
    self.theConcernAssociations = []

  def resetUseCaseAttributes(self):
    self.theName = ''
    self.theTags = []
    self.theAuthor = ''
    self.theCode = ''
    self.inDescription = 0
    self.theDescription = ''
    self.theActors = []
    self.theEnvironmentProperties = []
    self.resetUseCaseEnvironmentAttributes()

  def resetUseCaseEnvironmentAttributes(self):
    self.theEnvironmentName = ''    
    self.inPreconditions = 0
    self.thePreconditions = ''
    self.inPostconditions = 0
    self.thePostconditions = ''
    self.theSteps = Steps()
    self.theCurrentStep = None
    self.theCurrentStepNo = 0
    self.theExcName = ''
    self.theExcType = ''
    self.theExcValue = ''
    self.theExcCat = ''
    self.inDefinition = 0
    self.theDefinition = ''

  def startElement(self,name,attrs):
    self.currentElementName = name
    if name == 'persona':
      self.theName = attrs['name']
      self.theType = attrs['type']
      self.theImage = attrs['image']
      if (attrs['assumption_persona'] == 'TRUE'):
        self.isAssumptionPersona = True
    elif name == 'persona_environment':
      self.theEnvironmentName = attrs['name']
      if (attrs['is_direct'] == 'FALSE'):
        self.isDirect = False
    elif name == 'persona_role':
      self.theRoles.append(attrs['name'])
    elif name == 'external_document':
      self.theName = attrs['name']
      self.theVersion = attrs['version']
      self.theDate = attrs['date']
      self.theAuthors = attrs['authors']
    elif name == 'document_reference':
      self.theName = attrs['name']
      self.theContributor = attrs['contributor']
      self.theDocument = attrs['document']
    elif name == 'concept_reference':
      self.theName = attrs['name']
      self.theConcept = attrs['concept']
      self.theObject = attrs['object']
    elif name == 'persona_characteristic':
      self.thePersona = attrs['persona']
      self.theBvName = u2s(attrs['behavioural_variable'])
      self.theModalQualifier = attrs['modal_qualifier'] 
    elif name == 'task_characteristic':
      self.theTask = attrs['task']
      self.theModalQualifier = attrs['modal_qualifier'] 
    elif name == 'grounds':
      refName = attrs['reference']
      refType = attrs['type']
      refArtifact = ''
      self.theGrounds.append((refName,'',refType))
    elif name == 'warrant':
      refName = attrs['reference']
      refType = attrs['type']
      refArtifact = ''
      self.theWarrants.append((refName,'',refType))
    elif name == 'rebuttal':
      refName = attrs['reference']
      refType = attrs['type']
      refArtifact = ''
      self.theRebuttals.append((refName,'',refType))
    elif name == 'task':
      self.theName = attrs['name']
      try:
        self.theCode = attrs['code']
      except KeyError:
        self.theCode = ''
      self.theAuthor = attrs['author']
      if (attrs['assumption_task'] == 'TRUE'):
        self.isAssumptionTask = True
    elif name == 'task_environment':
      self.theEnvironmentName = attrs['name']
    elif name == 'task_persona':
      self.theTaskPersonas.append((attrs['persona'],durationValue(attrs['duration']),frequencyValue(attrs['frequency']),attrs['demands'],attrs['goal_conflict']))
    elif name == 'task_concern':
      self.theConcerns.append(attrs['asset'])
    elif name == 'task_concern_association':
      self.theConcernAssociations.append((attrs['source_name'],a2s(attrs['source_nry']),attrs['link_name'],attrs['target_name'],a2s(attrs['target_nry'])))
    elif name == 'usecase':
      self.theName = attrs['name']
      self.theAuthor = attrs['author']
      self.theCode = attrs['code']
    elif name == 'actor':
      self.theActors.append(attrs['name'])
    elif name == 'usecase_environment':
      self.theEnvironmentName = attrs['name']
    elif name == 'step':
      self.theCurrentStepNo = attrs['number']
      self.theCurrentStep = Step(attrs['description'])
    elif name == 'exception':
      self.theExcName = attrs['name']
      self.theExcType = attrs['type']
      self.theExcValue = attrs['value']
      self.theExcCat = u2s(attrs['category'])
    elif name == 'activities':
      self.inActivities = 1
      self.theActivities = ''
    elif name == 'attitudes':
      self.inAttitudes = 1
      self.theAttitudes = ''
    elif name == 'aptitudes':
      self.inAptitudes = 1
      self.theAptitudes = ''
    elif name == 'motivations':
      self.inMotivations = 1
      self.theMotivations = ''
    elif name == 'skills':
      self.inSkills = 1
      self.theSkills = ''
    elif name == 'intrinsic':
      self.inIntrinsic = 1
      self.theIntrinsic = ''
    elif name == 'contextual':
      self.inContextual = 1
      self.theContextual = ''
    elif name == 'narrative':
      self.inNarrative = 1
      self.theNarrative = ''
    elif name == 'consequences':
      self.inConsequences = 1
      self.theConsequences = ''
    elif name == 'benefits':
      self.inBenefits = 1
      self.theBenefits = ''
    elif name == 'excerpt':
      self.inExcerpt = 1
      self.theExcerpt = ''
    elif name == 'description':
      self.inDescription = 1
      self.theDescription = ''
    elif name == 'definition':
      self.inDefinition = 1
      self.theDefinition = ''
    elif name == 'dependencies':
      self.inDependencies = 1
      self.theDependencies = ''
    elif name == 'objective':
      self.inObjective = 1
      self.theObjective = ''
    elif name == 'preconditions':
      self.inPreconditions = 1
      self.thePreconditions = ''
    elif name == 'postconditions':
      self.inPostconditions = 1
      self.thePostconditions = ''
    elif name == 'tag':
      self.theTags.append(attrs['name'])

  def characters(self,data):
    if self.inActivities:
      self.theActivities += data
    elif self.inAttitudes:
      self.theAttitudes += data
    elif self.inAptitudes:
      self.theAptitudes += data
    elif self.inMotivations:
      self.theMotivations += data
    elif self.inSkills:
      self.theSkills += data
    elif self.inIntrinsic:
      self.theIntrinsic += data
    elif self.inContextual:
      self.theContextual += data
    elif self.inConsequences:
      self.theConsequences += data
    elif self.inBenefits:
      self.theBenefits += data
    elif self.inExcerpt:
      self.theExcerpt += data
    elif self.inDescription:
      self.theDescription += data
    elif self.inDefinition:
      self.theDefinition += data
    elif self.inDependencies:
      self.theDependencies += data
    elif self.inObjective:
      self.theObjective += data
    elif self.inPreconditions:
      self.thePreconditions += data
    elif self.inPostconditions:
      self.thePostconditions += data
    elif self.inNarrative:
      self.theNarrative += data

  def endElement(self,name):
    if name == 'persona':
      p = PersonaParameters(self.theName,self.theActivities,self.theAttitudes,self.theAptitudes,self.theMotivations,self.theSkills,self.theIntrinsic,self.theContextual,self.theImage,self.isAssumptionPersona,self.theType,self.theTags,self.theEnvironmentProperties,{})
      self.thePersonas.append(p)
      self.resetPersonaAttributes()
    elif name == 'persona_environment':
      p = PersonaEnvironmentProperties(self.theEnvironmentName,self.isDirect,self.theNarrative,self.theRoles,{'narrative':{}})
      self.theEnvironmentProperties.append(p)
      self.resetPersonaEnvironmentAttributes()
    elif name == 'external_document':
      p = ExternalDocumentParameters(self.theName,self.theVersion,self.theDate,self.theAuthors,self.theDescription)
      self.theExternalDocuments.append(p)
      self.resetExternalDocumentAttributes()
    elif name == 'document_reference':
      p = DocumentReferenceParameters(self.theName,self.theDocument,self.theContributor,self.theExcerpt)
      self.theDocumentReferences.append(p)
      self.resetDocumentReferenceAttributes()
    elif name == 'concept_reference':
      p = ConceptReferenceParameters(self.theName,self.theConcept,self.theObject,self.theDescription)
      self.theConceptReferences.append(p)
      self.resetConceptReferenceAttributes()
    elif name == 'persona_characteristic':
      p = PersonaCharacteristicParameters(self.thePersona,self.theModalQualifier,self.theBvName,self.theDefinition,self.theGrounds,self.theWarrants,[],self.theRebuttals)
      self.thePersonaCharacteristics.append(p)
      self.resetPersonaCharacteristicAttributes()
    elif name == 'task_characteristic':
      p = TaskCharacteristicParameters(self.theTask,self.theModalQualifier,self.theDefinition,self.theGrounds,self.theWarrants,[],self.theRebuttals)
      self.theTaskCharacteristics.append(p)
      self.resetTaskCharacteristicAttributes()
    elif name == 'task':
      p = TaskParameters(self.theName,self.theCode,self.theObjective,self.isAssumptionTask,self.theAuthor,self.theTags,self.theEnvironmentProperties)
      self.theTasks.append(p)
      self.resetTaskAttributes()
    elif name == 'task_environment':
      p = TaskEnvironmentProperties(self.theEnvironmentName,self.theDependencies,self.theTaskPersonas,self.theConcerns,self.theConcernAssociations,self.theNarrative,self.theConsequences,self.theBenefits,{'narrative':{},'consequences':{},'benefits':{}})
      self.theEnvironmentProperties.append(p)
      self.resetTaskEnvironmentAttributes()
    elif name == 'exception':
      self.theCurrentStep.addException((self.theExcName,self.theExcType,self.theExcValue,self.theExcCat,self.theDefinition))
    elif name == 'step':
      self.theCurrentStep.setTags(self.theTags)
      self.theSteps.append(self.theCurrentStep)
      self.theCurrentStep = None
    elif name == 'usecase_environment':
      p = UseCaseEnvironmentProperties(self.theEnvironmentName,self.thePreconditions,self.theSteps,self.thePostconditions)
      self.theEnvironmentProperties.append(p)
      self.resetUseCaseEnvironmentAttributes()
    elif name == 'usecase':
      p = UseCaseParameters(self.theName,self.theAuthor,self.theCode,self.theActors,self.theDescription,self.theTags,self.theEnvironmentProperties)
      self.theUseCases.append(p)
      self.resetUseCaseAttributes()
    elif name == 'activities':
      self.inActivities = 0
    elif name == 'attitudes':
      self.inAttitudes = 0
    elif name == 'aptitudes':
      self.inAptitudes = 0
    elif name == 'motivations':
      self.inMotivations = 0
    elif name == 'skills':
      self.inSkills = 0
    elif name == 'intrinsic':
      self.inIntrinsic = 0
    elif name == 'contextual':
      self.inContextual = 0
    elif name == 'narrative':
      self.inNarrative = 0
    elif name == 'excerpt':
      self.inExcerpt = 0
    elif name == 'description':
      self.inDescription = 0
    elif name == 'definition':
      self.inDefinition = 0
    elif name == 'dependencies':
      self.inDependencies = 0
    elif name == 'objective':
      self.inObjective = 0
    elif name == 'preconditions':
      self.inPreconditions = 0
    elif name == 'postconditions':
      self.inPostconditions = 0
    elif name == 'benefits':
      self.inBenefits = 0
    elif name == 'consequences':
      self.inConsequences = 0
示例#8
0
文件: VillaEmo.py 项目: romatre/ggpl
 def get_steps(self):
     steps = Steps(steps=20, width=45, height=15, depth=84)
     return T([1, 2, 3])([229, 0, 0])(self.texture("steps.jpg", .5,
                                                   .5)(steps.render()))
示例#9
0
class UsabilityContentHandler(ContentHandler, EntityResolver):
    def __init__(self):
        self.thePersonas = []
        self.theExternalDocuments = []
        self.theDocumentReferences = []
        self.theConceptReferences = []
        self.thePersonaCharacteristics = []
        self.theTaskCharacteristics = []
        self.theTasks = []
        self.theUseCases = []
        b = Borg()
        self.configDir = b.configDir
        self.resetPersonaAttributes()
        self.resetDocumentReferenceAttributes()
        self.resetConceptReferenceAttributes()
        self.resetPersonaCharacteristicAttributes()
        self.resetTaskCharacteristicAttributes()
        self.resetTaskAttributes()
        self.resetUseCaseAttributes()

    def resolveEntity(self, publicId, systemId):
        return self.configDir + '/usability.dtd'

    def personas(self):
        return self.thePersonas

    def externalDocuments(self):
        return self.theExternalDocuments

    def documentReferences(self):
        return self.theDocumentReferences

    def conceptReferences(self):
        return self.theConceptReferences

    def personaCharacteristics(self):
        return self.thePersonaCharacteristics

    def taskCharacteristics(self):
        return self.theTaskCharacteristics

    def tasks(self):
        return self.theTasks

    def usecases(self):
        return self.theUseCases

    def resetPersonaAttributes(self):
        self.inActivities = 0
        self.inAttitudes = 0
        self.inAptitudes = 0
        self.inMotivations = 0
        self.inSkills = 0
        self.inIntrinsic = 0
        self.inContextual = 0
        self.theName = ''
        self.theTags = []
        self.theType = ''
        self.theImage = ''
        self.isAssumptionPersona = False
        self.theActivities = ''
        self.theAptitudes = ''
        self.theMotivations = ''
        self.theSkills = ''
        self.theIntrinsic = ''
        self.theContextual = ''
        self.theEnvironmentProperties = []
        self.resetPersonaEnvironmentAttributes()

    def resetPersonaEnvironmentAttributes(self):
        self.theEnvironmentName = ''
        self.theRoles = []
        self.isDirect = True
        self.inNarrative = 0
        self.theNarrative = ''

    def resetExternalDocumentAttributes(self):
        self.theName = ''
        self.theVersion = ''
        self.theDate = ''
        self.theAuthors = ''
        self.inDescription = 0
        self.theDescription = ''

    def resetDocumentReferenceAttributes(self):
        self.inExcerpt = 0
        self.theName = ''
        self.theContributor = ''
        self.theDocument = ''
        self.theExcerpt = ''

    def resetConceptReferenceAttributes(self):
        self.inDescription = 0
        self.theName = ''
        self.theConcept = ''
        self.theObject = ''
        self.theDescription = ''

    def resetPersonaCharacteristicAttributes(self):
        self.thePersona = ''
        self.theBvName = ''
        self.theModalQualifier = ''
        self.inDefinition = 0
        self.theDefinition = ''
        self.theGrounds = []
        self.theWarrants = []
        self.theRebuttals = []

    def resetTaskCharacteristicAttributes(self):
        self.theTask = ''
        self.theModalQualifier = ''
        self.inDefinition = 0
        self.theDefinition = ''
        self.theGrounds = []
        self.theWarrants = []
        self.theRebuttals = []

    def resetTaskAttributes(self):
        self.theName = ''
        self.theTags = []
        self.theCode = ''
        self.theAuthor = ''
        self.isAssumptionTask = False
        self.inObjective = 0
        self.theObjective = ''
        self.theEnvironmentProperties = []
        self.resetTaskEnvironmentAttributes()

    def resetTaskEnvironmentAttributes(self):
        self.theEnvironmentName = ''
        self.inDependencies = 0
        self.inNarrative = 0
        self.inConsequences = 0
        self.inBenefits = 0
        self.theDependencies = ''
        self.theNarrative = ''
        self.theConsequences = ''
        self.theBenefits = ''
        self.theTaskPersonas = []
        self.theConcerns = []
        self.theConcernAssociations = []

    def resetUseCaseAttributes(self):
        self.theName = ''
        self.theTags = []
        self.theAuthor = ''
        self.theCode = ''
        self.inDescription = 0
        self.theDescription = ''
        self.theActors = []
        self.theEnvironmentProperties = []
        self.resetUseCaseEnvironmentAttributes()

    def resetUseCaseEnvironmentAttributes(self):
        self.theEnvironmentName = ''
        self.inPreconditions = 0
        self.thePreconditions = ''
        self.inPostconditions = 0
        self.thePostconditions = ''
        self.theSteps = Steps()
        self.theCurrentStep = None
        self.theCurrentStepNo = 0
        self.theExcName = ''
        self.theExcType = ''
        self.theExcValue = ''
        self.theExcCat = ''
        self.inDefinition = 0
        self.theDefinition = ''

    def startElement(self, name, attrs):
        self.currentElementName = name
        if name == 'persona':
            self.theName = attrs['name']
            self.theType = attrs['type']
            self.theImage = attrs['image']
            if (attrs['assumption_persona'] == 'TRUE'):
                self.isAssumptionPersona = True
        elif name == 'persona_environment':
            self.theEnvironmentName = attrs['name']
            if (attrs['is_direct'] == 'FALSE'):
                self.isDirect = False
        elif name == 'persona_role':
            self.theRoles.append(attrs['name'])
        elif name == 'external_document':
            self.theName = attrs['name']
            self.theVersion = attrs['version']
            self.theDate = attrs['date']
            self.theAuthors = attrs['authors']
        elif name == 'document_reference':
            self.theName = attrs['name']
            self.theContributor = attrs['contributor']
            self.theDocument = attrs['document']
        elif name == 'concept_reference':
            self.theName = attrs['name']
            self.theConcept = attrs['concept']
            self.theObject = attrs['object']
        elif name == 'persona_characteristic':
            self.thePersona = attrs['persona']
            self.theBvName = u2s(attrs['behavioural_variable'])
            self.theModalQualifier = attrs['modal_qualifier']
        elif name == 'task_characteristic':
            self.theTask = attrs['task']
            self.theModalQualifier = attrs['modal_qualifier']
        elif name == 'grounds':
            refName = attrs['reference']
            refType = attrs['type']
            refArtifact = ''
            self.theGrounds.append((refName, '', refType))
        elif name == 'warrant':
            refName = attrs['reference']
            refType = attrs['type']
            refArtifact = ''
            self.theWarrants.append((refName, '', refType))
        elif name == 'rebuttal':
            refName = attrs['reference']
            refType = attrs['type']
            refArtifact = ''
            self.theRebuttals.append((refName, '', refType))
        elif name == 'task':
            self.theName = attrs['name']
            try:
                self.theCode = attrs['code']
            except KeyError:
                self.theCode = ''
            self.theAuthor = attrs['author']
            if (attrs['assumption_task'] == 'TRUE'):
                self.isAssumptionTask = True
        elif name == 'task_environment':
            self.theEnvironmentName = attrs['name']
        elif name == 'task_persona':
            self.theTaskPersonas.append(
                (attrs['persona'], durationValue(attrs['duration']),
                 frequencyValue(attrs['frequency']), attrs['demands'],
                 attrs['goal_conflict']))
        elif name == 'task_concern':
            self.theConcerns.append(attrs['asset'])
        elif name == 'task_concern_association':
            self.theConcernAssociations.append(
                (attrs['source_name'], a2s(attrs['source_nry']),
                 attrs['link_name'], attrs['target_name'],
                 a2s(attrs['target_nry'])))
        elif name == 'usecase':
            self.theName = attrs['name']
            self.theAuthor = attrs['author']
            self.theCode = attrs['code']
        elif name == 'actor':
            self.theActors.append(attrs['name'])
        elif name == 'usecase_environment':
            self.theEnvironmentName = attrs['name']
        elif name == 'step':
            self.theCurrentStepNo = attrs['number']
            self.theCurrentStep = Step(attrs['description'])
        elif name == 'exception':
            self.theExcName = attrs['name']
            self.theExcType = attrs['type']
            self.theExcValue = attrs['value']
            self.theExcCat = u2s(attrs['category'])
        elif name == 'activities':
            self.inActivities = 1
            self.theActivities = ''
        elif name == 'attitudes':
            self.inAttitudes = 1
            self.theAttitudes = ''
        elif name == 'aptitudes':
            self.inAptitudes = 1
            self.theAptitudes = ''
        elif name == 'motivations':
            self.inMotivations = 1
            self.theMotivations = ''
        elif name == 'skills':
            self.inSkills = 1
            self.theSkills = ''
        elif name == 'intrinsic':
            self.inIntrinsic = 1
            self.theIntrinsic = ''
        elif name == 'contextual':
            self.inContextual = 1
            self.theContextual = ''
        elif name == 'narrative':
            self.inNarrative = 1
            self.theNarrative = ''
        elif name == 'consequences':
            self.inConsequences = 1
            self.theConsequences = ''
        elif name == 'benefits':
            self.inBenefits = 1
            self.theBenefits = ''
        elif name == 'excerpt':
            self.inExcerpt = 1
            self.theExcerpt = ''
        elif name == 'description':
            self.inDescription = 1
            self.theDescription = ''
        elif name == 'definition':
            self.inDefinition = 1
            self.theDefinition = ''
        elif name == 'dependencies':
            self.inDependencies = 1
            self.theDependencies = ''
        elif name == 'objective':
            self.inObjective = 1
            self.theObjective = ''
        elif name == 'preconditions':
            self.inPreconditions = 1
            self.thePreconditions = ''
        elif name == 'postconditions':
            self.inPostconditions = 1
            self.thePostconditions = ''
        elif name == 'tag':
            self.theTags.append(attrs['name'])

    def characters(self, data):
        if self.inActivities:
            self.theActivities += data
        elif self.inAttitudes:
            self.theAttitudes += data
        elif self.inAptitudes:
            self.theAptitudes += data
        elif self.inMotivations:
            self.theMotivations += data
        elif self.inSkills:
            self.theSkills += data
        elif self.inIntrinsic:
            self.theIntrinsic += data
        elif self.inContextual:
            self.theContextual += data
        elif self.inConsequences:
            self.theConsequences += data
        elif self.inBenefits:
            self.theBenefits += data
        elif self.inExcerpt:
            self.theExcerpt += data
        elif self.inDescription:
            self.theDescription += data
        elif self.inDefinition:
            self.theDefinition += data
        elif self.inDependencies:
            self.theDependencies += data
        elif self.inObjective:
            self.theObjective += data
        elif self.inPreconditions:
            self.thePreconditions += data
        elif self.inPostconditions:
            self.thePostconditions += data
        elif self.inNarrative:
            self.theNarrative += data

    def endElement(self, name):
        if name == 'persona':
            p = PersonaParameters(self.theName, self.theActivities,
                                  self.theAttitudes, self.theAptitudes,
                                  self.theMotivations, self.theSkills,
                                  self.theIntrinsic, self.theContextual,
                                  self.theImage, self.isAssumptionPersona,
                                  self.theType, self.theTags,
                                  self.theEnvironmentProperties, {})
            self.thePersonas.append(p)
            self.resetPersonaAttributes()
        elif name == 'persona_environment':
            p = PersonaEnvironmentProperties(self.theEnvironmentName,
                                             self.isDirect, self.theNarrative,
                                             self.theRoles, {'narrative': {}})
            self.theEnvironmentProperties.append(p)
            self.resetPersonaEnvironmentAttributes()
        elif name == 'external_document':
            p = ExternalDocumentParameters(self.theName, self.theVersion,
                                           self.theDate, self.theAuthors,
                                           self.theDescription)
            self.theExternalDocuments.append(p)
            self.resetExternalDocumentAttributes()
        elif name == 'document_reference':
            p = DocumentReferenceParameters(self.theName, self.theDocument,
                                            self.theContributor,
                                            self.theExcerpt)
            self.theDocumentReferences.append(p)
            self.resetDocumentReferenceAttributes()
        elif name == 'concept_reference':
            p = ConceptReferenceParameters(self.theName, self.theConcept,
                                           self.theObject, self.theDescription)
            self.theConceptReferences.append(p)
            self.resetConceptReferenceAttributes()
        elif name == 'persona_characteristic':
            p = PersonaCharacteristicParameters(
                self.thePersona, self.theModalQualifier, self.theBvName,
                self.theDefinition, self.theGrounds, self.theWarrants, [],
                self.theRebuttals)
            self.thePersonaCharacteristics.append(p)
            self.resetPersonaCharacteristicAttributes()
        elif name == 'task_characteristic':
            p = TaskCharacteristicParameters(self.theTask,
                                             self.theModalQualifier,
                                             self.theDefinition,
                                             self.theGrounds, self.theWarrants,
                                             [], self.theRebuttals)
            self.theTaskCharacteristics.append(p)
            self.resetTaskCharacteristicAttributes()
        elif name == 'task':
            p = TaskParameters(self.theName, self.theCode, self.theObjective,
                               self.isAssumptionTask, self.theAuthor,
                               self.theTags, self.theEnvironmentProperties)
            self.theTasks.append(p)
            self.resetTaskAttributes()
        elif name == 'task_environment':
            p = TaskEnvironmentProperties(
                self.theEnvironmentName, self.theDependencies,
                self.theTaskPersonas, self.theConcerns,
                self.theConcernAssociations, self.theNarrative,
                self.theConsequences, self.theBenefits, {
                    'narrative': {},
                    'consequences': {},
                    'benefits': {}
                })
            self.theEnvironmentProperties.append(p)
            self.resetTaskEnvironmentAttributes()
        elif name == 'exception':
            self.theCurrentStep.addException(
                (self.theExcName, self.theExcType, self.theExcValue,
                 self.theExcCat, self.theDefinition))
        elif name == 'step':
            self.theCurrentStep.setTags(self.theTags)
            self.theSteps.append(self.theCurrentStep)
            self.theCurrentStep = None
        elif name == 'usecase_environment':
            p = UseCaseEnvironmentProperties(self.theEnvironmentName,
                                             self.thePreconditions,
                                             self.theSteps,
                                             self.thePostconditions)
            self.theEnvironmentProperties.append(p)
            self.resetUseCaseEnvironmentAttributes()
        elif name == 'usecase':
            p = UseCaseParameters(self.theName, self.theAuthor, self.theCode,
                                  self.theActors, self.theDescription,
                                  self.theTags, self.theEnvironmentProperties)
            self.theUseCases.append(p)
            self.resetUseCaseAttributes()
        elif name == 'activities':
            self.inActivities = 0
        elif name == 'attitudes':
            self.inAttitudes = 0
        elif name == 'aptitudes':
            self.inAptitudes = 0
        elif name == 'motivations':
            self.inMotivations = 0
        elif name == 'skills':
            self.inSkills = 0
        elif name == 'intrinsic':
            self.inIntrinsic = 0
        elif name == 'contextual':
            self.inContextual = 0
        elif name == 'narrative':
            self.inNarrative = 0
        elif name == 'excerpt':
            self.inExcerpt = 0
        elif name == 'description':
            self.inDescription = 0
        elif name == 'definition':
            self.inDefinition = 0
        elif name == 'dependencies':
            self.inDependencies = 0
        elif name == 'objective':
            self.inObjective = 0
        elif name == 'preconditions':
            self.inPreconditions = 0
        elif name == 'postconditions':
            self.inPostconditions = 0
        elif name == 'benefits':
            self.inBenefits = 0
        elif name == 'consequences':
            self.inConsequences = 0