File path: /hibernate-distribution-3.3.2.GA/project/core/src/main/java/org/hibernate/type/DbTimestampType.java | File path: /hibernate-distribution-3.3.2.GA/project/core/src/main/java/org/hibernate/type/DbTimestampType.java | |||
Method name: Timestamp usePreparedStatement(String, SessionImplementor)
|
Method name: Timestamp useCallableStatement(String, SessionImplementor)
|
|||
Number of AST nodes: 9 | Number of AST nodes: 9 | |||
1 | PreparedStatement ps = null;↵ | 1 | CallableStatement cs = null;↵ | |
2 | try {↵ | 2 | try {↵ | |
3 | ps = session.getBatcher().prepareStatement( timestampSelectString );↵ | 3 | cs = session.getBatcher().prepareCallableStatement( ↵ | |
4 | ResultSet rs = session.getBatcher().getResultSet( ps↵ | 4 | callString );↵ | |
5 | );↵ | 5 | cs.registerOutParameter( 1, java.sql.Types.TIMESTAMP );↵ | |
6 | rs.next();↵ | 6 | cs.execute();↵ | |
7 | Timestamp ts = rs.getTimestamp( 1 );↵ | 7 | Timestamp ts = cs.getTimestamp( 1 );↵ | |
8 | if ( log.isTraceEnabled() ) {↵ | 8 | if ( log.isTraceEnabled() ) {↵ | |
9 | log.trace(↵ | 9 | log.trace(↵ | |
10 | "current timestamp retreived from db : " + ts +↵ | 10 | "current timestamp retreived from db : " + ts +↵ | |
11 | " (nanos=" + ts.getNanos() +↵ | 11 | " (nanos=" + ts.getNanos() +↵ | |
12 | ", time=" + ts.getTime() + ")"↵ | 12 | ", time=" + ts.getTime() + ")"↵ | |
13 | );↵ | 13 | );↵ | |
14 | }↵ | 14 | }↵ | |
15 | return ts;↵ | 15 | return ts;↵ | |
16 | }↵ | 16 | }↵ | |
17 | catch( SQLException sqle ) {↵ | 17 | catch( SQLException sqle ) {↵ | |
18 | throw JDBCExceptionHelper.convert(↵ | 18 | throw JDBCExceptionHelper.convert(↵ | |
19 | session.getFactory().getSQLExceptionConverter(),↵ | 19 | session.getFactory().getSQLExceptionConverter(),↵ | |
20 | sqle,↵ | 20 | sqle,↵ | |
21 | "could not select current db timestamp",↵ | 21 | "could not call current db timestamp function",↵ | |
22 | timestampSelectString↵ | 22 | callString↵ | |
23 | );↵ | 23 | );↵ | |
24 | }↵ | 24 | }↵ | |
25 | finally {↵ | 25 | finally {↵ | |
26 | if ( ps != null ) {↵ | 26 | if ( cs != null ) {↵ | |
27 | try {↵ | 27 | try {↵ | |
28 | session.getBatcher().closeStatement( ps );↵ | 28 | session.getBatcher().closeStatement( cs );↵ | |
29 | }↵ | 29 | }↵ | |
30 | catch( SQLException sqle ) {↵ | 30 | catch( SQLException sqle ) {↵ | |
31 | log.warn( "unable to clean up prepared statement", sqle );↵ | 31 | log.warn( "unable to clean up callable statement", sqle );↵ | |
32 | }↵ | 32 | }↵ | |
33 | }↵ | 33 | }↵ | |
34 | } | 34 |
| |
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.6 |
Clones location | Clones are declared in the same class |
Number of node comparisons | 41 |
Number of mapped statements | 7 |
Number of unmapped statements in the first code fragment | 2 |
Number of unmapped statements in the second code fragment | 2 |
Time elapsed for statement mapping (ms) | 20.8 |
Clone type | Type 2 |
ID | Statement | ID | Statement | |||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | PreparedStatement ps = null; |
| 1 | CallableStatement cs = null; | ||||||||||||||||||||||||||||||||
2 | try |
| 2 | try | ||||||||||||||||||||||||||||||||
3 | ps = session.getBatcher().prepareStatement(timestampSelectString); |
| 3 | cs = session.getBatcher().prepareCallableStatement(callString); | ||||||||||||||||||||||||||||||||
|
| 4 | cs.registerOutParameter(1, java.sql.Types.TIMESTAMP); | |||||||||||||||||||||||||||||||||
4 | ResultSet rs = session.getBatcher().getResultSet(ps); |
| | |||||||||||||||||||||||||||||||||
|
| 5 | cs.execute(); | |||||||||||||||||||||||||||||||||
5 | rs.next(); |
| | |||||||||||||||||||||||||||||||||
6 | Timestamp ts = rs.getTimestamp(1); |
| 6 | Timestamp ts = cs.getTimestamp(1); | ||||||||||||||||||||||||||||||||
7 | if (log.isTraceEnabled()) | 7 | if (log.isTraceEnabled()) | |||||||||||||||||||||||||||||||||
8 | log.trace("current timestamp retreived from db : " + ts + " (nanos=" + ts.getNanos() + ", time=" + ts.getTime() + ")"); | 8 | log.trace("current timestamp retreived from db : " + ts + " (nanos=" + ts.getNanos() + ", time=" + ts.getTime() + ")"); | |||||||||||||||||||||||||||||||||
9 | return ts; | 9 | return ts; |
Row | Violation |
---|---|
1 | Expression ps cannot be parameterized, because it has dependencies to/from statements that will be extracted |
2 | Expression cs cannot be parameterized, because it has dependencies to/from statements that will be extracted |
3 | Expression ps cannot be parameterized, because it has dependencies to/from statements that will be extracted |
4 | Expression cs cannot be parameterized, because it has dependencies to/from statements that will be extracted |
5 | Expression ps cannot be parameterized, because it has dependencies to/from statements that will be extracted |
6 | Expression cs cannot be parameterized, because it has dependencies to/from statements that will be extracted |
7 | Expression session.getBatcher().prepareStatement(timestampSelectString) cannot be parameterized, because it has dependencies to/from statements that will be extracted |
8 | Expression session.getBatcher().prepareCallableStatement(callString) cannot be parameterized, because it has dependencies to/from statements that will be extracted |
9 | Unmatched statement cs.registerOutParameter(1,java.sql.Types.TIMESTAMP); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted |
10 | Unmatched statement cs.registerOutParameter(1,java.sql.Types.TIMESTAMP); cannot be moved before or after the extracted code, because it throws exception(s) that should be caught by a try block that will be extracted |
11 | Unmatched statement ResultSet rs=session.getBatcher().getResultSet(ps); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted |
12 | Unmatched statement ResultSet rs=session.getBatcher().getResultSet(ps); cannot be moved before or after the extracted code, because it throws exception(s) that should be caught by a try block that will be extracted |
13 | Unmatched statement cs.execute(); cannot be moved before or after the extracted code, because it has dependencies to/from statements that will be extracted |
14 | Unmatched statement cs.execute(); cannot be moved before or after the extracted code, because it throws exception(s) that should be caught by a try block that will be extracted |
15 | Unmatched statement rs.next(); cannot be moved before or after the extracted code, because it throws exception(s) that should be caught by a try block that will be extracted |
16 | Expression rs cannot be parameterized, because it has dependencies to/from statements that will be extracted |
17 | Expression cs cannot be parameterized, because it has dependencies to/from statements that will be extracted |
18 | Type java.sql.ResultSet of variable rs does not match with type java.sql.CallableStatement of variable cs |
19 | Clone fragment #1 returns variable ps with type java.sql.PreparedStatement , while Clone fragment #2 returns variable cs with type java.sql.CallableStatement |