Various updates to MyGeneration
Moved ItemInsert code to ItemInsertExt.cs
This commit is contained in:
parent
518c79216a
commit
7f0eb11f47
@ -50,7 +50,7 @@ public class GeneratedGui : DotNetScriptGui
|
|||||||
// Namespace
|
// Namespace
|
||||||
GuiLabel label2 = ui.AddLabel( "label2", "Namespace: ", "Provide your objects namespace." );
|
GuiLabel label2 = ui.AddLabel( "label2", "Namespace: ", "Provide your objects namespace." );
|
||||||
label2.Width = 280;
|
label2.Width = 280;
|
||||||
GuiTextBox classNamespace = ui.AddTextBox( "classNamespace", "Volian.CSLA.Library", "Provide your objects namespace." );
|
GuiTextBox classNamespace = ui.AddTextBox( "classNamespace", "VEPROMS.CSLA.Library", "Provide your objects namespace." );
|
||||||
classNamespace.Width = 280;
|
classNamespace.Width = 280;
|
||||||
|
|
||||||
GuiLabel label3 = ui.AddLabel( "label3", "Member prefix: ", "Provide your Prefix." );
|
GuiLabel label3 = ui.AddLabel( "label3", "Member prefix: ", "Provide your Prefix." );
|
||||||
@ -272,6 +272,7 @@ public class GeneratedTemplate : DotNetScriptTemplate
|
|||||||
|
|
||||||
public override void Render()
|
public override void Render()
|
||||||
{
|
{
|
||||||
|
DateTime tStart = DateTime.Now;
|
||||||
if (context.Objects.ContainsKey("DnpUtils"))DnpUtils.SaveInputToCache(context);
|
if (context.Objects.ContainsKey("DnpUtils"))DnpUtils.SaveInputToCache(context);
|
||||||
try{
|
try{
|
||||||
InitializeDictionaries();
|
InitializeDictionaries();
|
||||||
@ -337,6 +338,8 @@ public class GeneratedTemplate : DotNetScriptTemplate
|
|||||||
WriteLine("[{0}]",s);
|
WriteLine("[{0}]",s);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
DateTime tEnd = DateTime.Now;
|
||||||
|
WriteLine(string.Format("Total Generation Time: {0} Seconds",TimeSpan.FromTicks(tEnd.Ticks - tStart.Ticks).TotalSeconds));
|
||||||
//foreach( string _newView in _selectedViews )
|
//foreach( string _newView in _selectedViews )
|
||||||
//{
|
//{
|
||||||
// IView _workingView = MyMeta.Databases[_dbName].Views[_newView];
|
// IView _workingView = MyMeta.Databases[_dbName].Views[_newView];
|
||||||
@ -357,6 +360,7 @@ public class GeneratedTemplate : DotNetScriptTemplate
|
|||||||
dicRead["DateTime"]="{fmember} = dr.GetDateTime(\"{fname}\");";
|
dicRead["DateTime"]="{fmember} = dr.GetDateTime(\"{fname}\");";
|
||||||
dicRead["timestamp"]="dr.GetBytes(\"{fname}\", 0, {fmember}, 0, 8);";
|
dicRead["timestamp"]="dr.GetBytes(\"{fname}\", 0, {fmember}, 0, 8);";
|
||||||
dicRead["image"]="{fmember} = (byte[])dr.GetValue(\"{fname}\");";
|
dicRead["image"]="{fmember} = (byte[])dr.GetValue(\"{fname}\");";
|
||||||
|
dicRead["varbinary"]="{fmember} = (byte[])dr.GetValue(\"{fname}\");";
|
||||||
dicRead["int"]="{fmember} = dr.GetInt32(\"{fname}\");";
|
dicRead["int"]="{fmember} = dr.GetInt32(\"{fname}\");";
|
||||||
dicRead["Int32"]="{fmember} = dr.GetInt32(\"{fname}\");";
|
dicRead["Int32"]="{fmember} = dr.GetInt32(\"{fname}\");";
|
||||||
dicRead["Int16"]="{fmember} = dr.GetInt16(\"{fname}\");";
|
dicRead["Int16"]="{fmember} = dr.GetInt16(\"{fname}\");";
|
||||||
@ -451,7 +455,7 @@ public class GeneratedTemplate : DotNetScriptTemplate
|
|||||||
else
|
else
|
||||||
_subclassName = ClassName( fk.PrimaryTable) + ClassName( fk.ForeignTable )+sAlias;
|
_subclassName = ClassName( fk.PrimaryTable) + ClassName( fk.ForeignTable )+sAlias;
|
||||||
_tableName = "//TODO: No Table Name";
|
_tableName = "//TODO: No Table Name";
|
||||||
vlnHeader("\r\nusing Csla.Validation;");
|
vlnHeader("\r\nusing System.Collections.Generic;\r\nusing Csla.Validation;");
|
||||||
string sInterface = "";
|
string sInterface = "";
|
||||||
if (_chkPartCM)
|
if (_chkPartCM)
|
||||||
{
|
{
|
||||||
@ -476,7 +480,7 @@ public class GeneratedTemplate : DotNetScriptTemplate
|
|||||||
_PropDescList.Add(_className);
|
_PropDescList.Add(_className);
|
||||||
if (!AddToClassList(_className))return;
|
if (!AddToClassList(_className))return;
|
||||||
_tableName = fk.ForeignTable.Alias;
|
_tableName = fk.ForeignTable.Alias;
|
||||||
vlnHeader("\r\nusing Csla.Validation;");
|
vlnHeader("\r\nusing System.Collections.Generic;\r\nusing Csla.Validation;");
|
||||||
string sInterface="";
|
string sInterface="";
|
||||||
if (_chkPartCM)
|
if (_chkPartCM)
|
||||||
{
|
{
|
||||||
@ -690,49 +694,69 @@ namespace <%=_nameSpace%>
|
|||||||
string pKeysType = FormatColumns("{ctype} {local}",tbl.PrimaryKeys,", ","");
|
string pKeysType = FormatColumns("{ctype} {local}",tbl.PrimaryKeys,", ","");
|
||||||
%>
|
%>
|
||||||
#region Collection
|
#region Collection
|
||||||
protected static List<<%=_className%>> _AllList = new List<<%=_className%>>();
|
private static List<<%=_className%>> _CacheList = new List<<%=_className%>>();
|
||||||
private static Dictionary<string, <%=_className%>> _AllByPrimaryKey = new Dictionary<string, <%=_className%>>();<%
|
protected static void AddToCache(<%=_className%> <%=LocalName(_className)%>)
|
||||||
|
{
|
||||||
|
if (!_CacheList.Contains(<%=LocalName(_className)%>)) _CacheList.Add(<%=LocalName(_className)%>); // In AddToCache
|
||||||
|
}
|
||||||
|
protected static void RemoveFromCache(<%=_className%> <%=LocalName(_className)%>)
|
||||||
|
{
|
||||||
|
while (_CacheList.Contains(<%=LocalName(_className)%>)) _CacheList.Remove(<%=LocalName(_className)%>); // In RemoveFromCache
|
||||||
|
}
|
||||||
|
private static Dictionary<string, List<<%=_className%>>> _CacheByPrimaryKey = new Dictionary<string, List<<%=_className%>>>();<%
|
||||||
//ArrayList uniqueIndexes=UniqueIndexes(tbl);
|
//ArrayList uniqueIndexes=UniqueIndexes(tbl);
|
||||||
foreach(IIndex ind in uniqueIndexes)
|
foreach(IIndex ind in uniqueIndexes)
|
||||||
{
|
{
|
||||||
string sBy = FormatColumns("{name}",ind.Columns,"_","");
|
string sBy = FormatColumns("{name}",ind.Columns,"_","");
|
||||||
%>
|
%>
|
||||||
private static Dictionary<string, <%=_className%>> _AllBy<%=sBy%> = new Dictionary<string, <%=_className%>>();<%
|
private static Dictionary<string, List<<%=_className%>>> _CacheBy<%=sBy%> = new Dictionary<string, List<<%=_className%>>>();<%
|
||||||
}
|
}
|
||||||
%>
|
%>
|
||||||
private static void ConvertListToDictionary()
|
private static void ConvertListToDictionary()
|
||||||
{
|
{
|
||||||
List<<%=_className%>> remove = new List<<%=_className%>>();
|
List<<%=_className%>> remove = new List<<%=_className%>>();
|
||||||
foreach (<%=_className%> tmp in _AllList)
|
foreach (<%=_className%> tmp in _CacheList)
|
||||||
{
|
{
|
||||||
_AllByPrimaryKey[<%=pKey%>]=tmp; // Primary Key<%
|
if (!_CacheByPrimaryKey.ContainsKey(<%=pKey%>))
|
||||||
|
{
|
||||||
|
_CacheByPrimaryKey[<%=pKey%>] = new List<<%=_className%>>(); // Add new list for PrimaryKey<%
|
||||||
foreach(IIndex ind in uniqueIndexes)
|
foreach(IIndex ind in uniqueIndexes)
|
||||||
{
|
{
|
||||||
string sBy = FormatColumns("{name}",ind.Columns,"_","");
|
string sBy = FormatColumns("{name}",ind.Columns,"_","");
|
||||||
string sKey = FormatColumns("tmp.{prop}.ToString()",ind.Columns," + \"_\" + ","");
|
string sKey = FormatColumns("tmp.{prop}.ToString()",ind.Columns," + \"_\" + ","");
|
||||||
%>
|
%>
|
||||||
_AllBy<%=sBy%>[<%=sKey%>] = tmp; // Unique Index<%
|
_CacheBy<%=sBy%>[<%=sKey%>] = new List<<%=_className%>>(); // Add new list for <%=sBy%><%
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
}
|
||||||
|
_CacheByPrimaryKey[<%=pKey%>].Add(tmp); // Add to Primary Key list<%
|
||||||
|
foreach(IIndex ind in uniqueIndexes)
|
||||||
|
{
|
||||||
|
string sBy = FormatColumns("{name}",ind.Columns,"_","");
|
||||||
|
string sKey = FormatColumns("tmp.{prop}.ToString()",ind.Columns," + \"_\" + ","");
|
||||||
|
%>
|
||||||
|
_CacheBy<%=sBy%>[<%=sKey%>].Add(tmp); // Unique Index<%
|
||||||
}
|
}
|
||||||
%>
|
%>
|
||||||
remove.Add(tmp);
|
remove.Add(tmp);
|
||||||
}
|
}
|
||||||
foreach (<%=_className%> tmp in remove)
|
foreach (<%=_className%> tmp in remove)
|
||||||
_AllList.Remove(tmp);
|
RemoveFromCache(tmp);
|
||||||
}<%
|
}<%
|
||||||
if (bInfo && AnyNotOneToOne(_workingTable)) // AddList function for infolist - Any non 1 to 1 relationships
|
if (bInfo && AnyNotOneToOne(_workingTable)) // AddList function for infolist - Any non 1 to 1 relationships
|
||||||
{
|
{
|
||||||
%>
|
%>
|
||||||
internal static void AddList(<%=_className%>List lst)
|
internal static void AddList(<%=_className%>List lst)
|
||||||
{
|
{
|
||||||
foreach (<%=_className%> item in lst) _AllList.Add(item);
|
foreach (<%=_className%> item in lst) AddToCache(item);
|
||||||
}<%
|
}<%
|
||||||
}
|
}
|
||||||
%>
|
%>
|
||||||
public static <%=_className%> GetExistingByPrimaryKey(<%=pKeysType%>)
|
protected static <%=_className%> GetCachedByPrimaryKey(<%=pKeysType%>)
|
||||||
{
|
{
|
||||||
ConvertListToDictionary();
|
ConvertListToDictionary();
|
||||||
string key = <%=pKey2%>;
|
string key = <%=pKey2%>;
|
||||||
if (_AllByPrimaryKey.ContainsKey(key)) return _AllByPrimaryKey[key];
|
if (_CacheByPrimaryKey.ContainsKey(key)) return _CacheByPrimaryKey[key][0];
|
||||||
return null;
|
return null;
|
||||||
}<%
|
}<%
|
||||||
foreach(IIndex ind in uniqueIndexes)
|
foreach(IIndex ind in uniqueIndexes)
|
||||||
@ -742,11 +766,11 @@ namespace <%=_nameSpace%>
|
|||||||
string sKeysType = FormatColumns("{ctype} {local}",ind.Columns,", ","");
|
string sKeysType = FormatColumns("{ctype} {local}",ind.Columns,", ","");
|
||||||
string sKeys = FormatColumns("{local}",ind.Columns,", ","");
|
string sKeys = FormatColumns("{local}",ind.Columns,", ","");
|
||||||
%>
|
%>
|
||||||
public static <%=_className%> GetExistingBy<%=sBy%>(<%=sKeysType%>)
|
protected static <%=_className%> GetCachedBy<%=sBy%>(<%=sKeysType%>)
|
||||||
{
|
{
|
||||||
ConvertListToDictionary();
|
ConvertListToDictionary();
|
||||||
string key = <%=sKey%>;
|
string key = <%=sKey%>;
|
||||||
if (_AllBy<%=sBy%>.ContainsKey(key)) return _AllBy<%=sBy%>[key];
|
if (_CacheBy<%=sBy%>.ContainsKey(key)) return _CacheBy<%=sBy%>[key][0];
|
||||||
return null;
|
return null;
|
||||||
}<%
|
}<%
|
||||||
}
|
}
|
||||||
@ -796,7 +820,7 @@ namespace <%=_nameSpace%>
|
|||||||
if (IsRelObj(col))
|
if (IsRelObj(col))
|
||||||
sParentCheck =FormatColumn("\r\n\t\t\t\tif ({!member} != null) {member} = {!member}.{!column};",col);
|
sParentCheck =FormatColumn("\r\n\t\t\t\tif ({!member} != null) {member} = {!member}.{!column};",col);
|
||||||
vlnProperty(CSLAType( col ),MemberName(col)
|
vlnProperty(CSLAType( col ),MemberName(col)
|
||||||
,PropertyName(col),InitializeValue( col ),GetDescription(col),bReadOnly || IsRelObj(col),col.IsInPrimaryKey,false,null,sParentCheck,null);
|
,PropertyName(col),InitializeValue( col ),GetDescription(col),bReadOnly || IsRelObj(col),col.IsInPrimaryKey,false,null,sParentCheck,null,null);
|
||||||
// if (bRelatedObject)
|
// if (bRelatedObject)
|
||||||
vlnRelObjProperty(col,bReadOnly,false);
|
vlnRelObjProperty(col,bReadOnly,false);
|
||||||
}
|
}
|
||||||
@ -822,26 +846,26 @@ namespace <%=_nameSpace%>
|
|||||||
string sList = FKClassName(fk );
|
string sList = FKClassName(fk );
|
||||||
string sLists = FKClassesName(fk );
|
string sLists = FKClassesName(fk );
|
||||||
vlnProperty("int",MemberName(sList) + sAlias + "Count" ,sList + sAlias + "Count", " = 0;",
|
vlnProperty("int",MemberName(sList) + sAlias + "Count" ,sList + sAlias + "Count", " = 0;",
|
||||||
"Count of " + sLists + " for this " + ClassName(_workingTable) + Debug("20070501.3"),true,false,false,null,null,null);
|
"Count of " + sLists + " for this " + ClassName(_workingTable) + Debug("20070501.3"),true,false,false,null,null,null,null);
|
||||||
if (!IsPrimaryKey(fk)){
|
if (!IsPrimaryKey(fk)){
|
||||||
//vlnProperty(sLists+sAlias,MemberName(sLists)+sAlias,sLists + sAlias,
|
//vlnProperty(sLists+sAlias,MemberName(sLists)+sAlias,sLists + sAlias,
|
||||||
//" = " + sLists+sAlias + ".New();","Related Field" + Debug("20070501.2"),true,false,true,fk,null,null);
|
//" = " + sLists+sAlias + ".New();","Related Field" + Debug("20070501.2"),true,false,true,fk,null,null,null);
|
||||||
vlnProperty(sLists+sAlias,MemberName(sLists)+sAlias,sLists + sAlias,
|
vlnProperty(sLists+sAlias,MemberName(sLists)+sAlias,sLists + sAlias,
|
||||||
" = null;","Related Field" + Debug("20070501.2"),true,false,true,fk,null,null);
|
" = null;","Related Field" + Debug("20070501.2"),true,false,true,fk,null,null,null);
|
||||||
//sExtDirty += " || " + MemberName(sLists+sAlias) + ".IsDirty";
|
//sExtDirty += " || " + MemberName(sLists+sAlias) + ".IsDirty";
|
||||||
//sExtValid += " && " + MemberName(sLists+sAlias) + ".IsValid";
|
//sExtValid += " && " + MemberName(sLists+sAlias) + ".IsValid";
|
||||||
sExtDirty += string.Format(" || ({0} == null? false : {0}.IsDirty)",MemberName(sLists+sAlias));
|
sExtDirty += string.Format(" || ({0} == null ? false : {0}.IsDirtyList(list))",MemberName(sLists+sAlias));
|
||||||
sExtValid += string.Format(" && ({0} == null ? true : {0}.IsValid)",MemberName(sLists+sAlias));
|
sExtValid += string.Format(" && ({0} == null ? true : {0}.IsValid)",MemberName(sLists+sAlias));
|
||||||
} else {
|
} else {
|
||||||
string sItem = ClassName(fk.ForeignTable);
|
string sItem = ClassName(fk.ForeignTable);
|
||||||
//vlnProperty(sItem+sAlias, MemberName("My" + sItem)+sAlias,"My" + sItem + sAlias,
|
//vlnProperty(sItem+sAlias, MemberName("My" + sItem)+sAlias,"My" + sItem + sAlias,
|
||||||
//" = My" + sItem+sAlias + ".New();","Related Field",true,false,true,fk,null);
|
//" = My" + sItem+sAlias + ".New();","Related Field",true,false,true,fk,null,null);
|
||||||
string sCheck = string.Format("\r\n\t\t\t\tif ({0} == null) {0} = {1}.New({2});",
|
string sCheck = string.Format("\r\n\t\t\t\tif ({0} == null) {0} = {1}.New({2});",
|
||||||
MemberName("My" + sItem)+sAlias, sItem, OneToOne(fk) ? "this" : FormatColumns("{member}",fk.PrimaryColumns,", ",""));
|
MemberName("My" + sItem)+sAlias, sItem, OneToOne(fk) ? "this" : FormatColumns("{member}",fk.PrimaryColumns,", ",""));
|
||||||
vlnProperty(sItem+sAlias, MemberName("My" + sItem)+sAlias,"My" + sItem + sAlias,
|
vlnProperty(sItem+sAlias, MemberName("My" + sItem)+sAlias,"My" + sItem + sAlias,
|
||||||
" = null;","Related Field" + Debug("20070501.1"),true,false,true,fk,sCheck,null);
|
" = null;","Related Field" + Debug("20070501.1"),true,false,true,fk,sCheck,null,null);
|
||||||
bool bReq = !fk.ForeignColumns[0].IsNullable;
|
bool bReq = !fk.ForeignColumns[0].IsNullable;
|
||||||
sExtDirty += string.Format(" || ({0} == null? false : {0}.IsDirty)",MemberName("My" + sItem+sAlias));
|
sExtDirty += string.Format(" || ({0} == null ? false : {0}.IsDirtyList(list))",MemberName("My" + sItem+sAlias));
|
||||||
sExtValid += string.Format(" && ({0} == null ? true : {0}.IsValid)",MemberName("My" + sItem+sAlias));
|
sExtValid += string.Format(" && ({0} == null ? true : {0}.IsValid)",MemberName("My" + sItem+sAlias));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -852,33 +876,83 @@ namespace <%=_nameSpace%>
|
|||||||
string sClass = ClassName(fk.PrimaryTable.Name) + GetNewAlias(fk,fk);
|
string sClass = ClassName(fk.PrimaryTable.Name) + GetNewAlias(fk,fk);
|
||||||
//sExtDirty += string.Format(" || ({0} == null? " + bReq.ToString().ToLower() + " : {0}.IsDirty)",MemberName("My" + sClass));
|
//sExtDirty += string.Format(" || ({0} == null? " + bReq.ToString().ToLower() + " : {0}.IsDirty)",MemberName("My" + sClass));
|
||||||
//sExtValid += string.Format(" && ({0} == null? " + (!bReq).ToString().ToLower() + " : {0}.IsValid)",MemberName("My" + sClass));
|
//sExtValid += string.Format(" && ({0} == null? " + (!bReq).ToString().ToLower() + " : {0}.IsValid)",MemberName("My" + sClass));
|
||||||
sExtDirty += string.Format(" || ({0} == null? false : {0}.IsDirty)",MemberName("My" + sClass));
|
sExtDirty += string.Format(" || ({0} == null ? false : {0}.IsDirtyList(list))",MemberName("My" + sClass));
|
||||||
sExtValid += string.Format(" && ({0} == null ? true : {0}.IsValid)",MemberName("My" + sClass));
|
sExtValid += string.Format(" && ({0} == null ? true : {0}.IsValid)",MemberName("My" + sClass));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(sExtDirty!="")vlnDirty(sExtDirty);
|
//if (sExtDirty!="")
|
||||||
|
vlnDirty(sExtDirty);
|
||||||
//if (sExtValid!="")vlnOverride("Valid",sExtValid);
|
//if (sExtValid!="")vlnOverride("Valid",sExtValid);
|
||||||
vlnValid(sExtValid);
|
vlnValid(sExtValid);
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
private void vlnDirty(string sExtension)
|
private void vlnDirty(string sExtension)
|
||||||
|
{
|
||||||
|
if(sExtension == "")
|
||||||
{
|
{
|
||||||
%>
|
%>
|
||||||
public override bool IsDirty
|
public override bool IsDirty
|
||||||
{
|
{
|
||||||
get { return base.IsDirty<%=sExtension%>; }
|
get { return base.IsDirty; }
|
||||||
|
}
|
||||||
|
public bool IsDirtyList(List<object> list)
|
||||||
|
{
|
||||||
|
return base.IsDirty;
|
||||||
}<%
|
}<%
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
%>
|
||||||
|
public override bool IsDirty
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if ( base.IsDirty )
|
||||||
|
return true;
|
||||||
|
return IsDirtyList(new List<object>());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public bool IsDirtyList(List<object> list)
|
||||||
|
{
|
||||||
|
if (base.IsDirty || list.Contains(this))
|
||||||
|
return base.IsDirty;
|
||||||
|
list.Add(this);
|
||||||
|
return base.IsDirty<%=sExtension%>;
|
||||||
|
}<%
|
||||||
|
}
|
||||||
|
}
|
||||||
private void vlnValid(string sExtension)
|
private void vlnValid(string sExtension)
|
||||||
|
{
|
||||||
|
if(sExtension == "")
|
||||||
{
|
{
|
||||||
%>
|
%>
|
||||||
public override bool IsValid
|
public override bool IsValid
|
||||||
{
|
{
|
||||||
get { return (IsNew && !IsDirty ? true : base.IsValid)<%=sExtension%>; }
|
get { return (IsNew && !IsDirty) ? true : base.IsValid; }
|
||||||
|
}
|
||||||
|
public bool IsValidList(List<object> list)
|
||||||
|
{
|
||||||
|
return (IsNew && !IsDirty) ? true : base.IsValid;
|
||||||
}<%
|
}<%
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
%>
|
||||||
|
public override bool IsValid
|
||||||
|
{
|
||||||
|
get { return IsValidList(new List<object>()); }
|
||||||
|
}
|
||||||
|
public bool IsValidList(List<object> list)
|
||||||
|
{
|
||||||
|
if(list.Contains(this))
|
||||||
|
return (IsNew && !IsDirty) ? true : base.IsValid;
|
||||||
|
list.Add(this);
|
||||||
|
return ((IsNew && !IsDirty) ? true : base.IsValid)<%=sExtension%>;
|
||||||
|
}<%
|
||||||
|
}
|
||||||
|
}
|
||||||
private void vlnIdentity(IColumn column)
|
private void vlnIdentity(IColumn column)
|
||||||
{
|
{
|
||||||
if (column.IsAutoKey)
|
if (column.IsAutoKey)
|
||||||
@ -902,12 +976,29 @@ namespace <%=_nameSpace%>
|
|||||||
string sRelClass=FKClassesName(fk) + GetAlias(fk);
|
string sRelClass=FKClassesName(fk) + GetAlias(fk);
|
||||||
string sClassName=MemberName(FKClassName(fk) + GetAlias(fk));//20070207
|
string sClassName=MemberName(FKClassName(fk) + GetAlias(fk));//20070207
|
||||||
%>
|
%>
|
||||||
if(<%=sClassName%>Count > 0 && <%=sMemberName%> == null)
|
if (<%=sClassName%>Count < 0 || (<%=sClassName%>Count > 0 && <%=sMemberName%> == null))
|
||||||
<%=sMemberName%> = <%=sType%>.GetBy<%=sBy%>(<%=sKeys%>);
|
<%=sMemberName%> = <%=sType%>.GetBy<%=sBy%>(<%=sKeys%>);
|
||||||
else if(<%=sMemberName%> == null)
|
if (<%=sClassName%>Count < 0 )
|
||||||
|
<%=sClassName%>Count = <%=sMemberName%> == null ? 0 : <%=sMemberName%>.Count;
|
||||||
|
if (<%=sMemberName%> == null)
|
||||||
<%=sMemberName%> = <%=sRelClass%>.New();<%
|
<%=sMemberName%> = <%=sRelClass%>.New();<%
|
||||||
}
|
}
|
||||||
private void vlnProperty(string sType,string sMemberName,string sPropertyName,string sDefault,string sDescription,bool bReadOnly,bool bPrimaryKey,bool bCompModel,IForeignKey fk,string sParentCheck,string sParentCheck2)
|
private void vlnResetLazyLoad(string sType,string sMemberName,string sPropertyName,IForeignKey fk)
|
||||||
|
{
|
||||||
|
if (fk==null)return;
|
||||||
|
//if (OneToOne(fk.ForeignTable))return;
|
||||||
|
if (OneToOne(fk))return;
|
||||||
|
string sBy = FormatColumns("{name}",fk.ForeignColumns,"_","");
|
||||||
|
string sKeys=FormatColumns("{prop}",fk.PrimaryColumns,", ","");
|
||||||
|
string sRelClass=FKClassesName(fk) + GetAlias(fk);
|
||||||
|
string sClassName=MemberName(FKClassName(fk) + GetAlias(fk));//20070207
|
||||||
|
%>
|
||||||
|
public void Reset<%=sMemberName%>()
|
||||||
|
{
|
||||||
|
<%=sClassName%>Count = -1;
|
||||||
|
}<%
|
||||||
|
}
|
||||||
|
private void vlnProperty(string sType,string sMemberName,string sPropertyName,string sDefault,string sDescription,bool bReadOnly,bool bPrimaryKey,bool bCompModel,IForeignKey fk,string sParentCheck,string sParentCheck2, string sParentCheck3)
|
||||||
{
|
{
|
||||||
string suffix = (sPropertyName==_className?"Fld":"");
|
string suffix = (sPropertyName==_className?"Fld":"");
|
||||||
%>
|
%>
|
||||||
@ -973,8 +1064,17 @@ namespace <%=_nameSpace%>
|
|||||||
%>
|
%>
|
||||||
if (value == null) value = string.Empty;<%
|
if (value == null) value = string.Empty;<%
|
||||||
}
|
}
|
||||||
|
if(sParentCheck2 ==null) // 20080722RHM
|
||||||
|
{
|
||||||
|
%>
|
||||||
|
if (<%=sMemberName%><%=suffix%> != value)<%
|
||||||
|
}
|
||||||
|
else// 20080722RHM
|
||||||
|
{
|
||||||
|
%>
|
||||||
|
if (<%=sParentCheck3%>)<%
|
||||||
|
}
|
||||||
%>
|
%>
|
||||||
if (<%=sMemberName%><%=suffix%> != value)
|
|
||||||
{
|
{
|
||||||
<%=sMemberName%><%=suffix%><%=ReturnMember(sType)%> = value;<%=sParentCheck2%>
|
<%=sMemberName%><%=suffix%><%=ReturnMember(sType)%> = value;<%=sParentCheck2%>
|
||||||
PropertyHasChanged();
|
PropertyHasChanged();
|
||||||
@ -984,7 +1084,7 @@ namespace <%=_nameSpace%>
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
%>
|
%>
|
||||||
}<%
|
}<%vlnResetLazyLoad(sType,sMemberName,sPropertyName,fk);%><%
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -1044,7 +1144,8 @@ namespace <%=_nameSpace%>
|
|||||||
private bool _CheckingBrokenRules = false;
|
private bool _CheckingBrokenRules = false;
|
||||||
public IVEHasBrokenRules HasBrokenRules
|
public IVEHasBrokenRules HasBrokenRules
|
||||||
{<%=Debug("20070509.vlnValidationRules")%>
|
{<%=Debug("20070509.vlnValidationRules")%>
|
||||||
get {
|
get
|
||||||
|
{
|
||||||
if (_CheckingBrokenRules) return null;
|
if (_CheckingBrokenRules) return null;
|
||||||
if ((IsDirty || !IsNew) && BrokenRulesCollection.Count > 0) return this;
|
if ((IsDirty || !IsNew) && BrokenRulesCollection.Count > 0) return this;
|
||||||
try
|
try
|
||||||
@ -1309,23 +1410,55 @@ namespace <%=_nameSpace%>
|
|||||||
#region Factory Methods
|
#region Factory Methods
|
||||||
public int CurrentEditLevel
|
public int CurrentEditLevel
|
||||||
{ get { return EditLevel; } }
|
{ get { return EditLevel; } }
|
||||||
|
private static int _<%=_className%>Unique = 0;
|
||||||
|
protected static int <%=_className%>Unique
|
||||||
|
{ get { return ++_<%=_className%>Unique; } }
|
||||||
|
private int _My<%=_className%>Unique = <%=_className%>Unique;
|
||||||
|
public int My<%=_className%>Unique
|
||||||
|
{ get { return _My<%=_className%>Unique; } }
|
||||||
protected <%=_className%>()
|
protected <%=_className%>()
|
||||||
{/* require use of factory methods */
|
{/* require use of factory methods */
|
||||||
_AllList.Add(this);
|
AddToCache(this);
|
||||||
}
|
}
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
_AllList.Remove(this);
|
RemoveFromDictionaries();
|
||||||
_AllByPrimaryKey.Remove(<%=pKeys%>);<%
|
}
|
||||||
|
private void RemoveFromDictionaries()
|
||||||
|
{
|
||||||
|
RemoveFromCache(this);
|
||||||
|
if (_CacheByPrimaryKey.ContainsKey(<%=pKeys%>))
|
||||||
|
{
|
||||||
|
List<<%=_className%>> list<%=_className%> = _CacheByPrimaryKey[<%=pKeys%>]; // Get the list of items
|
||||||
|
while (list<%=_className%>.Contains(this)) list<%=_className%>.Remove(this); // Remove the item from the list
|
||||||
|
if (list<%=_className%>.Count == 0) //If there are no items left in the list
|
||||||
|
_CacheByPrimaryKey.Remove(<%=pKeys%>); // remove the list
|
||||||
|
}<%
|
||||||
|
|
||||||
ArrayList uniqueIndexes=UniqueIndexes(_workingTable);
|
ArrayList uniqueIndexes=UniqueIndexes(_workingTable);
|
||||||
IIndex makeIndex=null;
|
IIndex makeIndex=null;
|
||||||
|
if(uniqueIndexes.Count > 0)
|
||||||
|
{
|
||||||
|
%>
|
||||||
|
string myKey;<%
|
||||||
|
}
|
||||||
foreach(IIndex ind in uniqueIndexes)
|
foreach(IIndex ind in uniqueIndexes)
|
||||||
{
|
{
|
||||||
string sBy = FormatColumns("{name}",ind.Columns,"_","");
|
string sBy = FormatColumns("{name}",ind.Columns,"_","");
|
||||||
string sKey = FormatColumns("{prop}.ToString()",ind.Columns," + \"_\" + ","");
|
string sKey = FormatColumns("{prop}.ToString()",ind.Columns," + \"_\" + ","");
|
||||||
if (MatchingColumns(ind.Columns,makeList))makeIndex=ind;
|
if (MatchingColumns(ind.Columns,makeList))makeIndex=ind;
|
||||||
%>
|
%>
|
||||||
_AllBy<%=sBy%>.Remove(<%=sKey%>);<%
|
myKey = null;
|
||||||
|
foreach (string key in _CacheBy<%=sBy%>.Keys)
|
||||||
|
if (_CacheBy<%=sBy%>[key].Contains(this))
|
||||||
|
myKey = key;
|
||||||
|
if (myKey != null)
|
||||||
|
{
|
||||||
|
List<<%=_className%>> list<%=_className%> = _CacheBy<%=sBy%>[myKey]; // Get the list of items
|
||||||
|
list<%=_className%>.Remove(this); // Remove the item from the list
|
||||||
|
if (list<%=_className%>.Count == 0) //If there are no items left in the list
|
||||||
|
_CacheBy<%=sBy%>.Remove(myKey); // remove the list
|
||||||
|
}<%
|
||||||
}
|
}
|
||||||
string sMakeListParamTypes = "";
|
string sMakeListParamTypes = "";
|
||||||
string sMakeListParams = "";
|
string sMakeListParams = "";
|
||||||
@ -1351,6 +1484,8 @@ namespace <%=_nameSpace%>
|
|||||||
{
|
{
|
||||||
BuildLists(reqList,ref sMakeListParamTypes, ref sMakeListParams, ref sSetTmp, ref sParentCheck);
|
BuildLists(reqList,ref sMakeListParamTypes, ref sMakeListParams, ref sSetTmp, ref sParentCheck);
|
||||||
BuildNew(sMakeListParamTypes,sMakeListParams,sSetTmp,sParentCheck);
|
BuildNew(sMakeListParamTypes,sMakeListParams,sSetTmp,sParentCheck);
|
||||||
|
if(SameList(reqList,makeList4))
|
||||||
|
BuildMake(sMakeListParamTypes,sMakeListParams,sSetTmp,sParentCheck + Debug("20070427.4"),makeIndex);
|
||||||
}
|
}
|
||||||
BuildLists(makeList,ref sMakeListParamTypes, ref sMakeListParams, ref sSetTmp, ref sParentCheck);
|
BuildLists(makeList,ref sMakeListParamTypes, ref sMakeListParams, ref sSetTmp, ref sParentCheck);
|
||||||
BuildNew(sMakeListParamTypes,sMakeListParams,sSetTmp,sParentCheck );
|
BuildNew(sMakeListParamTypes,sMakeListParams,sSetTmp,sParentCheck );
|
||||||
@ -1368,8 +1503,9 @@ namespace <%=_nameSpace%>
|
|||||||
{<%=DebugLine("20070427.1")%>
|
{<%=DebugLine("20070427.1")%>
|
||||||
<%=_className%> tmp = <%=_className%>.New(<%=FormatColumns("{local}",makeList,", ","")%>);
|
<%=_className%> tmp = <%=_className%>.New(<%=FormatColumns("{local}",makeList,", ","")%>);
|
||||||
<%=FormatColumns(dicCheck,makeList3,"\r\n","\t\t\t")%>
|
<%=FormatColumns(dicCheck,makeList3,"\r\n","\t\t\t")%>
|
||||||
tmp = tmp.Save();
|
<%=_className%> tmp2 = tmp.Save();
|
||||||
return tmp;
|
tmp.Dispose();
|
||||||
|
return tmp2;
|
||||||
}<%
|
}<%
|
||||||
}
|
}
|
||||||
string sExtra1= "";
|
string sExtra1= "";
|
||||||
@ -1392,13 +1528,17 @@ namespace <%=_nameSpace%>
|
|||||||
throw new System.Security.SecurityException("User not authorized to view a <%=_className%>");
|
throw new System.Security.SecurityException("User not authorized to view a <%=_className%>");
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
<%=_className%> tmp = GetExistingByPrimaryKey(<%=sKeys%>);
|
<%=_className%> tmp = GetCachedByPrimaryKey(<%=sKeys%>);
|
||||||
if (tmp == null)
|
if (tmp == null)
|
||||||
{
|
{
|
||||||
tmp = DataPortal.Fetch<<%=_className%>>(new PKCriteria(<%=sKeys%>));
|
tmp = DataPortal.Fetch<<%=_className%>>(new PKCriteria(<%=sKeys%>));
|
||||||
_AllList.Add(tmp);
|
AddToCache(tmp);
|
||||||
|
}
|
||||||
|
if (tmp.ErrorMessage == "No Record Found")
|
||||||
|
{
|
||||||
|
tmp.Dispose(); // Clean-up <%=_className%>
|
||||||
|
tmp = null;
|
||||||
}
|
}
|
||||||
if (tmp.ErrorMessage == "No Record Found") tmp = null;
|
|
||||||
return tmp;
|
return tmp;
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
@ -1417,13 +1557,17 @@ namespace <%=_nameSpace%>
|
|||||||
throw new System.Security.SecurityException("User not authorized to view a <%=_className%>");
|
throw new System.Security.SecurityException("User not authorized to view a <%=_className%>");
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
<%=_className%> tmp = GetExistingByPrimaryKey(<%=parKeys%>);
|
<%=_className%> tmp = GetCachedByPrimaryKey(<%=parKeys%>);
|
||||||
if (tmp == null)
|
if (tmp == null)
|
||||||
{
|
{
|
||||||
tmp = DataPortal.Fetch<<%=_className%>>(new <%=sParent%>Criteria(<%=parKeys%>));
|
tmp = DataPortal.Fetch<<%=_className%>>(new <%=sParent%>Criteria(<%=parKeys%>));
|
||||||
_AllList.Add(tmp);
|
AddToCache(tmp);
|
||||||
|
}
|
||||||
|
if (tmp.ErrorMessage == "No Record Found")
|
||||||
|
{
|
||||||
|
tmp.Dispose(); // Clean-up <%=_className%>
|
||||||
|
tmp = null;
|
||||||
}
|
}
|
||||||
if (tmp.ErrorMessage == "No Record Found") tmp = null;
|
|
||||||
return tmp;
|
return tmp;
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
@ -1439,19 +1583,23 @@ namespace <%=_nameSpace%>
|
|||||||
string sKeyType = FormatColumns("{ctype} {local}",ind.Columns,", ","");
|
string sKeyType = FormatColumns("{ctype} {local}",ind.Columns,", ","");
|
||||||
string sKey = FormatColumns("{local}",ind.Columns,", ","");
|
string sKey = FormatColumns("{local}",ind.Columns,", ","");
|
||||||
%>
|
%>
|
||||||
private static <%=_className%> GetBy<%=sBy%>(<%=sKeyType%>)
|
public static <%=_className%> GetBy<%=sBy%>(<%=sKeyType%>)
|
||||||
{
|
{
|
||||||
if (!CanGetObject())
|
if (!CanGetObject())
|
||||||
throw new System.Security.SecurityException("User not authorized to view a <%=_className%>");
|
throw new System.Security.SecurityException("User not authorized to view a <%=_className%>");
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
<%=_className%> tmp = GetExistingBy<%=sBy%>(<%=sKey%>);
|
<%=_className%> tmp = GetCachedBy<%=sBy%>(<%=sKey%>);
|
||||||
if (tmp == null)
|
if (tmp == null)
|
||||||
{
|
{
|
||||||
tmp = DataPortal.Fetch<<%=_className%>>(new <%=sBy%>Criteria(<%=sKey%>));
|
tmp = DataPortal.Fetch<<%=_className%>>(new <%=sBy%>Criteria(<%=sKey%>));
|
||||||
_AllList.Add(tmp);
|
AddToCache(tmp);
|
||||||
|
}
|
||||||
|
if (tmp.ErrorMessage == "No Record Found")
|
||||||
|
{
|
||||||
|
tmp.Dispose(); // Clean-up <%=_className%>
|
||||||
|
tmp = null;
|
||||||
}
|
}
|
||||||
if (tmp.ErrorMessage == "No Record Found") tmp = null;
|
|
||||||
return tmp;
|
return tmp;
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
@ -1509,7 +1657,8 @@ namespace <%=_nameSpace%>
|
|||||||
{
|
{
|
||||||
BuildRefreshList();
|
BuildRefreshList();
|
||||||
<%=_className%> <%=LocalName(_className)%> = base.Save();
|
<%=_className%> <%=LocalName(_className)%> = base.Save();
|
||||||
_AllList.Add(<%=LocalName(_className)%>);//Refresh the item in AllList
|
RemoveFromDictionaries(); // if save is successful remove the previous Folder from the cache
|
||||||
|
AddToCache(<%=LocalName(_className)%>);//Refresh the item in AllList
|
||||||
ProcessRefreshList();
|
ProcessRefreshList();
|
||||||
return <%=LocalName(_className)%>;
|
return <%=LocalName(_className)%>;
|
||||||
}
|
}
|
||||||
@ -1550,7 +1699,11 @@ namespace <%=_nameSpace%>
|
|||||||
}
|
}
|
||||||
%>
|
%>
|
||||||
if (tmp.IsSavable)
|
if (tmp.IsSavable)
|
||||||
tmp = tmp.Save();
|
{
|
||||||
|
<%=_className%> tmp2 = tmp;
|
||||||
|
tmp = tmp2.Save();
|
||||||
|
tmp2.Dispose();
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Csla.Validation.BrokenRulesCollection brc = tmp.ValidationRules.GetBrokenRules();
|
Csla.Validation.BrokenRulesCollection brc = tmp.ValidationRules.GetBrokenRules();
|
||||||
@ -2173,7 +2326,7 @@ namespace <%=_nameSpace%>
|
|||||||
{
|
{
|
||||||
//if (IsIn(column,fk.ForeignColumns))
|
//if (IsIn(column,fk.ForeignColumns))
|
||||||
//sDelete+=sepdd+FormatColumn("{!localcolumn}",column);
|
//sDelete+=sepdd+FormatColumn("{!localcolumn}",column);
|
||||||
//sDelete+=sepdd+FormatColumn("/*1*/{rmember}",RelatedColumn(column,fk));
|
//sDelete+=sepdd+FormatColumn("{rmember}",RelatedColumn(column,fk));
|
||||||
//else
|
//else
|
||||||
sDelete+=sepdd+FormatColumn("{member}",column);
|
sDelete+=sepdd+FormatColumn("{member}",column);
|
||||||
sepdd=", ";
|
sepdd=", ";
|
||||||
@ -2863,8 +3016,7 @@ private void vlnDataPortalFetch(string sPrefix,IColumns cols,string sql,bool get
|
|||||||
}
|
}
|
||||||
string reqKeysContain = (SameList(reqCols,fkCols)?sFkKeys:reqKeys);
|
string reqKeysContain = (SameList(reqCols,fkCols)?sFkKeys:reqKeys);
|
||||||
IList uniqueMatch = FindUnique(uniqueChildren,reqCols);
|
IList uniqueMatch = FindUnique(uniqueChildren,reqCols);
|
||||||
// WriteLine("\r\n//20070302 - {0}", uniqueMatch);
|
//if (uniqueMatch != null)WriteLine("\r\n//20090108 - \r\n\tuniqueMatch {0}\r\n\treqCols {1}", ColumnListToString(uniqueMatch),ColumnListToString(reqCols) );
|
||||||
// if(uniqueMatch != null)WriteLine("\r\n//20070302 - {0}", uniqueMatch[0]);
|
|
||||||
string newString = (fkCols.Count==1 && sTestTypes == "int" ? "new " : "");
|
string newString = (fkCols.Count==1 && sTestTypes == "int" ? "new " : "");
|
||||||
%>
|
%>
|
||||||
public <%=newString%><%=sFkClassName%> this[<%=sFkKeysTypes%>]
|
public <%=newString%><%=sFkClassName%> this[<%=sFkKeysTypes%>]
|
||||||
@ -2906,7 +3058,7 @@ private void vlnDataPortalFetch(string sPrefix,IColumns cols,string sql,bool get
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(uniqueMatch != null)
|
if (uniqueMatch != null && uniqueMatch.Count > 1)
|
||||||
{
|
{
|
||||||
%>
|
%>
|
||||||
public <%=sFkClassName%> Add(<%=reqKeysTypes%>)// Many to Many with unique fields
|
public <%=sFkClassName%> Add(<%=reqKeysTypes%>)// Many to Many with unique fields
|
||||||
@ -2949,7 +3101,7 @@ private void vlnDataPortalFetch(string sPrefix,IColumns cols,string sql,bool get
|
|||||||
%>
|
%>
|
||||||
public <%=sFkClassName%> Add(<%=reqKeysTypes%>) // One to Many with unique fields
|
public <%=sFkClassName%> Add(<%=reqKeysTypes%>) // One to Many with unique fields
|
||||||
{
|
{
|
||||||
if (!Contains(<%=FormatColumns("{local}",uniqueMatch,", ","")%>))
|
if (!Contains(<%=FormatColumns("{!local}",uniqueMatch,", ","")%>))
|
||||||
{
|
{
|
||||||
<%=sFkClassName%> <%=slName%> = <%=sFkClassName%>.New(<%=reqKeys%>);
|
<%=sFkClassName%> <%=slName%> = <%=sFkClassName%>.New(<%=reqKeys%>);
|
||||||
this.Add(<%=slName%>);
|
this.Add(<%=slName%>);
|
||||||
@ -2970,6 +3122,8 @@ private void vlnDataPortalFetch(string sPrefix,IColumns cols,string sql,bool get
|
|||||||
}<%
|
}<%
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if(fkCols.Count == 1 && uniqueMatch != null && uniqueMatch.Count == 1 && fkCols[0]==uniqueMatch[0])
|
||||||
|
uniqueMatch=null;
|
||||||
%>
|
%>
|
||||||
public void Remove(<%=sFkKeysTypes%>)
|
public void Remove(<%=sFkKeysTypes%>)
|
||||||
{
|
{
|
||||||
@ -2995,9 +3149,42 @@ private void vlnDataPortalFetch(string sPrefix,IColumns cols,string sql,bool get
|
|||||||
if (<%=sFkCheck%>)
|
if (<%=sFkCheck%>)
|
||||||
return true;
|
return true;
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
public bool IsDirtyList(List<object> list)
|
||||||
|
{
|
||||||
|
// any non-new deletions make us dirty
|
||||||
|
foreach (<%=sFkClassName%> item in DeletedList)
|
||||||
|
if (!item.IsNew)
|
||||||
|
return true;
|
||||||
|
// run through all the child objects
|
||||||
|
// and if any are dirty then then
|
||||||
|
// collection is dirty
|
||||||
|
foreach (<%=sFkClassName%> child in this)
|
||||||
|
if (child.IsDirtyList(list))
|
||||||
|
return true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
public override bool IsValid
|
||||||
|
{
|
||||||
|
get { return IsValidList(new List<object>()); }
|
||||||
|
}
|
||||||
|
public bool IsValidList(List<object> list)
|
||||||
|
{
|
||||||
|
// run through all the child objects
|
||||||
|
// and if any are invalid then the
|
||||||
|
// collection is invalid
|
||||||
|
foreach (<%=sFkClassName%> child in this)
|
||||||
|
if (!child.IsValidList(list))
|
||||||
|
{
|
||||||
|
//Console.WriteLine("Valid {0} Child {1} - {2}", child.IsValid, child.GetType().Name,child.ToString());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
}<%
|
}<%
|
||||||
foreach(IList lst in uniqueChildren){
|
foreach(IList lst in uniqueChildren){
|
||||||
if (!SameTypes(lst,fkCols)){ // Has Required Fields 20070302
|
if (!SameTypes(lst,fkCols)){ // Has Required Fields 20070302
|
||||||
|
if(lst.Count == 1 && uniqueMatch != null && uniqueMatch.Count == 1 && lst[0]==uniqueMatch[0])
|
||||||
|
uniqueMatch=null;
|
||||||
string sLstKeysTypes = FormatColumns("{ctype} {local}",lst,", ");
|
string sLstKeysTypes = FormatColumns("{ctype} {local}",lst,", ");
|
||||||
// string sKeys = FormatColumns("{local}",lst,", ");
|
// string sKeys = FormatColumns("{local}",lst,", ");
|
||||||
string sLstCheck = FormatColumns(slName +".{prop} == {local}",lst," && ");
|
string sLstCheck = FormatColumns(slName +".{prop} == {local}",lst," && ");
|
||||||
@ -3018,6 +3205,27 @@ private void vlnDataPortalFetch(string sPrefix,IColumns cols,string sql,bool get
|
|||||||
}<%
|
}<%
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if(uniqueMatch != null && uniqueMatch.Count == 1)
|
||||||
|
{
|
||||||
|
IColumn col =(IColumn)uniqueMatch[0];
|
||||||
|
string sLstKeysTypes = FormatColumn("{!type} {!local}",col);
|
||||||
|
string sLstCheck = FormatColumn(slName +".{prop} == {!local}.{!column}",col);
|
||||||
|
%>
|
||||||
|
public bool Contains(<%=sLstKeysTypes%>)
|
||||||
|
{
|
||||||
|
foreach (<%=sFkClassName%> <%=slName%> in this)
|
||||||
|
if (<%=sLstCheck%>)
|
||||||
|
return true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
public bool ContainsDeleted(<%=sLstKeysTypes%>)
|
||||||
|
{
|
||||||
|
foreach (<%=sFkClassName%> <%=slName%> in DeletedList)
|
||||||
|
if (<%=sLstCheck%>)
|
||||||
|
return true;
|
||||||
|
return false;
|
||||||
|
}<%
|
||||||
|
}
|
||||||
%>
|
%>
|
||||||
#endregion<%
|
#endregion<%
|
||||||
}
|
}
|
||||||
@ -3402,7 +3610,7 @@ private void vlnDataPortalFetch(string sPrefix,IColumns cols,string sql,bool get
|
|||||||
bool bReadOnly = column.IsInPrimaryKey || column.IsAutoKey || column.IsComputed;
|
bool bReadOnly = column.IsInPrimaryKey || column.IsAutoKey || column.IsComputed;
|
||||||
string sCheck=(IsRelObj(column)?FormatColumn("\r\n\t\t\t\tif ({!member} != null) {member} = {!member}.{!column};",column):null);
|
string sCheck=(IsRelObj(column)?FormatColumn("\r\n\t\t\t\tif ({!member} != null) {member} = {!member}.{!column};",column):null);
|
||||||
vlnProperty(CSLAType( column ),MemberName(column)
|
vlnProperty(CSLAType( column ),MemberName(column)
|
||||||
,PropertyName(column),InitializeValue( column ),GetDescription(column),bReadOnly || IsRelObj(column),column.IsInPrimaryKey,false,null,sCheck,null);
|
,PropertyName(column),InitializeValue( column ),GetDescription(column),bReadOnly || IsRelObj(column),column.IsInPrimaryKey,false,null,sCheck,null,null);
|
||||||
vlnRelObjProperty(column,bReadOnly,false);
|
vlnRelObjProperty(column,bReadOnly,false);
|
||||||
if (column.IsInPrimaryKey){
|
if (column.IsInPrimaryKey){
|
||||||
sKey+=sep+MemberName(column);
|
sKey+=sep+MemberName(column);
|
||||||
@ -3426,7 +3634,7 @@ private void vlnDataPortalFetch(string sPrefix,IColumns cols,string sql,bool get
|
|||||||
{
|
{
|
||||||
string sProp = ClassName(pk.PrimaryTable) + sAlias + "_" + PropertyName(column);
|
string sProp = ClassName(pk.PrimaryTable) + sAlias + "_" + PropertyName(column);
|
||||||
vlnProperty(CSLAType( column ),MemberName(sProp)
|
vlnProperty(CSLAType( column ),MemberName(sProp)
|
||||||
,sProp,InitializeValue( column ),GetDescription(column),true,column.IsInPrimaryKey,false,null,null,null);
|
,sProp,InitializeValue( column ),GetDescription(column),true,column.IsInPrimaryKey,false,null,null,null,null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3458,12 +3666,13 @@ private void vlnDataPortalFetch(string sPrefix,IColumns cols,string sql,bool get
|
|||||||
{
|
{
|
||||||
string sColumn = RequiredRelatedColumn(col);
|
string sColumn = RequiredRelatedColumn(col);
|
||||||
if (sColumn != null){ // Let the Validation Rules handle IsDirty and IsValid - LazyLoad should be ignored.
|
if (sColumn != null){ // Let the Validation Rules handle IsDirty and IsValid - LazyLoad should be ignored.
|
||||||
sExtDirty += string.Format(" || ({0} == null ? false : {0}.IsDirty)",MemberName(sColumn));
|
sExtDirty += string.Format(" || ({0} == null ? false : {0}.IsDirtyList(list))",MemberName(sColumn));
|
||||||
sExtValid += string.Format(" && ({0} == null ? true : {0}.IsValid)",MemberName(sColumn));
|
sExtValid += string.Format(" && ({0} == null ? true : {0}.IsValid)",MemberName(sColumn));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(sExtDirty!="")vlnDirty(sExtDirty);
|
//if (sExtDirty!="")
|
||||||
if(sExtValid!="")vlnValid(sExtValid);
|
vlnDirty(sExtDirty);
|
||||||
|
vlnValid(sExtValid);
|
||||||
%>
|
%>
|
||||||
#endregion<%
|
#endregion<%
|
||||||
}
|
}
|
||||||
@ -3815,7 +4024,7 @@ private void vlnDataPortalFetch(string sPrefix,IColumns cols,string sql,bool get
|
|||||||
{
|
{
|
||||||
MarkAsChild();
|
MarkAsChild();
|
||||||
// TODO: Add any initialization & defaults
|
// TODO: Add any initialization & defaults
|
||||||
<%=FormatColumns("{member} = " + extMName + ".Default{prop};",HasDefaults(fk),"\r\n","\t\t\t")%>
|
<%=FormatColumns("\t\t\t{member} = {class}.Next{prop};\r\n",AutoKey(fk),"","")%><%=FormatColumns("{member} = " + extMName + ".Default{prop};",HasDefaults(fk),"\r\n","\t\t\t")%>
|
||||||
<%=sInit%>
|
<%=sInit%>
|
||||||
ValidationRules.CheckRules();
|
ValidationRules.CheckRules();
|
||||||
}<%
|
}<%
|
||||||
@ -3901,7 +4110,7 @@ private void vlnDataPortalFetch(string sPrefix,IColumns cols,string sql,bool get
|
|||||||
{
|
{
|
||||||
if (IsIn(column,fk.ForeignColumns))
|
if (IsIn(column,fk.ForeignColumns))
|
||||||
sDelete+=sepd+FormatColumn("{!localcolumn}",column);
|
sDelete+=sepd+FormatColumn("{!localcolumn}",column);
|
||||||
//sDelete+=sepd+FormatColumn("/*1*/{rmember}",RelatedColumn(column,fk));
|
//sDelete+=sepd+FormatColumn("{rmember}",RelatedColumn(column,fk));
|
||||||
else
|
else
|
||||||
sDelete+=sepd+FormatColumn("{member}",column);
|
sDelete+=sepd+FormatColumn("{member}",column);
|
||||||
sepd=", ";
|
sepd=", ";
|
||||||
@ -4001,7 +4210,7 @@ private void vlnDataPortalFetch(string sPrefix,IColumns cols,string sql,bool get
|
|||||||
#region Factory Methods
|
#region Factory Methods
|
||||||
public static <%=_className%> <%=sMember%> = null;
|
public static <%=_className%> <%=sMember%> = null;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Return a list of all projects.
|
/// Return a list of all <%=_subclassName%>.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static <%=_className%> Get()
|
public static <%=_className%> Get()
|
||||||
{
|
{
|
||||||
@ -4019,6 +4228,13 @@ private void vlnDataPortalFetch(string sPrefix,IColumns cols,string sql,bool get
|
|||||||
{
|
{
|
||||||
throw new DbCslaException("Error on <%=_className%>.Get", ex);
|
throw new DbCslaException("Error on <%=_className%>.Get", ex);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// Reset the list of all <%=_subclassName%>.
|
||||||
|
/// </summary>
|
||||||
|
public static void Reset()
|
||||||
|
{
|
||||||
|
<%=sMember%> = null;
|
||||||
}<%
|
}<%
|
||||||
// ForeignKeys - List Foreign Keys - May want to create stored procedures
|
// ForeignKeys - List Foreign Keys - May want to create stored procedures
|
||||||
%>
|
%>
|
||||||
@ -4198,12 +4414,25 @@ private void vlnDataPortalFetch(string sPrefix,IColumns cols,string sql,bool get
|
|||||||
string sMember=MemberName(sProp);
|
string sMember=MemberName(sProp);
|
||||||
string sCheck=FormatColumn("\r\n\t\t\t\tif ({!member} == null && {member} != {!empty}) {!member} = {!type}" + (bInfo?"Info":"") + ".Get({!typecast}{member});",column);
|
string sCheck=FormatColumn("\r\n\t\t\t\tif ({!member} == null && {member} != {!empty}) {!member} = {!type}" + (bInfo?"Info":"") + ".Get({!typecast}{member});",column);
|
||||||
string sCheck2=null;
|
string sCheck2=null;
|
||||||
|
string sCheck3=null;
|
||||||
if (column.IsNullable)
|
if (column.IsNullable)
|
||||||
|
{
|
||||||
sCheck2=FormatColumn("\r\n\t\t\t\t\t{member} = (value == null ? null : ({ctype})value.{!column});",column);
|
sCheck2=FormatColumn("\r\n\t\t\t\t\t{member} = (value == null ? null : ({ctype})value.{!column});",column);
|
||||||
vlnProperty(RelObjType( column ) + (bInfo?"Info":"") ,sMember
|
sCheck3=FormatColumn("({!member} == null ? {member} : ({ctype}){!member}.{!column}) != (value == null ? null : ({ctype})value.{!column})",column);
|
||||||
,sProp,";"+DebugLine("20070501.4"),"",bReadOnly,column.IsInPrimaryKey,false,null,sCheck,sCheck2);
|
|
||||||
if(sProp.StartsWith("My"))_refreshMine += string.Format("\t\t\t{0} = null;\r\n",sMember);
|
|
||||||
}
|
}
|
||||||
|
vlnProperty(RelObjType( column ) + (bInfo?"Info":"") ,sMember
|
||||||
|
,sProp,";"+DebugLine("20070501.4"),"",bReadOnly,column.IsInPrimaryKey,false,null,sCheck,sCheck2,sCheck3);
|
||||||
|
//if (sProp.StartsWith("My"))_refreshMine += string.Format("\t\t\t{0} = null;\r\n",sMember);
|
||||||
|
if (sProp.StartsWith("My"))AddRefreshMine(sMember);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private void AddRefreshMine(string sMember)
|
||||||
|
{
|
||||||
|
_refreshMine += string.Format("\t\t\tif({0} != null)\r\n",sMember);
|
||||||
|
_refreshMine += string.Format("\t\t\t{{\r\n",sMember);
|
||||||
|
_refreshMine += string.Format("\t\t\t\t{0}.Dispose();// Dispose related value\r\n",sMember);
|
||||||
|
_refreshMine += string.Format("\t\t\t\t{0} = null;// Reset related value\r\n",sMember);
|
||||||
|
_refreshMine += string.Format("\t\t\t}}\r\n",sMember);
|
||||||
}
|
}
|
||||||
private void vlnBusinessMethodsInfo(IColumns columns)
|
private void vlnBusinessMethodsInfo(IColumns columns)
|
||||||
{
|
{
|
||||||
@ -4234,7 +4463,7 @@ private void vlnDataPortalFetch(string sPrefix,IColumns cols,string sql,bool get
|
|||||||
{
|
{
|
||||||
string sCheck=(IsRelObj(column)?FormatColumn("\r\n\t\t\t\tif ({!member} != null) {member} = {!member}.{!column};",column):null);
|
string sCheck=(IsRelObj(column)?FormatColumn("\r\n\t\t\t\tif ({!member} != null) {member} = {!member}.{!column};",column):null);
|
||||||
vlnProperty(CSLAType( column ),MemberName(column)
|
vlnProperty(CSLAType( column ),MemberName(column)
|
||||||
,PropertyName(column),InitializeValue( column ),GetDescription(column),true,column.IsInPrimaryKey,false,null,sCheck,null);
|
,PropertyName(column),InitializeValue( column ),GetDescription(column),true,column.IsInPrimaryKey,false,null,sCheck,null,null);
|
||||||
vlnRelObjProperty(column,true,true);
|
vlnRelObjProperty(column,true,true);
|
||||||
}
|
}
|
||||||
Hashtable dicAlias = new Hashtable();
|
Hashtable dicAlias = new Hashtable();
|
||||||
@ -4246,12 +4475,16 @@ private void vlnDataPortalFetch(string sPrefix,IColumns cols,string sql,bool get
|
|||||||
string sAlias = GetAlias(FK);
|
string sAlias = GetAlias(FK);
|
||||||
string sClass = FKClassName(FK);
|
string sClass = FKClassName(FK);
|
||||||
string sClasses = FKClassesName(FK);
|
string sClasses = FKClassesName(FK);
|
||||||
vlnProperty("int",MemberName(sClass) + sAlias + "Count" ,sClass + sAlias + "Count", " = 0;",
|
|
||||||
"Count of " + sClasses + " for this " + ClassName(_workingTable),true,false,false,null,null,null);
|
|
||||||
if (!OneToOne(FK))
|
if (!OneToOne(FK))
|
||||||
FKPropertyList(ClassName(FK.ForeignTable),sClasses,FK,sAlias);
|
FKPropertyList(ClassName(FK.ForeignTable),sClasses,FK,sAlias);
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
vlnProperty("int",MemberName(sClass) + sAlias + "Count" ,sClass + sAlias + "Count", " = 0;",
|
||||||
|
"Count of " + sClasses + " for this " + ClassName(_workingTable),true,false,false,null,null,null,null);
|
||||||
FKPropertyInfo(ClassName(FK.ForeignTable),sClasses,FK,sAlias);
|
FKPropertyInfo(ClassName(FK.ForeignTable),sClasses,FK,sAlias);
|
||||||
|
// This line was added to reset the count if the Content object was changed
|
||||||
|
_refreshMine += string.Format("\t\t\t{0} = -1;// Reset Count\r\n",MemberName(sClass) + sAlias + "Count");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4267,8 +4500,25 @@ private void vlnDataPortalFetch(string sPrefix,IColumns cols,string sql,bool get
|
|||||||
string sCountMember = MemberName(SingularName(sClasses)) + sAlias + "Count";
|
string sCountMember = MemberName(SingularName(sClasses)) + sAlias + "Count";
|
||||||
string sBy = FKBy(FK);
|
string sBy = FKBy(FK);
|
||||||
string sProp = sClasses + sAlias;
|
string sProp = sClasses + sAlias;
|
||||||
|
string sParent = SingularName(FK.PrimaryTable.Name);
|
||||||
|
string sChild = SingularName(FK.ForeignTable.Name);
|
||||||
//_refreshMine += string.Format("\t\t\t{0} = null;\r\n",sMember);
|
//_refreshMine += string.Format("\t\t\t{0} = null;\r\n",sMember);
|
||||||
%>
|
%>
|
||||||
|
private int <%=sCountMember%> = 0;
|
||||||
|
/// <summary>
|
||||||
|
/// Count of <%=sMember.Substring(1)%> for this <%=sParent%>
|
||||||
|
/// </summary>
|
||||||
|
public int <%=sCountMember.Substring(1)%>
|
||||||
|
{
|
||||||
|
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
|
||||||
|
get
|
||||||
|
{
|
||||||
|
CanReadProperty("<%=sCountMember.Substring(1)%>", true);
|
||||||
|
if (<%=sCountMember%> < 0)
|
||||||
|
<%=sCountMember%> = <%=sProp%>.Count;
|
||||||
|
return <%=sCountMember%>;
|
||||||
|
}
|
||||||
|
}
|
||||||
private <%=sClass%>InfoList <%=sMember%> = null;
|
private <%=sClass%>InfoList <%=sMember%> = null;
|
||||||
[TypeConverter(typeof(<%=sClass%>InfoListConverter))]
|
[TypeConverter(typeof(<%=sClass%>InfoListConverter))]
|
||||||
public <%=sClass%>InfoList <%=sProp%>
|
public <%=sClass%>InfoList <%=sProp%>
|
||||||
@ -4277,10 +4527,20 @@ private void vlnDataPortalFetch(string sPrefix,IColumns cols,string sql,bool get
|
|||||||
get
|
get
|
||||||
{
|
{
|
||||||
CanReadProperty("<%=sProp%>", true);
|
CanReadProperty("<%=sProp%>", true);
|
||||||
if (<%=sCountMember%> > 0 && <%=sMember%> == null)
|
if (<%=sCountMember%> < 0 || (<%=sCountMember%> > 0 && <%=sMember%> == null))
|
||||||
<%=sMember%> = <%=sClass%>InfoList.Get<%=sBy%>(<%=sKeys%>);
|
<%=sMember%> = <%=sClass%>InfoList.Get<%=sBy%>(<%=sKeys%>);
|
||||||
|
if (<%=sCountMember%> < 0)
|
||||||
|
<%=sCountMember%> = <%=sMember%>.Count;
|
||||||
return <%=sMember%>;
|
return <%=sMember%>;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
public void Refresh<%=sProp%>()
|
||||||
|
{<%=DebugLine("20080430.3")%>
|
||||||
|
<%=sCountMember%> = -1;
|
||||||
|
ConvertListToDictionary();
|
||||||
|
if (_CacheByPrimaryKey.ContainsKey(<%=sKeys%>.ToString()))
|
||||||
|
foreach (<%=_className%> tmp in _CacheByPrimaryKey[<%=sKeys%>.ToString()])
|
||||||
|
tmp.<%=sCountMember%> = -1; // This will cause the data to be requeried
|
||||||
}<%
|
}<%
|
||||||
}
|
}
|
||||||
private void FKPropertyInfo(string sClass,string sClasses,IForeignKey FK,string sAlias)
|
private void FKPropertyInfo(string sClass,string sClasses,IForeignKey FK,string sAlias)
|
||||||
@ -4290,7 +4550,8 @@ private void vlnDataPortalFetch(string sPrefix,IColumns cols,string sql,bool get
|
|||||||
string sCountMember = MemberName(SingularName(sClasses)) + sAlias + "Count";
|
string sCountMember = MemberName(SingularName(sClasses)) + sAlias + "Count";
|
||||||
string sBy = FKBy(FK);
|
string sBy = FKBy(FK);
|
||||||
string sProp = "My" + sClass + sAlias;
|
string sProp = "My" + sClass + sAlias;
|
||||||
_refreshMine += string.Format("\t\t\t{0} = null;\r\n",sMember);
|
//_refreshMine += string.Format("\t\t\t{0} = null;// Reset related value\r\n",sMember);
|
||||||
|
AddRefreshMine(sMember);
|
||||||
%>
|
%>
|
||||||
private <%=sClass%>Info <%=sMember%> = null;
|
private <%=sClass%>Info <%=sMember%> = null;
|
||||||
[TypeConverter(typeof(<%=sClass%>InfoConverter))]
|
[TypeConverter(typeof(<%=sClass%>InfoConverter))]
|
||||||
@ -4300,8 +4561,11 @@ private void vlnDataPortalFetch(string sPrefix,IColumns cols,string sql,bool get
|
|||||||
get
|
get
|
||||||
{
|
{
|
||||||
CanReadProperty("<%=sProp%>", true);
|
CanReadProperty("<%=sProp%>", true);
|
||||||
if (<%=sCountMember%> > 0 && <%=sMember%> == null)
|
if (<%=sCountMember%> != 0 && <%=sMember%> == null)
|
||||||
|
{
|
||||||
<%=sMember%> = <%=sClass%>Info.Get(<%=sKeys%>);
|
<%=sMember%> = <%=sClass%>Info.Get(<%=sKeys%>);
|
||||||
|
<%=sCountMember%> = <%=sMember%> == null ? 0 : 1;
|
||||||
|
}
|
||||||
return <%=sMember%>;
|
return <%=sMember%>;
|
||||||
}
|
}
|
||||||
}<%
|
}<%
|
||||||
@ -4316,16 +4580,27 @@ private void vlnDataPortalFetch(string sPrefix,IColumns cols,string sql,bool get
|
|||||||
string sPKeys = FormatColumns("{member}",_workingTable.PrimaryKeys,", ","");
|
string sPKeys = FormatColumns("{member}",_workingTable.PrimaryKeys,", ","");
|
||||||
string sRefKeys = FormatColumns("{prop}.ToString()",_workingTable.PrimaryKeys," + \"_\" + ","");;//20070215
|
string sRefKeys = FormatColumns("{prop}.ToString()",_workingTable.PrimaryKeys," + \"_\" + ","");;//20070215
|
||||||
string sTmpKeys = FormatColumns("tmp.{prop}",_workingTable.PrimaryKeys,", ","");
|
string sTmpKeys = FormatColumns("tmp.{prop}",_workingTable.PrimaryKeys,", ","");
|
||||||
|
string sTRefKeys = FormatColumns("tmp.{prop}.ToString()",_workingTable.PrimaryKeys," + \"_\" + ","");;//20070215
|
||||||
%>
|
%>
|
||||||
#region Factory Methods
|
#region Factory Methods
|
||||||
private <%=_className%>()
|
private static int _<%=_className%>Unique = 0;
|
||||||
|
private static int <%=_className%>Unique
|
||||||
|
{ get { return ++_<%=_className%>Unique; } }
|
||||||
|
private int _My<%=_className%>Unique = <%=_className%>Unique;
|
||||||
|
public int My<%=_className%>Unique
|
||||||
|
{ get { return _My<%=_className%>Unique; } }
|
||||||
|
protected <%=_className%>()
|
||||||
{/* require use of factory methods */
|
{/* require use of factory methods */
|
||||||
_AllList.Add(this);
|
AddToCache(this);
|
||||||
}
|
}
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
_AllList.Remove(this);
|
RemoveFromCache(this);
|
||||||
_AllByPrimaryKey.Remove(<%=sRefKeys%>);
|
if (!_CacheByPrimaryKey.ContainsKey(<%=sRefKeys%>)) return;
|
||||||
|
List<<%=_className%>> list<%=_className%> = _CacheByPrimaryKey[<%=sRefKeys%>]; // Get the list of items
|
||||||
|
while (list<%=_className%>.Contains(this)) list<%=_className%>.Remove(this); // Remove the item from the list
|
||||||
|
if (list<%=_className%>.Count == 0) // If there are no items left in the list
|
||||||
|
_CacheByPrimaryKey.Remove(<%=sRefKeys%>); // remove the list
|
||||||
}
|
}
|
||||||
public virtual <%=ClassName( _workingTable )%> Get()
|
public virtual <%=ClassName( _workingTable )%> Get()
|
||||||
{<%=DebugLine("20070502.1")%>
|
{<%=DebugLine("20070502.1")%>
|
||||||
@ -4333,16 +4608,16 @@ private void vlnDataPortalFetch(string sPrefix,IColumns cols,string sql,bool get
|
|||||||
}
|
}
|
||||||
public static void Refresh(<%=ClassName( _workingTable )%> tmp)
|
public static void Refresh(<%=ClassName( _workingTable )%> tmp)
|
||||||
{
|
{
|
||||||
<%=_className%> tmpInfo = GetExistingByPrimaryKey(<%=sTmpKeys%>);
|
string key = <%=sTRefKeys%>;
|
||||||
if (tmpInfo == null) return;
|
ConvertListToDictionary();
|
||||||
|
if (_CacheByPrimaryKey.ContainsKey(key))
|
||||||
|
foreach (<%=_className%> tmpInfo in _CacheByPrimaryKey[key])
|
||||||
tmpInfo.RefreshFields(tmp);
|
tmpInfo.RefreshFields(tmp);
|
||||||
}
|
}
|
||||||
private void RefreshFields(<%=ClassName( _workingTable )%> tmp)
|
protected virtual void RefreshFields(<%=ClassName( _workingTable )%> tmp)
|
||||||
{<%
|
{<%=DebugLine("20080430.1")%><%
|
||||||
foreach(IColumn col in Updatable(_workingTable))
|
foreach(IColumn col in Updatable(_workingTable))
|
||||||
{
|
UpdateInfoFromEdit(col);
|
||||||
output.write(FormatColumn("\r\n\t\t\t{member} = tmp.{prop};",col));
|
|
||||||
}
|
|
||||||
%>
|
%>
|
||||||
<%=MemberName(_className)%>Extension.Refresh(this);
|
<%=MemberName(_className)%>Extension.Refresh(this);
|
||||||
<%=_refreshMine%> OnChange();// raise an event
|
<%=_refreshMine%> OnChange();// raise an event
|
||||||
@ -4357,38 +4632,47 @@ private void vlnDataPortalFetch(string sPrefix,IColumns cols,string sql,bool get
|
|||||||
// 20070326 - Need to add an object reference
|
// 20070326 - Need to add an object reference
|
||||||
string sPrefix = "";
|
string sPrefix = "";
|
||||||
string sTmpKeys2 = sTmpKeys;
|
string sTmpKeys2 = sTmpKeys;
|
||||||
|
string sTmpKeyString = sTRefKeys;
|
||||||
if (ForeignPrimary(fk))
|
if (ForeignPrimary(fk))
|
||||||
{
|
{
|
||||||
string sOther = ClassName(fk.PrimaryTable);
|
string sOther = ClassName(fk.PrimaryTable);
|
||||||
sPrefix = ClassName(fk.PrimaryTable) + " my" + ClassName(fk.PrimaryTable) + ", ";
|
sPrefix = ClassName(fk.PrimaryTable) + " my" + ClassName(fk.PrimaryTable) + ", ";
|
||||||
string ssep="";
|
string ssep="";
|
||||||
|
string ssepstr="";
|
||||||
sTmpKeys2="";
|
sTmpKeys2="";
|
||||||
|
sTmpKeyString = "";
|
||||||
foreach(IColumn col in _workingTable.PrimaryKeys)
|
foreach(IColumn col in _workingTable.PrimaryKeys)
|
||||||
{
|
{
|
||||||
//WriteLine("\r\n//!type = '{0}', sOther = '{1}', Col.Name = '{2}'", FormatColumn("{!type}",col), sOther, col.Name);
|
//WriteLine("\r\n//!type = '{0}', sOther = '{1}', Col.Name = '{2}'", FormatColumn("{!type}",col), sOther, col.Name);
|
||||||
if (FormatColumn("{!type}",col)==sOther)
|
if (FormatColumn("{!type}",col)==sOther)
|
||||||
|
{
|
||||||
sTmpKeys2 += ssep + FormatColumn("{!localcolumn}",col);
|
sTmpKeys2 += ssep + FormatColumn("{!localcolumn}",col);
|
||||||
|
sTmpKeyString += ssepstr + FormatColumn("{!localcolumn}",col) + ".ToString()";
|
||||||
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
sTmpKeys2 += ssep + FormatColumn("tmp.{prop}",col);
|
sTmpKeys2 += ssep + FormatColumn("tmp.{prop}",col);
|
||||||
|
sTmpKeyString += ssepstr + FormatColumn("tmp.{prop}",col) + ".ToString()";
|
||||||
|
}
|
||||||
ssep=", ";
|
ssep=", ";
|
||||||
|
ssepstr=" + \"_\" + ";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
%>
|
%>
|
||||||
public static void Refresh(<%=sPrefix%><%=sClass%> tmp)
|
public static void Refresh(<%=sPrefix%><%=sClass%> tmp)
|
||||||
{
|
{
|
||||||
<%=_className%> tmpInfo = GetExistingByPrimaryKey(<%=sTmpKeys2%>);
|
string key = <%=sTmpKeyString%>;
|
||||||
if (tmpInfo == null) return;
|
ConvertListToDictionary();
|
||||||
|
if (_CacheByPrimaryKey.ContainsKey(key))
|
||||||
|
foreach (<%=_className%> tmpInfo in _CacheByPrimaryKey[key])
|
||||||
tmpInfo.RefreshFields(tmp);
|
tmpInfo.RefreshFields(tmp);
|
||||||
}
|
}
|
||||||
private void RefreshFields(<%=sClass%> tmp)
|
protected virtual void RefreshFields(<%=sClass%> tmp)
|
||||||
{<%
|
{<%=DebugLine("20080430.2")%><%
|
||||||
foreach(IColumn col in Updatable(_workingTable))
|
foreach(IColumn col in Updatable(_workingTable))
|
||||||
{
|
{
|
||||||
if (!IsIn(col,fk.ForeignColumns))
|
if (!IsIn(col,fk.ForeignColumns))
|
||||||
{
|
UpdateInfoFromEdit(col);
|
||||||
%>
|
|
||||||
<%=FormatColumn("{member} = tmp.{prop};",col)%><%
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
%>
|
%>
|
||||||
<%=MemberName(_className)%>Extension.Refresh(this);
|
<%=MemberName(_className)%>Extension.Refresh(this);
|
||||||
@ -4403,15 +4687,19 @@ private void vlnDataPortalFetch(string sPrefix,IColumns cols,string sql,bool get
|
|||||||
// throw new System.Security.SecurityException("User not authorized to view a <%=ClassName(_workingTable)%>");
|
// throw new System.Security.SecurityException("User not authorized to view a <%=ClassName(_workingTable)%>");
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
<%=_className%> tmp = GetExistingByPrimaryKey(<%=sKeys%>);
|
<%=_className%> tmp = GetCachedByPrimaryKey(<%=sKeys%>);
|
||||||
if (tmp == null)
|
if (tmp == null)
|
||||||
{
|
{
|
||||||
tmp = DataPortal.Fetch<<%=_className%>>(new PKCriteria(<%=sKeys%>));
|
tmp = DataPortal.Fetch<<%=_className%>>(new PKCriteria(<%=sKeys%>));
|
||||||
_AllList.Add(tmp);
|
AddToCache(tmp);
|
||||||
}
|
}
|
||||||
if (tmp.ErrorMessage == "No Record Found")<%
|
if (tmp.ErrorMessage == "No Record Found")<%
|
||||||
if(!OneToOne(_workingTable)){
|
if (!OneToOne(_workingTable) || true){ // RHM 20080710 - Not sure why it should not return null
|
||||||
%> tmp = null;<%
|
%>
|
||||||
|
{
|
||||||
|
tmp.Dispose(); // Clean-up <%=_className%>
|
||||||
|
tmp = null;
|
||||||
|
}<%
|
||||||
} else {
|
} else {
|
||||||
%>
|
%>
|
||||||
{
|
{
|
||||||
@ -4428,6 +4716,27 @@ private void vlnDataPortalFetch(string sPrefix,IColumns cols,string sql,bool get
|
|||||||
}
|
}
|
||||||
#endregion<%
|
#endregion<%
|
||||||
}
|
}
|
||||||
|
private void UpdateInfoFromEdit(IColumn col) //20080430.4
|
||||||
|
{
|
||||||
|
if (col.ForeignKeys.Count > 0)
|
||||||
|
{
|
||||||
|
string sProp=RelObjProp(col);
|
||||||
|
string sMember=MemberName(sProp);
|
||||||
|
IForeignKey FK = col.ForeignKeys[0];
|
||||||
|
//string sClass = FKClassName(FK);
|
||||||
|
string sClasses = FKClassesName(FK);
|
||||||
|
string sAlias = GetAlias(FK);
|
||||||
|
output.write(FormatColumn("\r\n\t\t\tif ({member} != tmp.{prop})",col));
|
||||||
|
output.write("\r\n\t\t\t{");
|
||||||
|
output.write("\r\n\t\t\t\tif (" + sProp + " != null) " + sProp + ".Refresh" + sClasses + sAlias + "(); // Update List for old value");
|
||||||
|
output.write(FormatColumn("\r\n\t\t\t\t{member} = tmp.{prop}; // Update the value",col));
|
||||||
|
output.write("\r\n\t\t\t}");
|
||||||
|
output.write("\r\n\t\t\t" + sMember + " = null; // Reset list so that the next line gets a new list" );
|
||||||
|
output.write("\r\n\t\t\tif (" + sProp + " != null) " + sProp + ".Refresh" + sClasses + sAlias + "(); // Update List for new value");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
output.write(FormatColumn("\r\n\t\t\t{member} = tmp.{prop};",col));
|
||||||
|
}
|
||||||
private void vlnDataAccessPortalInfo(IColumns columns)
|
private void vlnDataAccessPortalInfo(IColumns columns)
|
||||||
{
|
{
|
||||||
%>
|
%>
|
||||||
|
@ -195,7 +195,7 @@
|
|||||||
sepSet="\r\n";
|
sepSet="\r\n";
|
||||||
if(IsRelObj(col)) // If item is null, don't look it up
|
if(IsRelObj(col)) // If item is null, don't look it up
|
||||||
{
|
{
|
||||||
sParentCheck += sCheckSep + LocalName(RelObjProp(col)) + " != null ";
|
sParentCheck += "/*0*/" + sCheckSep + LocalName(RelObjProp(col)) + " != null ";
|
||||||
sCheckSep = "|| ";
|
sCheckSep = "|| ";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -511,6 +511,17 @@
|
|||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
public string ColumnListToString(IList lst)
|
||||||
|
{
|
||||||
|
string retval = "";
|
||||||
|
string sep = "";
|
||||||
|
foreach(IColumn col in lst)
|
||||||
|
{
|
||||||
|
retval += sep + col.Name;
|
||||||
|
sep=", ";
|
||||||
|
}
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
//public ArrayList zzFilteredColumnsAny(IColumns columns,Filter [] fs){
|
//public ArrayList zzFilteredColumnsAny(IColumns columns,Filter [] fs){
|
||||||
// ArrayList l = new ArrayList();
|
// ArrayList l = new ArrayList();
|
||||||
// foreach(IColumn column in columns)
|
// foreach(IColumn column in columns)
|
||||||
|
@ -367,8 +367,14 @@
|
|||||||
s="Environment.UserName";
|
s="Environment.UserName";
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
if(IsNumeric(s))s="" + s;
|
if(IsNumeric(s))
|
||||||
else s="";
|
s = "" + s;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(s.StartsWith("N'"))
|
||||||
|
s = "\"" + s.Substring(2,s.Length-3) + "\"";
|
||||||
|
}
|
||||||
|
//else s="";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return s;
|
return s;
|
||||||
|
@ -255,7 +255,9 @@ public class GeneratedTemplate : DotNetScriptTemplate
|
|||||||
{
|
{
|
||||||
StartProc("purgeData");
|
StartProc("purgeData");
|
||||||
%>
|
%>
|
||||||
AS<%
|
AS
|
||||||
|
BEGIN TRY -- Try Block
|
||||||
|
BEGIN TRANSACTION<%
|
||||||
ArrayList toProcess = new ArrayList();
|
ArrayList toProcess = new ArrayList();
|
||||||
ArrayList processed = new ArrayList();
|
ArrayList processed = new ArrayList();
|
||||||
foreach(string sTable in _selectedTables)
|
foreach(string sTable in _selectedTables)
|
||||||
@ -307,7 +309,7 @@ AS<%
|
|||||||
}
|
}
|
||||||
if(processed.Count ==pCount)return;
|
if(processed.Count ==pCount)return;
|
||||||
}
|
}
|
||||||
EndProc("purgeData");
|
EndProcTran("purgeData");
|
||||||
}
|
}
|
||||||
private void InitializeMembers()
|
private void InitializeMembers()
|
||||||
{
|
{
|
||||||
@ -387,6 +389,8 @@ AS
|
|||||||
<%=FormatColumns("{@} {dtype}{?null}",tbl.Columns,",\r\n","\t")%><%=FormatColumns("{@new} {dtype} output",Computed(tbl),"",",\r\n\t")%>
|
<%=FormatColumns("{@} {dtype}{?null}",tbl.Columns,",\r\n","\t")%><%=FormatColumns("{@new} {dtype} output",Computed(tbl),"",",\r\n\t")%>
|
||||||
)
|
)
|
||||||
AS
|
AS
|
||||||
|
BEGIN TRY -- Try Block
|
||||||
|
BEGIN TRANSACTION
|
||||||
UPDATE [<%=tbl.Name%>]
|
UPDATE [<%=tbl.Name%>]
|
||||||
SET
|
SET
|
||||||
<%=FormatColumns("[{name}]={@}",Updatable(tbl),",\r\n","\t\t\t")%>
|
<%=FormatColumns("[{name}]={@}",Updatable(tbl),",\r\n","\t\t\t")%>
|
||||||
@ -405,7 +409,7 @@ AS
|
|||||||
FROM [<%=tbl.Name%>] WHERE <%=FormatColumns("[{name}]={@}",tbl.PrimaryKeys," AND ","")%>
|
FROM [<%=tbl.Name%>] WHERE <%=FormatColumns("[{name}]={@}",tbl.PrimaryKeys," AND ","")%>
|
||||||
<%
|
<%
|
||||||
}
|
}
|
||||||
EndProc(sproc);
|
EndProcTran(sproc);
|
||||||
}
|
}
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
// Insert
|
// Insert
|
||||||
@ -419,6 +423,8 @@ AS
|
|||||||
<%=FormatColumns("{@} {dtype}{?null}",Insertable(tbl),",\r\n","\t")%><%=FormatColumns("{@new} {dtype} output",NotInsertable(tbl),"",",\r\n\t")%>
|
<%=FormatColumns("{@} {dtype}{?null}",Insertable(tbl),",\r\n","\t")%><%=FormatColumns("{@new} {dtype} output",NotInsertable(tbl),"",",\r\n\t")%>
|
||||||
)
|
)
|
||||||
AS
|
AS
|
||||||
|
BEGIN TRY -- Try Block
|
||||||
|
BEGIN TRANSACTION
|
||||||
INSERT INTO [<%=tbl.Name%>]
|
INSERT INTO [<%=tbl.Name%>]
|
||||||
(
|
(
|
||||||
<%=FormatColumns("[{name}]",Insertable(tbl),",\r\n","\t\t")%>
|
<%=FormatColumns("[{name}]",Insertable(tbl),",\r\n","\t\t")%>
|
||||||
@ -435,7 +441,7 @@ AS
|
|||||||
SELECT <%=FormatColumns("{@new}=[{name}]",cmp,"\r\n","\t\t")%>
|
SELECT <%=FormatColumns("{@new}=[{name}]",cmp,"\r\n","\t\t")%>
|
||||||
FROM [<%=tbl.Name%>] WHERE <%=FormatColumns("[{name}]={@key}",tbl.PrimaryKeys," AND ","")%><%
|
FROM [<%=tbl.Name%>] WHERE <%=FormatColumns("[{name}]={@key}",tbl.PrimaryKeys," AND ","")%><%
|
||||||
}
|
}
|
||||||
EndProc(sproc);
|
EndProcTran(sproc);
|
||||||
}
|
}
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
// Delete
|
// Delete
|
||||||
@ -448,7 +454,9 @@ AS
|
|||||||
(
|
(
|
||||||
<%=FormatColumns("{@} {dtype}",tbl.PrimaryKeys,",\r\n","\t")%>
|
<%=FormatColumns("{@} {dtype}",tbl.PrimaryKeys,",\r\n","\t")%>
|
||||||
)
|
)
|
||||||
AS<%
|
AS
|
||||||
|
BEGIN TRY -- Try Block
|
||||||
|
BEGIN TRANSACTION<%
|
||||||
foreach(IForeignKey fk in tbl.ForeignKeys)
|
foreach(IForeignKey fk in tbl.ForeignKeys)
|
||||||
{
|
{
|
||||||
if(tbl != fk.ForeignTable)
|
if(tbl != fk.ForeignTable)
|
||||||
@ -467,7 +475,7 @@ AS<%
|
|||||||
%>
|
%>
|
||||||
DELETE [<%=tbl.Name%>]
|
DELETE [<%=tbl.Name%>]
|
||||||
WHERE <%=FormatColumns("[{name}] = {@}",tbl.PrimaryKeys," AND ","")%><%
|
WHERE <%=FormatColumns("[{name}] = {@}",tbl.PrimaryKeys," AND ","")%><%
|
||||||
EndProc(sproc);
|
EndProcTran(sproc);
|
||||||
}
|
}
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
// SelectPK
|
// SelectPK
|
||||||
@ -638,6 +646,24 @@ GO
|
|||||||
IF (@@Error = 0) PRINT 'Procedure Creation: <%=sproc%> Succeeded'
|
IF (@@Error = 0) PRINT 'Procedure Creation: <%=sproc%> Succeeded'
|
||||||
ELSE PRINT 'Procedure Creation: <%=sproc%> Error on Creation'
|
ELSE PRINT 'Procedure Creation: <%=sproc%> Error on Creation'
|
||||||
GO
|
GO
|
||||||
|
<%
|
||||||
|
SaveFile(sproc);
|
||||||
|
}
|
||||||
|
private void EndProcTran(string sproc)
|
||||||
|
{
|
||||||
|
%>
|
||||||
|
IF( @@TRANCOUNT > 0 ) COMMIT
|
||||||
|
END TRY
|
||||||
|
BEGIN CATCH -- Catch Block
|
||||||
|
IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level
|
||||||
|
ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback
|
||||||
|
EXEC vlnErrorHandler
|
||||||
|
END CATCH
|
||||||
|
GO
|
||||||
|
-- Display the status of Proc creation
|
||||||
|
IF (@@Error = 0) PRINT 'Procedure Creation: <%=sproc%> Succeeded'
|
||||||
|
ELSE PRINT 'Procedure Creation: <%=sproc%> Error on Creation'
|
||||||
|
GO
|
||||||
<%
|
<%
|
||||||
SaveFile(sproc);
|
SaveFile(sproc);
|
||||||
}
|
}
|
||||||
|
@ -64,27 +64,29 @@ public class GeneratedGui : DotNetScriptGui
|
|||||||
|
|
||||||
GuiCheckBox chkDetail = MakeGuiCheckBox( "chkDetail", "MakeList & FK", true, "Show MakeList and FK",100 );
|
GuiCheckBox chkDetail = MakeGuiCheckBox( "chkDetail", "MakeList & FK", true, "Show MakeList and FK",100 );
|
||||||
chkDetail.Checked = false;
|
chkDetail.Checked = false;
|
||||||
GuiCheckBox chkColumns = MakeGuiCheckBox( "chkColumns", "Columns", true, "Show Columns" ,150,chkDetail,200,0);
|
GuiCheckBox chkColumns = MakeGuiCheckBox( "chkColumns", "Columns", true, "Show Columns" ,150,chkDetail,150,0);
|
||||||
chkColumns.Checked = false;
|
chkColumns.Checked = false;
|
||||||
GuiCheckBox chkFKCalc1 = MakeGuiCheckBox( "chkFKCalc1", "FK Calc 1", true, "FK Calc 1" ,150,chkDetail,400,0);
|
GuiCheckBox chkFKCalc1 = MakeGuiCheckBox( "chkFKCalc1", "FK Calc 1", true, "FK Calc 1" ,150,chkDetail,300,0);
|
||||||
chkFKCalc1.Checked = false;
|
chkFKCalc1.Checked = false;
|
||||||
|
GuiCheckBox chkProc = MakeGuiCheckBox( "chkProc", "Procedures", true, "Procedures" ,150,chkDetail,450,0);
|
||||||
|
chkProc.Checked = false;
|
||||||
GuiCheckBox chkUnique = MakeGuiCheckBox( "chkUnique", "Unique", true, "Unique Indexes" ,150,chkDetail,0, -1);
|
GuiCheckBox chkUnique = MakeGuiCheckBox( "chkUnique", "Unique", true, "Unique Indexes" ,150,chkDetail,0, -1);
|
||||||
chkUnique.Checked = false;
|
chkUnique.Checked = false;
|
||||||
GuiCheckBox chkFKCalc2 = MakeGuiCheckBox( "chkFKCalc2", "FK Calc 2", true, "FK Calc 2" ,150,chkDetail,200, -1);
|
GuiCheckBox chkFKCalc2 = MakeGuiCheckBox( "chkFKCalc2", "FK Calc 2", true, "FK Calc 2" ,150,chkDetail,150, -1);
|
||||||
chkFKCalc2.Checked = false;
|
chkFKCalc2.Checked = false;
|
||||||
GuiCheckBox chkColumns2 = MakeGuiCheckBox("chkColumns2","PrimFK",true,"Primary Foreign Key",150,chkDetail,400, -1);
|
GuiCheckBox chkColumns2 = MakeGuiCheckBox("chkColumns2","PrimFK",true,"Primary Foreign Key",150,chkDetail,300, -1);
|
||||||
chkColumns2.Checked = false;
|
chkColumns2.Checked = false;
|
||||||
GuiCheckBox chkRelated = MakeGuiCheckBox("chkRelated","Related",true,"Related",150,chkDetail,0,-2);
|
GuiCheckBox chkRelated = MakeGuiCheckBox("chkRelated","Related",true,"Related",150,chkDetail,0,-2);
|
||||||
chkRelated.Checked = false;
|
chkRelated.Checked = false;
|
||||||
GuiCheckBox chkOne2One = MakeGuiCheckBox("chkOne2One","One to One",true,"One to Many and One to One",150,chkDetail,200, -2);
|
GuiCheckBox chkOne2One = MakeGuiCheckBox("chkOne2One","One to One",true,"One to Many and One to One",150,chkDetail,150, -2);
|
||||||
chkOne2One.Checked = false;
|
chkOne2One.Checked = false;
|
||||||
GuiCheckBox chkIndexes = MakeGuiCheckBox("chkIndexes","Indexes",true,"Compare Foreign Keys to Indexes",150,chkDetail,400, -2);
|
GuiCheckBox chkIndexes = MakeGuiCheckBox("chkIndexes","Indexes",true,"Compare Foreign Keys to Indexes",150,chkDetail,300, -2);
|
||||||
chkIndexes.Checked = false;
|
chkIndexes.Checked = false;
|
||||||
GuiCheckBox chkInternal = MakeGuiCheckBox("chkInternal","Internal",true,"Internal Relationships",150,chkDetail, 0, -3);
|
GuiCheckBox chkInternal = MakeGuiCheckBox("chkInternal","Internal",true,"Internal Relationships",150,chkDetail, 0, -3);
|
||||||
chkInternal.Checked = false;
|
chkInternal.Checked = false;
|
||||||
GuiCheckBox chkAlias = MakeGuiCheckBox("chkAlias","Alias",true,"Aliases",150,chkDetail, 200, -3);
|
GuiCheckBox chkAlias = MakeGuiCheckBox("chkAlias","Alias",true,"Aliases",150,chkDetail, 150, -3);
|
||||||
chkAlias.Checked = false;
|
chkAlias.Checked = false;
|
||||||
GuiCheckBox chkNames = MakeGuiCheckBox("chkNames","Names",true,"Names",150,chkDetail, 400, -3);
|
GuiCheckBox chkNames = MakeGuiCheckBox("chkNames","Names",true,"Names",150,chkDetail, 300, -3);
|
||||||
chkNames.Checked = false;
|
chkNames.Checked = false;
|
||||||
// Setup Tables selection multi-select listbox.
|
// Setup Tables selection multi-select listbox.
|
||||||
GuiLabel label7 = ui.AddLabel( "label7", "Select tables:", "Select tables from the listbox below." );
|
GuiLabel label7 = ui.AddLabel( "label7", "Select tables:", "Select tables from the listbox below." );
|
||||||
@ -113,6 +115,7 @@ public class GeneratedGui : DotNetScriptGui
|
|||||||
chkInternal.AttachEvent( "onclick", "checkbox_onclick" );
|
chkInternal.AttachEvent( "onclick", "checkbox_onclick" );
|
||||||
chkAlias.AttachEvent( "onclick", "checkbox_onclick" );
|
chkAlias.AttachEvent( "onclick", "checkbox_onclick" );
|
||||||
chkNames.AttachEvent( "onclick", "checkbox_onclick" );
|
chkNames.AttachEvent( "onclick", "checkbox_onclick" );
|
||||||
|
chkProc.AttachEvent( "onclick", "checkbox_onclick" );
|
||||||
chooseTables.AttachEvent( "onchange", "chooseTable_onclick" );
|
chooseTables.AttachEvent( "onchange", "chooseTable_onclick" );
|
||||||
ui.ShowGui = true;
|
ui.ShowGui = true;
|
||||||
GuiButton btnOK = ui.AddButton( "OK", "OK", "Generate Code" );
|
GuiButton btnOK = ui.AddButton( "OK", "OK", "Generate Code" );
|
||||||
@ -226,6 +229,7 @@ public class GeneratedGui : DotNetScriptGui
|
|||||||
GuiCheckBox chkInternal= ui["chkInternal"] as GuiCheckBox;
|
GuiCheckBox chkInternal= ui["chkInternal"] as GuiCheckBox;
|
||||||
GuiCheckBox chkAlias= ui["chkAlias"] as GuiCheckBox;
|
GuiCheckBox chkAlias= ui["chkAlias"] as GuiCheckBox;
|
||||||
GuiCheckBox chkNames= ui["chkNames"] as GuiCheckBox;
|
GuiCheckBox chkNames= ui["chkNames"] as GuiCheckBox;
|
||||||
|
GuiCheckBox chkProc = ui["chkProc"] as GuiCheckBox;
|
||||||
GuiLabel labelTest = ui["labelTest"] as GuiLabel;
|
GuiLabel labelTest = ui["labelTest"] as GuiLabel;
|
||||||
string status = "";
|
string status = "";
|
||||||
if(chkDetail.Checked)status+=", " + chkDetail.Text;
|
if(chkDetail.Checked)status+=", " + chkDetail.Text;
|
||||||
@ -240,6 +244,7 @@ public class GeneratedGui : DotNetScriptGui
|
|||||||
if(chkInternal.Checked)status+=", " + chkInternal.Text;
|
if(chkInternal.Checked)status+=", " + chkInternal.Text;
|
||||||
if(chkAlias.Checked)status+=", " + chkAlias.Text;
|
if(chkAlias.Checked)status+=", " + chkAlias.Text;
|
||||||
if(chkNames.Checked)status+=", " + chkNames.Text;
|
if(chkNames.Checked)status+=", " + chkNames.Text;
|
||||||
|
if(chkProc.Checked)status+=", " + chkProc.Text;
|
||||||
if(status == "")
|
if(status == "")
|
||||||
{
|
{
|
||||||
btnOK.Enabled = false;
|
btnOK.Enabled = false;
|
||||||
@ -326,6 +331,12 @@ public class GeneratedTemplate : DotNetScriptTemplate
|
|||||||
_selectedTables = input["chooseTables"] as ArrayList;
|
_selectedTables = input["chooseTables"] as ArrayList;
|
||||||
dicIndexes = new Hashtable();
|
dicIndexes = new Hashtable();
|
||||||
dicDrop = new Hashtable();
|
dicDrop = new Hashtable();
|
||||||
|
if((bool)input["chkProc"])
|
||||||
|
{
|
||||||
|
ShowProcs(db);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
foreach( string _newTable in _selectedTables )
|
foreach( string _newTable in _selectedTables )
|
||||||
{
|
{
|
||||||
_workingTable = MyMeta.Databases[_dbName].Tables[_newTable];
|
_workingTable = MyMeta.Databases[_dbName].Tables[_newTable];
|
||||||
@ -342,6 +353,7 @@ public class GeneratedTemplate : DotNetScriptTemplate
|
|||||||
if((bool)input["chkAlias"])ShowAlias( _workingTable );
|
if((bool)input["chkAlias"])ShowAlias( _workingTable );
|
||||||
if((bool)input["chkNames"])ShowNames( _workingTable );
|
if((bool)input["chkNames"])ShowNames( _workingTable );
|
||||||
}
|
}
|
||||||
|
}
|
||||||
//foreach(ITable tbl in db.Tables)
|
//foreach(ITable tbl in db.Tables)
|
||||||
//{
|
//{
|
||||||
// ShowTable3(tbl);
|
// ShowTable3(tbl);
|
||||||
@ -355,6 +367,22 @@ public class GeneratedTemplate : DotNetScriptTemplate
|
|||||||
//}
|
//}
|
||||||
//SaveFile();
|
//SaveFile();
|
||||||
}
|
}
|
||||||
|
private void ShowProcs(IDatabase db)
|
||||||
|
{
|
||||||
|
foreach(IProcedure ip in db.Procedures)
|
||||||
|
{
|
||||||
|
//if(ip.Schema != "sys")
|
||||||
|
if(ip.Name=="purgeData" || ip.Name=="ve_GetPath")
|
||||||
|
{
|
||||||
|
%>
|
||||||
|
/****** Object: StoredProcedure [<%=ip.Name%>] Schema <%=ip.Schema%> Type <%=ip.Type.ToString()%> ******/
|
||||||
|
<%
|
||||||
|
bool isFunction=ip.ProcedureText.Contains("CREATE FUNCTION");
|
||||||
|
output.writeln(string.Format("IsFunction = {0}",isFunction));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private string ForeignKeyCheck(IColumn col)
|
private string ForeignKeyCheck(IColumn col)
|
||||||
{
|
{
|
||||||
if(col.IsInForeignKey)
|
if(col.IsInForeignKey)
|
||||||
|
@ -70,6 +70,7 @@ public class GeneratedGui : DotNetScriptGui
|
|||||||
GuiCheckBox chkDrop = MakeGuiCheckBox( "chkDrop", "Drop", true, "Drop Procedures" ,150,chkDelete,200,0);
|
GuiCheckBox chkDrop = MakeGuiCheckBox( "chkDrop", "Drop", true, "Drop Procedures" ,150,chkDelete,200,0);
|
||||||
GuiCheckBox chkSelectPK = MakeGuiCheckBox( "chkSelectPK", "Select One", true, "Select One Record" ,150,chkInsert,0,-1);
|
GuiCheckBox chkSelectPK = MakeGuiCheckBox( "chkSelectPK", "Select One", true, "Select One Record" ,150,chkInsert,0,-1);
|
||||||
GuiCheckBox chkExists = MakeGuiCheckBox("chkExists","Exists",true,"Check Record Exists",150,chkSelectPK,150,0);
|
GuiCheckBox chkExists = MakeGuiCheckBox("chkExists","Exists",true,"Check Record Exists",150,chkSelectPK,150,0);
|
||||||
|
GuiCheckBox chkVolian = MakeGuiCheckBox( "chkVolian", "Volian SPs", true, "Include Volian SPs" ,150,chkExists,200,0);
|
||||||
GuiCheckBox chkPurge = MakeGuiCheckBox("chkPurge","Purge",true,"Purge All Data",150,chkSelectPK,0,-1);
|
GuiCheckBox chkPurge = MakeGuiCheckBox("chkPurge","Purge",true,"Purge All Data",150,chkSelectPK,0,-1);
|
||||||
GuiCheckBox chkSelectFKs = MakeGuiCheckBox("chkSelectFKs","Select Group",true,"Select by Foreign Key",150,chkPurge,150,0);
|
GuiCheckBox chkSelectFKs = MakeGuiCheckBox("chkSelectFKs","Select Group",true,"Select by Foreign Key",150,chkPurge,150,0);
|
||||||
|
|
||||||
@ -223,22 +224,44 @@ public class GeneratedTemplate : DotNetScriptTemplate
|
|||||||
SaveProcs(db);
|
SaveProcs(db);
|
||||||
//SaveTables(db);
|
//SaveTables(db);
|
||||||
}
|
}
|
||||||
|
private bool IncludeVolian(string sName)
|
||||||
|
{
|
||||||
|
return (!sName.StartsWith("ve") || (bool)input["chkVolian"]);
|
||||||
|
}
|
||||||
|
private void SaveProcsTesting(IDatabase db)
|
||||||
|
{
|
||||||
|
foreach(IProcedure ip in db.Procedures)
|
||||||
|
{
|
||||||
|
if(ip.Name == "vefn_SplitROSearch" || ip.Name == "ve_GetPath" || ip.Name == "getItemAndChildren")
|
||||||
|
{
|
||||||
|
output.writeln(string.Format("Name = '{0}' ",ip.Name));
|
||||||
|
output.writeln(string.Format("Schema = '{0}' ",ip.Schema));
|
||||||
|
foreach(IParameter param in ip.Parameters)
|
||||||
|
{
|
||||||
|
output.writeln(string.Format(" Parameter - {0} = {1}",param.Name,param.ParameterType));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
private void SaveProcs(IDatabase db)
|
private void SaveProcs(IDatabase db)
|
||||||
{
|
{
|
||||||
foreach(IProcedure ip in db.Procedures)
|
foreach(IProcedure ip in db.Procedures)
|
||||||
{
|
{
|
||||||
if(ip.Schema != "sys"){
|
if(ip.Schema != "sys"){
|
||||||
|
bool isProc = IsProcedure(ip);
|
||||||
|
string sType = isProc ? "PROCEDURE" : "FUNCTION";
|
||||||
|
string sIsType = isProc ? "Procedure" : (IsTableFunction(ip) ? "TableFunction" : "ScalarFunction");
|
||||||
string sName = ip.Name;
|
string sName = ip.Name;
|
||||||
if((bool)input["chkDrop"]){
|
if((bool)input["chkDrop"]){
|
||||||
if(sName.Contains("sp_")==false && sName.Contains("fn_")==false)
|
if(sName.StartsWith("sp_")==false && sName.StartsWith("fn_")==false && IncludeVolian(sName))
|
||||||
output.writeln("Drop procedure [" + sName + "]");
|
output.writeln("DROP " + sType + " [" + sName + "]");
|
||||||
} else {
|
} else {
|
||||||
if(sName.Contains("sp_")==false && sName.Contains("fn_")==false)
|
if(sName.StartsWith("sp_")==false && sName.StartsWith("fn_")==false && IncludeVolian(sName))
|
||||||
{
|
{
|
||||||
%>
|
%>
|
||||||
/****** Object: StoredProcedure [<%=sName%>] ******/
|
/****** Object: StoredProcedure [<%=sName%>] ******/
|
||||||
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[<%=sName%>]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
|
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[<%=sName%>]') AND OBJECTPROPERTY(id,N'Is<%=sIsType%>') = 1)
|
||||||
DROP PROCEDURE [<%=sName%>];
|
DROP <%=sType%> [<%=sName%>];
|
||||||
GO
|
GO
|
||||||
|
|
||||||
<%
|
<%
|
||||||
@ -246,8 +269,8 @@ GO
|
|||||||
%>
|
%>
|
||||||
GO
|
GO
|
||||||
-- Display the status of Proc creation
|
-- Display the status of Proc creation
|
||||||
IF (@@Error = 0) PRINT 'Procedure Creation: <%=sName%> Succeeded'
|
IF (@@Error = 0) PRINT '<%=sIsType%> Creation: <%=sName%> Succeeded'
|
||||||
ELSE PRINT 'Procedure Creation: <%=sName%> Error on Creation'
|
ELSE PRINT '<%=sIsType%> Creation: <%=sName%> Error on Creation'
|
||||||
GO
|
GO
|
||||||
<%
|
<%
|
||||||
SaveFile(ip.Name);
|
SaveFile(ip.Name);
|
||||||
@ -256,6 +279,14 @@ GO
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
private bool IsProcedure(IProcedure ip)
|
||||||
|
{
|
||||||
|
return ip.ProcedureText.Contains("CREATE PROCEDURE");
|
||||||
|
}
|
||||||
|
private bool IsTableFunction(IProcedure ip)
|
||||||
|
{
|
||||||
|
return ip.Parameters[0].Name == "@TABLE_RETURN_VALUE";
|
||||||
|
}
|
||||||
private void ShowColumns(IColumns cols,int indent,string title)
|
private void ShowColumns(IColumns cols,int indent,string title)
|
||||||
{
|
{
|
||||||
output.writeln(string.Format("{0}{1}","".PadRight(indent),title));
|
output.writeln(string.Format("{0}{1}","".PadRight(indent),title));
|
||||||
|
@ -1311,147 +1311,6 @@ namespace VEPROMS.CSLA.Library
|
|||||||
{
|
{
|
||||||
_MyContent = new ContentInfo(dr, true);
|
_MyContent = new ContentInfo(dr, true);
|
||||||
}
|
}
|
||||||
#region Insert New Items
|
|
||||||
public ItemInfo InsertSiblingBefore(string text)
|
|
||||||
{
|
|
||||||
return InsertSiblingBefore(text, null);
|
|
||||||
}
|
|
||||||
public ItemInfo InsertSiblingBefore(string text, string number)
|
|
||||||
{
|
|
||||||
ItemInfo prevItemInfo = MyPrevious;
|
|
||||||
ItemInfo newItemInfo = null;
|
|
||||||
PartInfoList partInfoList = null;
|
|
||||||
if(MyParent != null && MyParent.MyContent != null)
|
|
||||||
{
|
|
||||||
MyParent.MyContent.RefreshContentParts();
|
|
||||||
partInfoList = MyParent.MyContent.ContentParts;
|
|
||||||
}
|
|
||||||
using (Item prevItem = prevItemInfo == null ? null : prevItemInfo.Get()) // Get the previous Item
|
|
||||||
{
|
|
||||||
using (Item newItem = Item.MakeItem(prevItem, Content.MakeContent(number, "", MyContent.Type, null, null))) // Create the new Item
|
|
||||||
{
|
|
||||||
using (Item thisItem = Get()) // Get the next item in the list
|
|
||||||
{
|
|
||||||
thisItem.MyPrevious = newItem; // Point to the new item
|
|
||||||
thisItem.Save(); // Save Changes
|
|
||||||
if (prevItem == null)
|
|
||||||
{
|
|
||||||
PartInfo partInfo = partInfoList.Find(this);
|
|
||||||
using (Part part = partInfo.Get())
|
|
||||||
{
|
|
||||||
part.MyItem = newItem;
|
|
||||||
part.Save();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// ToDo: Need change PartInfo in PartInfoList
|
|
||||||
newItemInfo = ItemInfo.Get(newItem.ItemID);
|
|
||||||
newItemInfo.ResetOrdinal();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return newItemInfo;
|
|
||||||
}
|
|
||||||
public ItemInfo InsertSiblingAfter(string text)
|
|
||||||
{
|
|
||||||
return InsertSiblingAfter(text, null);
|
|
||||||
}
|
|
||||||
public ItemInfo InsertSiblingAfter(string text, string number)
|
|
||||||
{
|
|
||||||
return InsertSiblingAfter(text, number, MyContent.Type);
|
|
||||||
}
|
|
||||||
public ItemInfo InsertSiblingAfter(string text, string number, int? type)
|
|
||||||
{
|
|
||||||
ItemInfo nextItemInfo = (NextItemCount > 0) ? NextItems[0] : null;
|
|
||||||
ItemInfo newItemInfo = null;
|
|
||||||
using (Item thisItem = Get()) // Get the Current Item
|
|
||||||
{
|
|
||||||
using (Item newItem = Item.MakeItem(thisItem, Content.MakeContent(number, text, type, null, null))) // Create the new Item
|
|
||||||
{
|
|
||||||
if (nextItemInfo != null) // Simple case, adding to end of list:
|
|
||||||
using (Item nextItem = nextItemInfo.Get()) // Get the next item in the list
|
|
||||||
{
|
|
||||||
nextItem.MyPrevious = newItem; // Point to the new item
|
|
||||||
nextItem.Save(); // Save Changes
|
|
||||||
}
|
|
||||||
// ToDo: Need change PartInfo in PartInfoList
|
|
||||||
newItemInfo = ItemInfo.Get(newItem.ItemID);
|
|
||||||
newItemInfo.ResetOrdinal();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return newItemInfo;
|
|
||||||
}
|
|
||||||
public ItemInfo InsertChild(E_FromType fromType,int type,string text)
|
|
||||||
{
|
|
||||||
return InsertChild(fromType,type,text, null);
|
|
||||||
}
|
|
||||||
public ItemInfo InsertChild(E_FromType fromType,int type, string text, string number)
|
|
||||||
{
|
|
||||||
ItemInfo newItemInfo = null;
|
|
||||||
using (Item thisItem = Get()) // Get the Current Item
|
|
||||||
{
|
|
||||||
using (Item newItem = Item.MakeItem(null, Content.MakeContent(number, text, type, null, null))) // Create the new Item
|
|
||||||
{
|
|
||||||
PartInfo partInfo = MyContent.ContentParts == null ? null : MyContent.ContentParts.Find(fromType);
|
|
||||||
if (partInfo != null)
|
|
||||||
{
|
|
||||||
//this could be equivalent to adding a sibling with a specific type
|
|
||||||
using (Part part = partInfo.Get())
|
|
||||||
{
|
|
||||||
part.MyItem.MyPrevious = newItem;
|
|
||||||
part.MyItem.Save();
|
|
||||||
part.MyItem = newItem;
|
|
||||||
part.Save();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// This means that a part needs to be added to point to the new item
|
|
||||||
//using (Part part = Part.MakePart(thisItem.MyContent, ))
|
|
||||||
//{ ;}
|
|
||||||
thisItem.MyContent.ContentParts.Add((int)fromType, newItem);
|
|
||||||
thisItem.Save();
|
|
||||||
}
|
|
||||||
newItemInfo = ItemInfo.Get(newItem.ItemID);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ResetParts();
|
|
||||||
return newItemInfo;
|
|
||||||
}
|
|
||||||
public ItemInfo NextItem
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
if (NextItemCount > 0 && NextItems.Count > 0)
|
|
||||||
return NextItems[0];
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
private static void ResetOrdinal(int itemID)
|
|
||||||
{
|
|
||||||
bool first = true;
|
|
||||||
ConvertListToDictionary();
|
|
||||||
string key = itemID.ToString();
|
|
||||||
if (_CacheByPrimaryKey.ContainsKey(key))
|
|
||||||
{
|
|
||||||
foreach (ItemInfo itm in _CacheByPrimaryKey[key])
|
|
||||||
{
|
|
||||||
itm._Ordinal = null;
|
|
||||||
//Console.WriteLine("Ordinal {0},{1}",key,itm.MyPrevious == null ? 0 : itm.MyPrevious._Ordinal);
|
|
||||||
if (first && itm.NextItem != null)
|
|
||||||
{
|
|
||||||
ResetOrdinal(itm.NextItem.ItemID);
|
|
||||||
first = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
private void ResetOrdinal()
|
|
||||||
{
|
|
||||||
//_Ordinal = null;
|
|
||||||
//Console.WriteLine("Ordinal {0},{1}",ItemID,MyPrevious == null ? 0 : MyPrevious.Ordinal);
|
|
||||||
ResetOrdinal(ItemID);
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
}
|
}
|
||||||
#endregion ItemInfo
|
#endregion ItemInfo
|
||||||
#region ItemInfoList
|
#region ItemInfoList
|
||||||
|
Loading…
x
Reference in New Issue
Block a user