Reengineering Java to PHP

I need to use a existing UMLLab-Generated UML from Java-Code zu generate PHP-Code-Basic.
I think it shuld work, but I don't know how I can do this. Copy the uml/umlcd to a new Projekt doesn't work ... it find the old code ;-)

Comments

  • Hi Daniel,

    You can copy the model (*.uml) and the class diagram (*.umlcd) to another project to generate code. But - as you recognized - the model is still connected to the old source code files. This connection is declared in the model itself.

    To release these connections, open your diagram and choose the Round-Trip-Engineering tab in the Eclipse Properties View. Click the button "Cleanup Associated Files...". The dialog shows a list of files that is associated to your model. Remove all files from that list and save your model. Now you can copy model and diagram and UML Lab won't perform a reverse engineering on the initial opening.

    If you generate code from your copied model, you'll recognize that the generated code isn't equal to the old code. There will be differences in whitespaces for example. This is because UML Lab keeps code details to your model in a different location. If you want UML Lab to generate the original code from your model exactly, you have to copy the code details, too.

    The code details are kept within the project's metadata. To get the code details into your project workspace, right click on the *.uml model file in the Eclipse Package Explorer and choose "UML Lab" -> "Toggle: Copy Code Details for Build Server".

    If you have any questions, don't hesitate asking.

    Manuel
  • it works :-)

    Klappt wunderbar:
    1) Java-Projekt (aus SVN einchecken)
    2) NameSpace-Root im Package-Explorer -> Rechtsklick -> UMLLab -> ReverseEngineering...
    3) Properties (gehen auf wenn man ins Model klickt - an eine freie Stelle, also keine Klasse auswählen....)
    4) Vorletztes Menü "Round-Trip-En..."
    5) rechter unterster Knopf "clean associated files"
    6) alle markieren und löschen
    7) wieder zurück in "Round-Tr..."
    8) Output-Dir ändern (da wo PHP-Code hin soll)
    9) Code-Syle (links unten immer noch Properties..)
    10) dort PHP anklicken (Java nicht... keine Codesyles auswählen ... ungetestet)
    11) nach dem Speichern im Package-Explorer rechtsklick und Copy ... dann zum Ziel-Ordner navigieren und rechtsklick Paste.
    12) Modell öffnen, Einstellungen kontrollieren (vor allem die Zieleinstellungen Punkt 8)
    13) wieder an freie Stelle im Model: Rechtsklick und "generate Code"
    14) Nicht wundern, dass da Dinge im Code drin sind, die man nicht kennt. Logisch denken und Unbekanntes logisch und methodisch ersetzen. Tipp: Testgetrieben (selber basteln: index.php... include... new Klasse() und los gehts...)

    Einige Java-Klassen werden in PHP generiert. Es gibt schon ein paar sprachbedingte Stolperfallen. PHP hat z.B. keine Hashmap. Da baut man ein Array.
    Das Typehinting muss man selber anpassen oder weg löschen.
    PHP kennt zwar Klassen->Methoden, aber das scheint nicht zu funktionieren. Muss man so machen:
    Generierte Konstruktion löschen (z.B. klassenname->tolleMethode())
    und statt dessen:

    $klassenobj = new Klassenname();
    $klassenobj->tolleMethode();
    Dabei spielen dann wohl immer statics mit (z.B. public static $objectCounter;)


    Ein Problem habe ich momentan: Die generierten Namespaces funktionieren nicht. PHP 5.3.2... MAMP...
    (ist neu für mich)
    Ich versuche momentan alles mit require_once zu lösen. Ist echt Mist mit so einer Namespace-Struktur. Evtl. muss man noch irgendwo eine Autoload-Funktion bauen?

    Soweit mein Erfolgsbericht - und danke an Manuel Borg - hat mir sehr geholfen :-)

    Hoffe das deutsch Feedback hilft jemandem :-)


  • Super, schön dass es geklappt hat.
Sign In or Register to comment.