public IList <AcmaResource> GetResourcesByAttributePairs(string key1, string keyValue1, string key2, string keyValue2) { DBQueryGroup queryGroup = new DBQueryGroup(GroupOperator.All); queryGroup.AddChildQueryObjects(new DBQueryByValue(ActiveConfig.DB.GetAttribute(key1), ValueOperator.Equals, keyValue1)); queryGroup.AddChildQueryObjects(new DBQueryByValue(ActiveConfig.DB.GetAttribute(key2), ValueOperator.Equals, keyValue2)); IList <MAObjectHologram> holograms = ActiveConfig.DB.GetMAObjectsFromDBQuery(queryGroup).ToList(); return(holograms.Select(t => t.ToAcmaResource()).ToList()); }
public void DBQueryByAttributeExceptionOnMVNull() { Guid valueSourceObjectId = Guid.NewGuid(); DBQueryByValue match1 = new DBQueryByValue(ActiveConfig.DB.GetAttribute("mailAlternateAddresses"), ValueOperator.Equals, ActiveConfig.DB.GetAttribute("mailAlternateAddresses")); DBQueryGroup group = new DBQueryGroup(GroupOperator.All); group.AddChildQueryObjects(match1); try { MAObjectHologram valueSourceObject = ActiveConfig.DB.CreateMAObject(valueSourceObjectId, "person"); valueSourceObject.CommitCSEntryChange(); try { DBQueryBuilder queryBuilder = new DBQueryBuilder(group, 0, valueSourceObject); Assert.Fail("The expected exception was not thrown"); } catch (QueryValueNullException) { } } finally { ActiveConfig.DB.DeleteMAObjectPermanent(valueSourceObjectId); } }
public void DBQueryByAttributeMVToMVEquals() { Guid searchObjectId = Guid.NewGuid(); Guid valueSourceObjectId = Guid.NewGuid(); DBQueryByValue match1 = new DBQueryByValue(ActiveConfig.DB.GetAttribute("mailAlternateAddresses"), ValueOperator.Equals, ActiveConfig.DB.GetAttribute("mailAlternateAddresses")); DBQueryByValue match2 = new DBQueryByValue(ActiveConfig.DB.GetAttribute("objectId"), ValueOperator.Equals, searchObjectId); DBQueryGroup group = new DBQueryGroup(GroupOperator.All); group.AddChildQueryObjects(match1, match2); try { MAObjectHologram searchObject = ActiveConfig.DB.CreateMAObject(searchObjectId, "person"); searchObject.SetAttributeValue(ActiveConfig.DB.GetAttribute("mailAlternateAddresses"), new List <object>() { "*****@*****.**", "*****@*****.**", "*****@*****.**" }); searchObject.CommitCSEntryChange(); MAObjectHologram valueSourceObject = ActiveConfig.DB.CreateMAObject(valueSourceObjectId, "person"); valueSourceObject.SetAttributeValue(ActiveConfig.DB.GetAttribute("mailAlternateAddresses"), new List <object>() { "*****@*****.**", "*****@*****.**" }); valueSourceObject.CommitCSEntryChange(); List <MAObjectHologram> results = ActiveConfig.DB.GetMAObjectsFromDBQuery(group, valueSourceObject).ToList(); if (results.Count() != 1) { Assert.Fail("The incorrect number of results were returned"); } if (results.First().ObjectID != searchObjectId) { Assert.Fail("The incorrect object was returned"); } valueSourceObject.SetObjectModificationType(ObjectModificationType.Update, false); valueSourceObject.SetAttributeValue(ActiveConfig.DB.GetAttribute("mailAlternateAddresses"), new List <object>() { "*****@*****.**", "*****@*****.**" }); valueSourceObject.CommitCSEntryChange(); results = ActiveConfig.DB.GetMAObjectsFromDBQuery(group, valueSourceObject).ToList(); if (results.Count != 0) { Assert.Fail("The test returned an unexpected object"); } } finally { ActiveConfig.DB.DeleteMAObjectPermanent(searchObjectId); ActiveConfig.DB.DeleteMAObjectPermanent(valueSourceObjectId); } }
public AcmaResource GetResourceByTypeAndKey(string objectType, string key, string keyValue) { DBQueryGroup queryGroup = new DBQueryGroup(GroupOperator.All); queryGroup.AddChildQueryObjects(new DBQueryByValue(ActiveConfig.DB.GetAttribute("objectClass"), ValueOperator.Equals, objectType)); queryGroup.AddChildQueryObjects(new DBQueryByValue(ActiveConfig.DB.GetAttribute(key), ValueOperator.Equals, keyValue)); IList <MAObjectHologram> holograms = ActiveConfig.DB.GetMAObjectsFromDBQuery(queryGroup).ToList(); if (holograms.Count == 0) { return(null); } else if (holograms.Count > 1) { throw new WebFaultException(System.Net.HttpStatusCode.Ambiguous); } else { return(holograms.First().ToAcmaResource()); } }
public IList <AcmaResource> GetResourcesByAttributePair(string key, string keyValue, string op = "Equals") { ValueOperator vo; if (!string.IsNullOrWhiteSpace(op)) { vo = (ValueOperator)Enum.Parse(typeof(ValueOperator), op, true); } else { vo = ValueOperator.Equals; } DBQueryGroup queryGroup = new DBQueryGroup(GroupOperator.All); queryGroup.AddChildQueryObjects(new DBQueryByValue(ActiveConfig.DB.GetAttribute(key), vo, keyValue)); IList <MAObjectHologram> holograms = ActiveConfig.DB.GetMAObjectsFromDBQuery(queryGroup).ToList(); return(holograms.Select(t => t.ToAcmaResource()).ToList()); }
protected override void ProcessRecord() { if (!this.IsConnectionStatusOk(false)) { return; } if (this.ID != null) { Guid? guidID; string stringID = this.ID as string; if (stringID != null) { guidID = new Guid(stringID); } else { guidID = this.ID as Guid?; if (guidID == null) { throw new ArgumentException("The ID must be a GUID object or a GUID in string format"); } } MAObjectHologram maobject = ActiveConfig.DB.GetMAObjectOrDefault(new Guid(stringID)); if (maobject == null) { return; } this.WriteObject(new AcmaPSObject(maobject)); return; } else if (this.AttributeValuePairs != null) { DBQueryGroup group = new DBQueryGroup(GroupOperator.All); foreach (object key in this.AttributeValuePairs.Keys) { DBQueryByValue query = new DBQueryByValue(ActiveConfig.DB.GetAttribute((string)key), ValueOperator.Equals, this.AttributeValuePairs[key]); group.AddChildQueryObjects(query); } IList <MAObjectHologram> results = ActiveConfig.DB.GetMAObjectsFromDBQuery(group).ToList(); if (results.Count == 0) { throw new NotFoundException(); } else if (results.Count > 1) { throw new InvalidOperationException("More than one object matched the given criteria. Use Get-AcmaObjects for returning multiple results"); } else { this.WriteObject(new AcmaPSObject(results.First())); return; } } else { DBQueryByValue query = new DBQueryByValue(ActiveConfig.DB.GetAttribute(this.AttributeName), ValueOperator.Equals, this.AttributeValue); IList <MAObjectHologram> results = ActiveConfig.DB.GetMAObjectsFromDBQuery(query).ToList(); if (results.Count == 0) { throw new NotFoundException(); } else if (results.Count > 1) { throw new InvalidOperationException("More than one object matched the given criteria. Use Get-AcmaObjects for returning multiple results"); } else { this.WriteObject(new AcmaPSObject(results.First())); return; } } }