コード例 #1
0
        public void ContainsMetadata()
        {
            var cm = new ConceptMetadata();

            var c1 = new SomeConcept {
                Name = "c1"
            };
            var c2 = new SomeConcept {
                Name = "c2"
            };
            var c3 = new SomeConcept {
                Name = "c3"
            };

            cm.Set(c1, cmString, "abc");
            cm.Set(c2, cmString, "def");
            cm.Set(c2, cmInt, 123);

            Assert.AreEqual(true, cm.Contains(c1, cmString));
            Assert.AreEqual(true, cm.Contains(c2, cmString));
            Assert.AreEqual(true, cm.Contains(c2, cmInt));

            Assert.AreEqual(false, cm.Contains(c1, cmInt));
            Assert.AreEqual(false, cm.Contains(c3, cmString));
            Assert.AreEqual(false, cm.Contains(c3, cmInt));
        }
コード例 #2
0
        public void GetSetMetadata()
        {
            var cm = new ConceptMetadata();

            var c1 = new SomeConcept {
                Name = "c1"
            };
            var c2 = new SomeConcept {
                Name = "c2"
            };
            var c3 = new SomeConcept {
                Name = "c3"
            };

            cm.Set(c1, cmString, "abc");
            cm.Set(c2, cmString, "def");
            cm.Set(c2, cmInt, 123);

            Assert.AreEqual("abc", cm.Get(c1, cmString));
            Assert.AreEqual("def", cm.Get(c2, cmString));
            Assert.AreEqual(123, cm.Get(c2, cmInt));

            TestUtility.ShouldFail <FrameworkException>(() => cm.Get(c1, cmInt), "There is no requested metadata", "SomeConcept", "c1", cmInt.Id.ToString());
            TestUtility.ShouldFail <FrameworkException>(() => cm.Get(c3, cmString), "There is no requested metadata", "SomeConcept", "c3", "cmString", cmString.Id.ToString());
            TestUtility.ShouldFail <FrameworkException>(() => cm.Get(c3, cmInt), "There is no requested metadata", "SomeConcept");

            TestUtility.ShouldFail <FrameworkException>(() => cm.Set(c1, cmString, "xyz"),
                                                        "metadata value is already set", "SomeConcept", "c1", "cmString", cmString.Id.ToString(), "abc", "xyz");
        }
コード例 #3
0
        public void FallbackTypeTest()
        {
            var metadataProvider = new ConceptMetadata(new MockPluginsContainer <IConceptMetadataExtension>(new IConceptMetadataExtension[] {
                new SimpleConceptMetadataImplementation1()
            }));

            Assert.AreEqual("SimpleConcept1", metadataProvider.Get <ISimpleConceptMetadata <IConceptInfo> >(typeof(DerivationConcept1)).ExtensionForType);
        }
コード例 #4
0
        public void NoConceptMetadataTest()
        {
            var metadataProvider = new ConceptMetadata(new MockPluginsContainer <IConceptMetadataExtension>(new IConceptMetadataExtension[] {}));

            TestUtility.ShouldFail(() => {
                metadataProvider.Get <ISimpleConceptMetadata <IConceptInfo> >(typeof(SimpleConcept1));
            }, $"There is no {nameof(IConceptMetadataExtension)} plugin", "SimpleConceptMetadata", "SimpleConcept1");
        }
コード例 #5
0
 public static void RegisterColumnMetadata(ConceptMetadata conceptMetadata, PropertyInfo property, string columnName, string columnType)
 {
     conceptMetadata.Set(property, ColumnNamesMetadata, new List <string> {
         columnName
     });
     conceptMetadata.Set(property, ColumnTypesMetadata, new List <string> {
         columnType
     });
 }
コード例 #6
0
        public void MultipleExtensionForSameTypeErrorTest()
        {
            TestUtility.ShouldFail(() => {
                var metadataProvider = new ConceptMetadata(new MockPluginsContainer <IConceptMetadataExtension>(new IConceptMetadataExtension[] {
                    new SimpleConceptMetadataImplementation1(),
                    new SimpleConceptMetadataImplementation12()
                }));

                metadataProvider.Get <ISimpleConceptMetadata <IConceptInfo> >(typeof(SimpleConcept1));
            },
                                   "There are multiple implementations of", "SimpleConceptMetadataImplementation1", "SimpleConceptMetadataImplementation12",
                                   "SimpleConceptMetadata", "SimpleConcept1");
        }
コード例 #7
0
        public static string AddColumn(ConceptMetadata conceptMetadata, PropertyInfo property, string options = "")
        {
            string columnName = conceptMetadata.Get(property, ColumnNamesMetadata).Single();

            return Sql.Format("PropertyDatabaseDefinition_AddColumn",
                SqlUtility.Identifier(property.DataStructure.Module.Name),
                SqlUtility.Identifier(property.DataStructure.Name),
                DslUtility.ValidateIdentifier(columnName, property, "Invalid column name."),
                conceptMetadata.Get(property, ColumnTypesMetadata).Single(),
                options,
                Options1Tag.Evaluate(property),
                Options2Tag.Evaluate(property),
                AfterCreateTag.Evaluate(property)).Trim();
        }
コード例 #8
0
        public static string AddColumn(ConceptMetadata conceptMetadata, PropertyInfo property, string options = "")
        {
            string columnName = conceptMetadata.Get(property, ColumnNamesMetadata).Single();

            return(Sql.Format("PropertyDatabaseDefinition_AddColumn",
                              SqlUtility.Identifier(property.DataStructure.Module.Name),
                              SqlUtility.Identifier(property.DataStructure.Name),
                              DslUtility.ValidateIdentifier(columnName, property, "Invalid column name."),
                              conceptMetadata.Get(property, ColumnTypesMetadata).Single(),
                              options,
                              Options1Tag.Evaluate(property),
                              Options2Tag.Evaluate(property),
                              AfterCreateTag.Evaluate(property)).Trim());
        }
コード例 #9
0
        public void GetSetMetadata()
        {
            var cm = new ConceptMetadata();

            var c1 = new SomeConcept { Name = "c1" };
            var c2 = new SomeConcept { Name = "c2" };
            var c3 = new SomeConcept { Name = "c3" };

            cm.Set(c1, cmString, "abc");
            cm.Set(c2, cmString, "def");
            cm.Set(c2, cmInt, 123);

            Assert.AreEqual("abc", cm.Get(c1, cmString));
            Assert.AreEqual("def", cm.Get(c2, cmString));
            Assert.AreEqual(123, cm.Get(c2, cmInt));

            TestUtility.ShouldFail<FrameworkException>(() => cm.Get(c1, cmInt), "There is no metadata", "SomeConcept", "c1", cmInt.Id.ToString());
            TestUtility.ShouldFail<FrameworkException>(() => cm.Get(c3, cmString), "There is no metadata", "SomeConcept", "c3", "cmString", cmString.Id.ToString());
            TestUtility.ShouldFail<FrameworkException>(() => cm.Get(c3, cmInt), "There is no metadata", "SomeConcept");

            TestUtility.ShouldFail<FrameworkException>(() => cm.Set(c1, cmString, "abc"), "metadata is already set", "SomeConcept", "c1", "cmString", cmString.Id.ToString());
        }
コード例 #10
0
 public static void RegisterColumnMetadata(ConceptMetadata conceptMetadata, PropertyInfo property, string columnName, string columnType)
 {
     conceptMetadata.Set(property, ColumnNamesMetadata, new List<string> { columnName });
     conceptMetadata.Set(property, ColumnTypesMetadata, new List<string> { columnType });
 }
コード例 #11
0
 public SqlNotNullDatabaseDefinition(ConceptMetadata conceptMetadata)
 {
     _conceptMetadata = conceptMetadata;
 }
コード例 #12
0
 public DateTimePropertyDatabaseDefinition(ConceptMetadata conceptMetadata)
 {
     _conceptMetadata = conceptMetadata;
 }
コード例 #13
0
 public ReferencePropertyDatabaseDefinition(ConceptMetadata conceptMetadata)
 {
     _conceptMetadata = conceptMetadata;
 }
コード例 #14
0
 public PolymorphicPropertyDatabaseDefinition(ConceptMetadata conceptMetadata)
 {
     _conceptMetadata = conceptMetadata;
 }
コード例 #15
0
 public EntryValueDataMigrationScript(ConceptMetadata conceptMetadata)
 {
     _conceptMetadata = conceptMetadata;
 }
コード例 #16
0
 public InvalidDataCodeGenerator(ConceptMetadata conceptMetadata)
 {
     _conceptMetadata = conceptMetadata;
 }
コード例 #17
0
 public static string GetColumnName(this ConceptMetadata conceptMetadata, PropertyInfo property)
 {
     return(conceptMetadata.Get <IDatabaseColumnName <PropertyInfo> >(property.GetType())?.GetColumnName(property));
 }
コード例 #18
0
 public BoolPropertyDatabaseDefinition(ConceptMetadata conceptMetadata)
 {
     _conceptMetadata = conceptMetadata;
 }
コード例 #19
0
 public EfMappingViewsHash(IDslModel dslModel, ConceptMetadata conceptMetadata)
 {
     _dslModel        = dslModel;
     _conceptMetadata = conceptMetadata;
     _sha256          = SHA256.Create();
 }
コード例 #20
0
 public SubtypeImplementsPropertyDatabaseDefinition(ConceptMetadata conceptMetadata)
 {
     _conceptMetadata = conceptMetadata;
 }
コード例 #21
0
 public DatePropertyDatabaseDefinition(ConceptMetadata conceptMetadataprovider)
 {
     _conceptMetadataprovider = conceptMetadataprovider;
 }
コード例 #22
0
 public SqlNotNullDatabaseDefinition(ConceptMetadata conceptMetadata)
 {
     _conceptMetadata = conceptMetadata;
 }
コード例 #23
0
 public LongStringPropertyDatabaseDefinition(ConceptMetadata conceptMetadata)
 {
     _conceptMetadata = conceptMetadata;
 }
コード例 #24
0
 public IntegerPropertyDatabaseDefinition(ConceptMetadata conceptMetadata)
 {
     _conceptMetadata = conceptMetadata;
 }
コード例 #25
0
 public HardcodedEntityPropertyDataMigrationScript(ConceptMetadata conceptMetadata)
 {
     _conceptMetadata = conceptMetadata;
 }
コード例 #26
0
 public ExtensibleSubtypeSqlViewMacro(ConceptMetadata conceptMetadata)
 {
     _conceptMetadata = conceptMetadata;
 }
コード例 #27
0
 /// <summary>
 /// Returns the C# type for the specified property.
 /// </summary>
 public static string GetCsPropertyType(this ConceptMetadata conceptMetadata, PropertyInfo property)
 {
     return(conceptMetadata.Get <ICsPropertyType <PropertyInfo> >(property.GetType())?.GetCsPropertyType(property));
 }
コード例 #28
0
 public SubtypeImplementsPropertyDatabaseDefinition(ConceptMetadata conceptMetadata)
 {
     _conceptMetadata = conceptMetadata;
 }
コード例 #29
0
 public DefaultValueCodeGenerator(ConceptMetadata conceptMetadata)
 {
     _conceptMetadata = conceptMetadata;
 }
コード例 #30
0
 public LongStringPropertyDatabaseDefinition(ConceptMetadata conceptMetadata)
 {
     _conceptMetadata = conceptMetadata;
 }
コード例 #31
0
 public static string GetColumnType(this ConceptMetadata conceptMetadata, Type propertyType)
 {
     return(conceptMetadata.Get <IDatabaseColumnType <PropertyInfo> >(propertyType)?.ColumnType);
 }
コード例 #32
0
 public PolymorphicPropertyDatabaseDefinition(ConceptMetadata conceptMetadata)
 {
     _conceptMetadata = conceptMetadata;
 }
コード例 #33
0
 public PolymorphicMacro(ConceptMetadata conceptMetadata)
 {
     _conceptMetadata = conceptMetadata;
 }
コード例 #34
0
 public InvalidDataAllowSaveMacro(ConceptMetadata conceptMetadata)
 {
     _conceptMetadata = conceptMetadata;
 }
コード例 #35
0
 public IsSubtypeOfMacro(ConceptMetadata conceptMetadata)
 {
     _conceptMetadata = conceptMetadata;
 }
コード例 #36
0
 public DatePropertyDatabaseDefinition(ConceptMetadata conceptMetadata)
 {
     _conceptMetadata = conceptMetadata;
 }
コード例 #37
0
 /// <summary>
 /// Each subtype must implement all properties from the polymorphic supertype, except:
 /// 1. the references to the subtypes (automatically generated for each subtype)
 /// 2. the "Subtype" discriminator property (automatically generated to describe the subtype of a record).
 /// </summary>
 public bool IsImplementable(ConceptMetadata conceptMetadata)
 {
     return(!conceptMetadata.GetOrDefault(Property, IsPolymorphicSystemProperty, false));
 }