Exemplo n.º 1
0
    public static void createBinding(FormField ff, ImportingBindingContainer ibc)
    {
        GRASPEntities db = new GRASPEntities();

        BindingContainer bc = new BindingContainer();

        bc.pushed = 0;
        bc.bType = ibc.bType.ToString();
        bc.maxRange = ibc.maxRange;
        bc.minRange = ibc.minRange;
        bc.value = ibc.value;
        bc.FormFieldAndBinding.Add(createFormFieldAndBinding(ff, bc.id));

        db.BindingContainer.Add(bc);
        db.SaveChanges();
    }
Exemplo n.º 2
0
    public void detectBindings(List<ImportingElement> totalElements)
    {
        if (this.fieldType == FormFieldType.REPEATABLES || this.fieldType == FormFieldType.REPEATABLES_BASIC)
        {
            foreach (ImportingElement repEl in this.repElements)
            {
                repEl.detectBindings(totalElements);
            }
        }
        if (bindReference != null)
        {
            string splitString = " and ";
            if (bindReference.relevant.Contains(" and "))
            {
                splitString = " and ";
                bindingsPolicy = AND_POLICY;
            }
            if (bindReference.relevant.Contains(" or "))
            {
                splitString = " or ";
                bindingsPolicy = OR_POLICY;
            }
            string[] relevantElements = bindReference.relevant.Split(new string[] { splitString }, StringSplitOptions.None);
            foreach (string relevant in relevantElements)
            {
                if (relevant != "" && !relevant.Contains("selected("))
                {
                    foreach (string t in bindSymbols)
                    {
                        if (relevant.Contains(t.ToString()))
                        {
                            string[] splitted = relevant.Split(new string[] { t }, StringSplitOptions.None);
                            string referenceName = "";
                            if (splitted[0].Contains("./../"))
                            {
                                referenceName = splitted[0].Substring(splitted[0].LastIndexOf("/") + 1);
                                string prefix = splitReferenceName(this.reference)[0];
                                referenceName = prefix + "/" + referenceName;
                            }
                            else
                            {
                                referenceName = cutReferenceName(splitted[0].Trim());
                            }

                            string bindValue = "";
                            if (splitted.Length == 1)
                                bindValue = splitted[0];
                            else
                            {
                                bindValue = splitted[1];

                                for (int i = 2; i < splitted.Length; i++)
                                {
                                    bindValue = bindValue + " = " + splitted[i];
                                }
                            }

                            ImportingBindingContainer newBinding = new ImportingBindingContainer();
                            if ((bindValue[0] == '\'') && (bindValue[bindValue.Length - 1] == '\''))
                                bindValue = bindValue.Substring(1, bindValue.Length - 1);
                            if (t == " = " && bindValue == "")
                                newBinding.bType = BindType.NULL;
                            else if(t == " != " && bindValue == "")
                                newBinding.bType = BindType.NOT_NULL;
                            else if (t == " = " && bindValue != "")
                                newBinding.bType = BindType.EQUALS;
                            else if (t == " != " && bindValue != "")
                                newBinding.bType = BindType.NOT_EQUALS;
                            else if (t == " > ")
                                newBinding.bType = BindType.GREATER_THAN;
                            else if (t == " < ")
                                newBinding.bType = BindType.LESS_THAN;
                            else if (t == " >= ")
                                newBinding.bType = BindType.GREATER_EQUALS_THAN;
                            else if (t == " <= ")
                                newBinding.bType = BindType.LESS_EQUALS_THAN;

                            newBinding.value = bindValue;

                            foreach (ImportingElement el in totalElements)
                            {
                                if (el.fieldType != FormFieldType.SEPARATOR)
                                {
                                    Debug.WriteLine("element ref: " + el.reference);
                                    Debug.WriteLine("binding referencename: " + referenceName);
                                    if (el.reference.Trim() == referenceName.Trim())
                                    {
                                        Debug.WriteLine("adding relevant binding");
                                        if (el.fieldType == FormFieldType.CHECK_BOX)
                                        {
                                            if (bindValue == "true")
                                            {
                                                newBinding.bType = BindType.IS_CHECKED;
                                                newBinding.value = "";
                                            }
                                        }
                                        if (elementsToBindings.ContainsKey(el))
                                        {
                                            elementsToBindings[el].Add(newBinding);
                                        }
                                        else
                                        {
                                            elementsToBindings.Add(el, new List<ImportingBindingContainer>());
                                            elementsToBindings[el].Add(newBinding);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                else if (relevant.Contains("selected("))
                {
                    int beginCut = relevant.IndexOf(relevant) + 9;
                    int endCut = relevant.IndexOf(")", beginCut + 1);
                    string selected = relevant.Substring(beginCut, endCut);
                    string[] splitted = selected.Split(new string[] { " , " }, StringSplitOptions.None);
                    string referenceName = splitted[0];
                    referenceName = cutReferenceName(referenceName);

                    ImportingBindingContainer newBinding = new ImportingBindingContainer();
                    newBinding.bType = BindType.IS_CHECKED;
                    foreach(ImportingElement el in totalElements)
                    {
                        if (el.reference.Trim() == referenceName.Trim())
                        {
                            if (elementsToBindings.ContainsKey(el))
                            {
                                elementsToBindings[el].Add(newBinding);
                            }
                            else
                            {
                                elementsToBindings.Add(el, new List<ImportingBindingContainer>());
                                elementsToBindings[el].Add(newBinding);
                            }
                        }
                    }
                }
            }

        }
    }