[hibernate-commits] Hibernate SVN: r20196 - in sandbox/trunk/new-metadata: src/main/java/org/hibernate/metadata/schema and 1 other directories.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Thu Aug 19 17:18:32 EDT 2010


Author: steve.ebersole at jboss.com
Date: 2010-08-19 17:18:31 -0400 (Thu, 19 Aug 2010)
New Revision: 20196

Added:
   sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/IllegalNameException.java
Modified:
   sandbox/trunk/new-metadata/
   sandbox/trunk/new-metadata/build.gradle
   sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/AbstractColumn.java
   sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/AbstractValueContainer.java
   sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/Column.java
   sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/Datatype.java
   sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/DerivedValue.java
   sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/Exportable.java
   sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/ForeignKey.java
   sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/InLineView.java
   sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/ObjectName.java
   sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/PrimaryKey.java
   sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/SimpleValue.java
   sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/Table.java
   sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/TableSpecification.java
   sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/Tuple.java
   sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/Value.java
   sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/ValueContainer.java
   sandbox/trunk/new-metadata/src/test/java/org/hibernate/metadata/schema/ObjectNameTests.java
Log:
improvements


Property changes on: sandbox/trunk/new-metadata
___________________________________________________________________
Name: svn:ignore
   - target
build
local
*.ipr
*.iws
*.iml
.classpath
.project
.nbattrs
*.log
*.properties
.clover
.idea

   + target
build
local
*.ipr
*.iws
*.iml
.classpath
.project
.nbattrs
*.log
*.properties
.clover
.idea
.gradle



Modified: sandbox/trunk/new-metadata/build.gradle
===================================================================
--- sandbox/trunk/new-metadata/build.gradle	2010-08-19 20:22:48 UTC (rev 20195)
+++ sandbox/trunk/new-metadata/build.gradle	2010-08-19 21:18:31 UTC (rev 20196)
@@ -1,18 +1,38 @@
-usePlugin('java')
+buildscript {
+    dependencies {
+        classpath "org.gradle.plugins:gradle-idea-plugin:0.3"
+    }
+}
 
-defaultTasks 'classes'
-
 repositories {
     mavenCentral()
-    mavenRepo name: "jboss", urls: "http://repository.jboss.org/maven2/"
-    mavenRepo name: "jboss-snapshots", urls: "http://snapshots.jboss.org/maven2/"
+    mavenRepo name: "jboss", urls: "https://repository.jboss.org/nexus/content/groups/public/"
 }
 
+apply plugin: 'org.gradle.idea'
+apply plugin: 'java'
+apply plugin: 'maven' // for install task as well as deploy dependencies
+
+defaultTasks 'build'
+
 group = 'org.hibernate.sandbox'
 version = '1.0.0-SNAPSHOT'
 
+// by default, compile to 1.5 compatibility
+targetCompatibility = "1.5"
+sourceCompatibility = "1.5"
+
+ideaModule {
+    downloadJavadoc = false
+    outputDir = sourceSets.main.classesDir
+    testOutputDir = sourceSets.test.classesDir
+    whenConfigured { module ->
+        module.dependencies*.exported = true
+    }
+}
+
 dependencies {
-    hibernateVersion = '3.5.0-Beta-2'
+    hibernateVersion = '3.5.3-Final'
     slf4jVersion = '1.5.8'
     jtaVersion = '1.1'
     javassistVersion = '3.9.0.GA'
@@ -35,6 +55,3 @@
             [group: "com.h2database", name: "h2", version: h2Version]
     )
 }
-
-targetCompatibility = "1.5"
-sourceCompatibility = "1.5"

Modified: sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/AbstractColumn.java
===================================================================
--- sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/AbstractColumn.java	2010-08-19 20:22:48 UTC (rev 20195)
+++ sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/AbstractColumn.java	2010-08-19 21:18:31 UTC (rev 20196)
@@ -27,25 +27,25 @@
 import org.slf4j.LoggerFactory;
 
 /**
- * Basic support for {@link Value} implementations.
+ * Basic support for {@link SimpleValue} implementations.
  *
  * @author Steve Ebersole
  */
 public abstract class AbstractColumn implements SimpleValue {
 	private static final Logger log = LoggerFactory.getLogger( AbstractColumn.class );
 
-	private final ValueContainer table;
+	private final ValueContainer container;
 	private Datatype datatype;
 
-	protected AbstractColumn(ValueContainer table) {
-		this.table = table;
+	protected AbstractColumn(ValueContainer container) {
+		this.container = container;
 	}
 
 	/**
 	 * {@inheritDoc}
 	 */
 	public ValueContainer getValueContainer() {
-		return table;
+		return container;
 	}
 
 	/**
@@ -59,7 +59,10 @@
 	 * {@inheritDoc}
 	 */
 	public void setDatatype(Datatype datatype) {
-		log.debug( "setting datatype for column " + toDebugString() + " : " + datatype.getTypeCode() );
+		log.debug( "setting datatype for column {} : {}", toLoggableString(), datatype );
+		if ( this.datatype != null && ! this.datatype.equals( datatype ) ) {
+			log.debug( "overriding previous datatype : {}", this.datatype );
+		}
 		this.datatype = datatype;
 	}
 }

Modified: sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/AbstractValueContainer.java
===================================================================
--- sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/AbstractValueContainer.java	2010-08-19 20:22:48 UTC (rev 20195)
+++ sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/AbstractValueContainer.java	2010-08-19 21:18:31 UTC (rev 20196)
@@ -32,31 +32,30 @@
  * @author Steve Ebersole
  */
 public abstract class AbstractValueContainer implements ValueContainer {
-	private final LinkedHashSet values = new LinkedHashSet();
+	private final LinkedHashSet<Value> values = new LinkedHashSet<Value>();
 
 	/**
 	 * {@inheritDoc}
 	 */
-	public void addValue(Value value) {
-		values.add( value );
-	}
-
-	/**
-	 * {@inheritDoc}
-	 */
-	public Iterator iterateValues() {
+	public Iterator<Value> iterateValues() {
 		return values.iterator();
 	}
 
 	public Column createColumn(String name) {
-		return new Column( this, name );
+		final Column column = new Column( this, name );
+		values.add( column );
+		return column;
 	}
 
 	public DerivedValue createDerivedValue(String fragment) {
-		return new DerivedValue( this );
+		final DerivedValue value = new DerivedValue( this, fragment );
+		values.add( value );
+		return value;
 	}
 
 	public Tuple createTuple(String name) {
-		return new Tuple( this, name );
+		final Tuple tuple = new Tuple( this, name );
+		values.add( tuple );
+		return tuple;
 	}
 }

Modified: sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/Column.java
===================================================================
--- sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/Column.java	2010-08-19 20:22:48 UTC (rev 20195)
+++ sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/Column.java	2010-08-19 21:18:31 UTC (rev 20196)
@@ -43,7 +43,7 @@
 	/**
 	 * {@inheritDoc}
 	 */
-	public String toDebugString() {
-		return getValueContainer().toDebugString() + '.' + getName();
+	public String toLoggableString() {
+		return getValueContainer().toLoggableString() + '.' + getName();
 	}
 }

Modified: sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/Datatype.java
===================================================================
--- sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/Datatype.java	2010-08-19 20:22:48 UTC (rev 20195)
+++ sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/Datatype.java	2010-08-19 21:18:31 UTC (rev 20196)
@@ -34,13 +34,22 @@
 	private final int typeCode;
 	private final String typeName;
 	private final Class javaType;
+	private final int hashCode;
 
 	public Datatype(int typeCode, String typeName, Class javaType) {
 		this.typeCode = typeCode;
 		this.typeName = typeName;
 		this.javaType = javaType;
+		this.hashCode = generateHashCode();
 	}
 
+	private int generateHashCode() {
+		int result = typeCode;
+		result = 31 * result + typeName.hashCode();
+		result = 31 * result + javaType.hashCode();
+		return result;
+	}
+
 	public int getTypeCode() {
 		return typeCode;
 	}
@@ -53,4 +62,30 @@
 		return javaType;
 	}
 
+	@Override
+	public boolean equals(Object o) {
+		if ( this == o ) {
+			return true;
+		}
+		if ( o == null || getClass() != o.getClass() ) {
+			return false;
+		}
+
+		Datatype datatype = (Datatype) o;
+
+		return typeCode == datatype.typeCode
+				&& javaType.equals( datatype.javaType )
+				&& typeName.equals( datatype.typeName );
+
+	}
+
+	@Override
+	public int hashCode() {
+		return hashCode;
+	}
+
+	@Override
+	public String toString() {
+		return super.toString() + "[code=" + typeCode + ", name=" + typeName + ", javaClass=" + javaType.getName() + "]";
+	}
 }

Modified: sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/DerivedValue.java
===================================================================
--- sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/DerivedValue.java	2010-08-19 20:22:48 UTC (rev 20195)
+++ sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/DerivedValue.java	2010-08-19 21:18:31 UTC (rev 20196)
@@ -29,14 +29,21 @@
  * @author Steve Ebersole
  */
 public class DerivedValue extends AbstractColumn implements Value {
-	public DerivedValue(ValueContainer table) {
+	private final String expression;
+
+	public DerivedValue(ValueContainer table, String expression) {
 		super( table );
+		this.expression = expression;
 	}
 
+	public String getExpression() {
+		return expression;
+	}
+
 	/**
 	 * {@inheritDoc}
 	 */
-	public String toDebugString() {
-		return getValueContainer().toDebugString() + ".{derived-column}";
+	public String toLoggableString() {
+		return getValueContainer().toLoggableString() + ".{derived-column}";
 	}
 }

Modified: sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/Exportable.java
===================================================================
--- sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/Exportable.java	2010-08-19 20:22:48 UTC (rev 20195)
+++ sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/Exportable.java	2010-08-19 21:18:31 UTC (rev 20196)
@@ -31,7 +31,7 @@
  */
 public interface Exportable {
 	/**
-	 * Get a uniqueing identifier to make sure we are not exporting the same database structure multiple times.
+	 * Get a unique identifier to make sure we are not exporting the same database structure multiple times.
 	 *
 	 * @return The exporting identifier.
 	 */

Modified: sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/ForeignKey.java
===================================================================
--- sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/ForeignKey.java	2010-08-19 20:22:48 UTC (rev 20195)
+++ sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/ForeignKey.java	2010-08-19 21:18:31 UTC (rev 20196)
@@ -41,7 +41,7 @@
 	private final TableSpecification targetTable;
 	private final String name;
 
-	private List<Column> sourceColumns = new ArrayList();
+	private List<Column> sourceColumns = new ArrayList<Column>();
 	private List<Column> targetColumns;
 
 	public ForeignKey(TableSpecification sourceTable, TableSpecification targetTable, String name) {
@@ -89,7 +89,7 @@
 			if ( targetColumns != null ) {
 				if ( log.isWarnEnabled() ) {
 					log.warn(
-							"Attempt to map column [" + sourceColumn.toDebugString()
+							"Attempt to map column [" + sourceColumn.toLoggableString()
 									+ "] to no target column after explicit target column(s) named for FK [name="
 									+ getName() + "]"
 					);
@@ -100,12 +100,12 @@
 			if ( targetColumns == null ) {
 				if ( !sourceColumns.isEmpty() ) {
 					log.warn(
-							"Value mapping mismatch as part of FK [table=" + getTable().toDebugString()
+							"Value mapping mismatch as part of FK [table=" + getTable().toLoggableString()
 									+ ", name=" + getName() + "] while adding source column ["
-									+ sourceColumn.toDebugString() + "]"
+									+ sourceColumn.toLoggableString() + "]"
 					);
 				}
-				targetColumns = new ArrayList();
+				targetColumns = new ArrayList<Column>();
 			}
 			targetColumns.add( targetColumn );
 		}

Added: sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/IllegalNameException.java
===================================================================
--- sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/IllegalNameException.java	                        (rev 0)
+++ sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/IllegalNameException.java	2010-08-19 21:18:31 UTC (rev 20196)
@@ -0,0 +1,37 @@
+/*
+ * Hibernate, Relational Persistence for Idiomatic Java
+ *
+ * Copyright (c) 2010, Red Hat Inc. or third-party contributors as
+ * indicated by the @author tags or express copyright attribution
+ * statements applied by the authors.  All third-party contributions are
+ * distributed under license by Red Hat Inc.
+ *
+ * This copyrighted material is made available to anyone wishing to use, modify,
+ * copy, or redistribute it subject to the terms and conditions of the GNU
+ * Lesser General Public License, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this distribution; if not, write to:
+ * Free Software Foundation, Inc.
+ * 51 Franklin Street, Fifth Floor
+ * Boston, MA  02110-1301  USA
+ */
+package org.hibernate.metadata.schema;
+
+import org.hibernate.HibernateException;
+
+/**
+ * Indicates an attempted use of a name that was deemed illegal
+ *
+ * @author Steve Ebersole
+ */
+public class IllegalNameException extends HibernateException {
+	public IllegalNameException(String s) {
+		super( s );
+	}
+}

Modified: sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/InLineView.java
===================================================================
--- sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/InLineView.java	2010-08-19 20:22:48 UTC (rev 20195)
+++ sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/InLineView.java	2010-08-19 21:18:31 UTC (rev 20196)
@@ -32,10 +32,10 @@
  *
  * @author Steve Ebersole
  */
-public class InLineView extends AbstractValueContainer implements ValueContainer {
+public class InLineView extends AbstractTableSpecification implements ValueContainer {
 	private final String select;
 	private final String uniqueValueQualifier;
-	private Set synchronizedTableSpaces = java.util.Collections.EMPTY_SET;
+	private Set<ObjectName> synchronizedTableSpaces = java.util.Collections.emptySet();
 
 	public InLineView(String select, String uniqueValueQualifier) {
 		this.select = select;
@@ -46,22 +46,26 @@
 		return select;
 	}
 
-	public String getUniqueValueQualifier() {
+	public String getLoggableQualifier() {
 		return uniqueValueQualifier;
 	}
 
-	public void addSynchronizedTableSpace(String space) {
-		if ( synchronizedTableSpaces == java.util.Collections.EMPTY_SET ) {
-			synchronizedTableSpaces = new HashSet();
+	public void addSynchronizedTable(String tableName) {
+		addSynchronizedTable( new ObjectName( null, null, tableName ) );
+	}
+
+	public void addSynchronizedTable(ObjectName tableName) {
+		if ( synchronizedTableSpaces.isEmpty() ) {
+			synchronizedTableSpaces = new HashSet<ObjectName>();
 		}
-		synchronizedTableSpaces.add( space );
+		synchronizedTableSpaces.add( tableName );
 	}
 
-	public Set getSpaces() {
+	public Set<ObjectName> getSpaces() {
 		return synchronizedTableSpaces;
 	}
 
-	public String toDebugString() {
+	public String toLoggableString() {
 		return "{inline-view}";
 	}
 }

Modified: sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/ObjectName.java
===================================================================
--- sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/ObjectName.java	2010-08-19 20:22:48 UTC (rev 20195)
+++ sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/ObjectName.java	2010-08-19 21:18:31 UTC (rev 20196)
@@ -23,18 +23,85 @@
  */
 package org.hibernate.metadata.schema;
 
+import org.hibernate.util.StringHelper;
+
 /**
  * Models the qualified name of a database object.
  *
  * @author Steve Ebersole
  */
 public class ObjectName {
-	private final String name;
-	private final String schema;
-	private final String catalog;
+	public static class Identifier {
+		private final String name;
+		private final boolean isQuoted;
+
+		public Identifier(String name, boolean quoted) {
+			if ( StringHelper.isEmpty( name ) ) {
+				throw new IllegalNameException( "Identifier text/name cannot be null" );
+			}
+			this.name = name;
+			isQuoted = quoted;
+		}
+
+		public String getName() {
+			return name;
+		}
+
+		public boolean isQuoted() {
+			return isQuoted;
+		}
+
+		@Override
+		public String toString() {
+			return isQuoted
+					? '`' + getName() + '`'
+					: getName();
+		}
+
+		@Override
+		public boolean equals(Object o) {
+			if ( this == o ) {
+				return true;
+			}
+			if ( o == null || getClass() != o.getClass() ) {
+				return false;
+			}
+
+			Identifier that = (Identifier) o;
+
+			return isQuoted == that.isQuoted
+					&& name.equals( that.name );
+		}
+
+		@Override
+		public int hashCode() {
+			return name.hashCode();
+		}
+	}
+
+	private final Identifier schema;
+	private final Identifier catalog;
+	private final Identifier name;
+
 	private final String identifier;
 	private final int hashCode;
 
+	public ObjectName(Identifier name) {
+		this( null, null, name );
+	}
+
+	public ObjectName(String schemaName, String catalogName, String name) {
+		this( toIdentifier( schemaName ), toIdentifier( catalogName ), toIdentifier( name ) );
+	}
+
+	public static Identifier toIdentifier(String name) {
+		if ( name == null ) {
+			return null;
+		}
+		final String trimmedName = name.trim();
+		return new Identifier( trimmedName, trimmedName.startsWith( "`" ) && trimmedName.endsWith( "`" ) );
+	}
+
 	/**
 	 * Creates a qualified name reference.
 	 *
@@ -42,20 +109,21 @@
 	 * @param catalog The catalog in which the object is defined (optional)
 	 * @param name The name (required)
 	 */
-	public ObjectName(String schema, String catalog, String name) {
-		if ( name == null || name.trim().length() == 0 ) {
-			throw new IllegalArgumentException( "Object name must be specified" );
+	public ObjectName(Identifier schema, Identifier catalog, Identifier name) {
+		if ( name == null ) {
+			// Identifier cannot be constructed with an 'empty' name
+			throw new IllegalNameException( "Object name must be specified" );
 		}
 		this.name = name;
 		this.schema = schema;
 		this.catalog = catalog;
 
-		StringBuffer buff = new StringBuffer( name );
+		StringBuilder buff = new StringBuilder( name.toString() );
 		if ( catalog != null ) {
-			buff.insert( 0, catalog + '.' );
+			buff.insert( 0, catalog.toString() + '.' );
 		}
 		if ( schema != null ) {
-			buff.insert( 0, schema + '.' );
+			buff.insert( 0, schema.toString() + '.' );
 		}
 		this.identifier = buff.toString();
 
@@ -65,15 +133,15 @@
 		this.hashCode = tmpHashCode;
 	}
 
-	public String getSchema() {
+	public Identifier getSchema() {
 		return schema;
 	}
 
-	public String getCatalog() {
+	public Identifier getCatalog() {
 		return catalog;
 	}
 
-	public String getName() {
+	public Identifier getName() {
 		return name;
 	}
 
@@ -81,9 +149,7 @@
 		return identifier;
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	@Override
 	public boolean equals(Object o) {
 		if (this == o) {
 			return true;
@@ -99,22 +165,19 @@
 				&& areEqual( schema, that.schema );
 	}
 
-	private boolean areEqual(String one, String other) {
+	private boolean areEqual(Identifier one, Identifier other) {
 		return one == null
 				? other == null
 				: one.equals( other );
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	@Override
 	public int hashCode() {
 		return hashCode;
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+
+	@Override
 	public String toString() {
 		return "ObjectName{" +
 				"name='" + name + '\'' +

Modified: sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/PrimaryKey.java
===================================================================
--- sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/PrimaryKey.java	2010-08-19 20:22:48 UTC (rev 20195)
+++ sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/PrimaryKey.java	2010-08-19 21:18:31 UTC (rev 20196)
@@ -23,7 +23,6 @@
  */
 package org.hibernate.metadata.schema;
 
-
 /**
  * Models a table's primary key.
  * <p/>

Modified: sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/SimpleValue.java
===================================================================
--- sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/SimpleValue.java	2010-08-19 20:22:48 UTC (rev 20195)
+++ sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/SimpleValue.java	2010-08-19 21:18:31 UTC (rev 20196)
@@ -24,7 +24,7 @@
 package org.hibernate.metadata.schema;
 
 /**
- * TODO : javadoc
+ * Models a basic or simple value.  This is either a {@link Column} or {@link DerivedValue}
  *
  * @author Steve Ebersole
  */
@@ -39,7 +39,7 @@
 	/**
 	 * Set the datatype of this value.
 	 *
-	 * @param datatype
+	 * @param datatype The value's datatype
 	 */
 	public void setDatatype(Datatype datatype);
 }

Modified: sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/Table.java
===================================================================
--- sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/Table.java	2010-08-19 20:22:48 UTC (rev 20195)
+++ sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/Table.java	2010-08-19 21:18:31 UTC (rev 20196)
@@ -31,9 +31,9 @@
  * @author Gavin King
  * @author Steve Ebersole
  */
-public class Table extends AbstractValueContainer implements ValueContainer, Exportable {
+public class Table extends AbstractTableSpecification implements ValueContainer, Exportable {
 	private final ObjectName name;
-	private final Set spaces;
+	private final Set<ObjectName> spaces;
 
 	public Table(ObjectName name) {
 		this.name = name;
@@ -47,7 +47,7 @@
 	/**
 	 * {@inheritDoc}
 	 */
-	public String getUniqueValueQualifier() {
+	public String getLoggableQualifier() {
 		return getObjectName().getIdentifier();
 	}
 
@@ -61,14 +61,14 @@
 	/**
 	 * {@inheritDoc}
 	 */
-	public Set getSpaces() {
+	public Set<ObjectName> getSpaces() {
 		return spaces;
 	}
 
 	/**
 	 * {@inheritDoc}
 	 */
-	public String toDebugString() {
+	public String toLoggableString() {
 		return getObjectName().getIdentifier();
 	}
 

Modified: sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/TableSpecification.java
===================================================================
--- sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/TableSpecification.java	2010-08-19 20:22:48 UTC (rev 20195)
+++ sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/TableSpecification.java	2010-08-19 21:18:31 UTC (rev 20196)
@@ -43,5 +43,5 @@
 	 *
 	 * @return The spaces.
 	 */
-	public Set getSpaces();
+	public Set<ObjectName> getSpaces();
 }

Modified: sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/Tuple.java
===================================================================
--- sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/Tuple.java	2010-08-19 20:22:48 UTC (rev 20195)
+++ sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/Tuple.java	2010-08-19 21:18:31 UTC (rev 20196)
@@ -23,8 +23,6 @@
  */
 package org.hibernate.metadata.schema;
 
-import java.util.Iterator;
-
 /**
  * Models a compound value (a tuple or row-value-constructor is SQL terms).
  * <p/>
@@ -51,13 +49,13 @@
 		return valueContainer;
 	}
 
-	public String getUniqueValueQualifier() {
+	public String getLoggableQualifier() {
 		return name;
 	}
 
-	public String toDebugString() {
-		return getValueContainer().getUniqueValueQualifier() +
-				'.' + getUniqueValueQualifier() +
+	public String toLoggableString() {
+		return getValueContainer().getLoggableQualifier() +
+				'.' + getLoggableQualifier() +
 				"{tuple}";
 	}
 }

Modified: sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/Value.java
===================================================================
--- sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/Value.java	2010-08-19 20:22:48 UTC (rev 20195)
+++ sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/Value.java	2010-08-19 21:18:31 UTC (rev 20196)
@@ -24,8 +24,10 @@
 package org.hibernate.metadata.schema;
 
 /**
- * Models a value within a {@link ValueContainer}.  This will generally be either a
- * {@link Column column} or a {@link DerivedValue derived value}.
+ * Models a value within a {@link ValueContainer}.  This will generally be either a {@link Column column} or a
+ * {@link DerivedValue derived value}, but we also add the notion of {@link Tuple} at this level in the model
+ * because it maps more closely to the java model, because it better conveys intent and because adds richness to the
+ * model.
  *
  * @author Steve Ebersole
  */
@@ -37,5 +39,10 @@
 	 */
 	public ValueContainer getValueContainer();
 
-	public String toDebugString();
+	/**
+	 * Obtain the string representation of this value usable in log statements.
+	 *
+	 * @return The loggable representation
+	 */
+	public String toLoggableString();
 }

Modified: sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/ValueContainer.java
===================================================================
--- sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/ValueContainer.java	2010-08-19 20:22:48 UTC (rev 20195)
+++ sandbox/trunk/new-metadata/src/main/java/org/hibernate/metadata/schema/ValueContainer.java	2010-08-19 21:18:31 UTC (rev 20196)
@@ -24,7 +24,6 @@
 package org.hibernate.metadata.schema;
 
 import java.util.Iterator;
-import java.util.Set;
 
 /**
  * Contract for data containers (what the ANSI SQL spec calls "table specifications") to which we can map
@@ -33,37 +32,52 @@
  * @author Steve Ebersole
  */
 public interface ValueContainer {
-
 	/**
-	 * Adds a value definition to the container.
-	 *
-	 * @param value The value definition
-	 */
-	public void addValue(Value value);
-
-	/**
 	 * Obtain an iterator over this containers current set of value definitions.
 	 *
 	 * @return Iterator over value definitions.
 	 */
-	public Iterator iterateValues();
+	public Iterator<Value> iterateValues();
 
 	/**
 	 * Get a unique identifier which can be used to qualify {@link Value values} belonging to
-	 * this container.  Intended for use in logging.
+	 * this container in logging.
 	 *
 	 * @return The qualifier
 	 */
-	public String getUniqueValueQualifier();
+	public String getLoggableQualifier();
 
-	public String toDebugString();
+	/**
+	 * Obtain the string representation of this value usable in log statements.
+	 *
+	 * @return The loggable representation
+	 */
+	public String toLoggableString();
 
-
-	// value factory methods ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
+	/**
+	 * Factory method for creating a {@link Column} associated with this container.
+	 *
+	 * @param name The column name
+	 *
+	 * @return The generated column
+	 */
 	public Column createColumn(String name);
 
+	/**
+	 * Factory method for creating a {@link DerivedValue} associated with this container.
+	 *
+	 * @param fragment The value expression
+	 *
+	 * @return The generated value.
+	 */
 	public DerivedValue createDerivedValue(String fragment);
 
+	/**
+	 * Factory method for creating a {@link Tuple} associated with this container.
+	 *
+	 * @param name The (logical) tuple name
+	 *
+	 * @return The generated tuple.
+	 */
 	public Tuple createTuple(String name);
 }

Modified: sandbox/trunk/new-metadata/src/test/java/org/hibernate/metadata/schema/ObjectNameTests.java
===================================================================
--- sandbox/trunk/new-metadata/src/test/java/org/hibernate/metadata/schema/ObjectNameTests.java	2010-08-19 20:22:48 UTC (rev 20195)
+++ sandbox/trunk/new-metadata/src/test/java/org/hibernate/metadata/schema/ObjectNameTests.java	2010-08-19 21:18:31 UTC (rev 20196)
@@ -33,17 +33,17 @@
 public class ObjectNameTests extends TestCase {
 	public void testMissingName() {
 		try {
-			new ObjectName( null, null, null );
+			new ObjectName( (String)null, null, null );
 			fail();
 		}
-		catch ( IllegalArgumentException ignore ) {
+		catch ( IllegalNameException ignore ) {
 		}
 
 		try {
 			new ObjectName( "schema", "catalog", null );
 			fail();
 		}
-		catch ( IllegalArgumentException ignore ) {
+		catch ( IllegalNameException ignore ) {
 		}
 	}
 



More information about the hibernate-commits mailing list