Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   *  Copyright 2014-2014 Pavel Ponec
   *
   *  Licensed under the Apache License, Version 2.0 (the "License");
   *  you may not use this file except in compliance with the License.
   *  You may obtain a copy of the License at
   *
   *      http://www.apache.org/licenses/LICENSE-2.0
   *
  *  Unless required by applicable law or agreed to in writing, software
  *  distributed under the License is distributed on an "AS IS" BASIS,
  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
 package org.ujorm.orm;
 
 import org.ujorm.Key;
Relation from the one table to another including alias

Author(s):
ponec
 
 final public class AliasKey {

    
The default relation alias contains an unsupported character(s) (e.g. space)
 
     @PackagePrivate static final String DEFAULT_RELATION_ALIAS = new String("[RELATION ALIAS]");

    
The Key is not null always
 
     @PackagePrivate Key<?,?> key;
    
Nullable alias for the previous table
 
     @PackagePrivate String aliasFrom;
    
Nullable alias for the next table
 
     @PackagePrivate String aliasTo;
    
Hash
 
     @PackagePrivate int hashCode;

    
Constructor

Parameters:
key Direct Key
 
     public AliasKey(Key<?, ?> key) {
         this(key..);
     }

    
Constructor

Parameters:
key direct Key
aliasFrom Alias for the previous table
aliasTo Alias for the next table
 
     public AliasKey(Key<?, ?> keyString aliasFromString aliasTo) {
         this. = key;
         this. = aliasFrom;
         this. = aliasTo;
     }

    
The direct Key
 
     public Key<?, ?> getKey() {
         return ;
     }

    
Alias previous table
 
     public String getAliasFrom() {
         return ;
     }

    
Alias the next table
 
     public String getAliasTo() {
         return ;
     }

    
Create a new ColumnWrapper for a required alias
 
     public ColumnWrapper getColumn(OrmHandler handler) {
         final MetaColumn column = handler.findColumnModel(true);
         return  != null
              ? new ColumnWrapperImpl(column)
              : column;
     }
 
     @Override
     public int hashCode() {
         if ( == 0) {
             int hash = 5;
             hash = 79 * hash + this..hashCode();
             hash = 79 * hash + (this. != null ? this..hashCode() : 0);
             hash = 79 * hash + (this. != null ? this..hashCode() : 0);
              = hash;
         }
         return ;
     }
 
     @Override
    public boolean equals(Object obj) {
        final AliasKey other = (AliasKeyobj;
        if (this. != other.key) {
            return false;
        }
        if (this. != other.aliasFrom
        && (this. == null || !this..equals(other.aliasFrom))
        ){
            return false;
        }
        if (this. != other.aliasTo
        && (this. == null || !this..equals(other.aliasTo))
        ){
            return false;
        }
        return true;
    }
    @Override
    public String toString() {
        final String result = String.format("%s (%s, %s)"
                , .getFullName()
                , 
                , );
        return result;
    }
    // ---------------------- STATIC METHODS ----------------------

    
Add relations only

Parameters:
key The Ujorm composite Key
out Result
    public static void addRelations(final Key<?,?> keyfinal Collection<AliasKeyout) {
        if (key.isComposite()) {
            final CompositeKey<?,?> cKey = (CompositeKey<?,?>) key;
            addConditions(cKey, 0, cKey.getCompositeCount() - 1, out);
        }
    }

    
Add full range of composite key

Parameters:
key The Ujorm composite Key
out The result collection
    public static void addKeys(final Key<?,?> keyfinal Collection<AliasKeyout) {
        if (key.isComposite()) {
            final CompositeKey<?,?> cKey = (CompositeKey<?,?>) key;
            addConditions(cKey, 0, cKey.getCompositeCount(), out);
        } else {
            out.add(new AliasKey(key));
        }
    }

    
Add the last condition

Parameters:
key The Ujorm composite Key
out The result collection
    public static void addLastKey(final Key<?,?> keyfinal Collection<AliasKeyout) {
        if (key.isComposite()) {
            final CompositeKey<?,?> cKey = (CompositeKey<?,?>) key;
            final int count = cKey.getCompositeCount();
            addConditions(cKeycount - 1, countout);
        } else {
            out.add(new AliasKey(key));
        }
    }

    
Add the last condition

Parameters:
key The Ujorm composite Key
out The result collection
    public static AliasKey getLastKey(final Key<?,?> compositeKey) {
        final ArrayList<AliasKeyresult = new ArrayList<AliasKey>(1);
        addLastKey(compositeKeyresult);
        return result.isEmpty() ? null : result.get(0);
    }

    
Add conditions for an internal use

Parameters:
cKey Composite Key.
beg Key start position
end Key max position
out The result collection
    private static void addConditions(final CompositeKey<?,?> cKeyfinal int begfinal int endfinal Collection<AliasKeyout) {
        String aliasFrom = beg > 0
                ? cKey.getAlias(beg - 1)
                : .;
        for (int i = begi < endi++) {
            final String aliasTo = cKey.getAlias(i);
            final Key<?, ?> directKey = cKey.getDirectKey(i);
            out.add(new AliasKey(directKeyaliasFromaliasTo));
            aliasFrom = aliasTo;
        }
    }
New to GrepCode? Check out our FAQ X