[teiid-commits] teiid SVN: r544 - in trunk/engine/src: main/java/com/metamatrix/query/validator and 1 other directories.

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Mon Mar 9 20:48:34 EDT 2009


Author: shawkins
Date: 2009-03-09 20:48:34 -0400 (Mon, 09 Mar 2009)
New Revision: 544

Modified:
   trunk/engine/src/main/java/com/metamatrix/query/sql/visitor/CommandCollectorVisitor.java
   trunk/engine/src/main/java/com/metamatrix/query/validator/Validator.java
   trunk/engine/src/test/java/com/metamatrix/query/validator/TestValidator.java
Log:
TEIID-410 simplifying command collector visitor.

Modified: trunk/engine/src/main/java/com/metamatrix/query/sql/visitor/CommandCollectorVisitor.java
===================================================================
--- trunk/engine/src/main/java/com/metamatrix/query/sql/visitor/CommandCollectorVisitor.java	2009-03-09 18:30:54 UTC (rev 543)
+++ trunk/engine/src/main/java/com/metamatrix/query/sql/visitor/CommandCollectorVisitor.java	2009-03-10 00:48:34 UTC (rev 544)
@@ -23,11 +23,14 @@
 package com.metamatrix.query.sql.visitor;
 
 import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 
 import com.metamatrix.query.sql.LanguageObject;
 import com.metamatrix.query.sql.LanguageVisitor;
 import com.metamatrix.query.sql.lang.BatchedUpdateCommand;
+import com.metamatrix.query.sql.lang.Command;
 import com.metamatrix.query.sql.lang.ExistsCriteria;
 import com.metamatrix.query.sql.lang.ProcedureContainer;
 import com.metamatrix.query.sql.lang.QueryCommand;
@@ -53,18 +56,20 @@
  */
 public class CommandCollectorVisitor extends LanguageVisitor {
 
-    private List commands;
-    private boolean embeddedOnly;
-    private boolean nonEmbeddedOnly;
+	private enum Mode {
+		EMBEDDED,
+		NON_EMBEDDED
+	}
+	
+    private List<Command> commands = new ArrayList<Command>();
+    private Set<Mode> modes;
 
     /**
      * Construct a new visitor with the default collection type, which is a 
      * {@link java.util.HashSet}.  
      */
-    public CommandCollectorVisitor(boolean embeddedOnly, boolean nonEmbeddedOnly) { 
-        this.commands = new ArrayList();
-        this.embeddedOnly = embeddedOnly;
-        this.nonEmbeddedOnly = nonEmbeddedOnly;
+    public CommandCollectorVisitor(Set<Mode> modes) { 
+        this.modes = modes;
     }   
 
     /**
@@ -72,7 +77,7 @@
      * after the visitor has been run on the language object tree.
      * @return List of {@link com.metamatrix.query.sql.lang.Command}
      */
-    public List getCommands() { 
+    public List<Command> getCommands() { 
         return this.commands;
     }
 
@@ -80,7 +85,7 @@
      * @see com.metamatrix.query.sql.LanguageVisitor#visit(com.metamatrix.query.sql.lang.ExistsCriteria)
      */
     public void visit(ExistsCriteria obj) {
-        if (!nonEmbeddedOnly) {
+        if (modes.contains(Mode.EMBEDDED)) {
             this.commands.add(obj.getCommand());
         }
     }
@@ -89,16 +94,16 @@
      * @see com.metamatrix.query.sql.LanguageVisitor#visit(com.metamatrix.query.sql.lang.ScalarSubquery)
      */
     public void visit(ScalarSubquery obj) {
-        if (!nonEmbeddedOnly) {
+    	if (modes.contains(Mode.EMBEDDED)) {
             this.commands.add(obj.getCommand());
-        }
+    	}
     }
 
     /**
      * @see com.metamatrix.query.sql.LanguageVisitor#visit(com.metamatrix.query.sql.lang.SubqueryCompareCriteria)
      */
     public void visit(SubqueryCompareCriteria obj) {
-        if (!nonEmbeddedOnly) {
+    	if (modes.contains(Mode.EMBEDDED)) {
             this.commands.add(obj.getCommand());
         }
     }
@@ -109,7 +114,7 @@
      * @param obj Language object
      */
     public void visit(SubqueryFromClause obj) {
-        if (!nonEmbeddedOnly) {
+    	if (modes.contains(Mode.EMBEDDED)) {
             this.commands.add(obj.getCommand());
         }
     }
@@ -120,7 +125,7 @@
      * @param obj Language object
      */
     public void visit(SubquerySetCriteria obj) {
-        if (!nonEmbeddedOnly) {
+    	if (modes.contains(Mode.EMBEDDED)) {
             this.commands.add(obj.getCommand());
         }
     }
@@ -131,7 +136,7 @@
      * @param obj Language object
      */
     public void visit(CommandStatement obj) {
-        if (!nonEmbeddedOnly) {
+    	if (modes.contains(Mode.EMBEDDED)) {
             this.commands.add(obj.getCommand());
         }
     }    
@@ -142,7 +147,7 @@
      * @param obj Language object
      */
     public void visit(AssignmentStatement obj) {
-    	if(!nonEmbeddedOnly && obj.hasCommand()) {
+    	if(modes.contains(Mode.EMBEDDED) && obj.hasCommand()) {
 	        this.commands.add(obj.getCommand());
     	}
     }
@@ -153,39 +158,25 @@
      * @param obj Language object
      */
     public void visit(LoopStatement obj) {
-        if (!nonEmbeddedOnly) {
+        if (modes.contains(Mode.EMBEDDED)) {
             this.commands.add(obj.getCommand());
         }
     }
     
     public void visit(UnaryFromClause obj) {
-        if (!embeddedOnly && obj.getExpandedCommand() != null) {
+        if (modes.contains(Mode.NON_EMBEDDED) && obj.getExpandedCommand() != null) {
             this.commands.add(obj.getExpandedCommand());
         }
     }
     
-    public void visit(SetQuery obj) {  
-        for (QueryCommand command : obj.getQueryCommands()) {
-            if (command instanceof SetQuery) {
-                visit((SetQuery)command);
-            } else {
-            	if(embeddedOnly){
-            		this.commands.add(command);
-            	}else if(!nonEmbeddedOnly){
-            		this.commands.addAll(CommandCollectorVisitor.getCommands(command, false, false));
-            	}
-            }
-        } 
-    }
-    
     public void visit(BatchedUpdateCommand obj) {
-        if (!embeddedOnly) {
+        if (modes.contains(Mode.NON_EMBEDDED)) {
             this.commands.addAll(obj.getUpdateCommands());
         }
     }
     
     public void visit(ProcedureContainer obj) {
-        if (!embeddedOnly && obj.getSubCommand() != null) {
+        if (modes.contains(Mode.NON_EMBEDDED) && obj.getSubCommand() != null) {
             this.commands.add(obj.getSubCommand());
         }
     }
@@ -195,16 +186,23 @@
      * @param obj Language object
      * @param elements Collection to collect commands in
      */
-    public static final List getCommands(LanguageObject obj) {
-        return getCommands(obj, false, false);
+    public static final List<Command> getCommands(LanguageObject obj) {
+        return getCommands(obj, true, true);
     }
 
-    public static final List getCommands(LanguageObject obj, boolean embeddedOnly) {
-        return getCommands(obj, embeddedOnly, false);
+    public static final List<Command> getCommands(LanguageObject obj, boolean embeddedOnly) {
+        return getCommands(obj, true, !embeddedOnly);
     }
     
-    private static final List getCommands(LanguageObject obj, boolean embeddedOnly, boolean nonEmbeddedOnly) {
-        CommandCollectorVisitor visitor = new CommandCollectorVisitor(embeddedOnly, nonEmbeddedOnly);
+    private static final List<Command> getCommands(LanguageObject obj, boolean embedded, boolean nonEmbedded) {
+    	HashSet<Mode> modes = new HashSet<Mode>();
+    	if (embedded) {
+    		modes.add(Mode.EMBEDDED);
+    	}
+    	if (nonEmbedded) {
+    		modes.add(Mode.NON_EMBEDDED);
+    	}
+        CommandCollectorVisitor visitor = new CommandCollectorVisitor(modes);
         
         //we need a special navigator here to prevent subcommands in statements from being picked up
         //by the wrong parent
@@ -232,19 +230,12 @@
             	}
             }
             
-            public void visit(SetQuery obj) {
-            	preVisitVisitor(obj);
-                visitNode(obj.getOrderBy());
-                visitNode(obj.getLimit());
-                visitNode(obj.getOption());
-            }
-            
         };
         obj.acceptVisitor(navigator);
         return visitor.getCommands();
     }
     
-    public static final List getNonEmbeddedCommands(LanguageObject obj) {
+    public static final List<Command> getNonEmbeddedCommands(LanguageObject obj) {
         return getCommands(obj, false, true);
     }
 

Modified: trunk/engine/src/main/java/com/metamatrix/query/validator/Validator.java
===================================================================
--- trunk/engine/src/main/java/com/metamatrix/query/validator/Validator.java	2009-03-09 18:30:54 UTC (rev 543)
+++ trunk/engine/src/main/java/com/metamatrix/query/validator/Validator.java	2009-03-10 00:48:34 UTC (rev 544)
@@ -37,12 +37,6 @@
 public class Validator {
 
     public static final ValidatorReport validate(LanguageObject object, QueryMetadataInterface metadata) throws MetaMatrixComponentException {
-        return validate(object, metadata, true);
-    }
-    
-    public static final ValidatorReport validate(LanguageObject object, QueryMetadataInterface metadata, boolean validateCriteria)
-        throws MetaMatrixComponentException {
-
         ValidatorReport report1 = Validator.validate(object, metadata, new ValidationVisitor(), false);
         return report1;
     }

Modified: trunk/engine/src/test/java/com/metamatrix/query/validator/TestValidator.java
===================================================================
--- trunk/engine/src/test/java/com/metamatrix/query/validator/TestValidator.java	2009-03-09 18:30:54 UTC (rev 543)
+++ trunk/engine/src/test/java/com/metamatrix/query/validator/TestValidator.java	2009-03-10 00:48:34 UTC (rev 544)
@@ -1699,7 +1699,7 @@
         QueryResolver.resolveCommand(command, externalMetadata, false, metadata, AnalysisRecord.createNonRecordingRecord());
         
         // Validate
-        return Validator.validate(command, metadata, false);         
+        return Validator.validate(command, metadata);         
     }
 
     public void testValidateDynamicCommandWithNonTempGroup_InModeler() throws Exception{




More information about the teiid-commits mailing list