File Source: filerefererfilterdao.java
1 package net.sourceforge.pebble.dao.file;
2
3 import net.sourceforge.pebble.dao.PersistenceException;
4 import net.sourceforge.pebble.dao.RefererFilterDAO;
5 import net.sourceforge.pebble.domain.Blog;
6 import net.sourceforge.pebble.domain.RefererFilter;
7 import net.sourceforge.pebble.domain.RefererFilterManager;
8 import org.apache.commons.logging.Log;
9 import org.apache.commons.logging.LogFactory;
10
11 import java.io.*;
12 import java.util.ArrayList;
13 import java.util.Collection;
14 import java.util.Iterator;
15
16 /**
17 * A mock implementation of the CategoryDAO interface that does nothing. This
18 * is used when performing unit tests.
19 *
20 * @author Simon Brown
21 */
/*
P/P * Method: void net.sourceforge.pebble.dao.file.FileRefererFilterDAO()
*/
22 public class FileRefererFilterDAO implements RefererFilterDAO {
23
24 /** the name of the file containing the filter */
25 private static final String FILTERS_FILE = "refererFilters.txt";
26
27 /** the log used by this class */
/*
P/P * Method: net.sourceforge.pebble.dao.file.FileRefererFilterDAO__static_init
*
* Postconditions:
* init'ed(log)
*/
28 private static Log log = LogFactory.getLog(RefererFilterManager.class);
29
30 /**
31 * Loads the referer filters.
32 *
33 * @param rootBlog the owning Blog instance
34 * @return a Collection of RefererFilter instances
35 * @throws PersistenceException if filters cannot be loaded
36 */
37 public Collection getRefererFilters(Blog rootBlog) throws PersistenceException {
/*
P/P * Method: Collection getRefererFilters(Blog)
*
* Preconditions:
* rootBlog != null
* (soft) log != null
*
* Postconditions:
* return_value == &new ArrayList(getRefererFilters#1)
* new ArrayList(getRefererFilters#1) num objects == 1
*
* Test Vectors:
* java.io.File:exists(...)@43: {1}, {0}
*/
38 ArrayList filters = new ArrayList();
39 String root = rootBlog.getRoot();
40 try {
41
42 File filtersFile = new File(root, FILTERS_FILE);
43 if (!filtersFile.exists()) {
44 return filters;
45 }
46
47 BufferedReader reader = new BufferedReader(new FileReader(filtersFile));
48 String expression = reader.readLine();
49 while (expression != null) {
50 filters.add(new RefererFilter(expression));
51 expression = reader.readLine();
52 }
53
54 reader.close();
55 } catch (IOException ioe) {
56 log.error("A " + FILTERS_FILE + " file at " + root + " cannot be loaded", ioe);
57 }
58
59 return filters;
60 }
61
62 /**
63 * Adds the specified referer filter.
64 *
65 * @param filter the RefererFilter instance to be added
66 * @param rootBlog the owning Blog instance
67 * @throws PersistenceException if something goes wrong storing the filters
68 */
69 public void addRefererFilter(RefererFilter filter, Blog rootBlog) throws PersistenceException {
/*
P/P * Method: void addRefererFilter(RefererFilter, Blog)
*
* Preconditions:
* rootBlog != null
* (soft) log != null
*/
70 Collection filters = getRefererFilters(rootBlog);
71 filters.add(filter);
72 store(filters, rootBlog);
73 }
74
75 /**
76 * Removes the specified referer filter.
77 *
78 * @param filter the RefererFilter instance to be removed
79 * @param rootBlog the owning Blog instance
80 * @throws PersistenceException if something goes wrong removing the filter
81 */
82 public void deleteRefererFilter(RefererFilter filter, Blog rootBlog) throws PersistenceException {
/*
P/P * Method: void deleteRefererFilter(RefererFilter, Blog)
*
* Preconditions:
* rootBlog != null
* (soft) log != null
*/
83 Collection filters = getRefererFilters(rootBlog);
84 filters.remove(filter);
85 store(filters, rootBlog);
86 }
87
88 /**
89 * Helper method to store all filters for a given blog.
90 *
91 * @param filters the Collection of RefererFilter instances to store
92 * @param rootBlog the blog to which the filters belong
93 */
94 private void store(Collection filters, Blog rootBlog) throws PersistenceException {
95 try {
/*
P/P * Method: void store(Collection, Blog)
*
* Preconditions:
* filters != null
* rootBlog != null
*
* Presumptions:
* java.util.Iterator:next(...)@102 != null
*
* Test Vectors:
* java.util.Iterator:hasNext(...)@101: {1}, {0}
*/
96 String root = rootBlog.getRoot();
97 BufferedWriter writer = new BufferedWriter(new FileWriter(new File(root, FILTERS_FILE)));
98
99 Iterator it = filters.iterator();
100 RefererFilter filter;
101 while (it.hasNext()) {
102 filter = (RefererFilter)it.next();
103 writer.write(filter.getExpression());
104 writer.newLine();
105 }
106
107 writer.flush();
108 writer.close();
109 } catch (IOException ioe) {
110 log.error(ioe);
111 throw new PersistenceException("Filters could not be saved : " + ioe.getMessage());
112 }
113 }
114
115 }
SofCheck Inspector Build Version : 2.22510
| filerefererfilterdao.java |
2010-Jun-25 19:40:32 |
| filerefererfilterdao.class |
2010-Jul-19 20:23:40 |