You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
340 lines
8.5 KiB
340 lines
8.5 KiB
/***************************************************************************
|
|
* *
|
|
* 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 <tqregexp.h>
|
|
#include <tdeconfig.h>
|
|
#include <kdebug.h>
|
|
#include <tdelocale.h>
|
|
#include <tdemessagebox.h>
|
|
|
|
// local includes
|
|
#include "javacodecomment.h"
|
|
#include "codeviewerdialog.h"
|
|
#include "../uml.h"
|
|
|
|
const bool JavaCodeGenerator::DEFAULT_BUILD_ANT_DOC = false;
|
|
|
|
// Constructors/Destructors
|
|
//
|
|
|
|
JavaCodeGenerator::JavaCodeGenerator (TQDomElement & 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 ( TQWidget* 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 ();
|
|
}
|
|
|
|
TQString JavaCodeGenerator::getListFieldClassName () {
|
|
return TQString("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"
|
|
TQString JavaCodeGenerator::fixTypeName(const TQString &string)
|
|
{
|
|
if (string.isEmpty() || string.contains(TQRegExp("^\\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);
|
|
}
|
|
|
|
TQStringList JavaCodeGenerator::defaultDatatypes() {
|
|
TQStringList 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 TQStringList JavaCodeGenerator::reservedKeywords() const {
|
|
|
|
static TQStringList 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"
|
|
|