@Override
public Optional<Sql> compute(Method method , Neo4jDaoInfo neo4jDaoInfo , Object... values) {
final MethodKey key = new MethodKey();
key.setMethodName(method.getName());
key.setParameTypes(method.getParameterTypes());
SqlMethod sqlMethod = neo4jDaoInfo.getSqlMethods().get(key);
String sql = sqlMethod.getSql();
if(StringOperation.isTrimEmptyOrNull(sql)) return next.compute(method , neo4jDaoInfo , values);
SqlMethodParam[] sqlMethodParams = sqlMethod.getSqlMethodParams();
Map<String , Object> params = new HashMap<>();
Pageable<?> pageable = null;
for(int i=0; i<sqlMethodParams.length; i++) {
String paramKey;
Param param = sqlMethodParams[i].getParam();
if(param != null) paramKey = param.value();
else paramKey = sqlMethodParams[i].getNativeName();
Object value = values[i];
params.put(paramKey , value);
if(value instanceof Pageable) pageable = (Pageable<?>) value;
}
if(SqlComputes.isPageReturn(sqlMethod) && pageable != null) sql = sql + SqlComputes.pageable(pageable);
return sqlFormatter.format(sql , params);
}