1. 03 Jul, 2014 8 commits
  2. 02 Jul, 2014 1 commit
  3. 01 Jul, 2014 5 commits
    • Ralf Habacker's avatar
    • Oliver Kellogg's avatar
      umbrello/uml.cpp · 3b638620
      Oliver Kellogg authored
      - In function setGenerator() revert part of commit ea25b643 which returns
        preexisting m_codegen if (m_codegen->language() == pl).
      
      umbrello/codegenerators/codegenerator.{h,cpp}
      - New virtual function finalizeRun() with empty default implementation can
        be reimplemented by concrete code generators to perform additional
        cleanups or other actions that can only be performed once all code has
        been written. The function is called in writeCodeToFile() after return
        from writeListedCodeDocsToFile().
      
      umbrello/codegenerators/simplecodegenerator.cpp
      - In function writeCodeToFile(), utilize writeCodeToFile(concepts) for
        minimizing code duplication.
      - In function writeCodeToFile(UMLClassifierList&),
        - do not writeClass(c) if Model_Utils::isCommonDataType(c->name());
        - call finalizeRun() after foreach loop over `concepts'.
      
      umbrello/codegenerators/ada/adawriter.{h,cpp}
      - Add `static' on declaration of functions isOOClass() and packageName().
      - New function declareClass() factors trunk of Ada declaration which is
        common to partial (public) and full (private) view.
      - Reimplement function finalizeRun() from CodeGenerator: Cumulative
        generation of the private part is moved from writeClass() to here.
      - New member m_pkgsGenerated is required for closing opened files in
        finalizeRun().
      - New member m_classesGenerated is required for ensuring that order of code
        generation is consistent with order of dependencies among classifiers in
        the package.
      
      umbrello/codegenerators/ada/adawriter.cpp function writeClass()
      - Return immediately without further action if `c' is already present in
        m_classesGenerated.
      - If `pkg' is found in m_pkgsGenerated then do not open file / write
        initial declarations but instead use the value() of the PackageFileMap::
        iterator found for `file'.
      - If `pkg' is found in m_pkgsGenerated then:
        - Open file and write initial declarations; in loop over `imports', do not
          write "with" if packageName(con) does not match `pkg'.
        - Assign `file' into m_pkgsGenerated[pkg].
      - Before declaring the Ada type mapped from `c', loop over
        c->getSuperClasses() and ensure that superclasses in same package are
        written beforehand.
      - Move all aggregation/composition/attribute handling to finalizeRun().
      
      umbrello/codegenerators/ada/adawriter.cpp function reservedKeywords()
      - Add Ada2005 reserved word "interface".
      
      BUG:336933
      3b638620
    • Oliver Kellogg's avatar
    • Oliver Kellogg's avatar
      umbrello/codegenerators/cpp/cppwriter.cpp · bbc6f725
      Oliver Kellogg authored
      - In function writeClassDecl() remove extraneous generated ';' after closing
        of namespace.
      bbc6f725
    • Ralf Habacker's avatar
      Fix bug not placing class N1::A below N1 package in tree view. · b37eebda
      Ralf Habacker authored
      The problem was, that Import_Utils::createUMLObject() tries to find an object
      in different namespaces and only creates an uml object if not found.
      
      In the case of parsing a c++ import class specification we simply need
      to create the related uml class object in the current namespace, which
      is provided by the additional parameter "doNotSearch".
      
      Related test case is https://bugs.kde.org/show_bug.cgi?id=336810#c10
      
      CCBUG:368810
      b37eebda
  4. 30 Jun, 2014 3 commits
  5. 28 Jun, 2014 4 commits
    • Oliver Kellogg's avatar
      umbrello/dialogs/pages/classgeneralpage.{h,cpp} · b10cdc25
      Oliver Kellogg authored
      umbrello/dialogs/dialog_utils.{h,cpp}
      - Move function insertStereotypesSorted() from ClassGeneralPage to
        Dialog_Utils.
      
      umbrello/dialogs/pages/associationgeneralpage.{h,cpp}
      - Allow for selection of stereotype in place of name.
      b10cdc25
    • Oliver Kellogg's avatar
    • Oliver Kellogg's avatar
      (In reply to comment #4) · f90f771b
      Oliver Kellogg authored
      > [...] Unfortunately the fix seems not to be complete because with
      > the following testcase class GlobalA is shown in Logical View but
      > assigned to namespace NameSpace which is wrong.
      
      Here is the fix for this case.
      The fixing of your other test cases is still wide open, help appreciated.
      
      umbrello/codeimport/kdevcppparser/cpptree2uml.cpp
      - In function parseBaseClause(), before calling
        Import_Utils::createUMLObject() for creating the parent object, call
        Import_Utils::putAtGlobalScope(true). After creation of parent object,
        call Import_Utils::putAtGlobalScope(false).
      
      CCBUG:336810
      f90f771b
    • Oliver Kellogg's avatar
      umbrello/codeimport/kdevcppparser/cpptree2uml.cpp · 0160b7d8
      Oliver Kellogg authored
      - In function parseBaseClause() first call Import_Utils::createUMLObject()
        for creating the parent object coresponding to baseName, and then call
          Import_Utils::createGeneralization(UMLClassifier*, UMLClassifier*)
        with the parent object obtained.
      
      umbrello/codeimport/import_utils.cpp
      - At function
          createGeneralization(UMLClassifier *child, const QString &parentName)
        mention its shortcoming and mention the preferred solution as applied
        above.
      
      BUG:336810
      0160b7d8
  6. 26 Jun, 2014 3 commits
  7. 25 Jun, 2014 6 commits
  8. 24 Jun, 2014 1 commit
    • Oliver Kellogg's avatar
      (In reply to comment #21) · 8449eba5
      Oliver Kellogg authored
      > [...]
      > This test case contains multiple class diagrams and exposes a bug in the
      > current import code:
      > Only the last of the class diagrams actually show up.
      
      Here is the fix:
      
      umbrello/umllistview.cpp
      - In function slotDiagramCreated(), use return value from
        findUMLObject(scene->folder()) as the `parent' argument in call to
        UMLListViewItem constructor.
      - In function slotObjectCreated(), use return value from
        findUMLObject(object->umlPackage()) for `parentItem' instead of using
        determineParentItem(object).
      
      umbrello/widgets/widget_factory.cpp
      - In function createWidget() handle type UMLObject::ot_Folder alongside
        ot_Package.
      
      umbrello/import_rose.{h,cpp}
      - At function loadFromMDL() change return type to pointer-to-UMLPackage.
        On non NULL parentPkg return result from handleControlledUnit();
        on NULL parentPkg return UMLDoc::m_root[Uml::ModelType::Logical].
      
      umbrello/petaltree2uml.h
      - At function petalTree2Uml() change return type to pointer-to-UMLPackage.
      
      umbrello/petaltree2uml.{h,cpp}
      - At function handleControlledUnit() change return type to ptr-to-UMLPackage.
        Return object created for controlled unit.
      - New function diagramType() maps Rose diagram keyword to corresponding
        Uml::DiagramType::Enum.
      - In function umbrellify(),
        - At handling of Class_Category attribute logical_models and SubSystem
          attribute physical_models, for the non controlled-unit case add handling
          of attributes logical_presentations and physical_presentations.
          If unit_reference_list is non empty then create a UML object of type
          ot_Folder instead of ot_Package.
        - At handling of {Class,UseCase,Module_,Process_}Diagram employ function
          diagramType(). Use `parentPkg' cast to UMLFolder* as the rootFolder in
          call to umlDoc->createDiagram().
      - At function petalTree2Uml(),
        - Choose attribute to find based on
          umlDoc->rootFolderType(Model_Utils::rootPackage(parentPkg)) :
          - For Uml::ModelType::Logical seek logical_models;
          - For Uml::ModelType::Component seek physical_models.
        - At definition of `atts' use the PetalNode::attributes() of the `models'
          found.
        - Return pointer to the UMLFolder which is created for the controlled unit.
      
      CCBUG:81364
      8449eba5
  9. 23 Jun, 2014 2 commits
  10. 22 Jun, 2014 1 commit
  11. 21 Jun, 2014 3 commits
    • Oliver Kellogg's avatar
      umbrello/petaltree2uml.{h,cpp} · 8a1e776b
      Oliver Kellogg authored
      umbrello/import_rose.cpp
      - Merge function importLogicalPresentations() into importView().
        To this end, add following arguments to importView():
        QString firstNodeName : Name of first node in the root category
                                is checked to be equal to this name.
        QString presentationsName : Name of attribute containing diagrams
                                is checked to be equal to this name.
      
      umbrello/petaltree2uml.cpp
      - In function clean() remove from start of `str' not only "Logical View::"
        but all scope prefixes. This mitigates oversizing of UseCaseView ellipse.
      - In function handleAssocView() avoid dereferencing roleview_list when NULL.
      - In function umbrellify(),
        - Handle component package "SubSystem" alongside "Class_Category".
        - At objType "Class" implement stereotype "CORBAInterface".
        - Add handling of "module" aka "Component".
        - At objType "Association" fix null-pointer test of `roles'.
        - Handle "Module_Diagram" and "Process_Diagram" alongside "ClassDiagram"
          and "UseCaseDiagram".
        - Handle "ModView" and "SubSysView" alongside "CategoryView", "ClassView",
          and "UseCaseView".
      8a1e776b
    • Oliver Kellogg's avatar
      umbrello/petaltree2uml.cpp · f0e30894
      Oliver Kellogg authored
      - In function handleAssocView(),
        - Add support for attribute "roleview_list";
        - Produce precise uError() message on errors decoding supplier/client.
      - In function umbrellify(),
        - At objType "Class_Category" add missing parentPkg->addObject(o).
        - At objTypes "Class" and "UseCase",
          - Use Object_Factory instead of Import_Utils for createUMLObject();
          - Add missing parentPkg->addObject(o).
        - At objType "Association" add missing assoc->setUMLPackage(parentPkg).
        - At objTypes "ClassDiagram" and "UseCaseDiagram" loop over `atts',
          - At objTypes "CategoryView" / "ClassView" / "UseCaseView" use default
            values for attributes "width" and "height" when not found;
          - Support objType "AssociationViewNew";
          - At objType "NoteView" add an artificial "quidu" attribute onto `attr'.
      - In function petalTree2Uml() use Object_Factory instead of Import_Utils for
        createUMLObject().
      f0e30894
    • Oliver Kellogg's avatar
      umbrello/petaltree2uml.cpp · 27fc09f2
      Oliver Kellogg authored
      - New function handleAssocView() is factored from function umbrellify()
        handling of objType "InheritView".
      - In function umbrellify(),
        - Extend handling of objType "InheritView" to also apply to "RealizeView";
        - Handle objTypes "AttachView" and "UsesView".
      27fc09f2
  12. 20 Jun, 2014 2 commits
    • Oliver Kellogg's avatar
      umbrello/petaltree2uml.cpp · ed4e5120
      Oliver Kellogg authored
      - In SuperclassesReader and RealizationsReader function insertAtParent()
        set the UMLPackage of `assoc' to that of m_classifier.
      - In function umbrellify(), map objType "InheritView" to AssociationWidget
        with association type Generalization.
      ed4e5120
    • Oliver Kellogg's avatar
      Address TODO of commit 8344d5f4, · 86642f13
      Oliver Kellogg authored
      > [...]
      > - At the code past the (parentPkg_sav != NULL) return,
      >  - Remove call to importLogicalView(); the code farther above in effect
      >    performs importLogicalView() but at the same time deals with controlled
      >    units. Perhaps should be refactored for clean separation of these tasks.
      
      umbrello/import_rose.cpp
      - In function loadFromMDL() move import of views for the case
        (parentPkg == NULL) from function petalTree2Uml(PetalNode*, UMLPackage*)
        to here.
      
      umbrello/petaltree2uml.h
      - Publish functions importView() and importLogicalPresentations(), they are
        now called directly by function loadFromMDL()
      - At function petalTree2Uml(PetalNode *root, UMLPackage *parentPkg) remove
        default value of parentPkg.
      
      umbrello/petaltree2uml.cpp
      - In class ParametersReader function insertAtParent(), generate a new ID for
        `item' if item->id() returns Uml::ID::None.
        Reason: Rose "object Parameter" does not include "quid".
      - In function umbrellify(PetalNode *node, UMLPackage *parentPkg),
        - Remove default value at parentPkg;
        - At objType "Class" support stereotype "Actor";
        - Support objType "UseCase";
        - At "ClassDiagram" and "UseCaseDiagram" nested objType "NoteView", map
          attribute "label" to NoteWidget documentation.
      - Remove function folderType();
      - Remove function umbrellify(PetalNode*, const QString&, UMLListViewItem*);
      - At function importLogicalPresentations(PetalNode*, const QString &) add
        argument UMLPackage *parent and pass parent into call of umbrellify();
      - Remove function importLogicalView();
      - At function importView() replace argument UMLListViewItem *lvParent by
        UMLPackage *parent.
      86642f13
  13. 19 Jun, 2014 1 commit
    • Oliver Kellogg's avatar
      umbrello/petaltree2uml.cpp function umbrellify(PetalNode*, UMLPackage*) · 8344d5f4
      Oliver Kellogg authored
      - At handling of (objType == "ClassDiagram" || objType == "UseCaseDiagram"),
        choose Uml::DiagramType and umlDoc->rootFolder() according to objType.
      - At the code past the (parentPkg_sav != NULL) return,
        - Remove call to importLogicalView(); the code farther above in effect
          performs importLogicalView() but at the same time deals with controlled
          units. Perhaps should be refactored for clean separation of these tasks.
        - Move call to importLogicalPresentations(root, "root_usecase_package") to
          the "import Use Case View" section.
      8344d5f4