Пример #1
0
        public override IEnumerator ReceivePayload(VisualPayload payload)
        {
            SelectGroups(payload.Data);

            VisualPayload selectedPayload;

            if (NewPayloadOnly.GetFirstValue(payload.Data))
            {
                var newMutable = new MutableObject();
                newMutable[EntryFieldName] = SelectedList;
                selectedPayload            = new VisualPayload(
                    newMutable,
                    payload.VisualData);
            }
            else
            {
                selectedPayload = payload;
                SelectedListTarget.SetValue(SelectedList, payload.Data);
            }

            var iterator = SelectedSet.Transmit(selectedPayload);

            while (iterator.MoveNext())
            {
                yield return(null);
            }
        }
Пример #2
0
        protected override void OnProcessOutputSchema(MutableObject newSchema)
        {
            foreach (var entry in Scope.GetEntries(newSchema))
            {
                SelectGroups(entry);

                var firstEntry = EntryField.GetEntries(entry).First().Last();

                if (firstEntry != null)
                {
                    firstEntry = firstEntry.CloneKeys();
                }
                else
                {
                    firstEntry = new MutableObject();
                }

                if (!firstEntry.ContainsKey(ImplicitSchemaIndicator.KeyName))
                {
                    firstEntry.Add(ImplicitSchemaIndicator.KeyName, new ImplicitSchemaIndicator(this));
                }

                DenoteEmptySelectedList(newSchema, firstEntry);
                DenoteEmptyUnSelectedList(newSchema, firstEntry);

                if (!NewPayloadOnly.GetFirstValue(newSchema))
                {
                    SelectedListTarget.SetValue(SelectedList, entry);
                    UnSelectedListTarget.SetValue(UnSelectedList, entry);
                }
            }

            if (!NewPayloadOnly.GetFirstValue(newSchema))
            {
                SelectedSet.TransmitSchema(newSchema);

                UnSelectedSet.TransmitSchema(newSchema);
            }
            else
            {
                SelectedSet.TransmitSchema(new MutableObject
                {
                    { SelectedListTarget.LastKey, SelectedList }
                });
                UnSelectedSet.TransmitSchema(new MutableObject
                {
                    { UnSelectedListTarget.LastKey, UnSelectedList }
                });
            }
        }
Пример #3
0
        protected override void OnProcessOutputSchema(MutableObject newSchema)
        {
            SelectGroups(newSchema);


            var firstEntry = EntryField.GetEntries(newSchema).First().Last();


            if (firstEntry != null)
            {
                firstEntry = firstEntry.CloneKeys();
            }
            else
            {
                firstEntry = new MutableObject();
            }

            if (!firstEntry.ContainsKey(GroupSplitter.ImplicitSchemaIndicator.KeyName))
            {
                firstEntry.Add(GroupSplitter.ImplicitSchemaIndicator.KeyName, new GroupSplitter.ImplicitSchemaIndicator(this));
            }

            var outgoingList = SelectedList.Count == 0
                ? new List <MutableObject> {
                firstEntry
            }
                : SelectedList;

            MutableObject outgoingSchema;


            if (NewPayloadOnly.GetFirstValue(newSchema))
            {
                outgoingSchema = new MutableObject();
                outgoingSchema[EntryFieldName] = outgoingList;
            }
            else
            {
                outgoingSchema = newSchema;
                SelectedListTarget.SetValue(outgoingList, outgoingSchema);
            }


            SelectedSet.TransmitSchema(outgoingSchema);
        }
Пример #4
0
        public override IEnumerator ReceivePayload(VisualPayload payload)
        {
            foreach (var entry in Scope.GetEntries(payload.Data))
            {
                SelectGroups(entry);

                //var firstEntry = EntryField.GetEntries(payload.Data).First().Last();
                //
                //if (firstEntry != null)
                //    firstEntry = firstEntry.CloneKeys();
                //else
                //    firstEntry = new MutableObject();
                //
                //if (!firstEntry.ContainsKey(ImplicitSchemaIndicator.KeyName))
                //    firstEntry.Add(ImplicitSchemaIndicator.KeyName, new ImplicitSchemaIndicator(this));
                //
                //
                //DenoteEmptySelectedList(payload.Data, firstEntry);
                //DenoteEmptyUnSelectedList(payload.Data, firstEntry);

                if (NewPayloadOnly.GetFirstValue(payload.Data))
                {
                    if (AllowEmptyLists.GetFirstValue(payload.Data) || SelectedList.Any())
                    {
                        var iterator = SelectedSet.Transmit(
                            new VisualPayload(new MutableObject
                        {
                            { SelectedListTarget.LastKey, SelectedList }
                        }, payload.VisualData));
                        while (iterator.MoveNext())
                        {
                            yield return(null);
                        }
                    }

                    if (AllowEmptyLists.GetFirstValue(payload.Data) || UnSelectedList.Any())
                    {
                        var iterator = UnSelectedSet.Transmit(
                            new VisualPayload(new MutableObject
                        {
                            { UnSelectedListTarget.LastKey, UnSelectedList }
                        }, payload.VisualData));
                        while (iterator.MoveNext())
                        {
                            yield return(null);
                        }
                    }
                }
                else
                {
                    SelectedListTarget.SetValue(SelectedList, entry);
                    UnSelectedListTarget.SetValue(UnSelectedList, entry);
                }
            }

            if (!NewPayloadOnly.GetFirstValue(payload.Data))
            {
                if (AllowEmptyLists.GetFirstValue(payload.Data) || SelectedList.Any())
                {
                    var iterator = SelectedSet.Transmit(payload);
                    while (iterator.MoveNext())
                    {
                        yield return(null);
                    }
                }

                if (AllowEmptyLists.GetFirstValue(payload.Data) || UnSelectedList.Any())
                {
                    var iterator = UnSelectedSet.Transmit(payload);
                    while (iterator.MoveNext())
                    {
                        yield return(null);
                    }
                }
            }
        }