package org.infosec.ismp.applet.manager.task;
import javax.swing.JOptionPane;
import javax.swing.SwingWorker;
import org.infosec.ismp.applet.manager.model.NodeModel;
import org.infosec.ismp.applet.manager.utilities.ChangeModelUtil;
import org.infosec.ismp.applet.manager.utilities.ServiceUtil;
import org.infosec.ismp.applet.manager.utilities.TopoConst;
import org.infosec.ismp.manager.rmi.tm.manager.model.DeviceEntity;
import org.infosec.ismp.manager.rmi.tm.manager.service.TopoWebService;
/**
* 去后台数据库添加Or 更新记录。
* @author snail
*
*/
public class AddOrUpdateNodeTask extends SwingWorker<DeviceEntity, Object>{
private NodeModel node;
public AddOrUpdateNodeTask(NodeModel node) {
if(node == null) return;
this.node = node;
}
@Override
protected DeviceEntity doInBackground() throws Exception {
TopoWebService severice = ServiceUtil.newInstance().getWebDeviceService();
DeviceEntity device = ChangeModelUtil.changeToDeviceModel(node);
device = severice.saveOrUpdateDevice(device);
return device;
}
protected void done() {
try {
DeviceEntity device = get();
String databaseId = device.getNode().getNodeId();
if(TopoConst.getTopoID(databaseId) == null) {
ChangeModelUtil.changeModel(node, device);
TopoConst.BOX.addElement(node);
TopoConst.registerID(databaseId, node.getID().toString());
}
} catch (Exception e) {
JOptionPane.showMessageDialog(null,"数据库保存节点发生错误!" , "保存错误", JOptionPane.ERROR_MESSAGE);
e.printStackTrace();
}
}
}