Code Completion - do not consider 'AS' Keyword release701
authorSubhashini Sooriarachchi <subslk@netbeans.org>
Fri, 01 Jun 2012 16:26:22 +0530
branchrelease701
changeset 2333f5ef65e34ca
parent 232 da12dc5e8eec
child 234 f142036f417f
Code Completion - do not consider 'AS' Keyword
PLSQL/Completion/src/org/netbeans/modules/plsql/completion/PlsqlContext.java
     1.1 --- a/PLSQL/Completion/src/org/netbeans/modules/plsql/completion/PlsqlContext.java	Fri Jun 01 13:45:40 2012 +0530
     1.2 +++ b/PLSQL/Completion/src/org/netbeans/modules/plsql/completion/PlsqlContext.java	Fri Jun 01 16:26:22 2012 +0530
     1.3 @@ -168,16 +168,21 @@
     1.4     }
     1.5     
     1.6     private int findNextFrom(TokenSequence<PlsqlTokenId> ts) {
     1.7 +      int parenCount = 0; 
     1.8        while (ts.moveNext()) {
     1.9           Token<PlsqlTokenId> token = ts.token();
    1.10           PlsqlTokenId tokenID = token.id();
    1.11           String value = token.toString();
    1.12           if(tokenID == PlsqlTokenId.OPERATOR && ";".equals(value)) {
    1.13              return -1;
    1.14 +         }else if(tokenID == PlsqlTokenId.LPAREN) {
    1.15 +            parenCount++;
    1.16 +         } else if(tokenID == PlsqlTokenId.RPAREN) {
    1.17 +            parenCount--;
    1.18           } else if (tokenID == PlsqlTokenId.KEYWORD) {
    1.19              if("NULL".equalsIgnoreCase(value)) {
    1.20                 //ignore NULL since this is a valid SQL keyword
    1.21 -            } else if("FROM".equalsIgnoreCase(value)) {
    1.22 +            } else if(parenCount==0 && "FROM".equalsIgnoreCase(value)) {
    1.23                 return ts.offset()+5;
    1.24              } 
    1.25           }
    1.26 @@ -191,6 +196,7 @@
    1.27     private int findTableAndViewListStartPosition(TokenSequence<PlsqlTokenId> ts) {
    1.28        boolean whereFound = false;
    1.29        boolean setFound = false;
    1.30 +      boolean asFound = false;
    1.31        int rParenCount=0;
    1.32        int lParenCount=0;
    1.33        PlsqlTokenId previousKeyWordTokenId = null;
    1.34 @@ -230,9 +236,12 @@
    1.35                   else 
    1.36                      return -1; //found update before where or set...
    1.37                 } else if(lParenCount==1 && "INTO".equalsIgnoreCase(value)) { //find "INSERT INTO xxx (" type of statements
    1.38 -                  if(previousKeyWordTokenId==null) //no other keywords between INTO and the parenthesis 
    1.39 +                  if(previousKeyWordTokenId==null || asFound) //no other keywords between INTO and the parenthesis 
    1.40                       return ts.offset()+5;
    1.41 +               } else if("AS".equalsIgnoreCase(value)){
    1.42 +                 asFound = true;
    1.43                 }
    1.44 +               
    1.45              }
    1.46              previousKeyWordTokenId = tokenId;
    1.47           }
    1.48 @@ -270,7 +279,10 @@
    1.49           } else if (parenCount==0 && tokenID == PlsqlTokenId.KEYWORD) {
    1.50              if(keyWord.equalsIgnoreCase(value)) {
    1.51                 return ts.offset();
    1.52 -            } 
    1.53 +            }
    1.54 +            else if(value.equalsIgnoreCase("SELECT") || value.equalsIgnoreCase("UPDATE") || value.equalsIgnoreCase("INSERT") || value.equalsIgnoreCase("DELETE")){
    1.55 +                return -1;
    1.56 +            }
    1.57           }
    1.58        }
    1.59        return -1;
    1.60 @@ -283,7 +295,8 @@
    1.61        String alias = null;
    1.62        final String SELECT_STATEMENT="select...";
    1.63          if(isUpdateStmt(ts.offset())){
    1.64 -            ts.moveIndex(1);            
    1.65 +            ts.move(findStmtStart(ts, "UPDATE")); 
    1.66 +            ts.moveIndex(ts.index()+1);
    1.67          }
    1.68        while (ts.moveNext()) {
    1.69           Token<PlsqlTokenId> token = ts.token();
    1.70 @@ -322,6 +335,7 @@
    1.71                    selectViewsWithoutAlias.add(viewName);
    1.72                 viewName = alias = null;
    1.73              } else if(tokenID==PlsqlTokenId.KEYWORD || "SET".equals(value)) {
    1.74 +                if(!("AS".equalsIgnoreCase(value)))  
    1.75                     break;
    1.76              }
    1.77           }