package org.zstack.storage.backup.sftp; import org.springframework.beans.factory.annotation.Autowired; import org.zstack.core.cloudbus.CloudBus; import org.zstack.core.cloudbus.MessageSafe; import org.zstack.header.AbstractService; import org.zstack.header.message.Message; import org.zstack.query.QueryFacade; import org.zstack.search.GetQuery; import org.zstack.search.SearchQuery; import java.util.List; public class SftpBackupStorageManagerImpl extends AbstractService implements SftpBackupStorageManager { @Autowired private CloudBus bus; @Autowired private QueryFacade qf; @Override @MessageSafe public void handleMessage(Message msg) { if (msg instanceof APISearchSftpBackupStorageMsg) { handle((APISearchSftpBackupStorageMsg)msg); } else if (msg instanceof APIGetSftpBackupStorageMsg) { handle((APIGetSftpBackupStorageMsg)msg); } else if (msg instanceof APIQuerySftpBackupStorageMsg) { handle((APIQuerySftpBackupStorageMsg)msg); } else { bus.dealWithUnknownMessage(msg); } } private void handle(APIQuerySftpBackupStorageMsg msg) { List<SftpBackupStorageInventory> invs = qf.query(msg, SftpBackupStorageInventory.class); APIQuerySftpBackupStorageReply reply = new APIQuerySftpBackupStorageReply(); reply.setInventories(invs); bus.reply(msg, reply); } private void handle(APIGetSftpBackupStorageMsg msg) { GetQuery q = new GetQuery(); String res = q.getAsString(msg, SftpBackupStorageInventory.class); APIGetSftpBackupStorageReply reply = new APIGetSftpBackupStorageReply(); reply.setInventory(res); bus.reply(msg, reply); } private void handle(APISearchSftpBackupStorageMsg msg) { SearchQuery<SftpBackupStorageInventory> sq = SearchQuery.create(msg, SftpBackupStorageInventory.class); String content = sq.listAsString(); APISearchSftpBackupStorageReply reply = new APISearchSftpBackupStorageReply(); reply.setContent(content); bus.reply(msg, reply); } @Override public String getId() { return bus.makeLocalServiceId(SftpBackupStorageConstant.SERVICE_ID); } @Override public boolean start() { return true; } @Override public boolean stop() { return true; } }