package cn.ac.iie.service; import cn.ac.iie.config.ApplicationConfig; import cn.ac.iie.dao.BaseArangoData; import cn.ac.iie.utils.ArangoDBConnect; import com.arangodb.entity.BaseDocument; import com.arangodb.entity.BaseEdgeDocument; import java.util.ArrayList; import java.util.HashMap; import java.util.Set; public class UpdateEFqdnAddressIp implements Runnable { private HashMap documentHashMap; private static ArangoDBConnect arangoManger = ArangoDBConnect.getInstance(); public UpdateEFqdnAddressIp(HashMap documentHashMap) { this.documentHashMap = documentHashMap; } @Override public void run() { Set keySet = documentHashMap.keySet(); ArrayList docInsert = new ArrayList<>(); ArrayList docUpdate = new ArrayList<>(); int i = 0; try { for (String key:keySet){ BaseEdgeDocument newEdgeDocument = documentHashMap.getOrDefault(key, null); if (newEdgeDocument != null){ i += 1; BaseEdgeDocument edgeDocument = BaseArangoData.historyRelationFqdnAddressIpMap.getOrDefault(key, null); if (edgeDocument != null){ Object lastFoundTime = newEdgeDocument.getAttribute("LAST_FOUND_TIME"); long countTotal = Long.parseLong(newEdgeDocument.getAttribute("COUNT_TOTAL").toString()); long updateCountTotal = Long.parseLong(edgeDocument.getAttribute("COUNT_TOTAL").toString()); edgeDocument.addAttribute("LAST_FOUND_TIME",lastFoundTime); edgeDocument.addAttribute("COUNT_TOTAL",countTotal+updateCountTotal); docInsert.add(edgeDocument); }else { docUpdate.add(newEdgeDocument); } } if (i >= ApplicationConfig.UPDATE_ARANGO_BATCH){ arangoManger.insertAndUpdate(docInsert,docUpdate,"E_ADDRESS_V_FQDN_TO_V_IP"); System.out.println("更新"+i); i = 0; } } if (i != 0){ arangoManger.insertAndUpdate(docInsert,docUpdate,"E_ADDRESS_V_FQDN_TO_V_IP"); System.out.println("更新"+i); } }catch (Exception e){ e.printStackTrace(); } } }