aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java/org
diff options
context:
space:
mode:
authorSize432015-05-20 12:06:06 +0200
committerSize432015-05-20 12:06:06 +0200
commit1341020b72b80e7e11c5dc4f4b4f9faea9ad0546 (patch)
treefc3589d03baa775e9c03f03ff4e17eb423c195f1 /app/src/main/java/org
parentfix voor jos (diff)
FeedLoaderAndSorter added
Diffstat (limited to 'app/src/main/java/org')
-rwxr-xr-xapp/src/main/java/org/rssin/neurons/FeedSorterStorage.java44
-rwxr-xr-xapp/src/main/java/org/rssin/neurons/MultiNeuralNetwork.java4
-rwxr-xr-xapp/src/main/java/org/rssin/neurons/NeuralNetwork.java4
-rwxr-xr-xapp/src/main/java/org/rssin/neurons/TrainingCase.java5
-rwxr-xr-xapp/src/main/java/org/rssin/rssin/FeedLoaderAndSorter.java64
-rwxr-xr-x[-rw-r--r--]app/src/main/java/org/rssin/rssin/Filter.java9
6 files changed, 82 insertions, 48 deletions
diff --git a/app/src/main/java/org/rssin/neurons/FeedSorterStorage.java b/app/src/main/java/org/rssin/neurons/FeedSorterStorage.java
deleted file mode 100755
index 1479a3b..0000000
--- a/app/src/main/java/org/rssin/neurons/FeedSorterStorage.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package org.rssin.neurons;
-
-import android.content.Context;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-
-/**
- * Created by Jos on 20-5-2015.
- */
-public class FeedSorterStorage {
- private final String file = "ml.dat";
- public FeedSorterStorage()
- {}
-
- /**
- * Reads a FeedSorter from an internal file.
- * @param context The context
- * @return The loaded FeedSorter
- * @throws IOException
- * @throws ClassNotFoundException
- */
- public FeedSorter loadSorter(Context context) throws IOException, ClassNotFoundException {
- ObjectInputStream is = new ObjectInputStream(context.openFileInput(file));
- FeedSorter read = (FeedSorter)is.readObject();
- is.close();
- return read;
- }
-
- /**
- * Saves the FeedSorter to an internal file.
- * @param context The context
- * @param s The FeedSorter to save
- * @throws IOException
- */
- public void saveSorter(Context context, FeedSorter s) throws IOException {
- ObjectOutputStream os = new ObjectOutputStream(context.openFileOutput(file, Context.MODE_PRIVATE));
- os.writeObject(s);
- os.close();
- }
-}
diff --git a/app/src/main/java/org/rssin/neurons/MultiNeuralNetwork.java b/app/src/main/java/org/rssin/neurons/MultiNeuralNetwork.java
index 09dfc21..a2f06eb 100755
--- a/app/src/main/java/org/rssin/neurons/MultiNeuralNetwork.java
+++ b/app/src/main/java/org/rssin/neurons/MultiNeuralNetwork.java
@@ -1,9 +1,11 @@
package org.rssin.neurons;
+import java.io.Serializable;
+
/**
* Created by Jos on 14-5-2015.
*/
-class MultiNeuralNetwork {
+class MultiNeuralNetwork implements Serializable{
private static final long serialVersionUID = 0;
private NeuralNetwork[] networks;
diff --git a/app/src/main/java/org/rssin/neurons/NeuralNetwork.java b/app/src/main/java/org/rssin/neurons/NeuralNetwork.java
index 3766262..620d5bd 100755
--- a/app/src/main/java/org/rssin/neurons/NeuralNetwork.java
+++ b/app/src/main/java/org/rssin/neurons/NeuralNetwork.java
@@ -1,9 +1,11 @@
package org.rssin.neurons;
+import java.io.Serializable;
+
/**
* Created by Jos on 14-5-2015.
*/
-class NeuralNetwork {
+class NeuralNetwork implements Serializable{
private static final long serialVersionUID = 0;
private Neuron[] hiddenNodes;
private Neuron outputNode;
diff --git a/app/src/main/java/org/rssin/neurons/TrainingCase.java b/app/src/main/java/org/rssin/neurons/TrainingCase.java
index e2680f8..77162be 100755
--- a/app/src/main/java/org/rssin/neurons/TrainingCase.java
+++ b/app/src/main/java/org/rssin/neurons/TrainingCase.java
@@ -1,9 +1,12 @@
package org.rssin.neurons;
+import java.io.Serializable;
+
/**
* Created by Jos on 20-5-2015.
*/
-class TrainingCase {
+class TrainingCase implements Serializable {
+ private static long serialVersionID;
private double[] inputs;
private Feedback feedback;
diff --git a/app/src/main/java/org/rssin/rssin/FeedLoaderAndSorter.java b/app/src/main/java/org/rssin/rssin/FeedLoaderAndSorter.java
new file mode 100755
index 0000000..eda0526
--- /dev/null
+++ b/app/src/main/java/org/rssin/rssin/FeedLoaderAndSorter.java
@@ -0,0 +1,64 @@
+package org.rssin.rssin;
+
+import org.rssin.neurons.FeedSorter;
+import org.rssin.rss.FeedItem;
+import org.rssin.rss.FeedLoader;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Created by Jos on 20-5-2015.
+ */
+public class FeedLoaderAndSorter {
+ private Filter filter;
+
+ public FeedLoaderAndSorter(Filter filter) {
+ this.filter = filter;
+ }
+
+ /**
+ * Loads the feed(s), filters it, sorts it, and returns the result.
+ * @return The filtered & sorted list of feedtems.
+ */
+ public List<FeedItem> getFilteredFeedItems()
+ {
+ List<FeedItem> resultingItems = new ArrayList<FeedItem>();
+ for(Feed feed : filter.getFeeds())
+ {
+ FeedLoader loader = new FeedLoader(feed.getURL());
+ loader.fetchXML();
+ org.rssin.rss.Feed loadedFeed = loader.getFeed();
+ for(FeedItem item : loadedFeed.getPosts())
+ {
+ if(matchesKeyword(item))
+ {
+ resultingItems.add(item);
+ }
+ }
+ }
+
+ FeedSorter sorter = filter.getSorter();
+ return sorter.sortItems(resultingItems);
+ }
+
+ private boolean matchesKeyword(FeedItem item)
+ {
+ for(Keyword keyword : filter.getKeywords())
+ {
+ if(contains(item.getTitle(), keyword.getKeyword()))
+ {
+ return true;
+ }
+ }
+
+ return filter.getKeywords().size() == 0;
+ }
+
+ private static boolean contains( String haystack, String needle ) {
+ haystack = haystack == null ? "" : haystack;
+ needle = needle == null ? "" : needle;
+
+ return haystack.toLowerCase().contains(needle.toLowerCase());
+ }
+}
diff --git a/app/src/main/java/org/rssin/rssin/Filter.java b/app/src/main/java/org/rssin/rssin/Filter.java
index a5a4cd9..e0e05d0 100644..100755
--- a/app/src/main/java/org/rssin/rssin/Filter.java
+++ b/app/src/main/java/org/rssin/rssin/Filter.java
@@ -2,6 +2,9 @@ package org.rssin.rssin;
import android.text.TextUtils;
+import org.rssin.neurons.FeedSorter;
+import org.rssin.rss.FeedItem;
+
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
@@ -15,7 +18,8 @@ public class Filter implements Serializable {
private final List<Feed> feeds;
private final List<Keyword> keywords;
- private String title = new String("");
+ private String title = "";
+ private FeedSorter sorter;
public Filter() {
feeds = new ArrayList<>();
@@ -65,4 +69,7 @@ public class Filter implements Serializable {
this.title = title;
}
+ public FeedSorter getSorter() {
+ return sorter;
+ }
}