예제 #1
0
        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);
            }
        }
예제 #2
0
        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);
            }
        }
예제 #3
0
        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());
        }
예제 #4
0
        public DBQueryGroupViewModel(DBQueryGroup model)
            : base(model)
        {
            this.Commands.AddItem("DeleteQueryGroup", t => this.DeleteQueryGroup());
            this.Commands.AddItem("AddQueryByValue", t => this.AddDBQueryByValue());
            this.Commands.AddItem("AddQueryGroup", t => this.AddDBQueryGroup());
            this.typedModel = model;
            this.IgnorePropertyHasChanged.Add("DisplayName");
            this.DBQueryObjects = new DBQueryObjectsViewModel(this.typedModel.DBQueries);
            this.Commands.AddItem("Paste", t => this.DBQueryObjects.Paste(), t => this.DBQueryObjects.CanPaste());

            this.EnableCutCopy();
        }
예제 #5
0
        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());
        }
예제 #6
0
        protected override void ProcessRecord()
        {
            Global.ThrowIfNotConnected(this);

            try
            {
                DBQueryGroup group = new DBQueryGroup(this.Operator);

                foreach (DBQueryObject item in this.QueryObjects)
                {
                    group.DBQueries.Add(item);
                }

                WriteObject(group);
            }
            catch (Exception ex)
            {
                ErrorRecord error = new ErrorRecord(ex, "UnknownError", ErrorCategory.NotSpecified, this);
                ThrowTerminatingError(error);
            }
        }
예제 #7
0
        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());
            }
        }
예제 #8
0
        public void TestSerialization()
        {
            AcmaInternalExitEvent toSerialize = new AcmaInternalExitEvent();

            toSerialize.ID        = "testName";
            toSerialize.RuleGroup = new RuleGroup()
            {
                Operator = GroupOperator.Any
            };
            toSerialize.RuleGroup.Items.Add(new ObjectChangeRule()
            {
                TriggerEvents = TriggerEvents.Delete
            });
            toSerialize.Recipients.Add(ActiveConfig.DB.GetAttribute("supervisor"));
            toSerialize.Recipients.Add(ActiveConfig.DB.GetAttribute("directReports"));
            toSerialize.RecipientQueries = new ObservableCollection <DBQueryObject>();
            DBQueryGroup group = new DBQueryGroup();

            group.Operator = GroupOperator.Any;
            toSerialize.RecipientQueries.Add(group);
            group.DBQueries.Add(new DBQueryByValue(ActiveConfig.DB.GetAttribute("sn"), ValueOperator.EndsWith, ActiveConfig.DB.GetAttribute("firstName")));

            Lithnet.Common.ObjectModel.UniqueIDCache.ClearIdCache();
            AcmaInternalExitEvent deserialized = UnitTestControl.XmlSerializeRoundTrip <AcmaInternalExitEvent>(toSerialize);

            Assert.AreEqual(toSerialize.ID, deserialized.ID);
            Assert.AreEqual(toSerialize.RuleGroup.Operator, deserialized.RuleGroup.Operator);
            Assert.AreEqual(((ObjectChangeRule)toSerialize.RuleGroup.Items[0]).TriggerEvents, ((ObjectChangeRule)deserialized.RuleGroup.Items[0]).TriggerEvents);
            CollectionAssert.AreEqual(toSerialize.Recipients, deserialized.Recipients);

            DBQueryGroup deserializedGroup = toSerialize.RecipientQueries[0] as DBQueryGroup;

            Assert.AreEqual(group.Operator, deserializedGroup.Operator);
            Assert.AreEqual(((DBQueryByValue)group.DBQueries[0]).SearchAttribute, ((DBQueryByValue)deserializedGroup.DBQueries[0]).SearchAttribute);
            Assert.AreEqual(((DBQueryByValue)group.DBQueries[0]).Operator, ((DBQueryByValue)deserializedGroup.DBQueries[0]).Operator);
            Assert.AreEqual(((DBQueryByValue)group.DBQueries[0]).ValueDeclarations[0].Declaration, ((DBQueryByValue)deserializedGroup.DBQueries[0]).ValueDeclarations[0].Declaration);
        }
예제 #9
0
 public DBQueryGroupViewModel(DBQueryGroup model, string displayName)
     : this(model)
 {
     this.displayName = displayName;
 }
예제 #10
0
        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;
                }
            }
        }