in src/main/java/com/atlassian/uwc/converters/dokuwiki/HierarchyTarget.java [72:107]
protected String fixCollisions(String target, String hierarchy, String linkSpacekey, String targetMetaFilename) {
Vector<String> collisionsCandidates = getCollisionsCandidates(linkSpacekey);
target = HierarchyTitleConverter.casify(target);
if (isCollisionCandidate(target, collisionsCandidates)) {
String parentsRaw = hierarchy.replaceFirst("\\Q" + target + "\\E.*$", "");
String[] parents = parentsRaw.split(":");
if (parents.length < 2) return target;
boolean again = false;
String tmpMetaFilename = targetMetaFilename;
for (int i = parents.length-2;i>=0;i--) {
String parent = parents[i];
// log.debug("HT: parent = '" + parent + "', tmpMetaFilename:'" + tmpMetaFilename + "'");
if (parent.toLowerCase().equals(target.toLowerCase())) continue;
if ("".equals(parent)) continue;
if (tmpMetaFilename != null) {
Matcher metaFinder = metaFile.matcher(tmpMetaFilename);
if (metaFinder.find()) {
String parentMetaFilename = metaFinder.replaceFirst(".meta");
// log.debug("HT: parentMetaFilename: '" + parentMetaFilename + "'");
String tmpparent = HierarchyTitleConverter.getMetaTitle(parentMetaFilename);
// log.debug("HT: tmpparent: '" + tmpparent + "'");
if (tmpparent != null && !"".equals(tmpparent)) parent = tmpparent;
tmpMetaFilename = parentMetaFilename; //in case we have to go again
}
}
parent = HierarchyTitleConverter.fixTitle(parent);
//how many parents do we need? if the parent is a collision, we need its parent
if (isCollisionCandidate(parent, collisionsCandidates)) again = true;
else again = false;
//add the parent to the link
target = parent + " " + target;
if (!again) break;
}
}
return target;
}