예제 #1
0
        public IStatement Execute()
        {
            IParser parser = null;

            if (_tokenizer.TokenEquals(Constants.Table))
            {
                parser = new CreateTableStatementParser(_tokenizer);
            }

            if (_tokenizer.TokenEquals(Constants.View))
            {
                parser = new CreateViewStatementParser(_tokenizer);
            }

            //if ( _tokenizer.TokenEquals( Constants.Procedure ) )
            //    parser = new CreateProcedureStatementParser( _tokenizer );

            //if ( _tokenizer.TokenEquals( Constants.Trigger ) )
            //    parser = new CreateTriggerStatementParser( _tokenizer );

            if (_tokenizer.IsNextToken(
                    Constants.Unique,
                    Constants.Clustered,
                    Constants.NonClustered,
                    Constants.Index
                    )
                )
            {
                parser = new CreateIndexParser(_tokenizer);
            }

            return(parser != null?parser.Execute() : null);
        }
예제 #2
0
        private string ProcessParameter(ITokenizer tokenizer, string parameterName)
        {
            // the following code produces a parameter that supports Guids. For unknown reasons, NH
            // is supplying the parameter value as an unquoted set of alpha numerics, so, here they are processed
            // until the next token is NOT a dash
            int    tokenCount = 0;
            string token      = "";

            //string regexDateFormat = GetDateFormatRegex();
            tokenizer.SkipWhiteSpace = false;
            do
            {
                if (tokenizer.Current.Type != TokenType.BlockedText)
                {
                    token +=
                        // TODO: the code below will not work until the parser can retain embedded comments
                        //String.Format("/* {0} */ ", parameterName) +
                        tokenizer.Current.Value;

                    if (tokenizer.Current.Type != TokenType.WhiteSpace)
                    {
                        tokenCount++;
                    }
                }
                tokenizer.ReadNextToken();
            }while (tokenizer.HasMoreTokens && !tokenizer.IsNextToken(Constants.Comma));

            tokenizer.SkipWhiteSpace = true;

            return(tokenCount > 1 && !token.StartsWith("'") ? String.Format("'{0}'", token.Trim().ToUpper()) : token);
        }
예제 #3
0
        private string ProcessParameter(ITokenizer tokenizer, string parameterName)
        {
            // the following code produces a parameter that supports Guids. For unknown reasons, NH
            // is supplying the parameter value as an unquoted set of alpha numerics, so, here they are processed
            // until the next token is NOT a dash
            int tokenCount = 0;
            string token = "";
            //string regexDateFormat = GetDateFormatRegex();
            tokenizer.SkipWhiteSpace = false;
            do
            {
                if (tokenizer.Current.Type != TokenType.BlockedText)
                {
                    token +=
                        // TODO: the code below will not work until the parser can retain embedded comments
                        //String.Format("/* {0} */ ", parameterName) +
                        tokenizer.Current.Value;

                    if (tokenizer.Current.Type != TokenType.WhiteSpace)
                        tokenCount++;
                }
                tokenizer.ReadNextToken();
            }
            while (tokenizer.HasMoreTokens && !tokenizer.IsNextToken(Constants.Comma));

            tokenizer.SkipWhiteSpace = true;

            return tokenCount > 1 && !token.StartsWith("'") ? String.Format("'{0}'", token.Trim().ToUpper()) : token;
        }