Exemple #1
0
        internal Capability(FdoConnection conn)
        {
            IConnection internalConn = conn.InternalConnection;

            commandCaps = internalConn.CommandCapabilities;
            connCaps    = internalConn.ConnectionCapabilities;
            exprCaps    = internalConn.ExpressionCapabilities;
            filterCaps  = internalConn.FilterCapabilities;
            geomCaps    = internalConn.GeometryCapabilities;
            rasterCaps  = internalConn.RasterCapabilities;
            schemaCaps  = internalConn.SchemaCapabilities;
            topoCaps    = internalConn.TopologyCapabilities;
        }
Exemple #2
0
        /// <summary>
        /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
        /// </summary>
        public void Dispose()
        {
            commandCaps.Dispose();
            connCaps.Dispose();
            exprCaps.Dispose();
            geomCaps.Dispose();
            filterCaps.Dispose();
            rasterCaps.Dispose();
            schemaCaps.Dispose();
            topoCaps.Dispose();

            commandCaps = null;
            connCaps    = null;
            exprCaps    = null;
            geomCaps    = null;
            filterCaps  = null;
            rasterCaps  = null;
            schemaCaps  = null;
            topoCaps    = null;
        }
        public void TestAlterSchemaBaseClass()
        {
            MockRepository      mocks  = new MockRepository();
            FeatureSchema       schema = new FeatureSchema("Default", "");
            IConnection         conn   = mocks.DynamicMock <IConnection>();
            ISchemaCapabilities caps   = mocks.DynamicMock <ISchemaCapabilities>();

            using (mocks.Record())
            {
                SetupResult.For(conn.ConnectionState).Return(ConnectionState.ConnectionState_Open);
                SetupResult.For(conn.SchemaCapabilities).Return(caps);
                SetupResult.For(caps.ClassTypes).Return((ClassType[])Enum.GetValues(typeof(ClassType)));
                SetupResult.For(caps.DataTypes).Return((DataType[])Enum.GetValues(typeof(DataType)));
                SetupResult.For(caps.MaximumDecimalPrecision).Return(20);
                SetupResult.For(caps.MaximumDecimalScale).Return(20);
                SetupResult.For(caps.ReservedCharactersForName).Return(string.Empty);
                SetupResult.For(caps.SupportedAutoGeneratedTypes).Return(new DataType[] { DataType.DataType_Int32, DataType.DataType_Int64 });
                SetupResult.For(caps.SupportedIdentityPropertyTypes).Return(new DataType[] { DataType.DataType_Int32, DataType.DataType_Int64 });
                SetupResult.For(caps.SupportsAssociationProperties).Return(false);
                SetupResult.For(caps.SupportsAutoIdGeneration).Return(true);
                SetupResult.For(caps.SupportsCompositeId).Return(false);
                SetupResult.For(caps.SupportsCompositeUniqueValueConstraints).Return(false);
                SetupResult.For(caps.SupportsDataStoreScopeUniqueIdGeneration).Return(false);
                SetupResult.For(caps.SupportsDefaultValue).Return(true);
                SetupResult.For(caps.SupportsExclusiveValueRangeConstraints).Return(false);
                SetupResult.For(caps.SupportsInclusiveValueRangeConstraints).Return(false);
                SetupResult.For(caps.SupportsMultipleSchemas).Return(false);
                SetupResult.For(caps.SupportsNetworkModel).Return(false);
                SetupResult.For(caps.SupportsNullValueConstraints).Return(true);
                SetupResult.For(caps.SupportsObjectProperties).Return(false);
                SetupResult.For(caps.SupportsSchemaModification).Return(true);
                SetupResult.For(caps.SupportsSchemaOverrides).Return(false);
                SetupResult.For(caps.SupportsUniqueValueConstraints).Return(false);
                SetupResult.For(caps.SupportsValueConstraintsList).Return(false);

                SetupResult.For(caps.SupportsInheritance).Return(false);
            }
            FdoFeatureService service = mocks.DynamicMock <FdoFeatureService>(conn);

            mocks.ReplayAll();

            ClassDefinition baseClass = new Class("Base", "");

            //ID
            DataPropertyDefinition id = new DataPropertyDefinition("ID", "");

            id.DataType = DataType.DataType_Int64;
            id.Nullable = false;

            baseClass.Properties.Add(id);
            baseClass.IdentityProperties.Add(id);

            //Name
            DataPropertyDefinition name = new DataPropertyDefinition("Name", "");

            name.DataType = DataType.DataType_String;
            name.Nullable = true;
            name.Length   = 100;

            baseClass.Properties.Add(name);

            ClassDefinition derivedClass = new Class("Derived", "");

            derivedClass.BaseClass = baseClass;

            //DOB
            DataPropertyDefinition dob = new DataPropertyDefinition("DOB", "");

            dob.DataType = DataType.DataType_DateTime;
            dob.Nullable = true;

            derivedClass.Properties.Add(dob);

            schema.Classes.Add(baseClass);
            schema.Classes.Add(derivedClass);

            IncompatibleSchema incSchema = null;
            bool canApply = service.CanApplySchema(schema, out incSchema);

            Assert.IsFalse(canApply);
            Assert.IsNotNull(incSchema);

            FeatureSchema newSchema = service.AlterSchema(schema, incSchema);

            ClassDefinition newClass = newSchema.Classes[newSchema.Classes.IndexOf("Derived")];

            //Base class properties should be copied to derived class
            Assert.AreEqual("BASE_ID", newClass.IdentityProperties[0].Name);
            Assert.AreEqual(3, newClass.Properties.Count);
            Assert.IsTrue(newClass.Properties.IndexOf("BASE_ID") >= 0);
            Assert.IsTrue(newClass.Properties.IndexOf("BASE_Name") >= 0);
        }
        public void TestAlterSchemaPassIdentityType()
        {
            MockRepository      mocks = new MockRepository();
            IConnection         conn  = mocks.DynamicMock <IConnection>();
            ISchemaCapabilities caps  = mocks.DynamicMock <ISchemaCapabilities>();

            using (mocks.Record())
            {
                SetupResult.For(conn.ConnectionState).Return(ConnectionState.ConnectionState_Open);
                SetupResult.For(conn.SchemaCapabilities).Return(caps);
                SetupResult.For(caps.ClassTypes).Return((ClassType[])Enum.GetValues(typeof(ClassType)));
                SetupResult.For(caps.DataTypes).Return((DataType[])Enum.GetValues(typeof(DataType)));
                SetupResult.For(caps.MaximumDecimalPrecision).Return(20);
                SetupResult.For(caps.MaximumDecimalScale).Return(20);
                SetupResult.For(caps.ReservedCharactersForName).Return(string.Empty);
                SetupResult.For(caps.SupportedAutoGeneratedTypes).Return(new DataType[] { DataType.DataType_Int64 });
                //--
                SetupResult.For(caps.SupportedIdentityPropertyTypes).Return(new DataType[] { DataType.DataType_Int32, DataType.DataType_Int64, DataType.DataType_String });
                //--
                SetupResult.For(caps.SupportsAssociationProperties).Return(false);
                SetupResult.For(caps.SupportsAutoIdGeneration).Return(true);
                SetupResult.For(caps.SupportsCompositeId).Return(false);
                SetupResult.For(caps.SupportsCompositeUniqueValueConstraints).Return(false);
                SetupResult.For(caps.SupportsDataStoreScopeUniqueIdGeneration).Return(false);
                SetupResult.For(caps.SupportsDefaultValue).Return(true);
                SetupResult.For(caps.SupportsExclusiveValueRangeConstraints).Return(false);
                SetupResult.For(caps.SupportsInclusiveValueRangeConstraints).Return(false);
                SetupResult.For(caps.SupportsMultipleSchemas).Return(false);
                SetupResult.For(caps.SupportsNetworkModel).Return(false);
                SetupResult.For(caps.SupportsNullValueConstraints).Return(true);
                SetupResult.For(caps.SupportsObjectProperties).Return(false);
                SetupResult.For(caps.SupportsSchemaModification).Return(true);
                SetupResult.For(caps.SupportsSchemaOverrides).Return(false);
                SetupResult.For(caps.SupportsUniqueValueConstraints).Return(false);
                SetupResult.For(caps.SupportsValueConstraintsList).Return(false);

                SetupResult.For(caps.SupportsInheritance).Return(false);
            }
            FdoFeatureService service = mocks.StrictMock <FdoFeatureService>(conn);

            mocks.ReplayAll();

            FeatureSchema schema = new FeatureSchema("Default", "");

            ClassDefinition cls = new Class("Test", "");

            //ID - float
            DataPropertyDefinition id = new DataPropertyDefinition("ID", "");

            id.DataType = DataType.DataType_Single;
            id.Nullable = false;

            cls.Properties.Add(id);
            cls.IdentityProperties.Add(id);

            //Name
            DataPropertyDefinition name = new DataPropertyDefinition("Name", "");

            name.DataType = DataType.DataType_String;
            name.Nullable = true;
            name.Length   = 100;

            cls.Properties.Add(name);

            schema.Classes.Add(cls);

            IncompatibleSchema incSchema = null;
            bool canApply = service.CanApplySchema(schema, out incSchema);

            Assert.IsFalse(canApply);
            Assert.IsNotNull(incSchema);

            FeatureSchema newSchema = service.AlterSchema(schema, incSchema);

            ClassDefinition newClass = newSchema.Classes[0];

            //Should have been "promoted" to string
            Assert.AreEqual(DataType.DataType_String, newClass.IdentityProperties[0].DataType);
        }
        public void TestAlterSchemaPassValueConstraints()
        {
            MockRepository      mocks = new MockRepository();
            IConnection         conn  = mocks.DynamicMock <IConnection>();
            ISchemaCapabilities caps  = mocks.DynamicMock <ISchemaCapabilities>();

            using (mocks.Record())
            {
                SetupResult.For(conn.ConnectionState).Return(ConnectionState.ConnectionState_Open);
                SetupResult.For(conn.SchemaCapabilities).Return(caps);
                SetupResult.For(caps.ClassTypes).Return((ClassType[])Enum.GetValues(typeof(ClassType)));
                SetupResult.For(caps.DataTypes).Return((DataType[])Enum.GetValues(typeof(DataType)));
                SetupResult.For(caps.MaximumDecimalPrecision).Return(20);
                SetupResult.For(caps.MaximumDecimalScale).Return(20);
                SetupResult.For(caps.ReservedCharactersForName).Return(string.Empty);
                SetupResult.For(caps.SupportedAutoGeneratedTypes).Return(new DataType[] { DataType.DataType_Int64 });
                SetupResult.For(caps.SupportedIdentityPropertyTypes).Return(new DataType[] { DataType.DataType_Int32, DataType.DataType_Int64 });
                SetupResult.For(caps.SupportsAssociationProperties).Return(false);
                SetupResult.For(caps.SupportsAutoIdGeneration).Return(true);
                SetupResult.For(caps.SupportsCompositeId).Return(false);
                SetupResult.For(caps.SupportsCompositeUniqueValueConstraints).Return(false);
                SetupResult.For(caps.SupportsDataStoreScopeUniqueIdGeneration).Return(false);
                SetupResult.For(caps.SupportsDefaultValue).Return(true);
                //--
                SetupResult.For(caps.SupportsExclusiveValueRangeConstraints).Return(false);
                SetupResult.For(caps.SupportsInclusiveValueRangeConstraints).Return(false);
                //--
                SetupResult.For(caps.SupportsMultipleSchemas).Return(false);
                SetupResult.For(caps.SupportsNetworkModel).Return(false);
                SetupResult.For(caps.SupportsNullValueConstraints).Return(true);
                SetupResult.For(caps.SupportsObjectProperties).Return(false);
                SetupResult.For(caps.SupportsSchemaModification).Return(true);
                SetupResult.For(caps.SupportsSchemaOverrides).Return(false);
                SetupResult.For(caps.SupportsUniqueValueConstraints).Return(false);
                //--
                SetupResult.For(caps.SupportsValueConstraintsList).Return(false);
                //--
                SetupResult.For(caps.SupportsInheritance).Return(false);
            }
            FdoFeatureService service = mocks.StrictMock <FdoFeatureService>(conn);

            mocks.ReplayAll();

            FeatureSchema schema = new FeatureSchema("Default", "");

            ClassDefinition cls = new Class("Test", "");

            //ID
            DataPropertyDefinition id = new DataPropertyDefinition("ID", "");

            id.DataType        = DataType.DataType_Int64;
            id.IsAutoGenerated = true; //Should be converted to int64
            id.ReadOnly        = true;
            id.Nullable        = false;

            cls.Properties.Add(id);
            cls.IdentityProperties.Add(id);

            //Age
            DataPropertyDefinition       age   = new DataPropertyDefinition("Age", "");
            PropertyValueConstraintRange range = new PropertyValueConstraintRange();

            range.MinValue      = new Int32Value(0);
            range.MinInclusive  = true;
            range.MaxValue      = new Int32Value(100);
            range.MaxInclusive  = true;
            age.ValueConstraint = range;
            age.DataType        = DataType.DataType_Int32;
            age.Nullable        = true;

            cls.Properties.Add(age);

            //Gender
            DataPropertyDefinition      gender = new DataPropertyDefinition("Gender", "");
            PropertyValueConstraintList list   = new PropertyValueConstraintList();

            list.ConstraintList.Add(new StringValue("M"));
            list.ConstraintList.Add(new StringValue("F"));
            gender.ValueConstraint = list;
            age.DataType           = DataType.DataType_String;
            age.Nullable           = false;
            age.Length             = 1;

            cls.Properties.Add(gender);

            schema.Classes.Add(cls);

            IncompatibleSchema incSchema = null;
            bool canApply = service.CanApplySchema(schema, out incSchema);

            Assert.IsFalse(canApply);
            Assert.IsNotNull(incSchema);

            FeatureSchema newSchema = service.AlterSchema(schema, incSchema);

            ClassDefinition newClass = newSchema.Classes[0];

            DataPropertyDefinition age2 = newClass.Properties[newClass.Properties.IndexOf("Age")] as DataPropertyDefinition;

            //Should have constraint removed
            Assert.IsNull(age2.ValueConstraint);

            DataPropertyDefinition gender2 = newClass.Properties[newClass.Properties.IndexOf("Gender")] as DataPropertyDefinition;

            //Should have constraint removed
            Assert.IsNull(gender2.ValueConstraint);
        }
Exemple #6
0
        /// <summary>
        /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
        /// </summary>
        public void Dispose()
        {
            commandCaps.Dispose();
            connCaps.Dispose();
            exprCaps.Dispose();
            geomCaps.Dispose();
            filterCaps.Dispose();
            rasterCaps.Dispose();
            schemaCaps.Dispose();
            topoCaps.Dispose();

            commandCaps = null;
            connCaps = null;
            exprCaps = null;
            geomCaps = null;
            filterCaps = null;
            rasterCaps = null;
            schemaCaps = null;
            topoCaps = null;
        }
Exemple #7
0
 internal Capability(FdoConnection conn)
 {
     IConnection internalConn = conn.InternalConnection;
     commandCaps = internalConn.CommandCapabilities;
     connCaps = internalConn.ConnectionCapabilities;
     exprCaps = internalConn.ExpressionCapabilities;
     filterCaps = internalConn.FilterCapabilities;
     geomCaps = internalConn.GeometryCapabilities;
     rasterCaps = internalConn.RasterCapabilities;
     schemaCaps = internalConn.SchemaCapabilities;
     topoCaps = internalConn.TopologyCapabilities;
 }