File path: /hibernate-distribution-3.3.2.GA/project/core/src/main/java/org/hibernate/persister/entity/AbstractEntityPersister.java | File path: /hibernate-distribution-3.3.2.GA/project/core/src/main/java/org/hibernate/persister/entity/AbstractEntityPersister.java | |||
Method name: int dehydrate(Serializable, Object[], Object, boolean[], boolean[][], int, PreparedStatement, SessionImplementor, int)
|
Method name: void delete(Serializable, Object, int, Object, String, SessionImplementor, Object[])
|
|||
Number of AST nodes: 4 | Number of AST nodes: 4 | |||
1 | for ( int i = 0; i < entityMetamodel.getPropertySpan(); i++ ) {↵ | 1 | if ( i↵ | |
2 | if ( includeProperty[i] && isPropertyOfTable( i, j ↵ | 2 | sPropertyOfTable( i, j ) && versionability[i] ) {↵ | |
3 | // this property belongs to the table and it is not specifically↵ | |||
4 | // excluded from optimistic locking by optimistic-lock="false"↵ | |||
3 | ) ) {↵ | 5 | boolean[] settable = types[i].toColumnNullness( loadedState[i], getFactory() );↵ | |
4 | getPropertyTypes()[i].nullSafeSet( ps, fields[i], index, includeColumns[i], session );↵ | 6 | types[i].nullSafeSet( ↵ | |
5 | //index += getPropertyColumnSpan( i );↵ | |||
6 | index += ArrayHelper.countTrue( includeColumns[i] ); //TODO: this is kinda slow...↵ | 7 | delete, loadedState[i], index, settable, session );↵ | |
8 | index += ArrayHelper.countTrue( settable );↵ | |||
7 | }↵ | 9 | ↵ | |
8 | } | 10 | } | |
See real code fragment | See real code fragment |
Number of common nesting structure subtrees | 1 |
Number of refactorable cases | 0 |
Number of non-refactorable cases | 1 |
Time elapsed for finding largest common nesting structure subtrees (ms) | 0.4 |
Clones location | Clones are declared in the same class |
Number of node comparisons | 13 |
Number of mapped statements | 3 |
Number of unmapped statements in the first code fragment | 0 |
Number of unmapped statements in the second code fragment | 1 |
Time elapsed for statement mapping (ms) | 2.5 |
Clone type | Type 3 |
ID | Statement | ID | Statement | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
4 | if (includeProperty[i] && isPropertyOfTable(i, j)) |
| 35 | if (isPropertyOfTable(i, j) && versionability[i]) | |||||||||||||||||||
|
| 36 | boolean[] settable = types[i].toColumnNullness(loadedState[i], getFactory()); | ||||||||||||||||||||
5 | getPropertyTypes()[i].nullSafeSet(ps, fields[i], index, includeColumns[i], session); |
| 37 | types[i].nullSafeSet(delete, loadedState[i], index, settable, session); | |||||||||||||||||||
6 | index += ArrayHelper.countTrue(includeColumns[i]); |
| 38 | index += ArrayHelper.countTrue(settable); |
Row | Violation |
---|---|
1 | Unmatched statement boolean[] settable=types[i].toColumnNullness(loadedState[i],getFactory()); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted |