package org.infosec.ismp.applet.manager.task; import javax.swing.JOptionPane; import javax.swing.SwingWorker; import org.infosec.ismp.applet.manager.model.DomainModel; 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.NodeEntity; /** * 去后台数据库添加Or 更新记录。 * @author snail * */ public class AddOrUpdateDomainTask extends SwingWorker<NodeEntity, Object>{ private DomainModel domain; public AddOrUpdateDomainTask(DomainModel domain) { if(domain == null) return; this.domain = domain; } @Override protected NodeEntity doInBackground() throws Exception { NodeEntity nodeEntity = domain.getDatabaseNode(); if(nodeEntity == null) { nodeEntity = new NodeEntity(); } return ServiceUtil.newInstance().getWebDeviceService().saveOrUpdateNode(ChangeModelUtil.changeDomainModel(nodeEntity, domain)); } protected void done() { try { NodeEntity nodeEntity = get(); ChangeModelUtil.changeDomainModel(domain, nodeEntity); String databaseId = domain.getDatabaseNode().getNodeId().toString(); if(TopoConst.getTopoID(databaseId) == null) { TopoConst.BOX.addElement(domain); TopoConst.registerID(databaseId, domain.getID().toString()); TopoConst.registerID(TopoConst.DOMAIN_ID+domain.getId(), domain.getID().toString()); } } catch (Exception e) { JOptionPane.showMessageDialog(null,"数据库保存云图发生错误!" , "保存错误", JOptionPane.ERROR_MESSAGE); e.printStackTrace(); } } }