public static CdmOperationCombineAttributes FromData(CdmCorpusContext ctx, JToken obj) { if (obj == null) { return(null); } CdmOperationCombineAttributes combineAttributesOp = ctx.Corpus.MakeObject <CdmOperationCombineAttributes>(CdmObjectType.OperationCombineAttributesDef); if (obj["$type"] != null && !StringUtils.EqualsWithIgnoreCase(obj["$type"].ToString(), OperationTypeConvertor.OperationTypeToString(CdmOperationType.CombineAttributes))) { Logger.Error(nameof(OperationCombineAttributesPersistence), ctx, $"$type {(string)obj["$type"]} is invalid for this operation."); } else { combineAttributesOp.Type = CdmOperationType.CombineAttributes; } if (obj["explanation"] != null) { combineAttributesOp.Explanation = (string)obj["explanation"]; } combineAttributesOp.Select = obj["select"]?.ToObject <List <string> >(); combineAttributesOp.MergeInto = Utils.CreateAttribute(ctx, obj["mergeInto"]) as CdmTypeAttributeDefinition; return(combineAttributesOp); }
/// <summary> /// Create a Combine Attribute Operation /// </summary> /// <returns></returns> public CdmOperationCombineAttributes CreateOperationCombineAttributes(CdmProjection projection, List <string> selectedAttributes, CdmTypeAttributeDefinition mergeIntoAttribute) { // CombineAttributes Operation CdmOperationCombineAttributes combineAttributesOp = new CdmOperationCombineAttributes(Corpus.Ctx) { Select = selectedAttributes, MergeInto = mergeIntoAttribute }; projection.Operations.Add(combineAttributesOp); return(combineAttributesOp); }
public static OperationCombineAttributes ToData(CdmOperationCombineAttributes instance, ResolveOptions resOpt, CopyOptions options) { if (instance == null) { return(null); } OperationCombineAttributes obj = OperationBasePersistence.ToData <OperationCombineAttributes>(instance, resOpt, options); obj.Select = instance.Select; obj.MergeInto = Utils.JsonForm(instance.MergeInto, resOpt, options); return(obj); }
public static CdmOperationCombineAttributes FromData(CdmCorpusContext ctx, JToken obj) { if (obj == null) { return(null); } CdmOperationCombineAttributes combineAttributesOp = OperationBasePersistence.FromData <CdmOperationCombineAttributes>(ctx, CdmObjectType.OperationCombineAttributesDef, obj); combineAttributesOp.Select = obj["select"]?.ToObject <List <string> >(); combineAttributesOp.MergeInto = Utils.CreateAttribute(ctx, obj["mergeInto"]) as CdmTypeAttributeDefinition; return(combineAttributesOp); }
public static OperationCombineAttributes ToData(CdmOperationCombineAttributes instance, ResolveOptions resOpt, CopyOptions options) { if (instance == null) { return(null); } return(new OperationCombineAttributes { Type = OperationTypeConvertor.OperationTypeToString(CdmOperationType.CombineAttributes), Explanation = instance.Explanation, Select = instance.Select, MergeInto = Utils.JsonForm(instance.MergeInto, resOpt, options) }); }
public async Task TestEAProjOM() { string className = "ProjectionCombineTest"; string testName = "TestEAProjOM"; string entityName_Email = "Email"; List <TypeAttributeParam> attributeParams_Email = new List <TypeAttributeParam>(); { attributeParams_Email.Add(new TypeAttributeParam("EmailID", "string", "identifiedBy")); attributeParams_Email.Add(new TypeAttributeParam("Address", "string", "hasA")); attributeParams_Email.Add(new TypeAttributeParam("IsPrimary", "boolean", "hasA")); } string entityName_Phone = "Phone"; List <TypeAttributeParam> attributeParams_Phone = new List <TypeAttributeParam>(); { attributeParams_Phone.Add(new TypeAttributeParam("PhoneID", "string", "identifiedBy")); attributeParams_Phone.Add(new TypeAttributeParam("Number", "string", "hasA")); attributeParams_Phone.Add(new TypeAttributeParam("IsPrimary", "boolean", "hasA")); } string entityName_Social = "Social"; List <TypeAttributeParam> attributeParams_Social = new List <TypeAttributeParam>(); { attributeParams_Social.Add(new TypeAttributeParam("SocialID", "string", "identifiedBy")); attributeParams_Social.Add(new TypeAttributeParam("Account", "string", "hasA")); attributeParams_Social.Add(new TypeAttributeParam("IsPrimary", "boolean", "hasA")); } string entityName_Customer = "Customer"; List <TypeAttributeParam> attributeParams_Customer = new List <TypeAttributeParam>(); { attributeParams_Customer.Add(new TypeAttributeParam("CustomerName", "string", "hasA")); } List <string> selectedAttributes = new List <string>() { "EmailID", "PhoneID", "SocialID" }; using (ProjectionOMTestUtil util = new ProjectionOMTestUtil(className, testName)) { CdmEntityDefinition entity_Email = util.CreateBasicEntity(entityName_Email, attributeParams_Email); util.ValidateBasicEntity(entity_Email, entityName_Email, attributeParams_Email); CdmEntityDefinition entity_Phone = util.CreateBasicEntity(entityName_Phone, attributeParams_Phone); util.ValidateBasicEntity(entity_Phone, entityName_Phone, attributeParams_Phone); CdmEntityDefinition entity_Social = util.CreateBasicEntity(entityName_Social, attributeParams_Social); util.ValidateBasicEntity(entity_Social, entityName_Social, attributeParams_Social); CdmEntityDefinition entity_Customer = util.CreateBasicEntity(entityName_Customer, attributeParams_Customer); util.ValidateBasicEntity(entity_Customer, entityName_Customer, attributeParams_Customer); CdmProjection projection_Customer = util.CreateProjection(entity_Customer.EntityName); CdmTypeAttributeDefinition typeAttribute_MergeInto = util.CreateTypeAttribute("MergeInto", "string", "hasA"); CdmOperationCombineAttributes operation_CombineAttributes = util.CreateOperationCombineAttributes(projection_Customer, selectedAttributes, typeAttribute_MergeInto); CdmEntityReference projectionEntityRef_Customer = util.CreateProjectionInlineEntityReference(projection_Customer); CdmEntityAttributeDefinition entityAttribute_ContactAt = util.CreateEntityAttribute("ContactAt", projectionEntityRef_Customer); entity_Customer.Attributes.Add(entityAttribute_ContactAt); foreach (List <string> resOpts in resOptsCombinations) { await util.GetAndValidateResolvedEntity(entity_Customer, resOpts); } await util.DefaultManifest.SaveAsAsync(util.ManifestDocName, saveReferenced : true); } }
public static CdmProjection FromData(CdmCorpusContext ctx, JToken obj) { if (obj == null) { return(null); } CdmProjection projection = ctx.Corpus.MakeObject <CdmProjection>(CdmObjectType.ProjectionDef); CdmEntityReference source = EntityReferencePersistence.FromData(ctx, obj["source"]); if (obj["explanation"] != null) { projection.Explanation = (string)obj["explanation"]; } projection.Condition = obj["condition"]?.ToString(); projection.RunSequentially = (bool?)obj["runSequentially"]; if (obj["operations"] != null) { List <JObject> operationJsons = obj["operations"]?.ToObject <List <JObject> >(); foreach (JObject operationJson in operationJsons) { string type = (string)operationJson["$type"]; switch (type) { case "addCountAttribute": CdmOperationAddCountAttribute addCountAttributeOp = OperationAddCountAttributePersistence.FromData(ctx, operationJson); projection.Operations.Add(addCountAttributeOp); break; case "addSupportingAttribute": CdmOperationAddSupportingAttribute addSupportingAttributeOp = OperationAddSupportingAttributePersistence.FromData(ctx, operationJson); projection.Operations.Add(addSupportingAttributeOp); break; case "addTypeAttribute": CdmOperationAddTypeAttribute addTypeAttributeOp = OperationAddTypeAttributePersistence.FromData(ctx, operationJson); projection.Operations.Add(addTypeAttributeOp); break; case "excludeAttributes": CdmOperationExcludeAttributes excludeAttributesOp = OperationExcludeAttributesPersistence.FromData(ctx, operationJson); projection.Operations.Add(excludeAttributesOp); break; case "arrayExpansion": CdmOperationArrayExpansion arrayExpansionOp = OperationArrayExpansionPersistence.FromData(ctx, operationJson); projection.Operations.Add(arrayExpansionOp); break; case "combineAttributes": CdmOperationCombineAttributes combineAttributesOp = OperationCombineAttributesPersistence.FromData(ctx, operationJson); projection.Operations.Add(combineAttributesOp); break; case "renameAttributes": CdmOperationRenameAttributes renameAttributesOp = OperationRenameAttributesPersistence.FromData(ctx, operationJson); projection.Operations.Add(renameAttributesOp); break; case "replaceAsForeignKey": CdmOperationReplaceAsForeignKey replaceAsForeignKeyOp = OperationReplaceAsForeignKeyPersistence.FromData(ctx, operationJson); projection.Operations.Add(replaceAsForeignKeyOp); break; case "includeAttributes": CdmOperationIncludeAttributes includeAttributesOp = OperationIncludeAttributesPersistence.FromData(ctx, operationJson); projection.Operations.Add(includeAttributesOp); break; case "addAttributeGroup": CdmOperationAddAttributeGroup addAttributeGroupOp = OperationAddAttributeGroupPersistence.FromData(ctx, operationJson); projection.Operations.Add(addAttributeGroupOp); break; default: Logger.Error(nameof(ProjectionPersistence), ctx, $"Invalid operation type '{type}'.", nameof(FromData)); break; } } } projection.Source = source; return(projection); }
/// <summary> /// Create a projection object with operations /// </summary> /// <param name="corpus"></param> /// <returns></returns> private CdmProjection CreateProjectionWithOperationCollection(CdmCorpusDefinition corpus, CdmObject owner) { CdmProjection projection = corpus.MakeObject <CdmProjection>(CdmObjectType.ProjectionDef); { projection.Source = corpus.MakeObject <CdmEntityReference>(CdmObjectType.EntityRef, "TestSource", simpleNameRef: true); } { // AddCountAttribute Operation CdmOperationAddCountAttribute addCountAttributeOp = new CdmOperationAddCountAttribute(corpus.Ctx) { CountAttribute = corpus.MakeObject <CdmTypeAttributeDefinition>(CdmObjectType.TypeAttributeDef) }; projection.Operations.Add(addCountAttributeOp); // AddSupportingAttribute Operation CdmOperationAddSupportingAttribute addSupportingAttributesOp = new CdmOperationAddSupportingAttribute(corpus.Ctx) { SupportingAttribute = corpus.MakeObject <CdmTypeAttributeDefinition>(CdmObjectType.TypeAttributeDef) }; projection.Operations.Add(addSupportingAttributesOp); // AddTypeAttribute Operation CdmOperationAddTypeAttribute addTypeAttributeOp = new CdmOperationAddTypeAttribute(corpus.Ctx) { TypeAttribute = corpus.MakeObject <CdmTypeAttributeDefinition>(CdmObjectType.TypeAttributeDef) }; projection.Operations.Add(addTypeAttributeOp); // ExcludeAttributes Operation CdmOperationExcludeAttributes excludeAttributesOp = new CdmOperationExcludeAttributes(corpus.Ctx) { ExcludeAttributes = new List <string>() }; excludeAttributesOp.ExcludeAttributes.Add("testAttribute1"); projection.Operations.Add(excludeAttributesOp); // ArrayExpansion Operation CdmOperationArrayExpansion arrayExpansionOp = new CdmOperationArrayExpansion(corpus.Ctx) { StartOrdinal = 0, EndOrdinal = 1 }; projection.Operations.Add(arrayExpansionOp); // CombineAttributes Operation CdmOperationCombineAttributes combineAttributesOp = new CdmOperationCombineAttributes(corpus.Ctx) { Take = new List <string>(), MergeInto = corpus.MakeObject <CdmTypeAttributeDefinition>(CdmObjectType.TypeAttributeDef) }; combineAttributesOp.Take.Add("testAttribute1"); projection.Operations.Add(combineAttributesOp); // RenameAttributes Operation CdmOperationRenameAttributes renameAttributesOp = new CdmOperationRenameAttributes(corpus.Ctx) { RenameFormat = "{m}" }; projection.Operations.Add(renameAttributesOp); // ReplaceAsForeignKey Operation CdmOperationReplaceAsForeignKey replaceAsForeignKeyOp = new CdmOperationReplaceAsForeignKey(corpus.Ctx) { Reference = "testAttribute1", ReplaceWith = corpus.MakeObject <CdmTypeAttributeDefinition>(CdmObjectType.TypeAttributeDef, "testForeignKey", simpleNameRef: false) }; projection.Operations.Add(replaceAsForeignKeyOp); // IncludeAttributes Operation CdmOperationIncludeAttributes includeAttributesOp = new CdmOperationIncludeAttributes(corpus.Ctx) { IncludeAttributes = new List <string>() }; includeAttributesOp.IncludeAttributes.Add("testAttribute1"); projection.Operations.Add(includeAttributesOp); } return(projection); }