-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