-2
This My DAOImple class ::::如何优化代码以摆脱我所有的其他多种条件?
这里我有两个下拉框像 1'st框选项是所有,在池中,池外。二维框选项为全部,活动,非活动,冻结,删除,删除。
public class FleetDetailsDAOImpl22 extends CustomJdbcDaoSupport implements FleetDetailsDAO {
@Autowired
private DataManager dataManager;
/** This method is called for getting all the vessels. */
/**
* @param vesselStatus
* @param poolStatus
* @param poolid
*/
@Override
public List<FleetDetails> getFleetDetails(String vesselStatus,
String poolStatus, int poolid, String fromDate, String toDate)throws CustomException {
List<FleetDetails> fleetList =new ArrayList<FleetDetails>();
String poolStatusValue = null;
String vesselStatusValue = null;
String displayFlag = null;
/*---check for poolStatus---------*/
if(poolStatus.equals("yes")) {
poolStatusValue = "Y";
}
if(poolStatus.equals("no")) {
poolStatusValue = "N";
}
if(poolStatus.equals("all")) {
poolStatusValue = "ALL";
}
/*---check for vessel status---------*/
if(vesselStatus.equals("active")) {
vesselStatusValue = "Y";
displayFlag = "Y";
}
if(vesselStatus.equals("inactive")) {
vesselStatusValue = "N";
displayFlag = "Y";
}
if(vesselStatus.equals("frozen")) {
vesselStatusValue = "F";
displayFlag ="Y";
}
if(vesselStatus.equals("buried")) {
vesselStatusValue = "B";
displayFlag = "B";
}
if(vesselStatus.equals("pending")) {
vesselStatusValue = "P";
displayFlag = "P";
}
if(vesselStatus.equals("delete")) {
vesselStatusValue = "D";
displayFlag = "D";
}
if(vesselStatus.equals("all")){
vesselStatusValue = "ALL";
}
try {
if(poolStatusValue.equals("Y") && vesselStatusValue.equals("ALL")){
String fleetDetailsQuery = dataManager.getQuery("FLEET_DETAILS", Queries.QUERY_GET_FLEET_DETAILS_ALL_NONPOOL);
Object[] params = new Object[] { poolid, poolStatusValue };
fleetList = getJdbcTemplate().query(fleetDetailsQuery,params, new FleetDetails.FleetDetailsRowMapper());
}
else if(poolStatusValue.equals("ALL") && vesselStatusValue.equals("ALL")) {
String allVesselsQuiry = dataManager.getQuery("FLEET_DETAILS",Queries.QUERY_GET_POOL_NONPOOL_VESSELS);
Object[] params = new Object[] { poolid };
fleetList = getJdbcTemplate().query(allVesselsQuiry,params, new FleetDetails.FleetDetailsRowMapper());
}
else if(poolStatusValue.equals("N")){
String nonpoolVesselsQuiry = dataManager.getQuery("FLEET_DETAILS", Queries.QUERY_GET_NONPOOL_VESSELS);
Object[] params = new Object[] { poolid, vesselStatusValue,poolStatusValue, displayFlag };
fleetList = getJdbcTemplate().query(nonpoolVesselsQuiry,params, new FleetDetails.FleetDetailsRowMapper());
}
else if(poolStatusValue.equals("Y")){
String fleetDetailsQuery = dataManager.getQuery("FLEET_DETAILS", Queries.QUERY_GET_FLEET_DETAILS);
Object[] params = new Object[] { poolid, vesselStatusValue,poolStatusValue, displayFlag };
fleetList = getJdbcTemplate().query(fleetDetailsQuery,params, new FleetDetails.FleetDetailsRowMapper());
}
else {
String fleetDetailsQuery = dataManager
.getQuery("FLEET_DETAILS",Queries.QUERY_GET_STATUS_VESSELS_FOR_BOTH_POOL_NONPOOL);
Object[] params = new Object[] { poolid, vesselStatusValue,displayFlag };
fleetList = getJdbcTemplate().query(fleetDetailsQuery,params, new FleetDetails.FleetDetailsRowMapper());
}
} catch(Exception e) {
e.getMessage();
}
return fleetList;
}
如果您使用的是if语句和String.equals,请这样做:“yes”.equals(poolStatus) - 当poolStatus为null时不会崩溃 – koem
为什么您根据自己的状态使用Strings?考虑使用类或枚举并在那里转移一些逻辑? – qqilihq