Esempio n. 1
0
        private bool PatternResolvable(IAbsoluteKeyAssignable schemaPattern)
        {
            if (SchemaSource == SchemaSource.Global || SchemaSource == SchemaSource.Literal)
            {
                return(true);
            }

            if ((schemaPattern.SchemaSource != SchemaSource) &&
                (schemaPattern.SchemaSource != SchemaSource.Global &&
                 schemaPattern.SchemaSource != SchemaSource.Literal))
            {
                return(false);
            }

            if (IntermediateKeys.Count == 0)
            {
                return(true);
            }

            if (UseGlobalParameter)
            {
                return(true);
            }


            string ownIntermediateSchema = IntermediateKeyString;
            //AbsoluteKey.Split('.').WithoutLast().Aggregate(
            //(a, b) => a + "." + b);
            string patternIntermediateSchema = schemaPattern.AbsoluteKey.TrimEnd(("." + LastKey).ToCharArray());

            //schemaPattern.AbsoluteKey.Split('.').WithoutLast().Aggregate(
            //(a, b) => a + "." + b);

            if (ownIntermediateSchema.Length > patternIntermediateSchema.Length)
            {
                return(false);
            }

            if (patternIntermediateSchema.Substring(0, ownIntermediateSchema.Length) != ownIntermediateSchema)
            {
                return(false);
            }

            return(true);
        }
Esempio n. 2
0
        private bool ParentResolvable(IAbsoluteKeyAssignable schemaParent)
        {
            if (SchemaSource == SchemaSource.Global || SchemaSource == SchemaSource.Literal)
            {
                return(true);
            }

            if ((schemaParent.SchemaSource != SchemaSource) &&
                (schemaParent.SchemaSource != SchemaSource.Global ||
                 schemaParent.SchemaSource != SchemaSource.Literal))
            {
                return(false);
            }

            if (IntermediateKeys.Count == 0)
            {
                return(true);
            }

            string ownIntermediateSchema = IntermediateKeys.Aggregate((a, b) => a + "." + b);

            string patternIntermediateSchema = schemaParent.AbsoluteKey.Contains('.')?
                                               schemaParent.AbsoluteKey.Substring(0, schemaParent.AbsoluteKey.LastIndexOf('.'))
                :"";

            if (ownIntermediateSchema.Length < patternIntermediateSchema.Length)
            {
                return(false);
            }

            if (ownIntermediateSchema.Substring(0, patternIntermediateSchema.Length) != patternIntermediateSchema)
            {
                return(false);
            }

            return(true);
        }