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;
}