DO NOT DOWNLOAD. DOWNLOAD LATEST STABLE FROM RELEASE TAB

Integrating LINQ to Umbraco into the umbraco UI
Upgrade 4.1 to .NET 3.5

[TFS Changeset #55173]
This commit is contained in:
slace
2009-06-20 14:23:15 +00:00
parent 79872c5d0f
commit 145e75ebdc
32 changed files with 658 additions and 187 deletions

View File

@@ -77,6 +77,28 @@ namespace umbraco.Linq.DTMetal.CodeBuilder
return new ClassGenerator(args);
}
public static ClassGenerator CreateBuilder(string ns, GenerationLanguage lang, XDocument dtml)
{
var args = new ClassGeneratorArgs()
{
Namespace = ns,
Dtml = dtml
};
switch (lang)
{
case GenerationLanguage.VB:
args.Provider = new VBCodeProvider();
break;
case GenerationLanguage.CSharp:
default:
args.Provider = new CSharpCodeProvider();
break;
}
return new ClassGenerator(args);
}
internal ClassGenerator(ClassGeneratorArgs args)
{
this.Args = args;
@@ -99,6 +121,24 @@ namespace umbraco.Linq.DTMetal.CodeBuilder
}
}
public void Save(Stream stream)
{
if (this.Code == null)
{
this.GenerateCode();
}
CodeGeneratorOptions options = new CodeGeneratorOptions()
{
BracingStyle = "C"
};
using (var sw = new StreamWriter(stream))
{
this.Args.Provider.GenerateCodeFromCompileUnit(this.Code, sw, options);
}
}
internal byte[] SaveForVs()
{
if (this.Code == null)
@@ -177,7 +217,7 @@ namespace umbraco.Linq.DTMetal.CodeBuilder
dataContextName += "DataContext";
}
CodeTypeDeclaration dataContext = new CodeTypeDeclaration(dataContextName);
dataContext.BaseTypes.Add("umbracoDataContext");
dataContext.BaseTypes.Add("UmbracoDataContext");
dataContext.IsClass = true;
dataContext.IsPartial = true;
@@ -206,7 +246,7 @@ namespace umbraco.Linq.DTMetal.CodeBuilder
//constructor that takes an umbracoDataProvider
ctor = new CodeConstructor();
ctor.Attributes = MemberAttributes.Public;
ctor.Parameters.Add(new CodeParameterDeclarationExpression("umbracoDataProvider", "provider"));
ctor.Parameters.Add(new CodeParameterDeclarationExpression("UmbracoDataProvider", "provider"));
ctor.BaseConstructorArgs.Add(new CodePropertyReferenceExpression(null, "provider"));
ctor.Statements.Add(statement);
dataContext.Members.Add(ctor);
@@ -489,7 +529,7 @@ namespace umbraco.Linq.DTMetal.CodeBuilder
currClass.Members.Add(p);
}
}
}
#endregion
ns.Types.Add(currClass);
@@ -512,7 +552,8 @@ namespace umbraco.Linq.DTMetal.CodeBuilder
p.HasSet = false;
new Switch(retyper)
.Case<YesNoRetyper>(b => {
.Case<YesNoRetyper>(b =>
{
p.GetStatements.Add(new CodeMethodReturnStatement(
GenerateEqualityConditionalStatement(
new CodeFieldReferenceExpression(

View File

@@ -31,6 +31,17 @@ namespace umbraco.Linq.DTMetal.Engine
this.DataContextName = dataContextName;
}
public DTMLGenerator(string umbracoConnectionString, string dataContextName, bool disablePluralization)
{
if (string.IsNullOrEmpty(umbracoConnectionString))
{
throw new ArgumentNullException("umbracoConnectionString");
}
this.umbracoConnectionString = umbracoConnectionString;
this.DataContextName = dataContextName;
}
public void GenerateDTMLFile()
{
using (var objBuilder = new DocTypeObjectBuilder(this.umbracoConnectionString))
@@ -44,5 +55,19 @@ namespace umbraco.Linq.DTMetal.Engine
dtmlGen.Save(Path.Combine(this.SavePath, (string.IsNullOrEmpty(this.DataContextName) ? "umbraco" : this.DataContextName) + fileExtension));
}
}
internal DocTypeMarkupLanguageBuilder GenerateDTMLStream()
{
using (var objBuilder = new DocTypeObjectBuilder(this.umbracoConnectionString))
{
objBuilder.LoadDocTypes();
var dtmlGen = new DocTypeMarkupLanguageBuilder(objBuilder.DocumentTypes, this.DataContextName, this.DisablePluralization);
dtmlGen.BuildXml();
return dtmlGen;
}
}
}
}

View File

@@ -10,4 +10,5 @@ using System;
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyProduct("DTMetal.Engine")]
[assembly: CLSCompliant(false)]
[assembly: System.Runtime.CompilerServices.InternalsVisibleTo("umbraco.Linq.DTMetal.Engine.Tests")]
[assembly: System.Runtime.CompilerServices.InternalsVisibleTo("umbraco.Linq.DTMetal.Engine.Tests")]
[assembly: System.Runtime.CompilerServices.InternalsVisibleTo("umbraco")]