/**
* Tencent is pleased to support the open source community by making MSEC available.
*
* Copyright (C) 2016 THL A29 Limited, a Tencent company. All rights reserved.
*
* Licensed under the GNU General Public License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. You may
* obtain a copy of the License at
*
* https://opensource.org/licenses/GPL-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
* either express or implied. See the License for the specific language governing permissions
* and limitations under the License.
*/
package beans.service;
import beans.dbaccess.ServerInfo;
import beans.request.GetPlanDetailRequest;
import beans.response.GetPlanDetailResponse;
import msec.org.DBUtil;
import msec.org.JsonRPCHandler;
import org.apache.log4j.Logger;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
/**
*
* 查询用户列表
*/
public class GetPlanDetail extends JsonRPCHandler {
public GetPlanDetailResponse exec(GetPlanDetailRequest request)
{
Logger logger = Logger.getLogger(GetPlanDetailResponse.class);
GetPlanDetailResponse resp = new GetPlanDetailResponse();
String result = checkIdentity();
if (!result.equals("success"))
{
resp.setStatus(99);
resp.setMessage(result);
return resp;
}
DBUtil util = new DBUtil();
if (util.getConnection() == null)
{
resp.setStatus(100);
resp.setMessage("db connect failed!");
return resp;
}
List<ServerInfo> serverList;
int copy_num = 0;
ArrayList<String> ip_port_list = new ArrayList<>();
try {
String sql;
List<Object> params = new ArrayList<Object>();
String plan_id = request.getPlan_id();
if (request.getPlan_id() == null || request.getPlan_id().isEmpty()) {
resp.setStatus(101);
resp.setMessage("parameter error!");
return resp;
} else {
sql = "select ip, port, status from t_install_plan where plan_id=? and first_level_service_name=? and second_level_service_name=?";
params.clear();
params.add(request.getPlan_id());
params.add(request.getFirst_level_service_name());
params.add(request.getSecond_level_service_name());
try {
serverList = util.findMoreRefResult(sql, params, ServerInfo.class);
} catch (Exception e) {
resp.setStatus(100);
resp.setMessage("db query exception!");
logger.error(e);
return resp;
}
}
if(serverList.size() == 0) {
resp.setStatus(100);
resp.setMessage("plan id error!");
return resp;
}
boolean finished = true;
for (ServerInfo server : serverList) {
if (!server.getStatus().startsWith("Done")) {
if (server.getStatus().startsWith("[ERROR]")) {
finished = true;
break;
} else{ //in progress...
finished = false;
}
}
}
resp.setFinished(finished);
resp.setServers((ArrayList<ServerInfo>) serverList);
resp.setMessage("success");
resp.setStatus(0);
return resp;
}
finally {
util.releaseConn();
}
}
}