Exemplo n.º 1
0
 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));
 }
Exemplo n.º 2
0
 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));
 }