Example #1
0
def getEntity():
    entity = request.form.get('entityUri', '')

    if entity:
        entityDict = ontologyStructureModel.Entity(entity).toDict()
        return json.dumps(entityDict)
    return ''
Example #2
0
    def constructMetaModel(self):
        allObjectsAndRelations = self.ir.getAllObjectsAndRelations()
        es = ontologyStructureModel.EntityStructure()
        entityToUriMap = {}
        for item in allObjectsAndRelations:
            e1 = ontologyStructureModel.Entity(item[0])
            e2 = ontologyStructureModel.Entity(item[2])
            es.addEntity(e1)
            es.addEntity(e2)
            entityToUriMap[explanationHelper.getNameFromUri(item[0])] = e1
            entityToUriMap[explanationHelper.getNameFromUri(item[2])] = e2
            es.addRelation(item[1], item[0], item[2])
            
        duplicates = {}
        for item in es.entities:
            if not explanationHelper.getNameFromUri(item.uri) in list(duplicates.keys()):
                duplicates[explanationHelper.getNameFromUri(item.uri)] = 1
            else:
                print('We got a duplicate key!')
                break

        print(duplicates)

        types = set()
        for item in es.entities:
            types.add(item.type)
        
        types = list(types)
        print('Types:')
        print(types)

        def getEntityType(entityUri):
            return entityToUriMap[explanationHelper.getNameFromUri(entityUri)].type

        typeRelations = []
        for item in es.relations:
            typeRelations.append({'name': item.name, 'source': getEntityType(item.source), 'target': getEntityType(item.target)})
        
        typeRelations = [dict(s) for s in set(frozenset(d.items()) for d in typeRelations)]

        print('Type relations:')
        print(typeRelations)

        typesAndRelations = {'types': types, 'relations': typeRelations}

        with open('C:/Users/SAMSUNG/Documents/ThesisProject/MasterThesisCode/Master-Thesis---OD3/Presentation/FlaskServer/static/ontologyRelations.js', 'w') as f:
            f.write(json.dumps(typesAndRelations))
    def generatePopupFigureDescription(self, figureUri):
        figureEntity = ontologyStructureModel.Entity(figureUri)

        template = explanationHelper.openText(
            'static/explanationTemplates/FigureSummary.txt')

        relatedEntityUris = [
            ontologyStructureModel.Entity(entity[1])
            for entity in self.informationRetriever.getRelations(
                figureUri, self.baseUri + 'models')
        ]
        summary = template.format(
            classes=self.classesToText(relatedEntityUris))
        question = {'sub': 'View diagrams', 'orginial': ''}

        figureid = 'popup_' + explanationHelper.diagramUriToFileName(
            explanationHelper.getNameFromUri(figureUri))
        figuretitle = explanationHelper.getNameOfEntity(figureEntity)
        figureSummary = ''

        entityid = 'popup_entity_overview_' + explanationHelper.diagramUriToFileName(
            explanationHelper.getNameFromUri(figureUri))
        entitySummary = ''

        relatedEntities = relatedEntityUris
        figureSection = sectionModel.Section(
            figureid,
            figuretitle,
            figureSummary,
            priority=5,
            sectionTextContent=[
                (explanationHelper.getNameFromUri(content[0]), content[1])
                for content in figureEntity.dataTypeProperties
            ])
        entitySection = self.createSection(relatedEntities, entityid,
                                           'Entities related to diagram',
                                           entitySummary)

        template = sectionModel.Template(question, summary)
        template.addSection(figureSection.toDict())
        template.addSection(entitySection.toDict())

        return template
Example #4
0
def getRelations():
    subject = request.form.get('subjectUri', '')
    relationType = request.form.get('relationUri', '')
    objectType = request.form.get('objectTypeUri', '')

    if subject:
        relations = [{
            'relationUri': pair[0],
            'entity': ontologyStructureModel.Entity(pair[1]).toDict()
        }
                     for pair in queryManager.getRelations(
                         subject, relationType, objectType)]
        return json.dumps(relations)
    return ''
Example #5
0
def popup_patternImplementation():
    patternUri = request.form.get('pattern', '')
    newWindowPath = request.form.get('newWindowPath', '')
    pattern = ontologyStructureModel.Entity(patternUri)

    overviewStructure = explanationGenerator.getOverviewPatternArchitecture(
        patternUri)
    physicalStructure = explanationGenerator.getFullPhyPatternArchitecture(
        patternUri)
    developmentStructure = explanationGenerator.getFullDevPatternArchitecture(
        patternUri)

    allEntities = overviewStructure.entities + physicalStructure.entities + developmentStructure.entities
    side_bar_diagram_file_paths = {
        diagram: 'static/images/' +
        explanationHelper.diagramUriToFileName(diagram) + '.png'
        for entity in allEntities for diagram in set(entity.diagrams)
    }

    explanation = {}
    explanation['popup_overview_pattern'] = {
        'description':
        explanationTemplates.generateSystemPatternsOverviewSummary(
            overviewStructure, pattern),
        'newWindowPath':
        newWindowPath
    }
    explanation['popup_physical_pattern'] = {
        'description':
        explanationTemplates.generateSpecificSystemPatternsDetailedSummary(
            physicalStructure, pattern),
        'newWindowPath':
        newWindowPath
    }
    explanation['popup_development_pattern'] = {
        'description':
        explanationTemplates.generateSpecificSystemPatternsDetailedSummary(
            developmentStructure, pattern),
        'newWindowPath':
        newWindowPath
    }

    return render_template(
        'popupInteractiveDiagram.html',
        side_bar_diagram_file_paths=side_bar_diagram_file_paths,
        explanations=explanation,
        newWindowPath=newWindowPath)
    def generatePatternFeatureImplementationSummary(self, mainEntityUri,
                                                    structure):

        mainEntity = ontologyStructureModel.Entity(mainEntityUri)
        impl = list(
            filter(lambda e: e.type == self.baseUri + 'ImplementationClass',
                   structure.entities))
        role = list(
            filter(lambda e: e.type == self.baseUri + 'Role',
                   structure.entities))
        arch = list(
            filter(lambda e: e.type == self.baseUri + 'ArchitecturalPattern',
                   structure.entities))
        developmentClasses = list(
            filter(lambda e: self.baseUri + 'DevelopmentClass' in e.supertypes,
                   structure.entities))
        developmentClassPackages = list(
            filter(
                lambda e: self.baseUri + 'DevelopmentClassPackage' in e.
                supertypes, structure.entities))
        developmentPackages = list(
            filter(
                lambda e: self.baseUri + 'DevelopmentPackage' in e.supertypes,
                structure.entities))

        template = explanationHelper.openText(
            'static/explanationTemplates/PatternViewImplementation.txt')
        summary = template.format(
            impl_class=self.styledName('Implementation classes', 'class-font',
                                       self.baseUri + 'ImplementationClass'),
            arch_patt=self.styledName('Architectural patterns', 'class-font',
                                      self.baseUri + 'ArchitecturalPattern'),
            path_inbetween=self.classesToText(structure.entities))
        question = self.getQuestion(summary)

        sectionImplOverview = ''
        sectionImplOverview = sectionImplOverview.format(
            main_entity=explanationHelper.getNameOfEntity(mainEntity))

        expTemplate = sectionModel.Template(question, summary)

        implSection = self.createSection(impl,
                                         'impl_section',
                                         'Implementation classes',
                                         summary=sectionImplOverview,
                                         priority=4)

        if developmentClasses:
            expTemplate.addSection(
                self.createSection(developmentClasses,
                                   'developmentClass_section',
                                   'Development classes',
                                   summary=self.sectionSummary(
                                       developmentClasses[0].type),
                                   priority=2).toDict())
        if developmentClassPackages:
            expTemplate.addSection(
                self.createSection(developmentClassPackages,
                                   'developmentClassPackage_section',
                                   'Development class packages',
                                   summary=self.sectionSummary(
                                       developmentClassPackages[0].type),
                                   priority=2).toDict())
        if developmentPackages:
            expTemplate.addSection(
                self.createSection(developmentPackages,
                                   'developmentPackage_section',
                                   'Development packages',
                                   summary=self.sectionSummary(
                                       developmentPackages[0].type),
                                   priority=2).toDict())

        sectionRoleOverview = ''
        roleSection = self.createSection(role,
                                         'role_section',
                                         'Roles',
                                         summary=sectionRoleOverview,
                                         priority=2)

        sectionArchOverview = ''
        archSection = self.createSection(arch,
                                         'arch_section',
                                         'Architectural patterns',
                                         summary=sectionArchOverview,
                                         priority=1)

        expTemplate.addSection(implSection.toDict())
        expTemplate.addSection(roleSection.toDict())
        expTemplate.addSection(archSection.toDict())

        return expTemplate
Example #7
0
def q7(architecturalPattern):
    fileName = 'q7_' + architecturalPattern
    if os.path.isfile('static\\saved_data\\' + fileName + '.pkl'):
        data = loadExplanation(fileName)
        structure = data['structure']
        overviewStructure = structure['overview']
        devStructure = structure['development']
        phyStructure = structure['physical']

        explanation = data['explanation']
        overviewExplanation = explanation['overview']
        devExplanation = explanation['development']
        phyExplanation = explanation['physical']

        sideBardiagram_file_paths = data['diagram_paths']
    else:
        structure = {}
        patternEntity = ontologyStructureModel.Entity(baseUri +
                                                      architecturalPattern)
        overviewStructure = structure[
            'overview'] = explanationGenerator.getOverviewPatternArchitecture(
                baseUri + architecturalPattern)
        devStructure = structure[
            'development'] = explanationGenerator.getFullDevPatternArchitecture(
                baseUri + architecturalPattern)
        phyStructure = structure[
            'physical'] = explanationGenerator.getFullPhyPatternArchitecture(
                baseUri + architecturalPattern)

        explanation = {}
        overviewExplanation = explanation[
            'overview'] = explanationTemplates.generateSystemPatternsOverviewSummary(
                overviewStructure, patternEntity)
        devExplanation = explanation[
            'development'] = explanationTemplates.generateSpecificSystemPatternsDetailedSummary(
                devStructure, patternEntity)
        phyExplanation = explanation[
            'physical'] = explanationTemplates.generateSpecificSystemPatternsDetailedSummary(
                phyStructure, patternEntity)

        allEntities = list(
            set(phyStructure.entities + devStructure.entities +
                overviewStructure.entities))
        sideBardiagram_file_paths = {
            diagram: 'static/images/' +
            explanationHelper.diagramUriToFileName(diagram) + '.png'
            for entity in allEntities for diagram in set(entity.diagrams)
        }

        saveExplanation(fileName, structure, explanation,
                        sideBardiagram_file_paths)

    return render_template(
        'childtemplate.html',
        diagram_path='static/ClusteringGraph.js',
        side_bar_diagram_file_paths=sideBardiagram_file_paths,
        entityData={
            'overview': {
                'tab_id': 'overview_view_tab',
                'tab_name': 'Overview',
                'entity_structure': json.dumps(overviewStructure.toDict()),
                'explanation': overviewExplanation
            },
            'physical': {
                'tab_id': 'physical_view_tab',
                'tab_name': 'Physical view',
                'entity_structure': json.dumps(phyStructure.toDict()),
                'explanation': phyExplanation
            },
            'development': {
                'tab_id': 'development_view_tab',
                'tab_name': 'Development view',
                'entity_structure': json.dumps(devStructure.toDict()),
                'explanation': devExplanation
            },
        })