public static void ExtractProperties(MetaData metaData, string qualifier, string pageType, Tags properties) { if (metaData != null) { string pageQualifier = String.Format("Frontend.{0}.{1}.", pageType, qualifier); string cardinalityQualifier = String.Format("Frontend.{0}.{1}.", DerivationUtility.GetPageTypeCardinality(pageType), qualifier); string elementQualifier = String.Format("Frontend.{0}.", qualifier); #if USEHASHTABLEFORTAGS foreach (Tag tag in AMetaData.Tags) { #else Tag tag; for (int index = 0; index < metaData.Tags.Count; index++) { tag = metaData.Tags[index]; #endif if (tag.Name.IndexOf(pageQualifier) == 0) { AddProperty(tag, pageQualifier, properties); } else if (tag.Name.IndexOf(cardinalityQualifier) == 0) { AddProperty(tag, cardinalityQualifier, properties); } else if (tag.Name.IndexOf(elementQualifier) == 0) { AddProperty(tag, elementQualifier, properties); } } } }
protected virtual void Prepare() { Expression expression = _elaboratedExpression.Expression; _tableVar = _elaboratedExpression.MainElaboratedTableVar.TableVar; Schema.Order order = GetDefaultOrder(_tableVar); if (order != null) { BaseOrderExpression browseExpression; if (Convert.ToBoolean(DerivationUtility.GetTag(_tableVar.MetaData, "UseBrowse", _elaboratedExpression.PageType, "True"))) { browseExpression = new BrowseExpression(); } else { browseExpression = new OrderExpression(); } browseExpression.Expression = expression; foreach (Schema.OrderColumn column in order.Columns) { OrderColumnDefinition definition = column.EmitStatement(EmitMode.ForCopy) as OrderColumnDefinition; definition.ColumnName = Schema.Object.Qualify(column.Column.Name, _elaboratedExpression.MainElaboratedTableVar.ElaboratedName); browseExpression.Columns.Add(definition); } expression = browseExpression; } _expression = new D4TextEmitter().Emit ( new CursorDefinition ( expression, CursorCapability.Navigable | CursorCapability.BackwardsNavigable | CursorCapability.Bookmarkable | CursorCapability.Searchable | CursorCapability.Updateable, CursorIsolation.Browse, CursorType.Dynamic ) ); // Build the derivation info structure for use in structuring, layout and document production. _derivationInfo = new DerivationInfo(); _derivationInfo.Program = _program; _derivationInfo.Process = _process; _derivationInfo.PageType = _seed.PageType; _derivationInfo.Query = _seed.Query; _derivationInfo.Elaborate = _seed.Elaborate; _derivationInfo.MasterKeyNames = _seed.MasterKeyNames; _derivationInfo.DetailKeyNames = _seed.DetailKeyNames; _derivationInfo.KeyNames = GetKeyNames(_tableVar); _derivationInfo.Expression = _expression; _derivationInfo.ElaboratedExpression = _elaboratedExpression; _derivationInfo.TableVar = _tableVar; _derivationInfo.MainSourceName = DerivationUtility.MainSourceName; _derivationInfo.IsReadOnly = DerivationUtility.IsReadOnlyPageType(_seed.PageType); }
protected Schema.Order GetDefaultOrder(Schema.TableVar tableVar) { foreach (Schema.Order order in tableVar.Orders) { if (Convert.ToBoolean(DerivationUtility.GetTag(order.MetaData, "IsDefault", "False"))) { return(new Schema.Order(order)); } } foreach (Schema.Key key in tableVar.Keys) { if (Convert.ToBoolean(DerivationUtility.GetTag(key.MetaData, "IsDefault", "False"))) { return(new Schema.Order(key)); } } if (tableVar.Keys.Count > 0) { Schema.Order order = new Schema.Order(_program.FindClusteringKey(tableVar)); if (IsOrderVisible(order)) { return(order); } foreach (Schema.Key key in tableVar.Keys) { order = new Schema.Order(key); if (IsOrderVisible(order)) { return(order); } } } if (tableVar.Orders.Count > 0) { foreach (Schema.Order order in tableVar.Orders) { if (IsOrderVisible(order)) { return(order); } } } return(null); }
protected bool IsOrderVisible(Schema.Order order) { return(DerivationUtility.IsOrderVisible(order, _seed.PageType)); }