[Ooc-checkins] libpobj/src/PObj Sql.Mod,1.32,1.33 ParseClassDef.Mod,1.89,1.90 CodeGenJava.Mod,1.58,1
Brought to you by:
mva
From: Michael v. A. <mv...@us...> - 2004-06-30 11:39:21
|
Update of /cvsroot/ooc/libpobj/src/PObj In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1706/src/PObj Modified Files: Sql.Mod ParseClassDef.Mod CodeGenJava.Mod Log Message: more compatbility hacks for the Java code generator. Index: Sql.Mod =================================================================== RCS file: /cvsroot/ooc/libpobj/src/PObj/Sql.Mod,v retrieving revision 1.32 retrieving revision 1.33 diff -u -d -r1.32 -r1.33 --- Sql.Mod 30 Jun 2004 09:45:36 -0000 1.32 +++ Sql.Mod 30 Jun 2004 11:39:12 -0000 1.33 @@ -64,7 +64,7 @@ dd.normalizeName := normalizeName; END SetNormalizeName; -PROCEDURE (dd: DataDefinition) [ABSTRACT] IdFieldType*(): MetaData.Type; +PROCEDURE (dd: DataDefinition) [ABSTRACT] IdFieldType*(javaTypeName: STRING): MetaData.Type; (**Return the field type that is to be used for all @ofield{MetaData.Class.idField}. *) END IdFieldType; @@ -628,9 +628,9 @@ (* Target specific overrides ------------------------------------------------------------------------ *) -PROCEDURE (dd: PostgreSQL) IdFieldType*(): MetaData.Type; +PROCEDURE (dd: PostgreSQL) IdFieldType*(javaTypeName: STRING): MetaData.Type; BEGIN - RETURN NEW(MetaData.Int32, NIL); + RETURN NEW(MetaData.Int32, javaTypeName); END IdFieldType; PROCEDURE (dd: Oracle) InsertPclassData(): BOOLEAN; @@ -638,11 +638,11 @@ RETURN TRUE; END InsertPclassData; -PROCEDURE (dd: Oracle) IdFieldType*(): MetaData.Type; +PROCEDURE (dd: Oracle) IdFieldType*(javaTypeName: STRING): MetaData.Type; BEGIN (* actually the SQL type being used is INTEGER, but the application's view is that of an opaque string *) - RETURN NEW(MetaData.String, NIL, 38, FALSE, + RETURN NEW(MetaData.String, javaTypeName, 38, FALSE, MetaData.restrictToAnything, NIL, 0); END IdFieldType; Index: CodeGenJava.Mod =================================================================== RCS file: /cvsroot/ooc/libpobj/src/PObj/CodeGenJava.Mod,v retrieving revision 1.58 retrieving revision 1.59 diff -u -d -r1.58 -r1.59 --- CodeGenJava.Mod 30 Jun 2004 09:45:36 -0000 1.58 +++ CodeGenJava.Mod 30 Jun 2004 11:39:12 -0000 1.59 @@ -199,6 +199,15 @@ sb.Append(' }'); END ForceLoadGlobals; +PROCEDURE TypeOfField(class: MetaData.Class; field: MetaData.Field): STRING; + BEGIN + WITH field: MetaData.IdField DO + RETURN field.type.javaTypeName; + ELSE + RETURN field.type.Name(class.module, MetaData.typeClassJava); + END; + END TypeOfField; + PROCEDURE Class(cd: MetaData.Dictionary; sb: StringBuffer.StringBuffer; baseClass: STRING; @@ -245,11 +254,7 @@ Ln; sb.Append("public static "); - WITH field: MetaData.IdField DO - sb.Append("pe.base.pobjects.Id"); - ELSE - sb.Append(field.type.Name(class.module, MetaData.typeClassJava)); - END; + sb.Append(TypeOfField(class, field)); sb.Append(" "); sb.Append(field.Name(MetaData.columnJavaMemberAttrType)); sb.Append(";"); @@ -508,11 +513,7 @@ Ln; sb.Append(f.Name(MetaData.columnJavaMemberAttrType)); sb.Append(" = ("); - IF (f IS MetaData.IdField) THEN - sb.Append("pe.base.pobjects.Id"); - ELSE - sb.Append(f.type.Name(class.module, MetaData.typeClassJava)); - END; + sb.Append(TypeOfField(class, f)); sb.Append(")"); sb.Append(f.Name(MetaData.columnJavaMemberAttr)); sb.Append(".getType();"); @@ -2070,11 +2071,7 @@ Ln; sb.Append("t.addAttribute(a);"); Ln; - WITH f: MetaData.IdField DO - atypeClass := "pe.base.pobjects.Id"; - ELSE - atypeClass := f.type.Name(class.module, MetaData.typeClassJava); - END; + atypeClass := TypeOfField(class, f); sb.Append(AttributeTypeName(class, f)+" = ("+ atypeClass+")a.getType();"); Ln; Index: ParseClassDef.Mod =================================================================== RCS file: /cvsroot/ooc/libpobj/src/PObj/ParseClassDef.Mod,v retrieving revision 1.89 retrieving revision 1.90 diff -u -d -r1.89 -r1.90 --- ParseClassDef.Mod 30 Jun 2004 09:45:36 -0000 1.89 +++ ParseClassDef.Mod 30 Jun 2004 11:39:12 -0000 1.90 @@ -74,6 +74,7 @@ conflictsWithJavaBaseClass = 2040; undefinedBaseForm = 2041; missingType = 2042; + notJavaClassName = 2043; cannotExpandRelativeFileName = 2100; ioError = 2101; @@ -164,6 +165,18 @@ RETURN name; END GetJavaPackage; +PROCEDURE GetJavaClass(tag: Parser.Token; + attName, default: STRING): STRING; + VAR + name: STRING; + BEGIN + name := tag.GetAttValue(attName, default); + IF ~ValidIdent(name, FALSE, TRUE) THEN + tag.Err2(notJavaClassName, name, attName); + END; + RETURN name; + END GetJavaClass; + PROCEDURE GetOberonModule(tag: Parser.Token; attName, default: STRING): STRING; VAR @@ -924,7 +937,7 @@ PROCEDURE ParseIdField(start: Parser.Token): MetaData.IdField; VAR - name, schemaName, sequenceName: STRING; + name, schemaName, sequenceName, javaTypeClass: STRING; obj: Object.Object; seq: MetaData.Sequence; BEGIN @@ -932,6 +945,7 @@ name := GetIdentifier(start, "name", "id"); schemaName := GetIdentifierSQL(start, "schemaName", name); sequenceName := GetIdentifierSQL(start, "sequenceName", Parser.required); + javaTypeClass := GetJavaClass(start, "javaTypeClass", "pe.base.pobjects.Id"); CheckEndData(start); IF dictSchema.HasKey(sequenceName) & @@ -944,7 +958,7 @@ END; RETURN NEW(MetaData.IdField, name, schemaName, - dd.IdFieldType(), seq); + dd.IdFieldType(javaTypeClass), seq); ELSE RETURN NIL; END; @@ -1925,6 +1939,7 @@ reg.SetError(notTypeDecl, "`$1' is not a type declaration"); reg.SetError(notExtensible, "Base class `$1' is not extensible"); reg.SetError(notJavaPackageName, "`$1' is not a valid Java package name in attribute `$2'"); + reg.SetError(notJavaClassName, "`$1' is not a valid Java class name in attribute `$2'"); reg.SetError(notOberonModuleName, "`$1' is not a valid Oberon module name in attribute `$2'"); reg.SetError(notIdentifier, "`$1' is not a valid identifier in attribute `$2'"); reg.SetError(notIdentifierSQL, "`$1' is not a valid SQL identifier in attribute `$2'"); |