Finished ContentNameFixTool

git-svn-id: https://svn.libreccm.org/ccm/trunk@3144 8810af33-2d31-482b-a856-94f89814c4df
master
jensp 2015-02-13 19:02:14 +00:00
parent d6bab08e9f
commit 4016dc03d7
2 changed files with 37 additions and 7 deletions

View File

@ -35,6 +35,10 @@ import com.arsdigita.util.cmd.Program;
import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.OptionBuilder; import org.apache.commons.cli.OptionBuilder;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.util.HashSet; import java.util.HashSet;
import java.util.Set; import java.util.Set;
@ -366,7 +370,6 @@ public class ContentItemNameFix extends Program {
this.correctPath = correctPath; this.correctPath = correctPath;
} }
@Override @Override
public int hashCode() { public int hashCode() {
int hash = 7; int hash = 7;
@ -433,13 +436,18 @@ public class ContentItemNameFix extends Program {
} }
for (LinkToCheck linkToCheck : linksToCheck) { for (LinkToCheck linkToCheck : linksToCheck) {
if (text.contains(linkToCheck.getWrongName())) { //if (text.contains(linkToCheck.getWrongName())) {
/*if (text.matches(String.format("^(.*)href=\"(.*)%s(.*)\"(.*)$"
linkToCheck.getWrongName()))) {*/
if (checkForPotentialBrockenLink(text, linkToCheck.getWrongName())) {
System.out.printf("Found a potenially brocken link in article item %s:/%s:\n", System.out.printf("Found a potenially brocken link in article item %s:/%s:\n",
article.getContentSection().getName(), article.getContentSection().getName(),
article.getPath()); article.getPath());
System.out.printf("\tLook for a link containing to path '%s' and replace it with " System.out.printf("\tLook for a link containing to path '%s' and replace it with "
+ "the stable link to the target item.\n\n", + "the stable link to the target item %s.\n\n",
linkToCheck.getWrongPath()); linkToCheck.getWrongPath(),
linkToCheck.getCorrectPath());
} }
} }
} }
@ -470,17 +478,39 @@ public class ContentItemNameFix extends Program {
} }
for (LinkToCheck linkToCheck : linksToCheck) { for (LinkToCheck linkToCheck : linksToCheck) {
if (text.contains(linkToCheck.getWrongName())) { //if (text.contains(linkToCheck.getWrongName())) {
/*if (text.matches(String.format("^(.*)href=\"(.*)%s(.*)\"(.*)$",
linkToCheck.getWrongName()))) {*/
if(checkForPotentialBrockenLink(text, linkToCheck.getWrongName())) {
System.out.printf("Found a potenially brocken link in section '%s' of " System.out.printf("Found a potenially brocken link in section '%s' of "
+ "MultiPartArticle %s:/%s.\n", + "MultiPartArticle %s:/%s.\n",
(String) sectionObj.get("title"), (String) sectionObj.get("title"),
mpItem.getContentSection().getName(), mpItem.getContentSection().getName(),
mpItem.getPath()); mpItem.getPath());
System.out.printf("\tLook for a link containing to path '%s' and replace it with " System.out.printf("\tLook for a link containing to path '%s' and replace it with "
+ "the stable link to the target item.\n\n", + "the stable link to the target item %s.\n\n",
linkToCheck.getWrongPath()); linkToCheck.getWrongPath(),
linkToCheck.getCorrectPath());
} }
} }
} }
/**
* Returns {@code true} if a match for {@code checkFor} is found in the links of {@code text}.
* @param text
* @param checkFor
* @return
*/
private boolean checkForPotentialBrockenLink(final String text, final String checkFor) {
final Document document = Jsoup.parseBodyFragment(text);
final Elements links = document.select("a");
boolean result = false;
for(Element link : links) {
result = (link.attr("href").contains(checkFor));
}
return result;
}
} }

Binary file not shown.