com.surfs.storage.block.service.impl.ExportServiceImpl.java Source code

Java tutorial

Introduction

Here is the source code for com.surfs.storage.block.service.impl.ExportServiceImpl.java

Source

/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package com.surfs.storage.block.service.impl;

import java.io.IOException;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.autumn.core.log.LogFactory;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.surfs.storage.block.dao.mapper.BlockUserMapper;
import com.surfs.storage.block.model.BlockUser;
import com.surfs.storage.block.model.ExportInfo;
import com.surfs.storage.block.service.BlockConstant;
import com.surfs.storage.block.service.ExportService;
import com.surfs.storage.common.datasource.jdbc.JdbcDao;
import com.surfs.storage.common.util.CmdUtils;
import com.surfs.storage.common.util.Constant;
import com.surfs.storage.common.util.HttpUtils;

@Service("exportService")
public class ExportServiceImpl implements ExportService {
    @Autowired
    private JdbcDao jdbcDao;

    @Override
    public List<ExportInfo> getExportInfos() {
        List<ExportInfo> list = new ArrayList<>();
        ObjectMapper objectMapper = new ObjectMapper();

        try {
            // local
            String jsonLocal = CmdUtils.executeCmdForString(BlockConstant.BLOCK_TARGET_PATH);
            if (!StringUtils.isBlank(jsonLocal)) {
                ExportInfo infoLocal = objectMapper.readValue(jsonLocal, new TypeReference<ExportInfo>() {
                });
                LogFactory.info(jsonLocal);
                list.add(infoLocal);
            }

            // remote
            String jsonRemote = getRemoteExportInfoJson();
            if (!StringUtils.isBlank(jsonRemote)) {
                ExportInfo infoRemote = objectMapper.readValue(jsonRemote, new TypeReference<ExportInfo>() {
                });
                LogFactory.info(jsonRemote);
                list.add(infoRemote);
            }
        } catch (Exception e) {
            LogFactory.trace("call getExportInfos error", e);
        }
        return list;
    }

    @Override
    public String getExportInfoJson() {
        return CmdUtils.executeCmdForString(BlockConstant.BLOCK_TARGET_PATH);
    }

    private String getRemoteExportInfoJson() throws Exception {
        String ip = CmdUtils.getRemoteIp();
        //String ip = "10.0.33.52";
        String url = HttpUtils.getUrl(ip, Constant.REST_SERVICE_PORT, BlockConstant.POOL_SERVICE_PATH,
                BlockConstant.EXPORT_SERVICE_TARGET_NAME);
        return HttpUtils.invokeHttpForGet(url);
    }

    @Override
    public String addTarget(String target) {
        String cmd = MessageFormat.format(BlockConstant.BLOCK_ADDTARGET_PATH, target);
        LogFactory.info(cmd);
        //return cmd;
        return CmdUtils.executeCmdForString(cmd);
    }

    @Override
    public String addRemoteTarget(Map<String, String> args) {
        String ip = args.get("ip");
        String target = args.get("target");

        try {
            String url = HttpUtils.getUrl(ip, Constant.REST_SERVICE_PORT, BlockConstant.POOL_SERVICE_PATH,
                    BlockConstant.EXPORT_SERVICE_ADDTARGET_NAME, target);
            return HttpUtils.invokeHttpForGet(url);
        } catch (IOException e) {
            LogFactory.error(e.getMessage());
        }
        return null;
    }

    @Override
    public String delTarget(String target) {
        String cmd = MessageFormat.format(BlockConstant.BLOCK_DELTARGET_PATH, target);
        LogFactory.info(cmd);
        //return cmd;
        return CmdUtils.executeCmdForString(cmd);
    }

    @Override
    public String delRemoteTarget(Map<String, String> args) {
        String ip = args.get("ip");
        String target = args.get("target");
        try {
            String url = HttpUtils.getUrl(ip, Constant.REST_SERVICE_PORT, BlockConstant.POOL_SERVICE_PATH,
                    BlockConstant.EXPORT_SERVICE_DELTARGET_NAME, target);
            return HttpUtils.invokeHttpForGet(url);
        } catch (IOException e) {
            LogFactory.error(e.getMessage());
        }
        return null;
    }

    @SuppressWarnings("unchecked")
    @Override
    public void addDevice(Map<String, Object> args) throws IOException {
        String target = args.get("target").toString();
        ArrayList<String> volDevList = (ArrayList<String>) args.get("volDevList");

        for (String obj : volDevList) {
            String cmd = MessageFormat.format(BlockConstant.BLOCK_ADDDEVICE_PATH, obj, target);
            LogFactory.info(cmd);
            //return cmd;
            CmdUtils.executeCmdForString(cmd);
        }

    }

    @Override
    public String addRemoteDevice(Map<String, Object> args) {
        String ip = args.get("ip").toString();
        /*String device = args.get("device");
        String target = args.get("target");*/
        try {
            ObjectMapper objectMapper = new ObjectMapper();
            String json = objectMapper.writeValueAsString(args);
            LogFactory.info(json);
            String url = HttpUtils.getUrl(ip, Constant.REST_SERVICE_PORT, BlockConstant.POOL_SERVICE_PATH,
                    BlockConstant.EXPORT_SERVICE_ADDDEVICE_NAME);
            return HttpUtils.invokeHttpForGet(url, json);
        } catch (IOException e) {
            LogFactory.error(e.getMessage());
        }
        return null;
    }

    @Override
    public String delDevice(String device, String target) {
        String cmd = MessageFormat.format(BlockConstant.BLOCK_DELDEVICE_PATH, device, target);
        LogFactory.info(cmd);
        //return cmd;
        return CmdUtils.executeCmdForString(cmd);
    }

    @Override
    public String delRemoteDevice(Map<String, String> args) {
        String ip = args.get("ip");
        /*String device = args.get("device");
        String target = args.get("target");*/

        try {
            String url = HttpUtils.getUrlForParams(ip, Constant.REST_SERVICE_PORT, BlockConstant.POOL_SERVICE_PATH,
                    BlockConstant.EXPORT_SERVICE_DELDEVICE_NAME, args);
            return HttpUtils.invokeHttpForGet(url);
        } catch (IOException e) {
            LogFactory.error(e.getMessage());
        }
        return null;
    }

    @Override
    public String getVolDevJson() {
        return CmdUtils.executeCmdForString(BlockConstant.BLOCK_VOLDEV_PATH);
    }

    @Override
    public String getRemoteVolDev(String ip) {
        try {
            String url = HttpUtils.getUrl(ip, Constant.REST_SERVICE_PORT, BlockConstant.POOL_SERVICE_PATH,
                    BlockConstant.EXPORT_SERVICE_VOLDEV_NAME);
            return HttpUtils.invokeHttpForGet(url);
        } catch (IOException e) {
            LogFactory.error(e.getMessage());
        }
        return null;
    }

    @Override
    public List<BlockUser> queryListBLockUserNames(String poolName, String target) throws Exception {
        // TODO Auto-generated method stub
        String sql = "select bu.userId, bu.userName,bu.passWord,bu.realName,bu.createTime,bu.comment from blockUser bu,blockUserTarget bt where bu.userId=bt.userId and bt.target=?";
        return jdbcDao.queryForList(poolName, sql, new BlockUserMapper(), target);
    }

}