Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Comparing changes

Choose two branches to see what's changed or to start a new pull request. If you need to, you can also compare across forks.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also compare across forks.
base: 1a3dd7eaf7
...
compare: 083c17f162
Checking mergeability… Don't worry, you can still create the pull request.
  • 3 commits
  • 29 files changed
  • 0 commit comments
  • 1 contributor
Commits on Jun 03, 2012
@dwdyer Updated copyright notices.
Minor changes to stop words list.
38ed970
@dwdyer Avoid NPE extracting images. 98a9087
@dwdyer Reinstated stemming of keywords.
Fixed out-of-date links in test feed list.
083c17f
Showing with 695 additions and 42 deletions.
  1. +1 −1  README.txt
  2. +4 −3 core/src/java/main/org/uncommons/zeitgeist/Article.java
  3. +1 −1  core/src/java/main/org/uncommons/zeitgeist/ArticleFetcher.java
  4. +10 −8 core/src/java/main/org/uncommons/zeitgeist/FeedDownloadTask.java
  5. +1 −1  core/src/java/main/org/uncommons/zeitgeist/FeedUtils.java
  6. +1 −1  core/src/java/main/org/uncommons/zeitgeist/Image.java
  7. +1 −1  core/src/java/main/org/uncommons/zeitgeist/Matrix.java
  8. +648 −0 core/src/java/main/org/uncommons/zeitgeist/Stemmer.java
  9. +1 −1  core/src/java/main/org/uncommons/zeitgeist/Topic.java
  10. +1 −1  core/src/java/main/org/uncommons/zeitgeist/TopicArticleCountComparator.java
  11. +1 −1  core/src/java/main/org/uncommons/zeitgeist/WeightedItem.java
  12. +1 −1  core/src/java/main/org/uncommons/zeitgeist/Zeitgeist.java
  13. +1 −1  core/src/java/main/org/uncommons/zeitgeist/package-info.java
  14. +7 −4 core/src/java/resources/org/uncommons/zeitgeist/low-value-words.txt
  15. +1 −1  core/src/java/test/org/uncommons/zeitgeist/ArticleFetcherTest.java
  16. +1 −1  core/src/java/test/org/uncommons/zeitgeist/ArticleTest.java
  17. +1 −1  core/src/java/test/org/uncommons/zeitgeist/FeedDownloadTaskTest.java
  18. +1 −1  core/src/java/test/org/uncommons/zeitgeist/FeedUtilsTest.java
  19. +1 −1  core/src/java/test/org/uncommons/zeitgeist/FileURLFeedFetcher.java
  20. +1 −1  core/src/java/test/org/uncommons/zeitgeist/ImageTest.java
  21. +1 −1  core/src/java/test/org/uncommons/zeitgeist/MatrixTest.java
  22. +1 −1  core/src/java/test/org/uncommons/zeitgeist/TopicTest.java
  23. +1 −1  core/src/java/test/org/uncommons/zeitgeist/WeightedItemTest.java
  24. +2 −3 feedlists/worldnews.txt
  25. +1 −1  publisher/src/java/main/org/uncommons/zeitgeist/publisher/DateRenderer.java
  26. +1 −1  publisher/src/java/main/org/uncommons/zeitgeist/publisher/Publisher.java
  27. +1 −1  publisher/src/java/main/org/uncommons/zeitgeist/publisher/XMLStringRenderer.java
  28. +1 −1  publisher/src/java/main/org/uncommons/zeitgeist/publisher/package-info.java
  29. +1 −1  publisher/src/java/test/org/uncommons/zeitgeist/publisher/XMLStringRendererTest.java
View
2  README.txt
@@ -1,5 +1,5 @@
Zeitgeist - An intelligent RSS news aggregator
-(C) Copyright 2009-2010 Daniel W. Dyer
+(C) Copyright 2009-2012 Daniel W. Dyer
SYNOPSIS
View
7 core/src/java/main/org/uncommons/zeitgeist/Article.java
@@ -1,5 +1,5 @@
// ============================================================================
-// Copyright 2009-2010 Daniel W. Dyer
+// Copyright 2009-2012 Daniel W. Dyer
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@@ -189,8 +189,9 @@ public Image getFeedIcon()
{
if (word.length() > 0 && !LOW_VALUE_WORDS.contains(word))
{
- Integer count = wordCounts.get(word);
- wordCounts.put(word, count == null ? 1 : ++count);
+ String stem = new Stemmer().stem(word);
+ Integer count = wordCounts.get(stem);
+ wordCounts.put(stem, count == null ? 1 : ++count);
}
}
return wordCounts;
View
2  core/src/java/main/org/uncommons/zeitgeist/ArticleFetcher.java
@@ -1,5 +1,5 @@
// ============================================================================
-// Copyright 2009-2010 Daniel W. Dyer
+// Copyright 2009-2012 Daniel W. Dyer
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
View
18 core/src/java/main/org/uncommons/zeitgeist/FeedDownloadTask.java
@@ -1,5 +1,5 @@
// ============================================================================
-// Copyright 2009-2010 Daniel W. Dyer
+// Copyright 2009-2012 Daniel W. Dyer
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@@ -198,15 +198,17 @@ private Image getFeedIcon(SyndFeed feed) throws MalformedURLException
List<SyndEnclosure> enclosures = entry.getEnclosures();
for (SyndEnclosure enclosure : enclosures)
{
- if ((enclosure.getType().equalsIgnoreCase("image/jpeg")
- || enclosure.getType().equalsIgnoreCase("image/png")
- || enclosure.getType().equalsIgnoreCase("image/gif"))
- || enclosure.getUrl().endsWith(".jpg"))
+ String enclosureType = enclosure.getType();
+ String enclosureUrl = enclosure.getUrl();
+ boolean imageMimeType = enclosureType != null && (enclosureType.equalsIgnoreCase("image/jpeg")
+ || enclosureType.equalsIgnoreCase("image/png")
+ || enclosureType.equalsIgnoreCase("image/gif"));
+ if (imageMimeType || (enclosureUrl != null && enclosureUrl.endsWith(".jpg")))
{
- if (!images.containsKey(enclosure.getUrl()))
+ if (!images.containsKey(enclosureUrl))
{
- images.put(enclosure.getUrl(),
- new Image(new URL(feedURL, enclosure.getUrl()),
+ images.put(enclosureUrl,
+ new Image(new URL(feedURL, enclosureUrl),
new URL(feedURL, entry.getLink())));
}
}
View
2  core/src/java/main/org/uncommons/zeitgeist/FeedUtils.java
@@ -1,5 +1,5 @@
// ============================================================================
-// Copyright 2009-2010 Daniel W. Dyer
+// Copyright 2009-2012 Daniel W. Dyer
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
View
2  core/src/java/main/org/uncommons/zeitgeist/Image.java
@@ -1,5 +1,5 @@
// ============================================================================
-// Copyright 2009-2010 Daniel W. Dyer
+// Copyright 2009-2012 Daniel W. Dyer
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
View
2  core/src/java/main/org/uncommons/zeitgeist/Matrix.java
@@ -1,5 +1,5 @@
// ============================================================================
-// Copyright 2009-2010 Daniel W. Dyer
+// Copyright 2009-2012 Daniel W. Dyer
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
View
648 core/src/java/main/org/uncommons/zeitgeist/Stemmer.java
@@ -0,0 +1,648 @@
+// ============================================================================
+// Copyright 2009-2012 Daniel W. Dyer
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// ============================================================================
+package org.uncommons.zeitgeist;
+
+/**
+ * Implementation of the Porter Stemming Algorithm (from http://tartarus.org/~martin/PorterStemmer/).
+ *
+ * The Stemmer class transforms a word into its root form. The input
+ * word can be provided a character at time (by calling add()), or at once
+ * by calling one of the various stem(something) methods.
+ */
+class Stemmer
+{
+ private char[] buffer;
+ private int i; /* offset into buffer */
+ private int i_end; /* offset to end of stemmed word */
+ private int j;
+ private int k;
+ private static final int INC = 50;
+
+
+ /* unit of size whereby buffer is increased */
+ public Stemmer()
+ {
+ buffer = new char[INC];
+ i = 0;
+ i_end = 0;
+ }
+
+
+ /**
+ * Adds wLen characters to the word being stemmed contained in a portion
+ * of a char[] array. This is like repeated calls of add(char ch), but
+ * faster.
+ */
+ private void add(String word)
+ {
+ char[] chars = word.toCharArray();
+ if (i + chars.length >= buffer.length)
+ {
+ char[] newBuffer = new char[i + chars.length + INC];
+ System.arraycopy(buffer, 0, newBuffer, 0, i);
+ buffer = newBuffer;
+ }
+ for (char ch : chars)
+ {
+ buffer[i++] = ch;
+ }
+ }
+
+
+ /**
+ * @return true if buffer[i] is a consonant.
+ */
+ private boolean isConsonant(int i)
+ {
+ switch (buffer[i])
+ {
+ case 'a':
+ case 'e':
+ case 'i':
+ case 'o':
+ case 'u': return false;
+ case 'y': return (i == 0) || !isConsonant(i - 1);
+ default: return true;
+ }
+ }
+
+
+ /* measureConsonantSequences() measures the number of consonant sequences between 0 and j. if c is
+ a consonant sequence and v a vowel sequence, and <..> indicates arbitrary
+ presence,
+
+ <c><v> gives 0
+ <c>vc<v> gives 1
+ <c>vcvc<v> gives 2
+ <c>vcvcvc<v> gives 3
+ ....
+ */
+ private int measureConsonantSequences()
+ {
+ int n = 0;
+ int i = 0;
+ while (true)
+ {
+ if (i > j)
+ {
+ return n;
+ }
+ if (!isConsonant(i))
+ {
+ break;
+ }
+ i++;
+ }
+ i++;
+ while (true)
+ {
+ while (true)
+ {
+ if (i > j)
+ {
+ return n;
+ }
+ if (isConsonant(i))
+ {
+ break;
+ }
+ i++;
+ }
+ i++;
+ n++;
+ while (true)
+ {
+ if (i > j)
+ {
+ return n;
+ }
+ if (!isConsonant(i))
+ {
+ break;
+ }
+ i++;
+ }
+ i++;
+ }
+ }
+
+
+ /* vowelInStem() is true <=> 0,...j contains a vowel */
+ private boolean vowelInStem()
+ {
+ int i;
+ for (i = 0; i <= j; i++)
+ {
+ if (!isConsonant(i))
+ {
+ return true;
+ }
+ }
+ return false;
+ }
+
+
+ /* doublec(j) is true <=> j,(j-1) contain a double consonant. */
+ private boolean doublec(int j)
+ {
+ if (j < 1)
+ {
+ return false;
+ }
+ if (buffer[j] != buffer[j - 1])
+ {
+ return false;
+ }
+ return isConsonant(j);
+ }
+
+
+ /* cvc(i) is true <=> i-2,i-1,i has the form consonant - vowel - consonant
+ and also if the second c is not w,x or y. this is used when trying to
+ restore an e at the end of a short word. e.g.
+
+ cav(e), lov(e), hop(e), crim(e), but
+ snow, box, tray.
+
+ */
+ private boolean cvc(int i)
+ {
+ if (i < 2 || !isConsonant(i) || isConsonant(i - 1) || !isConsonant(i - 2))
+ {
+ return false;
+ }
+ int ch = buffer[i];
+ return !(ch == 'w' || ch == 'x' || ch == 'y');
+ }
+
+
+ private boolean ends(String s)
+ {
+ int l = s.length();
+ int o = k - l + 1;
+ if (o < 0)
+ {
+ return false;
+ }
+ for (int i = 0; i < l; i++)
+ {
+ if (buffer[o + i] != s.charAt(i))
+ {
+ return false;
+ }
+ }
+ j = k - l;
+ return true;
+ }
+
+
+ /* setto(s) sets (j+1),...k to the characters in the string s, readjusting k. */
+ private void setto(String s)
+ {
+ int l = s.length();
+ int o = j + 1;
+ for (int i = 0; i < l; i++)
+ {
+ buffer[o + i] = s.charAt(i);
+ }
+ k = j + l;
+ }
+
+
+ /* r(s) is used further down. */
+ private void r(String s)
+ {
+ if (measureConsonantSequences() > 0)
+ {
+ setto(s);
+ }
+ }
+
+
+ /* step1() gets rid of plurals and -ed or -ing. e.g.
+
+ caresses -> caress
+ ponies -> poni
+ ties -> ti
+ caress -> caress
+ cats -> cat
+
+ feed -> feed
+ agreed -> agree
+ disabled -> disable
+
+ matting -> mat
+ mating -> mate
+ meeting -> meet
+ milling -> mill
+ messing -> mess
+
+ meetings -> meet
+
+ */
+
+ private void step1()
+ {
+ if (buffer[k] == 's')
+ {
+ if (ends("sses"))
+ {
+ k -= 2;
+ }
+ else if (ends("ies"))
+ {
+ setto("i");
+ }
+ else if (buffer[k - 1] != 's')
+ {
+ k--;
+ }
+ }
+ if (ends("eed"))
+ {
+ if (measureConsonantSequences() > 0)
+ {
+ k--;
+ }
+ }
+ else if ((ends("ed") || ends("ing")) && vowelInStem())
+ {
+ k = j;
+ if (ends("at"))
+ {
+ setto("ate");
+ }
+ else if (ends("bl"))
+ {
+ setto("ble");
+ }
+ else if (ends("iz"))
+ {
+ setto("ize");
+ }
+ else if (doublec(k))
+ {
+ k--;
+ int ch = buffer[k];
+ if (ch == 'l' || ch == 's' || ch == 'z')
+ {
+ k++;
+ }
+ }
+ else if (measureConsonantSequences() == 1 && cvc(k))
+ {
+ setto("e");
+ }
+ }
+ }
+
+
+ /* step2() turns terminal y to i when there is another vowel in the stem. */
+ private void step2()
+ {
+ if (ends("y") && vowelInStem())
+ {
+ buffer[k] = 'i';
+ }
+ }
+
+ /* step3() maps double suffices to single ones. so -ization ( = -ize plus
+ -ation) maps to -ize etc. note that the string before the suffix must give
+ measureConsonantSequences() > 0. */
+
+
+ private final void step3()
+ {
+ if (k == 0)
+ {
+ return; /* For Bug 1 */
+ }
+ switch (buffer[k - 1])
+ {
+ case 'a':
+ if (ends("ational"))
+ {
+ r("ate");
+ }
+ else if (ends("tional"))
+ {
+ r("tion");
+ }
+ break;
+ case 'c':
+ if (ends("enci"))
+ {
+ r("ence");
+ }
+ else if (ends("anci"))
+ {
+ r("ance");
+ }
+ break;
+ case 'e':
+ if (ends("izer"))
+ {
+ r("ize");
+ }
+ break;
+ case 'l':
+ if (ends("bli"))
+ {
+ r("ble");
+ }
+ else if (ends("alli"))
+ {
+ r("al");
+ }
+ else if (ends("entli"))
+ {
+ r("ent");
+ }
+ else if (ends("eli"))
+ {
+ r("e");
+ }
+ else if (ends("ousli"))
+ {
+ r("ous");
+ }
+ break;
+ case 'o':
+ if (ends("ization"))
+ {
+ r("ize");
+ }
+ else if (ends("ation"))
+ {
+ r("ate");
+ }
+ else if (ends("ator"))
+ {
+ r("ate");
+ }
+ break;
+ case 's':
+ if (ends("alism"))
+ {
+ r("al");
+ }
+ else if (ends("iveness"))
+ {
+ r("ive");
+ }
+ else if (ends("fulness"))
+ {
+ r("ful");
+ }
+ else if (ends("ousness"))
+ {
+ r("ous");
+ }
+ break;
+ case 't':
+ if (ends("aliti"))
+ {
+ r("al");
+ }
+ else if (ends("iviti"))
+ {
+ r("ive");
+ }
+ else if (ends("biliti"))
+ {
+ r("ble");
+ }
+ break;
+ case 'g':
+ if (ends("logi"))
+ {
+ r("log");
+ }
+ }
+ }
+
+
+ /* step4() deals with -ic-, -full, -ness etc. similar strategy to step3. */
+ private void step4()
+ {
+ switch (buffer[k])
+ {
+ case 'e':
+ if (ends("icate"))
+ {
+ r("ic");
+ }
+ else if (ends("ative"))
+ {
+ r("");
+ }
+ else if (ends("alize"))
+ {
+ r("al");
+ }
+ break;
+ case 'i':
+ if (ends("iciti"))
+ {
+ r("ic");
+ }
+ break;
+ case 'l':
+ if (ends("ical"))
+ {
+ r("ic");
+ }
+ else if (ends("ful"))
+ {
+ r("");
+ }
+ break;
+ case 's':
+ if (ends("ness"))
+ {
+ r("");
+ }
+ }
+ }
+
+ /* step5() takes off -ant, -ence etc., in context <c>vcvc<v>. */
+
+
+ private void step5()
+ {
+ if (k == 0)
+ {
+ return; /* for Bug 1 */
+ }
+ switch (buffer[k - 1])
+ {
+ case 'a':
+ if (ends("al"))
+ {
+ break;
+ }
+ return;
+ case 'c':
+ if (ends("ance"))
+ {
+ break;
+ }
+ if (ends("ence"))
+ {
+ break;
+ }
+ return;
+ case 'e':
+ if (ends("er"))
+ {
+ break;
+ }
+ return;
+ case 'i':
+ if (ends("ic"))
+ {
+ break;
+ }
+ return;
+ case 'l':
+ if (ends("able"))
+ {
+ break;
+ }
+ if (ends("ible"))
+ {
+ break;
+ }
+ return;
+ case 'n':
+ if (ends("ant"))
+ {
+ break;
+ }
+ if (ends("ement"))
+ {
+ break;
+ }
+ if (ends("ment"))
+ {
+ break;
+ }
+ /* element etc. not stripped before the measureConsonantSequences */
+ if (ends("ent"))
+ {
+ break;
+ }
+ return;
+ case 'o':
+ if (ends("ion") && j >= 0 && (buffer[j] == 's' || buffer[j] == 't'))
+ {
+ break;
+ }
+ /* j >= 0 fixes Bug 2 */
+ if (ends("ou"))
+ {
+ break;
+ }
+ return;
+ /* takes care of -ous */
+ case 's':
+ if (ends("ism"))
+ {
+ break;
+ }
+ return;
+ case 't':
+ if (ends("ate"))
+ {
+ break;
+ }
+ if (ends("iti"))
+ {
+ break;
+ }
+ return;
+ case 'u':
+ if (ends("ous"))
+ {
+ break;
+ }
+ return;
+ case 'v':
+ if (ends("ive"))
+ {
+ break;
+ }
+ return;
+ case 'z':
+ if (ends("ize"))
+ {
+ break;
+ }
+ return;
+ default:
+ return;
+ }
+ if (measureConsonantSequences() > 1)
+ {
+ k = j;
+ }
+ }
+
+ /* step6() removes a final -e if measureConsonantSequences() > 1. */
+
+
+ private void step6()
+ {
+ j = k;
+ if (buffer[k] == 'e')
+ {
+ int a = measureConsonantSequences();
+ if (a > 1 || a == 1 && !cvc(k - 1))
+ {
+ k--;
+ }
+ }
+ if (buffer[k] == 'l' && doublec(k) && measureConsonantSequences() > 1)
+ {
+ k--;
+ }
+ }
+
+
+ /**
+ * Stem the word placed into the Stemmer buffer through calls to add().
+ * Returns true if the stemming process resulted in a word different
+ * from the input. You can retrieve the result with
+ * getResultLength()/getResultBuffer() or toString().
+ */
+ public String stem(String word)
+ {
+ add(word);
+ k = i - 1;
+ if (k > 1)
+ {
+ step1();
+ step2();
+ step3();
+ step4();
+ step5();
+ step6();
+ }
+ i_end = k + 1;
+ i = 0;
+ return new String(buffer, 0, i_end);
+ }
+}
View
2  core/src/java/main/org/uncommons/zeitgeist/Topic.java
@@ -1,5 +1,5 @@
// ============================================================================
-// Copyright 2009-2010 Daniel W. Dyer
+// Copyright 2009-2012 Daniel W. Dyer
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
View
2  core/src/java/main/org/uncommons/zeitgeist/TopicArticleCountComparator.java
@@ -1,5 +1,5 @@
// ============================================================================
-// Copyright 2009-2010 Daniel W. Dyer
+// Copyright 2009-2012 Daniel W. Dyer
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
View
2  core/src/java/main/org/uncommons/zeitgeist/WeightedItem.java
@@ -1,5 +1,5 @@
// ============================================================================
-// Copyright 2009-2010 Daniel W. Dyer
+// Copyright 2009-2012 Daniel W. Dyer
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
View
2  core/src/java/main/org/uncommons/zeitgeist/Zeitgeist.java
@@ -1,5 +1,5 @@
// ============================================================================
-// Copyright 2009-2010 Daniel W. Dyer
+// Copyright 2009-2012 Daniel W. Dyer
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
View
2  core/src/java/main/org/uncommons/zeitgeist/package-info.java
@@ -1,5 +1,5 @@
// ============================================================================
-// Copyright 2009-2010 Daniel W. Dyer
+// Copyright 2009-2012 Daniel W. Dyer
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
View
11 core/src/java/resources/org/uncommons/zeitgeist/low-value-words.txt
@@ -31,7 +31,6 @@ being
but
by
came
-can
can't
cannot
come
@@ -44,6 +43,7 @@ does
doesn't
don't
done
+either
else
etc
even
@@ -108,8 +108,10 @@ most
much
my
myself
+neither
no
none
+nor
not
now
of
@@ -121,11 +123,13 @@ onto
or
other
others
+otherwise
our
ours
out
per
put
+quite
rather
re
really
@@ -173,14 +177,13 @@ those
though
through
throughout
+thus
to
too
until
upon
us
-v
very
-vs
was
wasn't
we
@@ -213,7 +216,6 @@ whoever
whom
whose
why
-will
with
within
without
@@ -223,6 +225,7 @@ wouldn't
yes
yet
you
+you're
your
yours
yourself
View
2  core/src/java/test/org/uncommons/zeitgeist/ArticleFetcherTest.java
@@ -1,5 +1,5 @@
// ============================================================================
-// Copyright 2009-2010 Daniel W. Dyer
+// Copyright 2009-2012 Daniel W. Dyer
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
View
2  core/src/java/test/org/uncommons/zeitgeist/ArticleTest.java
@@ -1,5 +1,5 @@
// ============================================================================
-// Copyright 2009-2010 Daniel W. Dyer
+// Copyright 2009-2012 Daniel W. Dyer
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
View
2  core/src/java/test/org/uncommons/zeitgeist/FeedDownloadTaskTest.java
@@ -1,5 +1,5 @@
// ============================================================================
-// Copyright 2009-2010 Daniel W. Dyer
+// Copyright 2009-2012 Daniel W. Dyer
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
View
2  core/src/java/test/org/uncommons/zeitgeist/FeedUtilsTest.java
@@ -1,5 +1,5 @@
// ============================================================================
-// Copyright 2009-2010 Daniel W. Dyer
+// Copyright 2009-2012 Daniel W. Dyer
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
View
2  core/src/java/test/org/uncommons/zeitgeist/FileURLFeedFetcher.java
@@ -1,5 +1,5 @@
// ============================================================================
-// Copyright 2009-2010 Daniel W. Dyer
+// Copyright 2009-2012 Daniel W. Dyer
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
View
2  core/src/java/test/org/uncommons/zeitgeist/ImageTest.java
@@ -1,5 +1,5 @@
// ============================================================================
-// Copyright 2009-2010 Daniel W. Dyer
+// Copyright 2009-2012 Daniel W. Dyer
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
View
2  core/src/java/test/org/uncommons/zeitgeist/MatrixTest.java
@@ -1,5 +1,5 @@
// ============================================================================
-// Copyright 2009-2010 Daniel W. Dyer
+// Copyright 2009-2012 Daniel W. Dyer
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
View
2  core/src/java/test/org/uncommons/zeitgeist/TopicTest.java
@@ -1,5 +1,5 @@
// ============================================================================
-// Copyright 2009-2010 Daniel W. Dyer
+// Copyright 2009-2012 Daniel W. Dyer
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
View
2  core/src/java/test/org/uncommons/zeitgeist/WeightedItemTest.java
@@ -1,5 +1,5 @@
// ============================================================================
-// Copyright 2009-2010 Daniel W. Dyer
+// Copyright 2009-2012 Daniel W. Dyer
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
View
5 feedlists/worldnews.txt
@@ -1,6 +1,6 @@
http://newsrss.bbc.co.uk/rss/newsonline_uk_edition/world/rss.xml
http://rss.cnn.com/rss/cnn_world.rss
-http://www.foxnews.com/xmlfeed/rss/0,4313,81,00.rss
+http://feeds.foxnews.com/foxnews/world
http://feeds.reuters.com/reuters/WorldNews
http://www.abc.net.au/news/indexes/world/rss.xml
http://rss.cbc.ca/lineup/world.xml
@@ -8,7 +8,7 @@ http://feeds.news24.com/articles/News24/World/rss
http://news.sky.com/sky-news/rss/world-news/rss.xml
http://www.msnbc.msn.com/id/3032506/device/rss/rss.xml
http://english.aljazeera.net/Services/Rss/?PostingId=2007731105943979989
-http://english.cctv.com/service/rss/2/index.xml
+http://english.cntv.cn/service/rss/1/index.xml
http://rss.nzherald.co.nz/rss/xml/nzhrsscid_000000002.xml
http://feeds.smh.com.au/rssheadlines/world.xml
http://www.telegraph.co.uk/news/worldnews/rss
@@ -26,5 +26,4 @@ http://www.sbs.com.au/news/rss/Section/Top%20Stories
http://www.thestar.com/rss/98744?
http://rss.canada.com/get/?F7432
http://www.rte.ie/rss/news/world.xml
-http://tvnz.co.nz/content/ta_tvnz_world_headlines_auto_group/rss_20_skin.xml
http://timesofindia.indiatimes.com/rssfeeds/296589292.cms
View
2  publisher/src/java/main/org/uncommons/zeitgeist/publisher/DateRenderer.java
@@ -1,5 +1,5 @@
// ============================================================================
-// Copyright 2009-2010 Daniel W. Dyer
+// Copyright 2009-2012 Daniel W. Dyer
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
View
2  publisher/src/java/main/org/uncommons/zeitgeist/publisher/Publisher.java
@@ -1,5 +1,5 @@
// ============================================================================
-// Copyright 2009-2010 Daniel W. Dyer
+// Copyright 2009-2012 Daniel W. Dyer
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
View
2  publisher/src/java/main/org/uncommons/zeitgeist/publisher/XMLStringRenderer.java
@@ -1,5 +1,5 @@
// ============================================================================
-// Copyright 2009-2010 Daniel W. Dyer
+// Copyright 2009-2012 Daniel W. Dyer
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
View
2  publisher/src/java/main/org/uncommons/zeitgeist/publisher/package-info.java
@@ -1,5 +1,5 @@
// ============================================================================
-// Copyright 2009-2010 Daniel W. Dyer
+// Copyright 2009-2012 Daniel W. Dyer
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
View
2  publisher/src/java/test/org/uncommons/zeitgeist/publisher/XMLStringRendererTest.java
@@ -1,5 +1,5 @@
// ============================================================================
-// Copyright 2009-2010 Daniel W. Dyer
+// Copyright 2009-2012 Daniel W. Dyer
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.

No commit comments for this range

Something went wrong with that request. Please try again.