package cn.me.fdfs.action; import cn.me.fdfs.service.MonitorService; import cn.me.fdfs.service.StructureService; import cn.me.fdfs.util.Tools; import cn.me.fdfs.vo.Group; import cn.me.fdfs.vo.Line; import cn.me.fdfs.vo.Storage; import com.jcraft.jsch.JSchException; import org.csource.common.MyException; import org.csource.fastdfs.ClientGlobal; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.List; import java.util.Properties; /** * Created with IntelliJ IDEA. * User: Administrator * Date: 12-8-29 * Time: 上午11:03 * To change this template use File | Settings | File Templates. */ @Controller @RequestMapping("/structure") public class StructureAction { @Autowired private StructureService structureService; @Autowired private MonitorService monitorService; private static final Logger logger = LoggerFactory .getLogger(StructureAction.class); @RequestMapping("/netStructure") public ModelAndView netStructure() throws JSchException{ ModelAndView mv = new ModelAndView("structure/netStructure.jsp"); try { mv.addObject("groupInfo", monitorService.listGroupInfo()); mv.addObject("trucker", getTrackForStruct()); } catch (IOException e) { logger.error("",e); } catch (MyException e) { logger.error("", e); } return mv; } @RequestMapping("/serverInfo") public ModelAndView serverInfo(String ip) throws IOException, MyException,JSchException { ModelAndView mv = new ModelAndView("structure/serverInfo.jsp"); if(ip.indexOf(":")>=0){ String[] data=ip.split(":"); ip=data[0]; } List<Group> groups=monitorService.listGroupInfo(); for(Group group:groups){ for(Storage storage:group.getStorageList()){ if(storage.getIpAddr().equals(ip)){ mv.addObject("serverInfo", storage); } } } SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); Calendar calendar = Calendar.getInstance(); mv.addObject("end", sdf.format(calendar.getTime())); calendar.add(Calendar.HOUR, -1); mv.addObject("start", sdf.format(calendar.getTime())); return mv; } @ResponseBody @RequestMapping("/getForperformanceByIp") public List<Line> getForperformanceByIp(String ip) { List<Line> storageList = structureService.listStorageTopLine(ip); return storageList; } @ResponseBody @RequestMapping("/storageInfoForFile") public List<Line> storageInfoForFile(String ip){ List<Line> storageList = new ArrayList<Line>(); storageList = structureService.listStorageAboutFile(ip); return storageList; } private String getTrackForStruct() { String result = ""; try { ClientGlobal.init(Tools.getClassPath()+"fdfs_client.conf"); } catch (IOException e) { logger.error("",e); } catch (MyException e) { logger.error("",e); } String configFile = Tools.getClassPath()+"fdfs_client.conf"; FileInputStream fis = null; InputStreamReader isr = null; Properties p = new Properties(); try { fis = new FileInputStream(configFile); isr = new InputStreamReader(fis, "UTF-8"); p.load(isr); fis.close(); isr.close(); } catch (Exception e) { e.printStackTrace(); } finally { if (fis != null) { try { fis.close(); } catch (IOException e) { logger.error("",e); } } if (isr != null) { try { isr.close(); } catch (IOException e) { logger.error("",e); } } } result = p.getProperty("tracker_server"); return result; } }