protected virtual ConstraintBindingSet[] CloneConstraintBindingSet(EiffelStructures.table.HASH_TABLE_REFERENCE_REFERENCE o)
        {
            ConstraintBindingSet[] result = null;

            if (o != null && o.count() > 0)
            {
                result = new ConstraintBindingSet[o.count()];
                o.start();

                for (int i = 1; i <= result.Length; i++)
                {
                    ConstraintBindingSet constraintBindingSet = new ConstraintBindingSet();
                    constraintBindingSet.terminology = o.key_for_iteration().ToString();
                    EiffelStructures.table.Impl.HASH_TABLE_REFERENCE_REFERENCE adlTerms = o.item_for_iteration() as EiffelStructures.table.Impl.HASH_TABLE_REFERENCE_REFERENCE;
                    CONSTRAINT_BINDING_ITEM[] localTerms = new CONSTRAINT_BINDING_ITEM[adlTerms.count()];
                    adlTerms.start();

                    for (int j = 1; j <= adlTerms.count(); j++)
                    {
                        openehr.common_libs.basic.Impl.URI term = adlTerms.item_for_iteration() as openehr.common_libs.basic.Impl.URI;
                        CONSTRAINT_BINDING_ITEM localTerm = new CONSTRAINT_BINDING_ITEM();
                        localTerm.code = adlTerms.key_for_iteration().ToString();
                        localTerm.value = adlTerms.item_for_iteration().ToString();
                        localTerms[j - 1] = localTerm;
                        adlTerms.forth();
                    }

                    constraintBindingSet.items = localTerms;
                    result[i - 1] = constraintBindingSet;
                    o.forth();
                }
            }

            return result;
        }
        CONSTRAINT_BINDING_ITEM[] VisitConstraintBindingItems(CONSTRAINT_BINDING_ITEM[] bindingItems)
        {
            CONSTRAINT_BINDING_ITEM[] result = null;

            if (bindingItems != null)
            {
                SortedDictionary<string, CONSTRAINT_BINDING_ITEM> sortedItems = new SortedDictionary<string, CONSTRAINT_BINDING_ITEM>();

                foreach (CONSTRAINT_BINDING_ITEM item in bindingItems)
                    sortedItems.Add(item.code, item);

                result = new CONSTRAINT_BINDING_ITEM[sortedItems.Count];
                sortedItems.Values.CopyTo(result, 0);
            }

            return result;
        }
Beispiel #3
0
        public void AddOrReplaceConstraintBinding(string query, string acCode, string terminology)
        {
            ConstraintBindingSet ts = ConstraintBindingSetForTerminology(terminology);

            if (ts != null)
            {
                AddTerminology(terminology);
                CONSTRAINT_BINDING_ITEM binding = null;
                CONSTRAINT_BINDING_ITEM[] bindings = ts.items;

                if (bindings != null)
                {
                    foreach (CONSTRAINT_BINDING_ITEM b in bindings)
                        if (b.code == acCode)
                            binding = b;
                }

                if (binding == null)
                {
                    int i = 0;

                    if (bindings == null)
                        bindings = new CONSTRAINT_BINDING_ITEM[1];
                    else
                    {
                        i = bindings.Length;
                        Array.Resize(ref bindings, i + 1);
                    }

                    ts.items = bindings;
                    bindings[i] = binding = new CONSTRAINT_BINDING_ITEM();
                    binding.code = acCode.ToLowerInvariant();
                }

                binding.value = query;
            }
        }