public override void CommitModelChanges() /* throws Net.Vpc.Upa.Exceptions.UPAException */ { Net.Vpc.Upa.Entity entity = GetEntity(); if ((entity.GetPrimaryFields().Count == 0)) { Net.Vpc.Upa.Field field = entity.AddField("SGLcode", null, Net.Vpc.Upa.FlagSets.Of <E>(Net.Vpc.Upa.UserFieldModifier.ID), null, 0, new Net.Vpc.Upa.Types.IntType(0, 0, false, false), -1); field.SetAccessLevel(Net.Vpc.Upa.AccessLevel.PRIVATE); field.SetPersistFormula(new Net.Vpc.Upa.Sequence(Net.Vpc.Upa.SequenceStrategy.AUTO)); } if (!entity.GetUserExcludeModifiers().Contains(Net.Vpc.Upa.EntityModifier.NAVIGATE)) { entity.GetModifiers().Add(Net.Vpc.Upa.EntityModifier.NAVIGATE); } }
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)); }
public virtual void Synchronize() { if (field.GetDataType() is Net.Vpc.Upa.Types.ManyToOneType) { Net.Vpc.Upa.Types.ManyToOneType t = (Net.Vpc.Upa.Types.ManyToOneType)field.GetDataType(); Net.Vpc.Upa.Relationship relation = t.GetRelationship(); if (relation == null) { throw new Net.Vpc.Upa.Exceptions.UPAException("MissingRelationForField", field); } Net.Vpc.Upa.RelationshipRole detailRole = relation.GetSourceRole(); Net.Vpc.Upa.RelationshipUpdateType u = detailRole.GetRelationshipUpdateType(); if (u == Net.Vpc.Upa.RelationshipUpdateType.COMPOSED) { persistFieldPersister = new Net.Vpc.Upa.Impl.Persistence.ComposedToFlatFieldPersister(field); updateFieldPersister = new Net.Vpc.Upa.Impl.Persistence.ComposedToFlatFieldPersister(field); } persistFormulaPass = 0; updateFormulaPass = 0; postPersistFormula = false; postUpdateFormula = false; return; } Net.Vpc.Upa.Formula persistFormula = field.GetPersistFormula(); if (persistFormula != null) { if (persistFormula is Net.Vpc.Upa.Sequence) { persistFieldPersister = UpdateFieldPersister(persistFieldPersister, persistenceStore.CreatePersistSequenceGenerator(field)); persistFormulaPass = 0; postPersistFormula = false; } else if (persistFormula is Net.Vpc.Upa.ExpressionFormula) { Net.Vpc.Upa.Impl.Persistence.RebuildExpressionInfo re = RebuildExpression((Net.Vpc.Upa.ExpressionFormula)persistFormula); if (re.rebuiltFormula != null) { field.SetPersistFormula(re.rebuiltFormula); } bool complex = re.compiledExpression.FindFirstExpression <T>(Net.Vpc.Upa.Impl.Uql.Compiledfilters.CompiledExpressionHelper.THIS_VAR_FILTER) != default(T); persistFormulaPass = field.GetPersistFormulaOrder(); if (!complex && persistFormulaPass == 0) { insertExpression = re.expression; persistFieldPersister = UpdateFieldPersister(persistFieldPersister, new Net.Vpc.Upa.Impl.Persistence.ExpressionFieldPersister(field.GetName(), re.expression)); postPersistFormula = false; } else { postPersistFormula = true; } } else { postPersistFormula = true; } } else { postPersistFormula = false; } Net.Vpc.Upa.Formula updateFormula = field.GetUpdateFormula(); if (updateFormula != null) { if (updateFormula is Net.Vpc.Upa.Sequence) { updateFieldPersister = UpdateFieldPersister(updateFieldPersister, persistenceStore.CreateUpdateSequenceGenerator(field)); updateFormulaPass = 0; postUpdateFormula = false; } else if (updateFormula is Net.Vpc.Upa.ExpressionFormula) { Net.Vpc.Upa.Impl.Persistence.RebuildExpressionInfo re = RebuildExpression((Net.Vpc.Upa.ExpressionFormula)persistFormula); if (re.rebuiltFormula != null) { field.SetUpdateFormula(re.rebuiltFormula); } // List<DefaultCompiledExpression> complex = re.compiledExpression.findExpressionsList(CompiledExpressionHelper.THIS_VAR_FILTER); updateFormulaPass = field.GetUpdateFormulaOrder(); if (updateFormulaPass == 0) { updateExpression = re.expression; updateFieldPersister = UpdateFieldPersister(updateFieldPersister, new Net.Vpc.Upa.Impl.Persistence.ExpressionFieldPersister(field.GetName(), re.expression)); postUpdateFormula = false; } else { postUpdateFormula = true; } } else { postUpdateFormula = true; } } else { postUpdateFormula = true; } Net.Vpc.Upa.Formula selectFormula = field.GetSelectFormula(); if (selectFormula != null) { if (selectFormula is Net.Vpc.Upa.ExpressionFormula) { findtExpression = ((Net.Vpc.Upa.ExpressionFormula)selectFormula).GetExpression(); } else if (selectFormula is Net.Vpc.Upa.Sequence) { throw new System.ArgumentException("Sequences are not supported as Select Expressions"); } else if (updateFormula is Net.Vpc.Upa.CustomUpdaterFormula) { throw new System.ArgumentException("CustomUpdaterFormulas are not supported as Select Expressions"); } } }