1 package org.synchronoss.cpo.jdbc;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 import java.lang.reflect.InvocationTargetException;
26 import org.slf4j.Logger;
27 import org.slf4j.LoggerFactory;
28 import org.synchronoss.cpo.core.CpoException;
29 import org.synchronoss.cpo.core.meta.domain.CpoAttribute;
30 import org.synchronoss.cpo.core.transform.CpoTransform;
31 import org.synchronoss.cpo.jdbc.meta.JdbcMethodMapEntry;
32 import org.synchronoss.cpo.jdbc.transform.JdbcCpoTransform;
33
34
35
36
37
38
39 public class JdbcPreparedStatementCpoData extends AbstractStatementCpoData {
40
41 private static final Logger logger = LoggerFactory.getLogger(JdbcPreparedStatementCpoData.class);
42 private JdbcPreparedStatementFactory cpoStatementFactory = null;
43
44
45
46
47
48
49
50
51 public JdbcPreparedStatementCpoData(
52 JdbcPreparedStatementFactory cpoStatementFactory, CpoAttribute cpoAttribute, int index) {
53 super(cpoAttribute, index);
54 this.cpoStatementFactory = cpoStatementFactory;
55 }
56
57 @Override
58 public void invokeSetter(Object instanceObject) throws CpoException {
59 JdbcMethodMapEntry<?, ?> methodMapEntry = getJdbcMethodMapEntry(instanceObject);
60 Logger localLogger =
61 instanceObject == null ? logger : LoggerFactory.getLogger(instanceObject.getClass());
62 try {
63 Object param = transformOut(getCpoAttribute().invokeGetter(instanceObject));
64 localLogger.debug("{}={}", getCpoAttribute().getDataName(), param);
65 methodMapEntry
66 .getBsSetter()
67 .invoke(cpoStatementFactory.getPreparedStatement(), getIndex(), param);
68 } catch (InvocationTargetException | IllegalAccessException e) {
69 throw new CpoException(
70 "Error Invoking Jdbc Method: "
71 + getCpoAttribute().getDataName()
72 + ":"
73 + getCpoAttribute().getJavaName()
74 + ":"
75 + methodMapEntry.getBsSetter().getName()
76 + ":",
77 e);
78 }
79 }
80
81 @Override
82 public Object transformOut(Object attributeObject) throws CpoException {
83 Object retObj = attributeObject;
84 CpoTransform cpoTransform = getCpoAttribute().getCpoTransform();
85
86 if (cpoTransform != null) {
87 if (cpoTransform instanceof JdbcCpoTransform) {
88 retObj =
89 ((JdbcCpoTransform) cpoTransform).transformOut(cpoStatementFactory, attributeObject);
90 } else {
91 retObj = cpoTransform.transformOut(attributeObject);
92 }
93 }
94 return retObj;
95 }
96 }