protected internal virtual Net.Vpc.Upa.Expressions.QueryStatement CreateViewQuery() /* throws Net.Vpc.Upa.Exceptions.UPAException */ { Net.Vpc.Upa.Extensions.UnionEntityExtensionDefinition entityExtension = (Net.Vpc.Upa.Extensions.UnionEntityExtensionDefinition)GetDefinition(); Net.Vpc.Upa.Extensions.UnionQueryInfo queryInfo = entityExtension.GetQueryInfo(GetEntity()); updatableTables = new System.Collections.Generic.List <Net.Vpc.Upa.Entity>((queryInfo.GetEntities()).Count); foreach (string table in queryInfo.GetEntities()) { updatableTables.Add(GetPersistenceUnit().GetEntity(table)); } this.discriminator = queryInfo.GetDiscriminator(); string[] tabNames = new string[(updatableTables).Count]; for (int i = 0; i < tabNames.Length; i++) { tabNames[i] = updatableTables[i].GetName(); } viewFields = GetEntity().GetFieldNames(Net.Vpc.Upa.Impl.Util.Filters.Fields2.READ); viewFields.Remove(discriminator); fieldsMapping = (string[][])Net.Vpc.Upa.Impl.FwkConvertUtils.CreateMultiArray(typeof(string), (queryInfo.GetEntities()).Count, (viewFields).Count); for (int i = 0; i < tabNames.Length; i++) { for (int j = 0; j < (viewFields).Count; j++) { fieldsMapping[i][i] = queryInfo.GetFieldName(tabNames[i], viewFields[j], i, j); } } return(CreateViewQuery(GetEntity().GetName(), tabNames, discriminator, viewFields, fieldsMapping)); }
public override void Install(Net.Vpc.Upa.Entity entity, Net.Vpc.Upa.Persistence.EntityOperationManager entityOperationManager, Net.Vpc.Upa.Extensions.EntityExtensionDefinition extension) /* throws Net.Vpc.Upa.Exceptions.UPAException */ { base.Install(entity, entityOperationManager, extension); Net.Vpc.Upa.Extensions.UnionEntityExtensionDefinition e = (Net.Vpc.Upa.Extensions.UnionEntityExtensionDefinition)extension; System.Collections.Generic.IList <object> list = new System.Collections.Generic.List <object>(); foreach (Net.Vpc.Upa.Entity updatableTable in updatableTables) { list.Add(updatableTable.GetName()); } if (discriminator != null) { Net.Vpc.Upa.Field field = GetEntity().AddField(new Net.Vpc.Upa.DefaultFieldDescriptor().SetName(discriminator).SetUserFieldModifiers(Net.Vpc.Upa.FlagSets.Of <E>(Net.Vpc.Upa.UserFieldModifier.SUMMARY)).SetDefaultObject(updatableTables[0].GetName()).SetDataType(Net.Vpc.Upa.Types.TypesFactory.ForList(entity.GetName() + "." + discriminator, list, Net.Vpc.Upa.Types.TypesFactory.STRING, false))); field.SetPersistFormula(new Net.Vpc.Upa.Sequence(Net.Vpc.Upa.SequenceStrategy.AUTO)); } GetPersistenceUnit().AddPersistenceUnitListener(new Net.Vpc.Upa.Impl.Extension.UnionPersistenceUnitInterceptorAdapter(this)); entityOperationManager.SetRemoveOperation(new Net.Vpc.Upa.Impl.Extension.EntityRemoveOperationHelper(this, updatableTables)); }