public virtual string GetImplements(ClassMapping cmap) { SupportClass.ListCollectionSupport interfaces = new SupportClass.ListCollectionSupport(); // implement proxy, but NOT if the proxy is the class it self! if ((Object)cmap.Proxy != null && (!cmap.Proxy.Equals(cmap.FullyQualifiedName))) { interfaces.Add(cmap.Proxy); } if (!cmap.Interface) { if (cmap.SuperClassMapping != null && cmap.SuperClassMapping.Interface) { interfaces.Add(cmap.SuperClassMapping.ClassName.FullyQualifiedName); } if (cmap.GetMeta("implements") != null) { interfaces.AddAll(cmap.GetMeta("implements")); } //interfaces.Add(typeof(System.Runtime.Serialization.ISerializable).FullName); } else { // interfaces can't implement suff } if (interfaces.Count > 0) { StringBuilder sbuf = new StringBuilder(); bool first = true; for (IEnumerator iter = interfaces.GetEnumerator(); iter.MoveNext();) { if (first) { first = false; } else { sbuf.Append(","); } sbuf.Append(ShortenType(iter.Current.ToString(), cmap.Imports)); } return(sbuf.ToString()); } else { return(string.Empty); } }
public virtual string GetExtends(ClassMapping cmap) { string extendz = string.Empty; if (cmap.Interface) { if (cmap.SuperClassMapping != null && cmap.SuperClassMapping.Interface) { extendz += cmap.SuperClassMapping.Name; } if (cmap.GetMeta(extendz) != null) { if ((Object)extendz != null) { extendz += ","; } extendz = cmap.GetMetaAsString("extends"); } } else if ((Object)cmap.SuperClass != null) { if (cmap.SuperClassMapping != null && cmap.SuperClassMapping.Interface) { // class cannot extend it's superclass because the superclass is marked as an interface } else { extendz = cmap.SuperClass; } } else if (cmap.GetMeta("extends") != null) { extendz = cmap.GetMetaAsString("extends"); } return(extendz); }
public virtual string GenerateImports(ClassMapping classMapping) { StringBuilder buf = new StringBuilder(); for (IEnumerator imports = classMapping.Imports.GetEnumerator(); imports.MoveNext();) { buf.Append("using " + imports.Current + ";\n"); } SupportClass.ListCollectionSupport imports2 = classMapping.GetMeta("extra-import"); if (imports2 != null) { for (IEnumerator it = imports2.GetEnumerator(); it.MoveNext();) { string cname = it.Current.ToString(); buf.Append("using " + cname + ";\n"); } } return(buf.ToString()); }
public override void Render(string savedToPackage, string savedToClass, ClassMapping classMapping, IDictionary class2classmap, StreamWriter mainwriter) { mainwriter.WriteLine("using System;"); mainwriter.WriteLine( @"//------------------------------------------------------------------------------ // <autogenerated> // This code was generated by a tool. // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // </autogenerated> //------------------------------------------------------------------------------ "); GeneratePackageDelaration(savedToPackage, classMapping, mainwriter); mainwriter.WriteLine("{"); // switch to another writer to be able to insert the actually // used imports when whole class has been rendered. StringWriter writer = new StringWriter(); // class declaration if (classMapping.GetMeta("class-description") == null) { writer.WriteLine( @" /// <summary> /// POJO for {0} /// </summary> /// <remark> /// This class is autogenerated /// </remark> ", classMapping.ClassName); } else { writer.WriteLine("/// <summary>\n" + languageTool.ToJavaDoc(classMapping.GetMetaAsString("class-description"), 0) + "\n/// </summary>"); } string classScope = classMapping.Scope; string declarationType = classMapping.DeclarationType; //classMapping.addImport(typeof(System.Runtime.Serialization.ISerializable)); //string modifiers = classMapping.getModifiers(); if (classMapping.ShouldBeAbstract() && (classScope.IndexOf("abstract") == -1)) { writer.Write("abstract " + classScope + " " + declarationType + " " + savedToClass); } else { writer.Write(classScope + " " + declarationType + " " + savedToClass); } if (languageTool.HasExtends(classMapping) || languageTool.HasImplements(classMapping)) { writer.Write(" : "); } if (languageTool.HasExtends(classMapping)) { writer.Write(languageTool.GetExtends(classMapping)); } if (languageTool.HasExtends(classMapping) && languageTool.HasImplements(classMapping)) { writer.Write(", "); } if (languageTool.HasImplements(classMapping)) { writer.Write(languageTool.GetImplements(classMapping)); } writer.WriteLine(" {"); writer.WriteLine(); // switch to another writer to be able to insert the // veto- and changeSupport fields StringWriter propWriter = new StringWriter(); if (!classMapping.Interface) { DoFields(classMapping, class2classmap, propWriter); DoConstructors(savedToClass, classMapping, class2classmap, propWriter); } string vetoSupport = MakeSupportField("vetos", classMapping.AllFields); string changeSupport = MakeSupportField("changes", classMapping.AllFields); int fieldTypes = DoFieldAccessors(classMapping, class2classmap, propWriter, vetoSupport, changeSupport); if (!classMapping.Interface) { DoSupportMethods(fieldTypes, vetoSupport, changeSupport, propWriter); DoToString(classMapping, propWriter); DoEqualsAndHashCode(savedToClass, classMapping, propWriter); } if (classMapping.GetMeta("class-code") != null) { propWriter.WriteLine("// The following is extra code specified in the hbm.xml files"); SupportClass.ListCollectionSupport extras = classMapping.GetMeta("class-code"); IEnumerator iter = extras.GetEnumerator(); while (iter.MoveNext()) { string code = iter.Current.ToString(); propWriter.WriteLine(code); } propWriter.WriteLine("// end of extra code specified in the hbm.xml files"); } propWriter.WriteLine("}"); //insert change and VetoSupport if (!classMapping.Interface) { DoSupports(fieldTypes, classMapping, vetoSupport, changeSupport, writer); } writer.Write(propWriter.ToString()); // finally write the imports DoImports(classMapping, mainwriter); mainwriter.Write(writer.ToString()); mainwriter.WriteLine("\n}"); }