protected String fixCollisions()

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;
	}