INRIA / INRIA/spoon

[Information] How to differentiate methods calls in java code while method overloading in same class

Open
#5,478 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
2k
Forks
392
Avg merge
11h 24m
Merged PRs (30d)
36

Description

Hello team,
I want to extract the different method calls in the same class file when that method is overloaded.
I am attaching the code example below for the reference,
```
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.HashMap;
import java.util.List;
import java.util.Scanner;

import oracle.jdbc.OracleConnection;
import oracle.jdbc.pool.OracleDataSource;

public class MethodOverloadExample {

@Override
public List searchTeam(IpTeam ipTeam, int maxResult)throws DataAccessException {
Session session = getSessionFactory().getCurrentSession();
List ipTeamList = new ArrayList();
StringBuffer sql = new StringBuffer();
sql.append(" SELECT ");
sql.append(" A.TEAM_ID,A.TEAM_NAME,A.TEAM_DESC,A.TIER2_TEAM,A.UPDATE_BY,A.UPDATE_DATE,NVL(B.TOTAL_MEMBER,0) TOTAL_MEMBER ");
sql.append(" FROM IP_TEAM A, ");
sql.append(" (SELECT TEAM_ID, TEAM_NAME,COUNT(1) TOTAL_MEMBER ");
sql.append(" FROM IP_USER ");
sql.append(" WHERE TEAM_ID IS NOT NULL ");
sql.append(" GROUP BY TEAM_ID, TEAM_NAME) B ");
sql.append(" WHERE A.TEAM_ID = B.TEAM_ID(+) ");
if(!"".equals(ipTeam.getTeamName()) && ipTeam.getTeamName()!=null){
sql.append(" AND upper(A.TEAM_NAME) LIKE '%"+ipTeam.getTeamName().toUpperCase()+"%' ");
}
sql.append(" ORDER BY A.TEAM_ID ");

List dataList = session.createSQLQuery(sql.toString()).list();
Iterator iter = dataList.iterator();
IpTeam objIpTeam;
while(iter.hasNext()) {
Object[] obj = (Object[])iter.next();
objIpTeam = new IpTeam();
objIpTeam.setTeamId((String)obj[0]);
objIpTeam.setTeamName((String)obj[1]);
objIpTeam.setTeamDesc((String)obj[2]);
objIpTeam.setTier2Team((String)obj[3]);
objIpTeam.setLastUpdBy((String)obj[4]);
objIpTeam.setLastUpd((Date)obj[5]);
objIpTeam.setTotalMember((BigDecimal)obj[6]);

ipTeamList.add(objIpTeam);
}

return ipTeamList;
}

@Override
public List searchTeam(IpTeam ipTeam)throws DataAccessException {
Session session = getSessionFactory().getCurrentSession();
List ipTeamList = new ArrayList();
StringBuffer sql = new StringBuffer();
sql.append(" SELECT ");
sql.append(" A.TEAM_ID,A.TEAM_NAME,A.TEAM_DESC,A.TIER2_TEAM,A.UPDATE_BY,A.UPDATE_DATE,NVL(B.TOTAL_MEMBER,0) TOTAL_MEMBER ");
sql.append(" FROM IP_TEAM A, ");
sql.append(" (SELECT TEAM_ID, TEAM_NAME,COUNT(1) TOTAL_MEMBER ");
sql.append(" FROM IP_USER ");
sql.append(" WHERE TEAM_ID IS NOT NULL ");
sql.append(" GROUP BY TEAM_ID, TEAM_NAME) B ");
sql.append(" WHERE A.TEAM_ID = B.TEAM_ID(+) ");
sql.append(" ORDER BY A.TEAM_ID ");

List dataList = session.createSQLQuery(sql.toString()).list();
Iterator iter = dataList.iterator();
IpTeam objIpTeam;
while(iter.hasNext()) {
Object[] obj = (Object[])iter.next();
objIpTeam = new IpTeam();
objIpTeam.setTeamId((String)obj[0]);
objIpTeam.setTeamName((String)obj[1]);
objIpTeam.setTeamDesc((String)obj[2]);
objIpTeam.setTier2Team((String)obj[3]);
objIpTeam.setLastUpdBy((String)obj[4]);
objIpTeam.setLastUpd((Date)obj[5]);
objIpTeam.setTotalMember((BigDecimal)obj[6]);

ipTeamList.add(objIpTeam);
}

return ipTeamList;
}
}
```
Let's say I have code like this and I am calling searchTeam() method with each different set of arguments, I want to know how I can differentiate using spoon based on the CtMethod parameters list or the return data type. Basically, I want to handle a scenario using Spoon when there is a method call happening in the same class and if the method is overloaded, how can I handle this?

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.