あるページの新しいバージョンで作成者が追加した URL を取得したいと思います。
例: 作成者は myPage に www.url1.com を追加し、myPage を有効にします。--> バージョン 1.0 が生成され、作成者は myPage に www.url2.com を追加し、myPage を有効にします。--> バージョン 1.2 が生成されます -> myPage バージョン 1.2 には www.url1.com と www.url2.com の両方があります
この場合、関数は www.url2.com を返す必要があります。
次のように、古いバージョンと新しいバージョンから URL を収集し、新しく見つかった URL から古い見つかった URL を削除する関数getNewUrls(Set>String> urls)を作成しました。
private Set<String> getNewUrls(Set<String> urls){
Set<String> newUrls = collectUrlsFromNodes(newVersionNode.getNodes());
Set<String> oldUrls = collectUrlsFromNodes(oldVersionNode.getNodes());
Set<String> myNewUrls newUrls.removeAll(oldUrls);
}
private Set<String> collectUrlsFromNodes(final NodeIterator nodeIter) {
Set<String> urlSet = new HashSet<String>();
while (nodeIter.hasNext()) {
Node subNode = nodeIter.nextNode();
urlSet.addAll(collectUrlsFromNodes(subNode.getNodes()));
if (subNode.hasProperty("fileReference")) {
String url = subNode.getProperty("fileReference").getString();
urlSet.add(url);
}
}
return urlSet;
}
問題は、この関数が、作成者が既に削除した URL も検出することです (作成者がページから URL を削除/編集した場合でも、コンテンツにまだ保存されているためです)。この問題を解決する方法はありますか?