Simple code cleanup

This commit is contained in:
Steve Ebersole 2011-07-28 11:37:51 -05:00
parent baa649c802
commit 85c63dbaf0
3 changed files with 51 additions and 42 deletions

View File

@ -26,6 +26,7 @@ package org.hibernate.metamodel.relational;
import java.util.List; import java.util.List;
import java.util.ArrayList; import java.util.ArrayList;
import org.hibernate.AssertionFailure;
import org.hibernate.dialect.Dialect; import org.hibernate.dialect.Dialect;
/** /**
@ -67,8 +68,18 @@ public abstract class AbstractConstraint implements Constraint {
} }
public void addColumn(Column column) { public void addColumn(Column column) {
internalAddColumn( column );
}
protected void internalAddColumn(Column column) {
if ( column.getTable() != getTable() ) { if ( column.getTable() != getTable() ) {
throw new IllegalArgumentException( "Unable to add column to constraint; tables did not match" ); throw new AssertionFailure(
String.format(
"Unable to add column to constraint; tables [%s, %s] did not match",
column.getTable().toLoggableString(),
getTable().toLoggableString()
)
);
} }
columns.add( column ); columns.add( column );
} }

View File

@ -30,16 +30,18 @@ import java.util.concurrent.atomic.AtomicInteger;
/** /**
* Convenience base class for implementing the {@link ValueContainer} contract centralizing commonality * Convenience base class for implementing the {@link ValueContainer} contract centralizing commonality
* between modelling tables views and inline views. * between modeling tables, views and inline views.
* *
* @author Steve Ebersole * @author Steve Ebersole
*/ */
public abstract class AbstractTableSpecification implements TableSpecification { public abstract class AbstractTableSpecification implements TableSpecification {
private final static AtomicInteger tableCounter = new AtomicInteger( 0 ); private final static AtomicInteger tableCounter = new AtomicInteger( 0 );
private final int tableNumber; private final int tableNumber;
private final LinkedHashMap<String, SimpleValue> values = new LinkedHashMap<String, SimpleValue>(); private final LinkedHashMap<String, SimpleValue> values = new LinkedHashMap<String, SimpleValue>();
private PrimaryKey primaryKey = new PrimaryKey( this );
private List<ForeignKey> foreignKeys = new ArrayList<ForeignKey>(); private final PrimaryKey primaryKey = new PrimaryKey( this );
private final List<ForeignKey> foreignKeys = new ArrayList<ForeignKey>();
public AbstractTableSpecification() { public AbstractTableSpecification() {
this.tableNumber = tableCounter.getAndIncrement(); this.tableNumber = tableCounter.getAndIncrement();
@ -92,9 +94,7 @@ public abstract class AbstractTableSpecification implements TableSpecification {
return fk; return fk;
} }
/** @Override
* {@inheritDoc}
*/
public PrimaryKey getPrimaryKey() { public PrimaryKey getPrimaryKey() {
return primaryKey; return primaryKey;
} }

View File

@ -27,9 +27,9 @@ import java.util.ArrayList;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import org.hibernate.AssertionFailure;
import org.hibernate.MappingException; import org.hibernate.MappingException;
import org.hibernate.dialect.Dialect; import org.hibernate.dialect.Dialect;
import org.hibernate.internal.CoreMessageLogger;
import org.jboss.logging.Logger; import org.jboss.logging.Logger;
@ -43,15 +43,16 @@ import org.jboss.logging.Logger;
* @author Steve Ebersole * @author Steve Ebersole
*/ */
public class ForeignKey extends AbstractConstraint implements Constraint, Exportable { public class ForeignKey extends AbstractConstraint implements Constraint, Exportable {
private static final Logger LOG = Logger.getLogger( ForeignKey.class );
private static final CoreMessageLogger LOG = Logger.getMessageLogger(CoreMessageLogger.class, AbstractConstraint.class.getName());
private static final String ON_DELETE = " on delete "; private static final String ON_DELETE = " on delete ";
private static final String ON_UPDATE = " on update "; private static final String ON_UPDATE = " on update ";
private final TableSpecification targetTable; private final TableSpecification targetTable;
private List<Column> targetColumns; private List<Column> targetColumns;
private ReferentialAction deleteRule = ReferentialAction.NO_ACTION; private ReferentialAction deleteRule = ReferentialAction.NO_ACTION;
public ReferentialAction updateRule = ReferentialAction.NO_ACTION; private ReferentialAction updateRule = ReferentialAction.NO_ACTION;
protected ForeignKey(TableSpecification sourceTable, TableSpecification targetTable, String name) { protected ForeignKey(TableSpecification sourceTable, TableSpecification targetTable, String name) {
super( sourceTable, name ); super( sourceTable, name );
@ -96,6 +97,7 @@ public class ForeignKey extends AbstractConstraint implements Constraint, Export
} }
} }
else { else {
checkTargetTable( targetColumn );
if ( targetColumns == null ) { if ( targetColumns == null ) {
if (!internalColumnAccess().isEmpty()) { if (!internalColumnAccess().isEmpty()) {
LOG.debugf( LOG.debugf(
@ -109,7 +111,19 @@ public class ForeignKey extends AbstractConstraint implements Constraint, Export
} }
targetColumns.add( targetColumn ); targetColumns.add( targetColumn );
} }
internalColumnAccess().add( sourceColumn ); internalAddColumn( sourceColumn );
}
private void checkTargetTable(Column targetColumn) {
if ( targetColumn.getTable() != getTargetTable() ) {
throw new AssertionFailure(
String.format(
"Unable to add column to constraint; tables [%s, %s] did not match",
targetColumn.getTable().toLoggableString(),
getTargetTable().toLoggableString()
)
);
}
} }
@Override @Override
@ -183,36 +197,20 @@ public class ForeignKey extends AbstractConstraint implements Constraint, Export
} }
public static enum ReferentialAction { public static enum ReferentialAction {
NO_ACTION { NO_ACTION( "no action" ),
private static final String ACTION_STRING = "no action"; CASCADE( "cascade" ),
public String getActionString() { SET_NULL( "set null" ),
return ACTION_STRING; SET_DEFAULT( "set default" ),
} RESTRICT( "restrict" );
},
CASCADE { private final String actionString;
private static final String ACTION_STRING = "cascade";
public String getActionString() { private ReferentialAction(String actionString) {
return ACTION_STRING; this.actionString = actionString;
} }
},
SET_NULL { public String getActionString() {
private static final String ACTION_STRING = "set null"; return actionString;
public String getActionString() { }
return ACTION_STRING;
}
},
SET_DEFAULT {
private static final String ACTION_STRING = "set default";
public String getActionString() {
return ACTION_STRING;
}
},
RESTRICT {
private static final String ACTION_STRING = "restrict";
public String getActionString() {
return ACTION_STRING;
}
};
public abstract String getActionString();
} }
} }