package org.docear.plugin.core.mindmap; import java.io.File; import org.freeplane.core.util.LogUtils; 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.features.url.UrlManager; 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) { try { NodeLinks links = NodeLinks.getLinkExtension(node); if (links == null || links.getHyperLink() == null) { return false; } File file = UrlManager.getController().getAbsoluteFile(node.getMap(), links.getHyperLink()); if (file != null) { links.setHyperLink(LinkController.toLinkTypeDependantURI(node.getMap().getFile(), file)); } return true; } catch(Exception e) { LogUtils.warn(this.getClass().getName()+".updateMindmap(): "+ e.getMessage()); } return false; } /** * @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; } }