/** {@inheritDoc} */ @Override Object getProperty(SqlProcessContext ctx, Object obj, String item) { String prefix = null; String suffix = null; String name = null; int ix = item.indexOf("?"); if (ix >= 0) { prefix = item.substring(0, ix); suffix = item.substring(ix + 1); name = prefix + suffix; } else { ix = item.indexOf("@"); if (ix >= 0) { prefix = item.substring(0, ix); suffix = SqlProcessContext.getFeature(item.substring(ix + 1)); name = prefix + suffix; } else { name = item; } } Object result = (BeanUtils.checkProperty(obj, name)) ? BeanUtils.getProperty(obj, name) : null; if (result != null || prefix == null || suffix == null) return result; suffix = SqlUtils.firstLowerCase(suffix); Object o = (BeanUtils.checkProperty(obj, suffix)) ? BeanUtils.getProperty(obj, suffix) : null; if (o == null || !(o instanceof Map)) { suffix = SqlProcessContext.getFeature(SqlFeature.OPERATOR_ATTRIBUTE_IN_MAP); o = (BeanUtils.checkProperty(obj, suffix)) ? BeanUtils.getProperty(obj, suffix) : null; if (o == null || !(o instanceof Map)) { return null; } } Map map = (Map) o; return map.get(prefix); }
SqlEngineFactory getEngineFactory(String name) { SqlProcessContext.nullFeatures(); SqlProcessContext.nullTypeFactory(); SqlEngineFactory factory; factory = new SqlProcessorLoader( metaStatements, JdbcTypeFactory.getInstance(), SimpleSqlPluginFactory.getInstance(), dbType, null, customTypes, name); assertNotNull(factory); return factory; }