uk.ac.starlink.table
Class JoinFixAction

java.lang.Object
  extended by uk.ac.starlink.table.JoinFixAction

public abstract class JoinFixAction
extends Object

Class defining the possible actions for doctoring column names when joining tables. Joining tables can cause confusion if columns with the same names exist in some of them. An instance of this class defines how the join should behave in this case.

Since:
8 Sep 2005
Author:
Mark Taylor
See Also:
JoinStarTable

Field Summary
static JoinFixAction NO_ACTION
          Action which causes names to be left alone.
 
Constructor Summary
protected JoinFixAction(String name)
          Constructor.
 
Method Summary
static String ensureUnique(String name, Collection others, boolean caseSensitive)
          Utility method which repeatedly doctors a name until it fails to match any of the others in a given collection.
abstract  String getFixedName(String origName, Collection otherNames)
          Returns a, possibly modified, name for a column in the context of existing column names.
static boolean isDuplicate(String name, Collection others, boolean caseSensitive)
          Utility method to determine whether a given name is a duplicate of any in a given collection of other names.
static JoinFixAction makeNumericDeduplicationAction(String delimiter, boolean caseSensitive)
          Returns an action which will deduplicate names by appending a numeric value to them.
static JoinFixAction makeRenameAllAction(String appendage)
          Returns an action for renaming all column names with default options.
static JoinFixAction makeRenameAllAction(String appendage, boolean caseSensitive, boolean ensureUnique)
          Returns an action for renaming all columns with additional options.
static JoinFixAction makeRenameDuplicatesAction(String appendage)
          Returns an action for renaming duplicated column names with default options.
static JoinFixAction makeRenameDuplicatesAction(String appendage, boolean caseSensitive, boolean ensureUnique)
          Returns an action for renaming duplicated column names with additional options.
 String toString()
          Returns this action's name.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

NO_ACTION

public static final JoinFixAction NO_ACTION
Action which causes names to be left alone.

Constructor Detail

JoinFixAction

protected JoinFixAction(String name)
Constructor.

Parameters:
name - label for this action
Method Detail

getFixedName

public abstract String getFixedName(String origName,
                                    Collection otherNames)
Returns a, possibly modified, name for a column in the context of existing column names.

Parameters:
origName - input name
otherNames - list of names which may be duplicates of origName
Returns:
output name - may or may not be the same as origName

toString

public String toString()
Returns this action's name.

Overrides:
toString in class Object

isDuplicate

public static boolean isDuplicate(String name,
                                  Collection others,
                                  boolean caseSensitive)
Utility method to determine whether a given name is a duplicate of any in a given collection of other names.

Parameters:
name - name to test
others - potential duplicates of name
caseSensitive - true iff matching is to be done in a case-sensitive fashion
Returns:
true iff name matches any of the entries in others

ensureUnique

public static String ensureUnique(String name,
                                  Collection others,
                                  boolean caseSensitive)
Utility method which repeatedly doctors a name until it fails to match any of the others in a given collection. Currently some arbitrary scheme of appending characters is used.

Parameters:
name - input name
others - list of names that must not match
caseSensitive - whether matching others is case sensitive
Returns:
name similar to name but not matching others

makeRenameDuplicatesAction

public static JoinFixAction makeRenameDuplicatesAction(String appendage)
Returns an action for renaming duplicated column names with default options.

Parameters:
appendage - string to append to duplicate columns
Returns:
fixer

makeRenameDuplicatesAction

public static JoinFixAction makeRenameDuplicatesAction(String appendage,
                                                       boolean caseSensitive,
                                                       boolean ensureUnique)
Returns an action for renaming duplicated column names with additional options. The action indicates that column names which would be duplicated elsewhere in the result table should be modified by appending a given string.

Parameters:
appendage - string to append to duplicate columns
caseSensitive - whether duplicate location should be case sensitive
ensureUnique - if true, every effort will be made to ensure that the output name matches none of the others; if false, the output name may still match (but differently from the input one)
Returns:
fixer

makeRenameAllAction

public static JoinFixAction makeRenameAllAction(String appendage)
Returns an action for renaming all column names with default options.

Parameters:
appendage - string to append to columns
Returns:
fixer

makeRenameAllAction

public static JoinFixAction makeRenameAllAction(String appendage,
                                                boolean caseSensitive,
                                                boolean ensureUnique)
Returns an action for renaming all columns with additional options. The action indicates that all names will be modified by appending a given string.

Parameters:
appendage - string to append to columns
caseSensitive - whether duplicate location should be case sensitive (only relevant if ensureUnique is true)
ensureUnique - if true, every effort will be made to ensure that the output name matches none of the others;
Returns:
fixer

makeNumericDeduplicationAction

public static JoinFixAction makeNumericDeduplicationAction(String delimiter,
                                                           boolean caseSensitive)
Returns an action which will deduplicate names by appending a numeric value to them. The number is guaranteed unique; the value used is one higher than the currently highest used one

Parameters:
delimiter - string used to separate main part of name from numeric part
caseSensitive - whether duplicate location is case sensitive
Returns:
fixer


Copyright © 2017 Central Laboratory of the Research Councils. All Rights Reserved.