Ejemplo n.º 1
0
        private int GetFieldIndexCore([NotNull] AttributeRole role, bool roleIsOptional)
        {
            ObjectAttribute attribute = GetAttribute(role, roleIsOptional);

            if (attribute == null)
            {
                return(-1);
            }

            int fieldIndex = AttributeUtils.GetFieldIndex(Table, attribute, _fieldIndexCache);

            if (fieldIndex >= 0 || roleIsOptional)
            {
                return(fieldIndex);
            }

            throw new ArgumentException(string.Format("Field {0} not found", attribute.Name));
        }
Ejemplo n.º 2
0
        private static ITable GetInvolvedTableAndQueryFilter(
            [NotNull] IObjectDataset involvedObjectDataset,
            [NotNull] IDatasetContext datasetContext,
            bool includeDateOfChangeField,
            [NotNull] out IQueryFilter queryFilter,
            out int dateOfChangeFieldIndex)
        {
            ITable result;

            try
            {
                result = datasetContext.OpenTable(involvedObjectDataset);
                Assert.NotNull(result, "Dataset not found in current context: {0}",
                               involvedObjectDataset.Name);
            }
            catch (Exception e)
            {
                string message;
                if (involvedObjectDataset.Deleted)
                {
                    message = string.Format(
                        "The dataset '{0}' referenced in allowed errors is registered as deleted, unable to open",
                        involvedObjectDataset.Name);
                }
                else
                {
                    message = string.Format(
                        "Error opening dataset '{0}' referenced in allowed errors: {1}",
                        involvedObjectDataset.Name,
                        e.Message);
                }

                throw new InvolvedTableOpenException(message, e);
            }

            queryFilter = new QueryFilterClass();

            var subfields = new List <string> {
                result.OIDFieldName
            };

            if (includeDateOfChangeField)
            {
                ObjectAttribute dateOfChangeAttribute =
                    involvedObjectDataset.GetAttribute(AttributeRole.DateOfChange);

                dateOfChangeFieldIndex =
                    dateOfChangeAttribute != null
                                                ? AttributeUtils.GetFieldIndex(result, dateOfChangeAttribute)
                                                : -1;

                if (dateOfChangeAttribute != null && dateOfChangeFieldIndex >= 0)
                {
                    subfields.Add(dateOfChangeAttribute.Name);
                }
            }
            else
            {
                dateOfChangeFieldIndex = -1;
            }

            GdbQueryUtils.SetSubFields(queryFilter, subfields);

            return(result);
        }