From 1341020b72b80e7e11c5dc4f4b4f9faea9ad0546 Mon Sep 17 00:00:00 2001 From: Size43 Date: Wed, 20 May 2015 12:06:06 +0200 Subject: FeedLoaderAndSorter added --- .../java/org/rssin/neurons/FeedSorterStorage.java | 44 --------------- .../java/org/rssin/neurons/MultiNeuralNetwork.java | 4 +- .../main/java/org/rssin/neurons/NeuralNetwork.java | 4 +- .../main/java/org/rssin/neurons/TrainingCase.java | 5 +- .../java/org/rssin/rssin/FeedLoaderAndSorter.java | 64 ++++++++++++++++++++++ app/src/main/java/org/rssin/rssin/Filter.java | 9 ++- 6 files changed, 82 insertions(+), 48 deletions(-) delete mode 100755 app/src/main/java/org/rssin/neurons/FeedSorterStorage.java create mode 100755 app/src/main/java/org/rssin/rssin/FeedLoaderAndSorter.java mode change 100644 => 100755 app/src/main/java/org/rssin/rssin/Filter.java (limited to 'app') 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 getFilteredFeedItems() + { + List resultingItems = new ArrayList(); + 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 old mode 100644 new mode 100755 index a5a4cd9..e0e05d0 --- 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 feeds; private final List 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; + } } -- cgit v1.2.3