/// <summary> /// Färbt alle Methodennamen gelb und Eigenschaftsnamen weiß, damit fals sie Keywords enthalten weiß bleiben. /// </summary> /// <param name="dtm">Das Datamodel damit nach den Methoden und Eigenschaftsnamen gesucht werden kann.</param> public void GiveColorNames(Datamodel.Datamodel dtm) { foreach (UML_Class umlClass in dtm.umlClasses) { foreach (UML_Method umlMethod in umlClass.umlMethods) { GetNames <UML_Method>(umlMethod, Color.Khaki, "(", false); } foreach (UML_Attribute umlAttribute in umlClass.umlAttributes) { GetNames <UML_Attribute>(umlAttribute, Color.White, " { get;", false); } GetNames <UML_Class>(umlClass, Color.MediumAquamarine, "class ", true); } foreach (UML_Interface umlInterface in dtm.umlInterfaces) { foreach (UML_Method umlMethod in umlInterface.umlMethods) { GetNames <UML_Method>(umlMethod, Color.Khaki, "(", false); } foreach (UML_Attribute umlAttribute in umlInterface.umlAttributes) { GetNames <UML_Attribute>(umlAttribute, Color.White, " { get;", false); } GetNames <UML_Interface>(umlInterface, Color.LightGreen, "interface ", true); } }
/// <summary> /// Beschreibt die Preview-TextBox, indem es aus dem Datamodel die Klassen ausliest /// und bei jeder Klassendatei den gesamten Inhalt ausliest /// </summary> /// <param name="FilePath_Output">der Ausgabepfad damit der Reader weiss, wo er lesen soll</param> /// <param name="dtm">das Datamodel, um die erstellten Klassen zu ermitteln</param> /// <returns>true, wenn keine Exception ausgelöst wurde.</returns> public bool WritePrewiev(string FilePath_Output, Datamodel.Datamodel dtm) { try { PreviewTextBox.Text = ""; // Die Dateien im Ausgabepfad werden nacheinander mit StreamReader gelesen und in die PreviewTextBox geschrieben. foreach (UML_Class umlClass in dtm.umlClasses) { string filePath = FilePath_Output + "\\" + umlClass.name + ".cs"; AddingFileToTextBox(filePath); } foreach (UML_Interface umlInterface in dtm.umlInterfaces) { string filePath = FilePath_Output + "\\" + umlInterface.name + ".cs"; AddingFileToTextBox(filePath); } // Der Text wird wie in Visual Studio gefärbt GiveColorKeywords(); GiveColorNames(dtm); } catch (Exception) { new Form2("Wir bitten um Entschuldigung, da ist etwas im System falsch gelaufen. Bitte wenden Sie sich an den Hersteller!").ShowDialog(); this.Show(); } return(true); }
private static bool StartProcess(string filePath_Model, string filePath_Output) { Reader.Reader reader = new Reader.Reader(filePath_Model); Datamodel.Datamodel datamodel = reader.getDatamodel(); Generator.Generator generator = new Generator.Generator(filePath_Output, datamodel); return(generator.generateCode()); }
/// <summary> /// Erstellt Reader und Generator und führt deren Interface-Methoden aus. /// </summary> /// <param name="filePath_Model">Gibt dem Reader den Dateipfad mit.</param> /// <param name="filePath_Output">Gibt dem Generator den Ausgabepfad mit.</param> public Datamodel.Datamodel ExchangeData(string filePath_Model, string filePath_Output) { Reader.Reader reader = new Reader.Reader(filePath_Model); Datamodel.Datamodel datamodel = reader.getDatamodel(); Generator.Generator generator = new Generator.Generator(filePath_Output, datamodel); if (generator.generateCode()) { return(datamodel); } else { return(null); } }
/// <summary> /// Interface-Methode StartProcess(). Wenn Berechtigung auf Graphml-Datei erlaubt ist, /// ruft sie ExchangeData() auf. Fängt Exceptions auf und gibt ihre Messages der GUI zurück. /// </summary> /// <param name="filePath_Model">Graphml-Dateipfad als string vom GUI</param> /// <param name="filePath_Output">Ausgabepfad als string vom GUI</param> /// <returns>string, wenn eine Exception abgefangen wird oder null, wenn nicht </returns> public string StartProcess(string filePath_Model, string filePath_Output, out Datamodel.Datamodel dtm) { if (CheckPermission(filePath_Output)) { try { dtm = ExchangeData(filePath_Model, filePath_Output); return(null); } catch (DatamodelMissingContentException e) { dtm = null; return(e.Message); } catch (DatamodelMissingInformationException e) { dtm = null; return(e.Message); } catch (InvalidUMLShapesException e) { dtm = null; return(e.Message); } catch (InvalidMethodParameterException e) { dtm = null; return(e.Message); } // Wenn eine andere, für den Nutzer unwichtige, Exception ausgelöst wird, wird der Text zurückgegeben. catch (Exception) { dtm = null; return("Wir bitten um Entschuldigung, da ist etwas im System falsch gelaufen. Bitte wenden Sie sich an den Hersteller!"); } } // Wenn CheckPermission false zurückgibt, wird der entsprechende Text zurückgegeben. else { dtm = null; return("Dateien konnten im ausgewählten Verzeichnis nicht erstellt werden. Schreibberechtigung verweigert! Bitte überprüfen Sie die Eigenschaften des Verzeichnisses oder ändern Sie den Ausgabeort!"); } }
/// <summary> /// Main method creating the whole datamodel /// </summary> /// <param name="filepath"> Path of the file which was received from Controller Component</param> /// <returns></returns> public Datamodel.Datamodel createDatamodel() { Datamodel.Datamodel datamodel = null; datamodel = new Datamodel.Datamodel(); List <UML_Base> baseModel = AnalyzeNode(); foreach (var item in baseModel) { if (item.GetType() == typeof(UML_Class) && baseModel != null) { datamodel.umlClasses.Add((UML_Class)item); } if (item.GetType() == typeof(UML_Interface) && baseModel != null) { datamodel.umlInterfaces.Add((UML_Interface)item); } } return(datamodel); }
// Interface Method to get datamodel for other components public CodeGenerator.Datamodel.Datamodel getDatamodel() { Datamodel.Datamodel datamodel = createDatamodel(); return(datamodel); }