summaryrefslogtreecommitdiffstats
path: root/umbrello/umbrello/codegenerators/javacodegenerator.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'umbrello/umbrello/codegenerators/javacodegenerator.cpp')
-rw-r--r--umbrello/umbrello/codegenerators/javacodegenerator.cpp339
1 files changed, 339 insertions, 0 deletions
diff --git a/umbrello/umbrello/codegenerators/javacodegenerator.cpp b/umbrello/umbrello/codegenerators/javacodegenerator.cpp
new file mode 100644
index 00000000..167804af
--- /dev/null
+++ b/umbrello/umbrello/codegenerators/javacodegenerator.cpp
@@ -0,0 +1,339 @@
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * copyright (C) 2004-2006 *
+ * Umbrello UML Modeller Authors <uml-devel@uml.sf.net> *
+ ***************************************************************************/
+
+/* This code generated by:
+ * Author : thomas
+ * Date : Thu Jun 19 2003
+ */
+
+// own header
+#include "javacodegenerator.h"
+
+// qt/kde includes
+#include <qregexp.h>
+#include <kconfig.h>
+#include <kdebug.h>
+#include <klocale.h>
+#include <kmessagebox.h>
+
+// local includes
+#include "javacodecomment.h"
+#include "codeviewerdialog.h"
+#include "../uml.h"
+
+const bool JavaCodeGenerator::DEFAULT_BUILD_ANT_DOC = false;
+
+// Constructors/Destructors
+//
+
+JavaCodeGenerator::JavaCodeGenerator (QDomElement & elem)
+ : CodeGenerator(elem)
+{
+ init();
+}
+
+JavaCodeGenerator::JavaCodeGenerator ()
+{
+ init();
+}
+
+JavaCodeGenerator::~JavaCodeGenerator ( ) { }
+
+//
+// Methods
+//
+
+// Accessor methods
+//
+
+// return our language
+Uml::Programming_Language JavaCodeGenerator::getLanguage() {
+ return Uml::pl_Java;
+}
+
+/**
+ * Set the value of m_createANTBuildFile
+ * @param new_var the new value of m_createANTBuildFile
+ */
+void JavaCodeGenerator::setCreateANTBuildFile ( bool buildIt) {
+ m_createANTBuildFile = buildIt;
+ CodeDocument * antDoc = findCodeDocumentByID("ANTDOC");
+ if (antDoc)
+ antDoc->setWriteOutCode(buildIt);
+}
+
+/**
+ * Get the value of m_createANTBuildFile
+ * @return the value of m_createANTBuildFile
+ */
+bool JavaCodeGenerator::getCreateANTBuildFile ( ) {
+ return m_createANTBuildFile;
+}
+
+// In the Java version, we make the ANT build file also available.
+CodeViewerDialog * JavaCodeGenerator::getCodeViewerDialog ( QWidget* parent, CodeDocument *doc,
+ Settings::CodeViewerState state)
+{
+ CodeViewerDialog *dialog = new CodeViewerDialog(parent, doc, state);
+ if(getCreateANTBuildFile())
+ dialog->addCodeDocument(findCodeDocumentByID("ANTDOC"));
+ return dialog;
+}
+
+
+JavaCodeGenerationPolicy * JavaCodeGenerator::getJavaPolicy() {
+ return dynamic_cast<JavaCodeGenerationPolicy*>(UMLApp::app()->getPolicyExt());
+}
+
+bool JavaCodeGenerator::getAutoGenerateAttribAccessors ( )
+{
+ return getJavaPolicy()->getAutoGenerateAttribAccessors ();
+}
+
+bool JavaCodeGenerator::getAutoGenerateAssocAccessors ( )
+{
+ return getJavaPolicy()->getAutoGenerateAssocAccessors ();
+}
+
+QString JavaCodeGenerator::getListFieldClassName () {
+ return QString("Vector");
+}
+
+// Other methods
+//
+
+// IF the type is "string" we need to declare it as
+// the Java Object "String" (there is no string primative in Java).
+// Same thing again for "bool" to "boolean"
+QString JavaCodeGenerator::fixTypeName(const QString &string)
+{
+ if (string.isEmpty() || string.contains(QRegExp("^\\s+$")))
+ return "void";
+ if (string == "string")
+ return "String";
+ if (string == "bool")
+ return "boolean";
+ return cleanName(string);
+}
+
+/**
+ * @return JavaANTCodeDocument
+ */
+JavaANTCodeDocument * JavaCodeGenerator::newANTCodeDocument ( ) {
+ return new JavaANTCodeDocument();
+}
+
+/**
+ * @return ClassifierCodeDocument
+ * @param classifier
+ */
+CodeDocument * JavaCodeGenerator::newClassifierCodeDocument ( UMLClassifier * c)
+{
+ JavaClassifierCodeDocument * doc = new JavaClassifierCodeDocument(c);
+ doc->initCodeClassFields();
+ return doc;
+}
+
+void JavaCodeGenerator::init() {
+ // load Classifier documents from parent document
+ //initFromParentDocument();
+
+ // add in an ANT document
+ JavaANTCodeDocument * buildDoc = newANTCodeDocument( );
+ addCodeDocument(buildDoc);
+
+ // set our 'writeout' policy for that code document
+ setCreateANTBuildFile(DEFAULT_BUILD_ANT_DOC);
+}
+
+QStringList JavaCodeGenerator::defaultDatatypes() {
+ QStringList l;
+ l.append("int");
+ l.append("char");
+ l.append("boolean");
+ l.append("float");
+ l.append("double");
+ l.append("byte");
+ l.append("short");
+ l.append("long");
+ l.append("String");
+ return l;
+}
+
+const QStringList JavaCodeGenerator::reservedKeywords() const {
+
+ static QStringList keywords;
+
+ if (keywords.isEmpty()) {
+ keywords << "abstract"
+ << "AbstractMethodError"
+ << "ArithmeticException"
+ << "ArrayIndexOutOfBoundsException"
+ << "ArrayStoreException"
+ << "assert"
+ << "AssertionError"
+ << "auto"
+ << "boolean"
+ << "Boolean"
+ << "break"
+ << "byte"
+ << "Byte"
+ << "catch"
+ << "char"
+ << "Character"
+ << "CharSequence"
+ << "Class"
+ << "ClassCastException"
+ << "ClassCircularityError"
+ << "ClassFormatError"
+ << "ClassLoader"
+ << "ClassNotFoundException"
+ << "clone"
+ << "Cloneable"
+ << "CloneNotSupportedException"
+ << "Comparable"
+ << "Compiler"
+ << "const"
+ << "continue"
+ << "default"
+ << "delete"
+ << "do"
+ << "double"
+ << "Double"
+ << "else"
+ << "enum"
+ << "equals"
+ << "Error"
+ << "Exception"
+ << "ExceptionInInitializerError"
+ << "extends"
+ << "extern"
+ << "false"
+ << "final"
+ << "finalize"
+ << "finally"
+ << "float"
+ << "Float"
+ << "for"
+ << "friend"
+ << "getClass"
+ << "goto"
+ << "hashCode"
+ << "if"
+ << "IllegalAccessError"
+ << "IllegalAccessException"
+ << "IllegalArgumentException"
+ << "IllegalMonitorStateException"
+ << "IllegalStateException"
+ << "IllegalThreadStateException"
+ << "implements"
+ << "import"
+ << "IncompatibleClassChangeError"
+ << "IndexOutOfBoundsException"
+ << "InheritableThreadLocal"
+ << "inline"
+ << "instanceof"
+ << "InstantiationError"
+ << "InstantiationException"
+ << "int"
+ << "Integer"
+ << "interface"
+ << "InternalError"
+ << "InterruptedException"
+ << "LinkageError"
+ << "long"
+ << "Long"
+ << "Math"
+ << "native"
+ << "NegativeArraySizeException"
+ << "new"
+ << "nextgroup=javaUserLabelRef"
+ << "NoClassDefFoundError"
+ << "NoSuchFieldError"
+ << "NoSuchFieldException"
+ << "NoSuchMethodError"
+ << "NoSuchMethodException"
+ << "notify"
+ << "notifyAll"
+ << "null"
+ << "NullPointerException"
+ << "Number"
+ << "NumberFormatException"
+ << "Object"
+ << "operator"
+ << "OutOfMemoryError"
+ << "package"
+ << "Package"
+ << "private"
+ << "Process"
+ << "protected"
+ << "public"
+ << "redeclared"
+ << "register"
+ << "return"
+ << "Runnable"
+ << "Runtime"
+ << "RuntimeException"
+ << "RuntimePermission"
+ << "SecurityException"
+ << "SecurityManager"
+ << "serializable"
+ << "short"
+ << "Short"
+ << "signed"
+ << "sizeof"
+ << "skipwhite"
+ << "StackOverflowError"
+ << "StackTraceElement"
+ << "static"
+ << "strictfp"
+ << "StrictMath"
+ << "String"
+ << "StringBuffer"
+ << "StringIndexOutOfBoundsException"
+ << "struct"
+ << "super"
+ << "switch"
+ << "synchronized"
+ << "template"
+ << "this"
+ << "Thread"
+ << "ThreadDeath"
+ << "ThreadGroup"
+ << "ThreadLocal"
+ << "throw"
+ << "Throwable"
+ << "throws"
+ << "toString"
+ << "transient"
+ << "true"
+ << "try"
+ << "typedef"
+ << "union"
+ << "UnknownError"
+ << "UnsatisfiedLinkError"
+ << "unsigned"
+ << "UnsupportedClassVersionError"
+ << "UnsupportedOperationException"
+ << "VerifyError"
+ << "VirtualMachineError"
+ << "void"
+ << "Void"
+ << "volatile"
+ << "wait"
+ << "while";
+ }
+
+ return keywords;
+}
+
+#include "javacodegenerator.moc"
+