@Override @SuppressWarnings("unchecked") public Iterator<Selectable> getColumnIterator() { Iterator[] iters = new Iterator[ getPropertySpan() ]; Iterator iter = getPropertyIterator(); int i=0; while ( iter.hasNext() ) { iters[i++] = ( (Property) iter.next() ).getColumnIterator(); } return new JoinedIterator( iters ); }
private static void applyMax(Property property, ConstraintDescriptor<?> descriptor, Dialect dialect) { if ( Max.class.equals( descriptor.getAnnotation().annotationType() ) ) { @SuppressWarnings("unchecked") ConstraintDescriptor<Max> maxConstraint = (ConstraintDescriptor<Max>) descriptor; long max = maxConstraint.getAnnotation().value(); @SuppressWarnings("unchecked") final Iterator<Selectable> itor = property.getColumnIterator(); if ( itor.hasNext() ) { final Selectable selectable = itor.next(); if ( Column.class.isInstance( selectable ) ) { Column col = (Column) selectable; String checkConstraint = col.getQuotedName( dialect ) + "<=" + max; applySQLCheck( col, checkConstraint ); } } } }
private static void applySize(Property property, ConstraintDescriptor<?> descriptor, PropertyDescriptor propertyDescriptor) { if ( Size.class.equals( descriptor.getAnnotation().annotationType() ) && String.class.equals( propertyDescriptor.getElementClass() ) ) { @SuppressWarnings("unchecked") ConstraintDescriptor<Size> sizeConstraint = (ConstraintDescriptor<Size>) descriptor; int max = sizeConstraint.getAnnotation().max(); @SuppressWarnings("unchecked") final Iterator<Selectable> itor = property.getColumnIterator(); if ( itor.hasNext() ) { final Selectable selectable = itor.next(); Column col = (Column) selectable; if ( max < Integer.MAX_VALUE ) { col.setLength( max ); } } } }
private boolean propertyIteratorContainsColumn(Iterator propertyIterator, Column column) { for ( Iterator it = propertyIterator; it.hasNext(); ) { final Property property = (Property) it.next(); for ( Iterator<Selectable> selectableIterator = property.getColumnIterator(); selectableIterator.hasNext(); ) { final Selectable selectable = selectableIterator.next(); if ( column.equals( selectable ) ) { final Column iteratedColumn = (Column) selectable; if ( column.getValue().getTable().equals( iteratedColumn.getValue().getTable() ) ) { return true; } } } } return false; }
protected void checkPropertyColumnDuplication(Set distinctColumns, Iterator properties) throws MappingException { while ( properties.hasNext() ) { Property prop = (Property) properties.next(); if ( prop.getValue() instanceof Component ) { //TODO: remove use of instanceof! Component component = (Component) prop.getValue(); checkPropertyColumnDuplication( distinctColumns, component.getPropertyIterator() ); } else { if ( prop.isUpdateable() || prop.isInsertable() ) { checkColumnDuplication( distinctColumns, prop.getColumnIterator() ); } } } }
@SuppressWarnings({"unchecked"}) @Test public void testJoinColumnName() { Iterator<Column> columns = metadata().getEntityBinding( "org.hibernate.envers.test.integration.naming.JoinNamingRefIngEntity_AUD" ).getProperty( "reference_id" ).getColumnIterator(); assertTrue( columns.hasNext() ); assertEquals( "jnree_column_reference", columns.next().getName() ); assertFalse( columns.hasNext() ); } }
@SuppressWarnings({"unchecked"}) @Test public void testJoinColumnNames() { Iterator<Column> columns = metadata().getEntityBinding( "org.hibernate.envers.test.integration.naming.ids.JoinMulIdNamingRefIngEntity_AUD" ).getProperty( "reference_id1" ).getColumnIterator(); assertTrue( columns.hasNext() ); assertEquals( "ID1_reference", columns.next().getName() ); assertFalse( columns.hasNext() ); columns = metadata().getEntityBinding( "org.hibernate.envers.test.integration.naming.ids.JoinMulIdNamingRefIngEntity_AUD" ).getProperty( "reference_id2" ).getColumnIterator(); assertTrue( columns.hasNext() ); assertEquals( "ID2_reference", columns.next().getName() ); assertFalse( columns.hasNext() ); } }
@Test public void testNotNullOnlyAppliedIfEmbeddedIsNotNullItself() throws Exception { PersistentClass classMapping = metadata().getEntityBinding( Tv.class.getName() ); Property property = classMapping.getProperty( "tuner.frequency" ); Column serialColumn = (Column) property.getColumnIterator().next(); assertEquals( "Validator annotations are applied on tuner as it is @NotNull", false, serialColumn.isNullable() ); property = classMapping.getProperty( "recorder.time" ); serialColumn = (Column) property.getColumnIterator().next(); assertEquals( "Validator annotations are applied on tuner as it is @NotNull", true, serialColumn.isNullable() ); }
@Test public void testDDLDisabled() { PersistentClass classMapping = metadata().getEntityBinding( Address.class.getName() ); Column countryColumn = (Column) classMapping.getProperty( "country" ).getColumnIterator().next(); assertTrue( "DDL constraints are applied", countryColumn.isNullable() ); }
@Test public void testSingleTableAvoidNotNull() throws Exception { PersistentClass classMapping = metadata().getEntityBinding( Rock.class.getName() ); Column serialColumn = (Column) classMapping.getProperty( "bit" ).getColumnIterator().next(); assertTrue( "Notnull should not be applied on single tables", serialColumn.isNullable() ); }
@Test public void testApplyOnIdColumn() throws Exception { PersistentClass classMapping = metadata().getEntityBinding( Tv.class.getName() ); Column serialColumn = (Column) classMapping.getIdentifierProperty().getColumnIterator().next(); assertEquals( "Validator annotation not applied on ids", 2, serialColumn.getLength() ); }
@Test public void testApplyOnManyToOne() throws Exception { PersistentClass classMapping = metadata().getEntityBinding( TvOwner.class.getName() ); Column serialColumn = (Column) classMapping.getProperty( "tv" ).getColumnIterator().next(); assertEquals( "Validator annotations not applied on associations", false, serialColumn.isNullable() ); }
@Test public void testDatabaseColumnNames() { PersistentClass classMapping = metadata().getEntityBinding( Customers.class.getName() ); Column stateColumn = (Column) classMapping.getProperty( "specified_column" ).getColumnIterator().next(); assertEquals( "CN_specified_column", stateColumn.getName() ); }
@Test public void testBasicDDL() { PersistentClass classMapping = metadata().getEntityBinding( Address.class.getName() ); Column stateColumn = (Column) classMapping.getProperty( "state" ).getColumnIterator().next(); assertEquals( stateColumn.getLength(), 3 ); Column zipColumn = (Column) classMapping.getProperty( "zip" ).getColumnIterator().next(); assertEquals( zipColumn.getLength(), 5 ); assertFalse( zipColumn.isNullable() ); }
@Test @TestForIssue( jiraKey = "HHH-5281" ) public void testLengthConstraint() throws Exception { PersistentClass classMapping = metadata().getEntityBinding( Tv.class.getName() ); Column modelColumn = (Column) classMapping.getProperty( "model" ).getColumnIterator().next(); assertEquals( modelColumn.getLength(), 5 ); }
@Test @TestForIssue(jiraKey = "HHH-5848") public void testDatabaseTableNames() { PersistentClass classMapping = metadata().getEntityBinding( Item.class.getName() ); Column secTabColumn = (Column) classMapping.getProperty( "specialPrice" ).getColumnIterator().next(); assertEquals( "TAB_ITEMS_SEC", secTabColumn.getValue().getTable().getName() ); Column tabColumn = (Column) classMapping.getProperty( "price" ).getColumnIterator().next(); assertEquals( "TAB_ITEMS", tabColumn.getValue().getTable().getName() ); } }
@Override public void doTestWork(StandardServiceRegistry ssr) { MetadataImplementor metadata = (MetadataImplementor) new MetadataSources( ssr ) .addAnnotatedClass( E1.class ) .buildMetadata(); metadata.validate(); PersistentClass entityBinding = metadata.getEntityBinding( E1.class.getName() ); org.hibernate.mapping.Column idColumn = extractColumn( entityBinding.getIdentifier().getColumnIterator() ); assertTrue( isQuoted( idColumn.getSqlType(), ssr ) ); org.hibernate.mapping.Column otherColumn = extractColumn( entityBinding.getProperty( "other" ).getColumnIterator() ); assertTrue( isQuoted( otherColumn.getSqlType(), ssr ) ); } }
@Override public void doTestWork(StandardServiceRegistry ssr) { MetadataImplementor metadata = (MetadataImplementor) new MetadataSources( ssr ) .addAnnotatedClass( E2.class ) .buildMetadata(); metadata.validate(); PersistentClass entityBinding = metadata.getEntityBinding( E2.class.getName() ); org.hibernate.mapping.Column idColumn = extractColumn( entityBinding.getIdentifier().getColumnIterator() ); assertTrue( isQuoted( idColumn.getSqlType(), ssr ) ); org.hibernate.mapping.Column otherColumn = extractColumn( entityBinding.getProperty( "other" ).getColumnIterator() ); assertTrue( isQuoted( otherColumn.getSqlType(), ssr ) ); } }
@Override public void doTestWork(StandardServiceRegistry ssr) { MetadataImplementor metadata = (MetadataImplementor) new MetadataSources( ssr ) .addAnnotatedClass( E1.class ) .buildMetadata(); metadata.validate(); PersistentClass entityBinding = metadata.getEntityBinding( E1.class.getName() ); org.hibernate.mapping.Column idColumn = extractColumn( entityBinding.getIdentifier().getColumnIterator() ); assertTrue( isQuoted( idColumn.getSqlType(), ssr ) ); org.hibernate.mapping.Column otherColumn = extractColumn( entityBinding.getProperty( "other" ).getColumnIterator() ); assertTrue( isQuoted( otherColumn.getSqlType(), ssr ) ); } }
@Override public void doTestWork(StandardServiceRegistry ssr) { MetadataImplementor metadata = (MetadataImplementor) new MetadataSources( ssr ) .addAnnotatedClass( E2.class ) .buildMetadata(); metadata.validate(); PersistentClass entityBinding = metadata.getEntityBinding( E2.class.getName() ); org.hibernate.mapping.Column idColumn = extractColumn( entityBinding.getIdentifier().getColumnIterator() ); assertTrue( !isQuoted( idColumn.getSqlType(), ssr ) ); org.hibernate.mapping.Column otherColumn = extractColumn( entityBinding.getProperty( "other" ).getColumnIterator() ); assertTrue( !isQuoted( otherColumn.getSqlType(), ssr ) ); } }