public Iterable<Periodical> findPeriodicals(SearchFilter filter) {
		Statement stmt = null;
		List<Periodical> periodicals = new LinkedList<Periodical>();
		try {
			stmt = con.createStatement();
			String constraints = "";
			for (String attributeName : filter.getAttributeNames()) {
				constraints += attributeName + " LIKE " + "'%"
						+ filter.getValueForAttribute(attributeName) + "%'"
						+ " AND ";
			}
			constraints = constraints.substring(0, constraints.length() - 5);
			ResultSet results = stmt
					.executeQuery("Select * from Periodical where "
							+ constraints);
			while (results.next()) {
				String itemID = results.getString("ISSN");
				String title = results.getString("Title");
				String publisher = results.getString("Publisher");
				String volume = results.getString("Volume");
				double number = Double.valueOf(results.getString("Number"));
				Calendar date = Calendar.getInstance();
				Date tableDate = results.getDate("Date");
				date.setTime(tableDate);

				periodicals.add(factory.createPeriodical(itemID, title,
						publisher, date, volume, number));
			}
			return periodicals;
		} catch (SQLException e) {
			e.printStackTrace();
			return periodicals;
		} finally {
			if (stmt != null) {
				try {
					stmt.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
		}
	}