Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Hibernate OGM, Domain model persistence for NoSQL datastores
   *
   * License: GNU Lesser General Public License (LGPL), version 2.1 or later
   * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
   */
  package org.hibernate.ogm.type.impl;
  
  import java.util.Arrays;
 

Author(s):
Emmanuel Bernard
 
 public class ComponentType extends GridTypeDelegatingToCoreType implements GridType {
 	private final int propertySpan;
 	private final GridType[] propertyTypes;
 
 	public ComponentType(org.hibernate.type.ComponentType componentTypeTypeTranslator typeTranslator) {
 		supercomponentType );
 		this. = componentType;
 		this. = componentType.getPropertyNames().length;
 		final Type[] coreSubtypes = componentType.getSubtypes();
 		for ( int i = 0 ; i <  ; i++ ) {
 			this.[i] = typeTranslator.getTypecoreSubtypes[i] );
 		}
 	}
 
 	public Object nullSafeGet(Tuple rsString[] namesSessionImplementor sessionObject owner)
 			throws HibernateException {
 		return resolvehydratersnamessessionowner ), sessionowner ) ;
 	}
 
 	public Object nullSafeGet(Tuple rsString nameSessionImplementor sessionObject owner)
 			throws HibernateException {
 		return nullSafeGetrsnew String[] {name}, sessionowner );
 	}
 
 	public void nullSafeSet(Tuple resultsetObject valueString[] namesboolean[] settableSessionImplementor session)
 			throws HibernateException {
 		Object[] subvalues = nullSafeGetValuesvalue.getEntityMode() );
 		//TODO in the original componentType begin and loc are different (namely begin only counts settable slots
 		//I don't think that's relevant for us
 		int columnCurrentIndex = 0;
 		for ( int i = 0; i < i++ ) {
 			int columnSpanOnProperty = [i].getColumnSpansession.getFactory() );
 			if ( columnSpanOnProperty == 0 ) {
 				//no-op
 			}
 			else if ( columnSpanOnProperty == 1 ) {
 				if ( settable[columnCurrentIndex] ) {
 					[i].nullSafeSetresultsetsubvalues[i], new String[] { names[columnCurrentIndex] }, session );
 				}
 			}
 			else {
 				final boolean[] subsettable = new boolean[columnSpanOnProperty];
 				System.arraycopysettablecolumnCurrentIndexsubsettable, 0, columnSpanOnProperty );
 				final String[] subnames = new String[columnSpanOnProperty];
 				System.arraycopynamescolumnCurrentIndexsubnames, 0, columnSpanOnProperty );
 				[i].nullSafeSetresultsetsubvalues[i], subnamessubsettablesession );
 			}
 			columnCurrentIndex += columnSpanOnProperty;
 		}
 	}
 
 	public void nullSafeSet(Tuple resultsetObject valueString[] namesSessionImplementor session)
 			throws HibernateException {
 		final boolean[] trueSettable = new boolean[names.length];
 		Arrays.filltrueSettabletrue);
 		nullSafeSetresultsetvaluenamestrueSettablesession );
 	}
 
 	public Object hydrate(Tuple rsString[] namesSessionImplementor sessionObject owner)
 			throws HibernateException {
 		int begin = 0;
 		boolean notNull = false;
 		Object[] values = new Object[];
 		for ( int i = 0; i < i++ ) {
 			int length = [i].getColumnSpansession.getFactory() );
 			String[] range = ArrayHelper.slicenamesbeginlength ); //cache this
 			Object val = [i].hydratersrangesessionowner );
 			if ( val == null ) {
 				if ( .isKey() ) {
 					return null//different nullability rules for pk/fk
				}
			}
			else {
				notNull = true;
			}
			values[i] = val;
			begin += length;
		}
		return notNull ? values : null;
	}
	//utility methods
	private Object[] nullSafeGetValues(Object valueEntityMode entityModethrows HibernateException {
		if ( value == null ) {
			return new Object[];
		}
		else {
			return .getPropertyValuesvalueentityMode );
		}
	}
New to GrepCode? Check out our FAQ X