package org.docear.plugin.core.mindmap; import java.io.File; import java.net.URI; import org.freeplane.features.link.LinkController; import org.freeplane.features.link.NodeLinks; import org.freeplane.features.map.MapModel; import org.freeplane.features.map.NodeModel; import org.freeplane.plugin.workspace.WorkspaceUtils; public class MindmapLinkTypeUpdater extends AMindmapUpdater { public MindmapLinkTypeUpdater(String title) { super(title); } public boolean updateMindmap(MapModel map) { return updateNodesRecursive(map.getRootNode()); } private boolean updateMindmap(NodeModel node) { NodeLinks links = NodeLinks.getLinkExtension(node); if (links == null || links.getHyperLink() == null) { return false; } URI uri = links.getHyperLink(); File file = WorkspaceUtils.resolveURI(uri, node.getMap()); if (file != null) { links.setHyperLink(LinkController.toLinkTypeDependantURI(node.getMap().getFile(), file)); } return true; } /** * @param node * @return */ private boolean updateNodesRecursive(NodeModel node) { boolean changes = false; for(NodeModel child : node.getChildren()) { changes = changes | updateNodesRecursive(child); } changes = changes | updateMindmap(node); return changes; } }