private static void refreshNodeTemplateNameInRelationships(String oldNodeTemplateName, String newNodeTemplateName, Map<String, RelationshipTemplate> relationshipTemplates) { Map<String, String> updatedKeys = Maps.newHashMap(); for (Map.Entry<String, RelationshipTemplate> relationshipTemplateEntry : relationshipTemplates.entrySet()) { String relationshipTemplateId = relationshipTemplateEntry.getKey(); RelationshipTemplate relationshipTemplate = relationshipTemplateEntry.getValue(); if (relationshipTemplate.getTarget().equals(oldNodeTemplateName)) { relationshipTemplate.setTarget(newNodeTemplateName); String formatedOldNodeName = getRelationShipName(relationshipTemplate.getType(), oldNodeTemplateName); // if the id/name of the relationship is auto-generated we should update it also as auto-generation is <typeName+targetId> if (relationshipTemplateId.equals(formatedOldNodeName)) { // check that the new name is not already used (so we won't override another relationship)... String validNewRelationshipTemplateId = getNexAvailableName(getRelationShipName(relationshipTemplate.getType(), newNodeTemplateName), "", relationshipTemplates.keySet()); updatedKeys.put(relationshipTemplateId, validNewRelationshipTemplateId); } } } // update the relationship keys if any has been impacted for (Map.Entry<String, String> updateKeyEntry : updatedKeys.entrySet()) { RelationshipTemplate relationshipTemplate = relationshipTemplates.remove(updateKeyEntry.getKey()); relationshipTemplates.put(updateKeyEntry.getValue(), relationshipTemplate); } }