Changeset 108:db1fdb678d67

Show
Ignore:
Timestamp:
05/13/09 14:42:12 (15 months ago)
Author:
ryan@…
Branch:
default
Tags:
tip
Message:

Upgrade to Google Collections 1.0-rc1

Files:
42 modified

Legend:

Unmodified
Added
Removed
  • pom.xml

    r104 r108  
    4848 
    4949        <dependency> 
    50             <groupId>com.google.common</groupId> 
    51             <artifactId>google-collect</artifactId> 
    52             <version>0.7-20080602</version> 
     50            <groupId>com.google.collections</groupId> 
     51            <artifactId>google-collections</artifactId> 
     52            <version>1.0-rc1</version> 
    5353            <scope>compile</scope> 
    5454        </dependency> 
     
    6464            <groupId>org.springframework</groupId> 
    6565            <artifactId>spring</artifactId> 
    66             <version>2.5.5</version> 
     66            <version>2.5.6</version> 
    6767            <scope>test</scope> 
    6868        </dependency> 
     
    7171            <groupId>org.springframework</groupId> 
    7272            <artifactId>spring-test</artifactId> 
    73             <version>2.5.5</version> 
     73            <version>2.5.6</version> 
    7474            <scope>test</scope> 
    7575        </dependency> 
  • src/main/java/com/thimbleware/jrel/Delete.java

    r67 r108  
    1616package com.thimbleware.jrel; 
    1717 
     18import com.google.common.collect.ImmutableList; 
     19import static com.google.common.collect.Iterables.concat; 
    1820import com.thimbleware.jrel.expr.operators.Condition; 
    1921import com.thimbleware.jrel.schema.Table; 
    20 import com.google.common.collect.Iterables; 
    21 import com.google.common.collect.Lists; 
    22 import com.google.common.collect.ImmutableList; 
    23 import static com.google.common.collect.Lists.*; 
    24 import static com.google.common.collect.Iterables.*; 
    2522 
    2623import java.util.ArrayList; 
  • src/main/java/com/thimbleware/jrel/FindRelationExpressionVisitor.java

    r86 r108  
    1717 
    1818import com.thimbleware.jrel.expr.*; 
     19import com.thimbleware.jrel.expr.attributes.ExpressionAttribute; 
     20import com.thimbleware.jrel.expr.attributes.RelationAttribute; 
    1921import com.thimbleware.jrel.expr.attributes.WildcardAttribute; 
    20 import com.thimbleware.jrel.expr.attributes.RelationAttribute; 
    21 import com.thimbleware.jrel.expr.attributes.ExpressionAttribute; 
    22 import com.thimbleware.jrel.expr.operators.UnaryOperator; 
    2322import com.thimbleware.jrel.expr.operators.BinaryOperator; 
    2423import com.thimbleware.jrel.expr.operators.Condition; 
     24import com.thimbleware.jrel.expr.operators.UnaryOperator; 
    2525import com.thimbleware.jrel.schema.NamedRelation; 
    2626import com.thimbleware.jrel.util.Pair; 
  • src/main/java/com/thimbleware/jrel/Insert.java

    r88 r108  
    1717 
    1818import com.thimbleware.jrel.schema.RelVar; 
    19 import com.thimbleware.jrel.schema.TableDomain; 
    2019import com.thimbleware.jrel.schema.Table; 
     20import com.thimbleware.jrel.schema.TupleDomain; 
    2121import com.thimbleware.jrel.schema.TupleVar; 
    22 import com.thimbleware.jrel.schema.Domain; 
    23 import com.thimbleware.jrel.schema.RelationDomain; 
    24 import com.thimbleware.jrel.schema.TupleDomain; 
    2522 
    2623/** 
  • src/main/java/com/thimbleware/jrel/JoinClause.java

    r90 r108  
    1818import com.google.common.base.Function; 
    1919import com.google.common.collect.Iterables; 
    20 import com.thimbleware.jrel.expr.operators.Condition; 
    2120import com.thimbleware.jrel.expr.attributes.Attribute; 
    2221import com.thimbleware.jrel.expr.attributes.NamedAttribute; 
     22import com.thimbleware.jrel.expr.operators.Condition; 
     23import com.thimbleware.jrel.schema.Domain; 
    2324import com.thimbleware.jrel.schema.NamedRelation; 
    2425import com.thimbleware.jrel.schema.Relation; 
    25 import com.thimbleware.jrel.schema.Domain; 
    2626import com.thimbleware.jrel.schema.RelationDomain; 
    2727 
  • src/main/java/com/thimbleware/jrel/Query.java

    r92 r108  
    1717 
    1818import com.google.common.base.Function; 
    19 import com.google.common.base.Nullable; 
    2019import com.google.common.base.Predicate; 
    2120import com.google.common.collect.ImmutableList; 
    22 import static com.google.common.collect.Lists.*; 
    2321import static com.google.common.collect.Iterables.*; 
     22import static com.google.common.collect.Lists.asList; 
     23import static com.google.common.collect.Lists.newArrayList; 
    2424import com.thimbleware.jrel.exceptions.*; 
     25import com.thimbleware.jrel.expr.CompoundExpression; 
     26import com.thimbleware.jrel.expr.Expression; 
     27import com.thimbleware.jrel.expr.attributes.*; 
    2528import com.thimbleware.jrel.expr.operators.Condition; 
    26 import com.thimbleware.jrel.expr.*; 
    27 import com.thimbleware.jrel.expr.attributes.WildcardAttribute; 
    28 import com.thimbleware.jrel.expr.attributes.RelationAttribute; 
    29 import com.thimbleware.jrel.expr.attributes.ExpressionAttribute; 
    30 import com.thimbleware.jrel.expr.attributes.Attribute; 
    31 import com.thimbleware.jrel.expr.attributes.NamedAttribute; 
    32 import com.thimbleware.jrel.expr.attributes.AliasedAttribute; 
    3329import com.thimbleware.jrel.schema.*; 
     30import static com.thimbleware.jrel.util.Functional.exists; 
    3431import com.thimbleware.jrel.util.Matcher; 
    35 import static com.thimbleware.jrel.util.Functional.*; 
    36  
    37 import java.util.*; 
     32 
     33import java.util.ArrayList; 
     34import java.util.Collection; 
     35import java.util.List; 
     36import java.util.NoSuchElementException; 
    3837 
    3938/** 
     
    202201        try { 
    203202            find(attrs, new Predicate<RelationAttribute>() { 
    204                 public boolean apply(@Nullable RelationAttribute attribute) { 
     203                public boolean apply(RelationAttribute attribute) { 
    205204                    return allRelations.contains(attribute.getRelation()); 
    206205                } 
     
    513512    Iterable<Relation> allRelations() { 
    514513        return concat(getRelations(), concat(transform(getJoins(), new Function<JoinClause, Iterable<NamedRelation>>() { 
    515             public Iterable<NamedRelation> apply(@Nullable JoinClause joinClause) { 
     514            public Iterable<NamedRelation> apply(JoinClause joinClause) { 
    516515                return ImmutableList.of(joinClause.leftRelation, joinClause.rightRelation); 
    517516            } 
     
    579578        public boolean hasAttribute(final Attribute attr) { 
    580579            return exists(projectedDomain, new Predicate<Attribute>() { 
    581                 public boolean apply(@Nullable Attribute attribute) { 
     580                public boolean apply(Attribute attribute) { 
    582581                    return attr.equals(attribute) || attribute.equals(attr); 
    583582                } 
    584583            }) || exists(relations, new Predicate<Relation>() { 
    585                 public boolean apply(@Nullable Relation relation) { 
     584                public boolean apply(Relation relation) { 
    586585                    return relation.getDomain().hasAttribute(attr); 
    587586                } 
    588587            }) || exists(joins, new Predicate<JoinClause>() { 
    589                 public boolean apply(@Nullable JoinClause joinClause) { 
     588                public boolean apply(JoinClause joinClause) { 
    590589                    return joinClause.getDomain().hasAttribute(attr); 
    591590                } 
     
    595594        public boolean hasAttribute(final String attributeName) { 
    596595            return exists(projectedDomain, new Predicate<Attribute>() { 
    597                 public boolean apply(@Nullable Attribute attribute) { 
     596                public boolean apply(Attribute attribute) { 
    598597                   return (attribute instanceof NamedAttribute &&  
    599598                           (attributeName.equals(((NamedAttribute)attribute).getName()))); 
    600599                } 
    601600            }) || exists(relations, new Predicate<Relation>() { 
    602                 public boolean apply(@Nullable Relation relation) { 
     601                public boolean apply(Relation relation) { 
    603602                   return (relation.getDomain().hasAttribute(attributeName)); 
    604603                } 
    605604            }) || exists(joins, new Predicate<JoinClause>() { 
    606                 public boolean apply(@Nullable JoinClause joinClause) { 
     605                public boolean apply(JoinClause joinClause) { 
    607606                    return (joinClause.getDomain().hasAttribute(attributeName)); 
    608607                } 
  • src/main/java/com/thimbleware/jrel/QueryVisitor.java

    r84 r108  
    1616 package com.thimbleware.jrel; 
    1717 
    18 import com.thimbleware.jrel.expr.*; 
    19 import com.thimbleware.jrel.expr.attributes.TableAttribute; 
    20 import com.thimbleware.jrel.expr.attributes.WildcardAttribute; 
    21 import com.thimbleware.jrel.expr.attributes.RelationAttribute; 
    22 import com.thimbleware.jrel.expr.attributes.ExpressionAttribute; 
    23 import com.thimbleware.jrel.expr.attributes.AliasedAttribute; 
     18import com.thimbleware.jrel.expr.CompoundExpression; 
     19import com.thimbleware.jrel.expr.ConditionalExpression; 
     20import com.thimbleware.jrel.expr.FunctionApplication; 
     21import com.thimbleware.jrel.expr.SubQuery; 
     22import com.thimbleware.jrel.expr.attributes.*; 
     23import com.thimbleware.jrel.expr.literals.*; 
    2424import com.thimbleware.jrel.expr.operators.BinaryOperator; 
     25import com.thimbleware.jrel.expr.operators.CastOperator; 
    2526import com.thimbleware.jrel.expr.operators.Condition; 
    2627import com.thimbleware.jrel.expr.operators.UnaryOperator; 
    27 import com.thimbleware.jrel.expr.operators.CastOperator; 
    28 import com.thimbleware.jrel.expr.literals.*; 
     28import com.thimbleware.jrel.schema.RelVar; 
     29import com.thimbleware.jrel.schema.Subselect; 
    2930import com.thimbleware.jrel.schema.Table; 
    30 import com.thimbleware.jrel.schema.Subselect; 
    31 import com.thimbleware.jrel.schema.RelVar; 
    3231 
    3332/** 
  • src/main/java/com/thimbleware/jrel/Update.java

    r84 r108  
    1616 package com.thimbleware.jrel; 
    1717 
     18import com.google.common.collect.ImmutableList; 
     19import static com.google.common.collect.Iterables.concat; 
    1820import com.thimbleware.jrel.expr.Assignment; 
    1921import com.thimbleware.jrel.expr.Expression; 
     
    2224import com.thimbleware.jrel.expr.operators.Op; 
    2325import com.thimbleware.jrel.schema.Table; 
    24 import com.google.common.collect.ImmutableList; 
    25 import static com.google.common.collect.Iterables.*; 
    2626 
    2727import java.util.ArrayList; 
  • src/main/java/com/thimbleware/jrel/expr/AbstractExpression.java

    r90 r108  
    1616 package com.thimbleware.jrel.expr; 
    1717 
     18import com.thimbleware.jrel.expr.attributes.AliasedAttribute; 
     19import com.thimbleware.jrel.expr.attributes.ExpressionAttribute; 
    1820import com.thimbleware.jrel.expr.operators.BinaryOperator; 
     21import com.thimbleware.jrel.expr.operators.Condition; 
    1922import com.thimbleware.jrel.expr.operators.Op; 
    20 import com.thimbleware.jrel.expr.operators.Condition; 
    21 import com.thimbleware.jrel.expr.attributes.ExpressionAttribute; 
    22 import com.thimbleware.jrel.expr.attributes.Attribute; 
    23 import com.thimbleware.jrel.expr.attributes.AliasedAttribute; 
    2423 
    2524/** 
  • src/main/java/com/thimbleware/jrel/expr/Assignment.java

    r88 r108  
    1616 package com.thimbleware.jrel.expr; 
    1717 
    18 import com.thimbleware.jrel.expr.attributes.Attribute; 
    19 import com.thimbleware.jrel.expr.attributes.TableAttribute; 
    2018import com.thimbleware.jrel.expr.attributes.RelationAttribute; 
    2119 
  • src/main/java/com/thimbleware/jrel/expr/ConditionalExpression.java

    r88 r108  
    1616package com.thimbleware.jrel.expr; 
    1717 
     18import com.thimbleware.jrel.QueryVisitor; 
    1819import com.thimbleware.jrel.expr.operators.Condition; 
    1920import com.thimbleware.jrel.expr.operators.Op; 
    20 import com.thimbleware.jrel.QueryVisitor; 
    2121import com.thimbleware.jrel.util.Pair; 
    2222 
     23import java.util.ArrayList; 
    2324import java.util.List; 
    24 import java.util.ArrayList; 
    2525 
    2626/** 
  • src/main/java/com/thimbleware/jrel/expr/ExpressionVisitor.java

    r90 r108  
    1616 package com.thimbleware.jrel.expr; 
    1717 
     18import com.thimbleware.jrel.expr.attributes.ExpressionAttribute; 
     19import com.thimbleware.jrel.expr.attributes.RelationAttribute; 
     20import com.thimbleware.jrel.expr.attributes.WildcardAttribute; 
    1821import com.thimbleware.jrel.expr.operators.BinaryOperator; 
    1922import com.thimbleware.jrel.expr.operators.UnaryOperator; 
    20 import com.thimbleware.jrel.expr.attributes.WildcardAttribute; 
    21 import com.thimbleware.jrel.expr.attributes.RelationAttribute; 
    22 import com.thimbleware.jrel.expr.attributes.ExpressionAttribute; 
    2323 
    2424/** 
  • src/main/java/com/thimbleware/jrel/expr/FunctionApplication.java

    r90 r108  
    1717 
    1818import com.google.common.base.Function; 
    19 import com.google.common.base.Nullable; 
    2019import com.google.common.collect.ImmutableList; 
    2120import static com.google.common.collect.Iterables.transform; 
     
    5453    public FunctionApplication renameNamedRelationIf(final String oldAlias, final String newAlias) { 
    5554        return new FunctionApplication(functionName, transform(arguments, new Function<Expression, Expression>() { 
    56             public Expression apply(@Nullable Expression expression) { 
     55            public Expression apply(Expression expression) { 
    5756                return expression.renameNamedRelationIf(oldAlias, newAlias); 
    5857            } 
  • src/main/java/com/thimbleware/jrel/expr/Literal.java

    r90 r108  
    1515 */ 
    1616 package com.thimbleware.jrel.expr; 
    17  
    18 import com.thimbleware.jrel.exceptions.UnsupportedTypeException; 
    19 import com.thimbleware.jrel.expr.literals.*; 
    2017 
    2118/** 
  • src/main/java/com/thimbleware/jrel/expr/SubQuery.java

    r90 r108  
    1616 package com.thimbleware.jrel.expr; 
    1717 
     18import com.thimbleware.jrel.Query; 
    1819import com.thimbleware.jrel.QueryVisitor; 
    19 import com.thimbleware.jrel.Query; 
    2020import com.thimbleware.jrel.exceptions.IncorrectCardinalityOfProjectionException; 
    2121 
  • src/main/java/com/thimbleware/jrel/expr/attributes/TableAttribute.java

    r95 r108  
    1616package com.thimbleware.jrel.expr.attributes; 
    1717 
    18 import com.thimbleware.jrel.schema.NamedRelation; 
    1918import com.thimbleware.jrel.QueryVisitor; 
    2019import com.thimbleware.jrel.expr.ExpressionVisitor; 
     20import com.thimbleware.jrel.schema.NamedRelation; 
    2121 
    2222/** 
  • src/main/java/com/thimbleware/jrel/expr/attributes/WildcardAttribute.java

    r90 r108  
    1616package com.thimbleware.jrel.expr.attributes; 
    1717 
    18 import com.thimbleware.jrel.schema.NamedRelation; 
    1918import com.thimbleware.jrel.QueryVisitor; 
    2019import com.thimbleware.jrel.expr.ExpressionVisitor; 
     20import com.thimbleware.jrel.schema.NamedRelation; 
    2121 
    2222/** 
  • src/main/java/com/thimbleware/jrel/expr/literals/DateLiteral.java

    r90 r108  
    1616 package com.thimbleware.jrel.expr.literals; 
    1717 
     18import com.thimbleware.jrel.QueryVisitor; 
    1819import com.thimbleware.jrel.expr.Literal; 
    19 import com.thimbleware.jrel.QueryVisitor; 
    2020 
    2121import java.util.Date; 
  • src/main/java/com/thimbleware/jrel/expr/literals/TupleLiteral.java

    r90 r108  
    1616 package com.thimbleware.jrel.expr.literals; 
    1717 
     18import com.google.common.collect.ImmutableList; 
     19import com.google.common.collect.Iterables; 
     20import com.thimbleware.jrel.QueryVisitor; 
    1821import com.thimbleware.jrel.expr.Literal; 
    19 import com.thimbleware.jrel.expr.Expression; 
    20 import com.thimbleware.jrel.expr.operators.Op; 
    21 import com.thimbleware.jrel.QueryVisitor; 
    22 import com.google.common.collect.Iterables; 
    23 import com.google.common.collect.Lists; 
    24 import com.google.common.collect.ImmutableList; 
    25 import static com.google.common.collect.Lists.*; 
    26 import com.google.common.base.Function; 
    27 import com.google.common.base.Nullable; 
    2822 
    2923import java.util.Collection; 
  • src/main/java/com/thimbleware/jrel/expr/operators/BinaryOperator.java

    r90 r108  
    1717 
    1818import com.thimbleware.jrel.QueryVisitor; 
     19import com.thimbleware.jrel.expr.AbstractExpression; 
    1920import com.thimbleware.jrel.expr.Expression; 
    2021import com.thimbleware.jrel.expr.ExpressionVisitor; 
    21 import com.thimbleware.jrel.expr.AbstractExpression; 
    2222 
    2323/** 
  • src/main/java/com/thimbleware/jrel/expr/operators/CastOperator.java

    r98 r108  
    1616package com.thimbleware.jrel.expr.operators; 
    1717 
     18import com.thimbleware.jrel.QueryVisitor; 
    1819import com.thimbleware.jrel.expr.Expression; 
    19 import com.thimbleware.jrel.QueryVisitor; 
    2020 
    2121/** 
  • src/main/java/com/thimbleware/jrel/expr/operators/Condition.java

    r90 r108  
    1919import com.thimbleware.jrel.expr.Expression; 
    2020import com.thimbleware.jrel.expr.ExpressionVisitor; 
    21 import com.thimbleware.jrel.expr.operators.BinaryOperator; 
    2221 
    2322/** 
  • src/main/java/com/thimbleware/jrel/expr/operators/Op.java

    r90 r108  
    1616package com.thimbleware.jrel.expr.operators; 
    1717 
     18import com.google.common.base.Function; 
     19import com.google.common.collect.ImmutableList; 
     20import com.google.common.collect.Iterables; 
    1821import com.thimbleware.jrel.exceptions.UnsupportedTypeException; 
    1922import com.thimbleware.jrel.expr.*; 
     
    2124import com.thimbleware.jrel.expr.literals.*; 
    2225import com.thimbleware.jrel.util.Matcher; 
    23 import com.google.common.collect.Iterables; 
    24 import com.google.common.collect.ImmutableList; 
    25 import com.google.common.base.Function; 
    26 import com.google.common.base.Nullable; 
    2726 
    2827import java.util.Date; 
     
    145144    public static <T> Iterable<Expression> exprArr(T[] value) { 
    146145        return Iterables.transform(ImmutableList.of(value), new Function<T, Expression>() { 
    147             public Expression apply(@Nullable T t) { 
     146            public Expression apply(T t) { 
    148147                return expr(t); 
    149148            } 
  • src/main/java/com/thimbleware/jrel/expr/operators/UnaryOperator.java

    r90 r108  
    1717 
    1818import com.thimbleware.jrel.QueryVisitor; 
     19import com.thimbleware.jrel.expr.AbstractExpression; 
    1920import com.thimbleware.jrel.expr.Expression; 
    2021import com.thimbleware.jrel.expr.ExpressionVisitor; 
    21 import com.thimbleware.jrel.expr.AbstractExpression; 
    2222 
    2323/** 
  • src/main/java/com/thimbleware/jrel/schema/Domain.java

    r90 r108  
    1616package com.thimbleware.jrel.schema; 
    1717 
     18import com.thimbleware.jrel.exceptions.NoSuchAttributeException; 
    1819import com.thimbleware.jrel.expr.attributes.Attribute; 
    1920import com.thimbleware.jrel.expr.attributes.NamedAttribute; 
    20 import com.thimbleware.jrel.exceptions.NoSuchAttributeException; 
    2121 
    2222/** 
  • src/main/java/com/thimbleware/jrel/schema/RelVar.java

    r90 r108  
    1616package com.thimbleware.jrel.schema; 
    1717 
     18import com.google.common.collect.ImmutableList; 
     19import static com.google.common.collect.Iterables.concat; 
    1820import com.thimbleware.jrel.QueryVisitor; 
    19 import com.google.common.collect.ImmutableList; 
    20 import static com.google.common.collect.Iterables.*; 
    2121 
    2222import java.util.ArrayList; 
  • src/main/java/com/thimbleware/jrel/schema/TableDomain.java

    r95 r108  
    1717 
    1818import com.google.common.base.Function; 
    19 import com.google.common.base.Nullable; 
    2019import com.google.common.base.Predicate; 
    2120import com.google.common.collect.ImmutableList; 
     21import com.google.common.collect.Iterables; 
    2222import static com.google.common.collect.Iterables.*; 
     23import static com.google.common.collect.Iterables.toArray; 
    2324import com.thimbleware.jrel.exceptions.NoSuchAttributeException; 
    2425import com.thimbleware.jrel.expr.attributes.Attribute; 
     
    2627import com.thimbleware.jrel.expr.attributes.TableAttribute; 
    2728import static com.thimbleware.jrel.util.Functional.exists; 
     29 
    2830import java.util.NoSuchElementException; 
    2931 
     
    6163                transform(domains, 
    6264                        new Function<TableDomain, Iterable<TableAttribute>>() { 
    63                             public Iterable<TableAttribute> apply(@Nullable TableDomain domain) { 
     65                            public Iterable<TableAttribute> apply(TableDomain domain) { 
    6466                                return domain.getAttributes(); 
    6567                            } 
     
    8284    public TableDomain addAttribute(Class<?> type, String name) { 
    8385        Iterable<TableAttribute> added = ImmutableList.of(new TableAttribute(relation, name, type)); 
    84         return new TableDomain(relation, newArray(concat(attributes, added), TableAttribute.class)); 
     86        return new TableDomain(relation, toArray(concat(attributes, added), TableAttribute.class)); 
    8587    } 
    8688 
     
    9193     */ 
    9294    public TableDomain changeTable(final Table newTable) { 
    93         return new TableDomain(relation, newArray(transform(this.attributes, new Function<TableAttribute, TableAttribute>() { 
    94             public TableAttribute apply(@Nullable TableAttribute relationAttribute) { 
     95        return new TableDomain(relation, toArray(transform(this.attributes, new Function<TableAttribute, TableAttribute>() { 
     96            public TableAttribute apply(TableAttribute relationAttribute) { 
    9597                return new TableAttribute(newTable, relationAttribute.getName(), relationAttribute.getType()); 
    9698            } 
     
    111113        return 
    112114                exists(attributes, new Predicate<TableAttribute>() { 
    113                     public boolean apply(@Nullable TableAttribute relationAttribute) { 
     115                    public boolean apply(TableAttribute relationAttribute) { 
    114116                        return attr.equals(relationAttribute); 
    115117                    } 
     
    125127        try { 
    126128            return find(attributes, new Predicate<RelationAttribute>() { 
    127                 public boolean apply(@Nullable RelationAttribute attr) { 
     129                public boolean apply(RelationAttribute attr) { 
    128130                    return attr.getName().toLowerCase().equals(attributeName.toLowerCase()); 
    129131                } 
     
    141143        try { 
    142144            return find(attributes, new Predicate<Attribute>() { 
    143                 public boolean apply(@Nullable Attribute attr) { 
     145                public boolean apply(Attribute attr) { 
    144146                    return attr.equals(attribute); 
    145147                } 
     
    156158        try { 
    157159            find(attributes, new Predicate<RelationAttribute>() { 
    158                 public boolean apply(@Nullable RelationAttribute attr) { 
     160                public boolean apply(RelationAttribute attr) { 
    159161                    return attributeName.toLowerCase().equals(attr.getName().toLowerCase()); 
    160162                } 
  • src/main/java/com/thimbleware/jrel/schema/TupleDomain.java

    r90 r108  
    1616package com.thimbleware.jrel.schema; 
    1717 
    18 import com.thimbleware.jrel.expr.attributes.RelationAttribute; 
    19 import com.thimbleware.jrel.expr.attributes.Attribute; 
    20 import static com.thimbleware.jrel.util.Functional.exists; 
    21 import com.thimbleware.jrel.exceptions.NoSuchAttributeException; 
     18import com.google.common.base.Function; 
     19import com.google.common.base.Predicate; 
    2220import com.google.common.collect.ImmutableList; 
    2321import static com.google.common.collect.Iterables.*; 
    24 import static com.google.common.collect.Iterables.transform; 
    25 import com.google.common.base.Function; 
    26 import com.google.common.base.Nullable; 
    27 import com.google.common.base.Predicate; 
     22import com.thimbleware.jrel.exceptions.NoSuchAttributeException; 
     23import com.thimbleware.jrel.expr.attributes.Attribute; 
     24import com.thimbleware.jrel.expr.attributes.RelationAttribute; 
     25import static com.thimbleware.jrel.util.Functional.exists; 
     26 
    2827import java.util.NoSuchElementException; 
    2928 
     
    5453                transform(domains, 
    5554                        new Function<TableDomain, Iterable<RelationAttribute>>() { 
    56                             public Iterable<RelationAttribute> apply(@Nullable TableDomain domain) { 
     55                            public Iterable<RelationAttribute> apply(TableDomain domain) { 
    5756                                return ImmutableList.<RelationAttribute>copyOf(domain.getAttributes()); 
    5857                            } 
     
    7473        return 
    7574                exists(attributes, new Predicate<RelationAttribute>() { 
    76                     public boolean apply(@Nullable RelationAttribute relationAttribute) { 
     75                    public boolean apply(RelationAttribute relationAttribute) { 
    7776                        return relationAttribute.equals(attr); 
    7877                    } 
     
    8887        try { 
    8988            return find(attributes, new Predicate<RelationAttribute>() { 
    90                 public boolean apply(@Nullable RelationAttribute attr) { 
     89                public boolean apply(RelationAttribute attr) { 
    9190                    return attr.getName().toLowerCase().equals(attributeName.toLowerCase()); 
    9291                } 
     
    104103        try { 
    105104            return find(attributes, new Predicate<Attribute>() { 
    106                 public boolean apply(@Nullable Attribute attr) { 
     105                public boolean apply(Attribute attr) { 
    107106                    return attr.equals(attribute); 
    108107                } 
     
    120119        try { 
    121120            find(attributes, new Predicate<RelationAttribute>() { 
    122                 public boolean apply(@Nullable RelationAttribute attr) { 
     121                public boolean apply(RelationAttribute attr) { 
    123122                    return attributeName.toLowerCase().equals(attr.getName().toLowerCase()); 
    124123                } 
  • src/main/java/com/thimbleware/jrel/schema/TupleVar.java

    r106 r108  
    1717 
    1818import com.google.common.collect.ImmutableMap; 
     19import com.thimbleware.jrel.exceptions.NoSuchAttributeException; 
     20import com.thimbleware.jrel.expr.Expression; 
    1921import com.thimbleware.jrel.expr.attributes.RelationAttribute; 
    20 import com.thimbleware.jrel.expr.Expression; 
    21 import static com.thimbleware.jrel.expr.operators.Op.*; 
    22 import com.thimbleware.jrel.exceptions.NoSuchAttributeException; 
     22import static com.thimbleware.jrel.expr.operators.Op.expr; 
    2323 
     24import java.util.LinkedHashMap; 
    2425import java.util.Map; 
    25 import java.util.LinkedHashMap; 
    2626 
    2727/** 
  • src/main/java/com/thimbleware/jrel/sql/AbstractANSISQLDialect.java

    r105 r108  
    1717 
    1818import com.google.common.base.Function; 
    19 import static com.google.common.base.Join.join; 
    20 import com.google.common.base.Nullable; 
    21 import com.google.common.base.Join; 
     19import com.google.common.base.Joiner; 
    2220import com.google.common.collect.HashMultimap; 
    2321import com.google.common.collect.ImmutableList; 
    2422import static com.google.common.collect.Iterables.reverse; 
    2523import static com.google.common.collect.Iterables.transform; 
     24import com.google.common.collect.LinkedHashMultimap; 
    2625import static com.google.common.collect.Lists.newLinkedList; 
    2726import com.google.common.collect.Multimap; 
    28 import com.google.common.collect.LinkedHashMultimap; 
     27import com.sun.istack.internal.Nullable; 
    2928import com.thimbleware.jrel.*; 
    3029import com.thimbleware.jrel.exceptions.CannotUseFunctionProjectionInReferenceException; 
     
    3231import com.thimbleware.jrel.exceptions.UnsupportedTypeException; 
    3332import com.thimbleware.jrel.expr.*; 
    34 import com.thimbleware.jrel.expr.attributes.TableAttribute; 
    35 import com.thimbleware.jrel.expr.attributes.WildcardAttribute; 
    36 import com.thimbleware.jrel.expr.attributes.RelationAttribute; 
    37 import com.thimbleware.jrel.expr.attributes.ExpressionAttribute; 
    38 import com.thimbleware.jrel.expr.attributes.Attribute; 
    39 import com.thimbleware.jrel.expr.attributes.AliasedAttribute; 
    40 import com.thimbleware.jrel.expr.literals.LongLiteral; 
     33import com.thimbleware.jrel.expr.attributes.*; 
    4134import com.thimbleware.jrel.expr.literals.ParameterLiteral; 
    4235import com.thimbleware.jrel.expr.literals.TupleLiteral; 
    4336import com.thimbleware.jrel.expr.operators.BinaryOperator; 
     37import com.thimbleware.jrel.expr.operators.CastOperator; 
    4438import com.thimbleware.jrel.expr.operators.Condition; 
    4539import com.thimbleware.jrel.expr.operators.UnaryOperator; 
    46 import com.thimbleware.jrel.expr.operators.CastOperator; 
    4740import com.thimbleware.jrel.schema.*; 
    4841import com.thimbleware.jrel.util.DirectedGraph; 
     
    6255 
    6356    public String selectStatement(SQLVisitor visitor, boolean distinctProjection, Collection<Attribute> attributes) { 
    64         return "SELECT " + (distinctProjection ? "DISTINCT " : "") + join(", ", attributes(visitor, attributes)); 
     57        return "SELECT " + (distinctProjection ? "DISTINCT " : "") + Joiner.on(", ").join(attributes(visitor, attributes)); 
    6558    } 
    6659 
     
    117110    public String functionApplication(final SQLVisitor visitor, FunctionApplication function) { 
    118111        return function.getFunctionName() + "(" + 
    119                 Join.join(", ", transform(function.getArguments(), new Function<Expression, String>() { 
     112                Joiner.on(", ").join( transform(function.getArguments(), new Function<Expression, String>() { 
    120113                    public String apply(@Nullable Expression expression) { 
    121114                        return expression.visit(visitor); 
     
    135128        if (joins.size() != 0) { 
    136129            // 
    137             Multimap<NamedRelation, JoinClause> joinEdges = new LinkedHashMultimap<NamedRelation, JoinClause>(); 
     130            Multimap<NamedRelation, JoinClause> joinEdges = LinkedHashMultimap.create(); 
    138131            HashSet<JoinClause> visited = new HashSet<JoinClause>(); 
    139132 
     
    160153 
    161154                // for each join type... 
    162                 Multimap<JoinType, JoinClause> edgesByType = new HashMultimap<JoinType, JoinClause>(); 
     155                Multimap<JoinType, JoinClause> edgesByType = HashMultimap.create(); 
    163156                for (JoinClause edge : edges) { 
    164157                    edgesByType.put(edge.type, edge); 
     
    179172                            break; 
    180173                    } 
    181                     buffer.append(" JOIN ").append(namedRelation.visit(visitor) + " ON " + join(" AND ", transform(joinEdgesByType, new Function<JoinClause, String>() { 
     174                    buffer.append(" JOIN ").append(namedRelation.visit(visitor) + " ON " + Joiner.on(" AND ").join(transform(joinEdgesByType, new Function<JoinClause, String>() { 
    182175                        public String apply(@Nullable JoinClause joinEdge) { 
    183                             return join(" AND ", transform(joinEdge.conditions, new Function<Condition, String>() { 
     176                            return Joiner.on(" AND ").join(transform(joinEdge.conditions, new Function<Condition, String>() { 
    184177                                public String apply(@Nullable Condition condition) { 
    185178                                    return condition.visit(visitor); 
     
    206199        if (restrictions.size() == 0) return ""; 
    207200        else 
    208             return " WHERE " + join(" AND ", transform(restrictions, new Function<Expression, String>() { 
     201            return " WHERE " + Joiner.on(" AND ").join(transform(restrictions, new Function<Expression, String>() { 
    209202                public String apply(Expression x) { 
    210203                    return x.visit(visitor); 
     
    216209        if (groupBy.size() == 0) return ""; 
    217210        else 
    218             return " GROUP BY " + join(", ", transform(groupBy, new Function<Attribute, String>() { 
     211            return " GROUP BY " + Joiner.on(", ").join(transform(groupBy, new Function<Attribute, String>() { 
    219212                public String apply(Attribute x) { 
    220213                    return x.visit(visitor); 
     
    226219        if (orderBy.size() == 0) return ""; 
    227220        else 
    228             return " ORDER BY " + join(", ", transform(orderBy, new Function<Attribute, String>() { 
     221            return " ORDER BY " + Joiner.on(", ").join(transform(orderBy, new Function<Attribute, String>() { 
    229222                public String apply(Attribute x) { 
    230223                    return x.visit(visitor); 
     
    251244 
    252245    private String relationSpecs(final SQLVisitor visitor, Collection<Relation> relations) { 
    253         return join(", ", 
    254                 transform(relations, new Function<Relation, String>() { 
     246        return Joiner.on(", ").join(transform(relations, new Function<Relation, String>() { 
    255247                    public String apply(Relation x) { 
    256248                        return x.visit(visitor); 
     
    292284    public <T> String literal(final SQLVisitor visitor, TupleLiteral<T> tupleLiteral) { 
    293285        // TODO reify types, make this use pattern matching, or something to reduce code maintenance nightmare 
    294         return "(" + join(", ", transform(tupleLiteral.getValue(), new Function<T, String>() { 
     286        return "(" + Joiner.on(", ").join(transform(tupleLiteral.getValue(), new Function<T, String>() { 
    295287            public String apply(@Nullable T value) { 
    296288                if (value instanceof String) 
     
    371363    public String updateStatement(final SQLVisitor sqlVisitor, Update update) { 
    372364        StringBuilder updateStatement = new StringBuilder("UPDATE " + update.getRelation().visit(sqlVisitor) + " SET "); 
    373         updateStatement.append(join(", ", transform(update.getAssignments(), new Function<Assignment, String>(){ 
     365        updateStatement.append(Joiner.on(", ").join(transform(update.getAssignments(), new Function<Assignment, String>(){ 
    374366            public String apply(@Nullable Assignment assignment) { 
    375367                return assignment.getAttribute().getName() + " = " + assignment.getValue().visit(sqlVisitor); 
     
    383375        }); 
    384376        if (!ImmutableList.copyOf(restrictions).isEmpty()) 
    385             updateStatement.append(" WHERE ").append(join(" AND ", restrictions)); 
     377            updateStatement.append(" WHERE ").append(Joiner.on(" AND ").join(restrictions)); 
    386378 
    387379        return updateStatement.toString(); 
     
    390382    public String insertStatement(final SQLVisitor sqlVisitor, final Insert insert) { 
    391383        StringBuilder insertStatement = new StringBuilder("INSERT INTO " + insert.getRelation().getTableName()); 
    392         insertStatement.append(" (").append(join(", ", transform(insert.getValues().getDomain().getAttributes(), new Function<RelationAttribute, String>() { 
     384        insertStatement.append(" (").append(Joiner.on(", ").join(transform(insert.getValues().getDomain().getAttributes(), new Function<RelationAttribute, String>() { 
    393385            public String apply(@Nullable RelationAttribute relationAttribute) { 
    394386                return relationAttribute.getName(); 
    395387            } 
    396388        }))).append(") VALUES "); 
    397         insertStatement.append( join(", ", transform(insert.getValues().getRange(), new Function<TupleVar, String>() { 
     389        insertStatement.append( Joiner.on(", ").join(transform(insert.getValues().getRange(), new Function<TupleVar, String>() { 
    398390            public String apply(@Nullable final TupleVar tupleVar) { 
    399                 return "( " + join(", ", transform(insert.getValues().getDomain().getAttributes(), new Function<RelationAttribute, String>() { 
     391                return "( " + Joiner.on(", ").join(transform(insert.getValues().getDomain().getAttributes(), new Function<RelationAttribute, String>() { 
    400392                    public String apply(@Nullable RelationAttribute relationAttribute) { 
    401393                        return tupleVar.get(relationAttribute.getName()).visit(sqlVisitor); 
     
    418410        }); 
    419411        if (!ImmutableList.copyOf(restrictions).isEmpty()) 
    420             updateStatement.append(" WHERE ").append(join(" AND ", restrictions)); 
     412            updateStatement.append(" WHERE ").append(Joiner.on(" AND ").join(restrictions)); 
    421413 
    422414        return updateStatement.toString(); 
     
    428420 
    429421    public String caseStatement(final SQLVisitor visitor, ConditionalExpression conditionalExpression) { 
    430         return "CASE WHEN " + Join.join(" WHEN ", transform(conditionalExpression.getConditions(), new Function<Pair<Condition, Expression>, String>() { 
     422        return "CASE WHEN " + Joiner.on(" WHEN ").join(transform(conditionalExpression.getConditions(), new Function<Pair<Condition, Expression>, String>() { 
    431423            public String apply(@Nullable Pair<Condition, Expression> conditionExpressionEntry) { 
    432424                return conditionExpressionEntry.left.visit(visitor) + " THEN " + conditionExpressionEntry.right.visit(visitor); 
  • src/main/java/com/thimbleware/jrel/sql/SQLDialect.java

    r95 r108  
    1616 package com.thimbleware.jrel.sql; 
    1717 
     18import com.thimbleware.jrel.Delete; 
     19import com.thimbleware.jrel.Insert; 
    1820import com.thimbleware.jrel.JoinClause; 
    1921import com.thimbleware.jrel.Update; 
    20 import com.thimbleware.jrel.Insert; 
    21 import com.thimbleware.jrel.Delete; 
    2222import com.thimbleware.jrel.expr.*; 
    23 import com.thimbleware.jrel.expr.attributes.TableAttribute; 
    24 import com.thimbleware.jrel.expr.attributes.WildcardAttribute; 
    25 import com.thimbleware.jrel.expr.attributes.RelationAttribute; 
    26 import com.thimbleware.jrel.expr.attributes.ExpressionAttribute; 
    27 import com.thimbleware.jrel.expr.attributes.Attribute; 
    28 import com.thimbleware.jrel.expr.attributes.AliasedAttribute; 
     23import com.thimbleware.jrel.expr.attributes.*; 
     24import com.thimbleware.jrel.expr.literals.ParameterLiteral; 
     25import com.thimbleware.jrel.expr.literals.TupleLiteral; 
     26import com.thimbleware.jrel.expr.operators.BinaryOperator; 
     27import com.thimbleware.jrel.expr.operators.CastOperator; 
    2928import com.thimbleware.jrel.expr.operators.Condition; 
    30 import com.thimbleware.jrel.expr.operators.BinaryOperator; 
    3129import com.thimbleware.jrel.expr.operators.UnaryOperator; 
    32 import com.thimbleware.jrel.expr.operators.CastOperator; 
    33 import com.thimbleware.jrel.expr.literals.TupleLiteral; 
    34 import com.thimbleware.jrel.expr.literals.ParameterLiteral; 
     30import com.thimbleware.jrel.schema.NamedRelation; 
    3531import com.thimbleware.jrel.schema.Relation; 
     32import com.thimbleware.jrel.schema.Subselect; 
    3633import com.thimbleware.jrel.schema.Table; 
    37 import com.thimbleware.jrel.schema.Subselect; 
    38 import com.thimbleware.jrel.schema.NamedRelation; 
    39  
     34 
     35import java.sql.Connection; 
     36import java.sql.SQLException; 
     37import java.util.ArrayList; 
    4038import java.util.Collection; 
    41 import java.util.ArrayList; 
    4239import java.util.Date; 
    4340import java.util.Map; 
    44 import java.sql.Connection; 
    45 import java.sql.SQLException; 
    4641 
    4742/** 
  • src/main/java/com/thimbleware/jrel/sql/SQLVisitor.java

    r88 r108  
    1818import com.thimbleware.jrel.*; 
    1919import com.thimbleware.jrel.exceptions.OperationNotSupportedException; 
     20import com.thimbleware.jrel.expr.*; 
     21import com.thimbleware.jrel.expr.attributes.*; 
     22import com.thimbleware.jrel.expr.literals.*; 
     23import com.thimbleware.jrel.expr.operators.*; 
     24import com.thimbleware.jrel.schema.RelVar; 
     25import com.thimbleware.jrel.schema.Subselect; 
    2026import com.thimbleware.jrel.schema.Table; 
    21 import com.thimbleware.jrel.schema.Subselect; 
    22 import com.thimbleware.jrel.schema.RelVar; 
    23 import com.thimbleware.jrel.expr.*; 
    24 import com.thimbleware.jrel.expr.attributes.TableAttribute; 
    25 import com.thimbleware.jrel.expr.attributes.WildcardAttribute; 
    26 import com.thimbleware.jrel.expr.attributes.RelationAttribute; 
    27 import com.thimbleware.jrel.expr.attributes.ExpressionAttribute; 
    28 import com.thimbleware.jrel.expr.attributes.AliasedAttribute; 
    29 import com.thimbleware.jrel.expr.operators.Condition; 
    30 import com.thimbleware.jrel.expr.operators.BinaryOperator; 
    31 import com.thimbleware.jrel.expr.operators.UnaryOperator; 
    32 import com.thimbleware.jrel.expr.operators.Op; 
    33 import com.thimbleware.jrel.expr.operators.CastOperator; 
    34 import com.thimbleware.jrel.expr.literals.*; 
    3527 
     28import java.util.HashMap; 
    3629import java.util.Map; 
    37 import java.util.HashMap; 
    3830 
    3931/** 
  • src/main/java/com/thimbleware/jrel/sql/dialect/DerbyDialect.java

    r107 r108  
    2121import com.thimbleware.jrel.sql.AbstractANSISQLDialect; 
    2222import com.thimbleware.jrel.util.Matcher; 
     23 
    2324import static java.sql.Types.*; 
    2425import java.text.SimpleDateFormat; 
  • src/main/java/com/thimbleware/jrel/sql/dialect/HSQLDialect.java

    r95 r108  
    1616 package com.thimbleware.jrel.sql.dialect; 
    1717 
     18import com.google.common.collect.ImmutableList; 
     19import com.thimbleware.jrel.Insert; 
     20import com.thimbleware.jrel.exceptions.OperationNotSupportedException; 
    1821import com.thimbleware.jrel.exceptions.UnsupportedTypeException; 
    19 import com.thimbleware.jrel.exceptions.OperationNotSupportedException; 
    2022import com.thimbleware.jrel.sql.AbstractANSISQLDialect; 
    2123import com.thimbleware.jrel.sql.SQLVisitor; 
    2224import com.thimbleware.jrel.util.Matcher; 
    23 import com.thimbleware.jrel.Insert; 
    24 import com.google.common.collect.ImmutableList; 
    2525 
    26 import java.util.Date; 
    2726import static java.sql.Types.*; 
    2827import java.text.SimpleDateFormat; 
     28import java.util.Date; 
    2929 
    3030/** 
  • src/main/java/com/thimbleware/jrel/sql/dialect/MySQLDialect.java

    r95 r108  
    2020import com.thimbleware.jrel.util.Matcher; 
    2121 
    22 import java.util.Date; 
    2322import static java.sql.Types.*; 
    2423import java.text.SimpleDateFormat; 
     24import java.util.Date; 
    2525 
    2626/** 
  • src/main/java/com/thimbleware/jrel/sql/dialect/PostgreSQLDialect.java

    r107 r108  
    2121import com.thimbleware.jrel.sql.AbstractANSISQLDialect; 
    2222import com.thimbleware.jrel.util.Matcher; 
     23 
    2324import static java.sql.Types.*; 
    2425import java.text.SimpleDateFormat; 
  • src/main/java/com/thimbleware/jrel/sql/introspection/Column.java

    r56 r108  
    1616package com.thimbleware.jrel.sql.introspection; 
    1717 
    18 import java.lang.annotation.Target; 
     18import static java.lang.annotation.ElementType.FIELD; 
     19import static java.lang.annotation.ElementType.METHOD; 
    1920import java.lang.annotation.Retention; 
    2021import static java.lang.annotation.RetentionPolicy.RUNTIME; 
    21 import static java.lang.annotation.ElementType.METHOD; 
    22 import static java.lang.annotation.ElementType.FIELD; 
     22import java.lang.annotation.Target; 
    2323 
    2424@Target({METHOD, FIELD}) 
  • src/main/java/com/thimbleware/jrel/sql/introspection/DB.java

    r84 r108  
    1616package com.thimbleware.jrel.sql.introspection; 
    1717 
     18import com.thimbleware.jrel.exceptions.DBIntrospectionException; 
     19import com.thimbleware.jrel.schema.Table; 
    1820import com.thimbleware.jrel.sql.SQLDialect; 
    1921import com.thimbleware.jrel.sql.SQLVisitor; 
    20 import com.thimbleware.jrel.schema.Table; 
    2122import com.thimbleware.jrel.util.Cache; 
    22 import com.thimbleware.jrel.exceptions.DBIntrospectionException; 
    2323 
    2424import javax.sql.DataSource; 
    25 import java.util.ArrayList; 
    2625import java.sql.Connection; 
    2726import java.sql.SQLException; 
     27import java.util.ArrayList; 
    2828 
    2929/** 
  • src/main/java/com/thimbleware/jrel/sql/introspection/DeclarativeBaseRelation.java

    r90 r108  
    1818 
    1919import com.thimbleware.jrel.schema.Table; 
    20 import com.thimbleware.jrel.sql.introspection.DB; 
    2120 
    2221import javax.annotation.PostConstruct; 
  • src/main/java/com/thimbleware/jrel/sql/introspection/TableBaseRelation.java

    r94 r108  
    1616package com.thimbleware.jrel.sql.introspection; 
    1717 
     18import java.lang.annotation.ElementType; 
    1819import java.lang.annotation.Retention; 
     20import java.lang.annotation.RetentionPolicy; 
    1921import java.lang.annotation.Target; 
    20 import java.lang.annotation.ElementType; 
    21 import java.lang.annotation.RetentionPolicy; 
    2222 
    2323@Target({ElementType.TYPE}) 
  • src/main/java/com/thimbleware/jrel/util/Functional.java

    r84 r108  
    1616 package com.thimbleware.jrel.util; 
    1717 
    18 import com.google.common.base.Function; 
    1918import com.google.common.base.Predicate; 
    20 import com.google.common.collect.Iterables; 
     19 
    2120import java.util.NoSuchElementException; 
    2221 
  • src/main/java/com/thimbleware/jrel/util/TuplePivoter.java

    r64 r108  
    1616package com.thimbleware.jrel.util; 
    1717 
    18 import com.google.common.base.Function; 
    19  
    20 import java.util.Map; 
    2118import java.util.ArrayList; 
    2219import java.util.HashMap; 
     20import java.util.Map; 
    2321 
    2422/**