BigML.Model.LocalModel.LocalModel C# (CSharp) Method

LocalModel() private method

private LocalModel ( JsonValue jsonObject, DataSet.Field>.Dictionary fields ) : System
jsonObject System.Json.JsonValue
fields DataSet.Field>.Dictionary
return System
            internal LocalModel(JsonValue jsonObject, Dictionary<string, DataSet.Field> fields)
            {
                Dictionary<string, Dictionary<string, string>> termForms = new Dictionary<string, Dictionary<string, string>>();
                Dictionary<string, string> options;
                Dictionary<string, bool> caseSensitive = new Dictionary<string, bool>();
                string fieldId;
                DataSet.Field currentField;

                _jsonObject = jsonObject;

                // parse or fill the Fields information
                if (fields != null) {
                    _fields = fields;

                    // populate nameToIdDict from 'fields' param
                    foreach (var kv in fields)
                    {
                        fieldId = kv.Key;
                        nameToIdDict.Add(_fields[fieldId].Name, fieldId);

                        //text analysis initialization
                        options = new Dictionary<string, string>();

                        if (_fields[fieldId].OpType == OpType.Text)
                        {
                            currentField = fields[kv.Key];

                            //case sensitive per field
                            caseSensitive.Add(fieldId, (bool)currentField.TermAnalysis["case_sensitive"]);

                            //text analysis initialization
                            options = getFieldTermAnalysis(currentField);
                        }
                        fieldAllowEmpty[fieldId] = _fields[fieldId].OpType.Equals(OpType.Text) || _fields[fieldId].OpType.Equals(OpType.Items);
                        termForms[fieldId] = options;
                    }
                }
                else {
                    _fields = new Dictionary<string, DataSet.Field>();

                    // process each 'field' properties and
                    // populate nameToIdDict from 'fields' param
                    foreach (var kv in _jsonObject["fields"])
                    {
                        fieldId = kv.Key;
                        kv.Value["id"] = fieldId;
                        _fields[fieldId] = new DataSet.Field(kv.Value);
                        nameToIdDict.Add(_fields[fieldId].Name, fieldId);

                        //text analysis initialization
                        options = new Dictionary<string, string>();

                        if (_fields[fieldId].OpType == OpType.Text)
                        {
                            currentField = fields[kv.Key];

                            //case sensitive per field
                            caseSensitive.Add(fieldId, (bool)currentField.TermAnalysis["case_sensitive"]);

                            options = getFieldTermAnalysis(currentField);
                        }

                        fieldAllowEmpty[fieldId] = _fields[fieldId].OpType.Equals(OpType.Text) || _fields[fieldId].OpType.Equals(OpType.Items);
                        termForms[fieldId] = options;
                    }
                }

                // fill the array with all the fields' names
                modelFieldsNames = new string[nameToIdDict.Keys.Count];
                nameToIdDict.Keys.CopyTo(modelFieldsNames, 0);

                _caseSensitive = caseSensitive;
                _termForms = termForms;
            }