Ignore:
Timestamp:
2004-12-06T11:44:03+13:00 (19 years ago)
Author:
schweer
Message:

user authentication works; user information and subscriptions/predicates are stored to thedatabase

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/gsdl3/extensions/gsdl-as/src/org/greenstone/gsdlas/profiles/Predicate.java

    r8609 r8738  
    99package org.greenstone.gsdlas.profiles;
    1010
     11import java.sql.*;
     12import java.sql.SQLException;
     13import java.sql.Statement;
    1114import java.util.*;
    1215import java.util.Set;
    1316import java.util.TreeSet;
     17
     18import org.greenstone.gsdlas.database.DatabaseException;
     19import org.greenstone.gsdlas.database.DatabaseManager;
     20import org.greenstone.gsdlas.util.ArrayHelper;
    1421
    1522/**
     
    2633    protected int id;
    2734   
    28     public void addSubscription(Subscription sub) {
    29         subscriptions.add(sub);
     35
     36    public static final String[] singleValueFields = new String[] {
     37            "document_title",
     38            "document_content",
     39            "metadata_has_field",
     40            "host_query",
     41            "collection_query" };
     42    public static final String[] multiValueFields = new String[] {
     43            "type",
     44            "host",
     45            "collection" };
     46   
     47    public void addSubscription(int subscriptionID) {
     48        subscriptions.add(new Integer(subscriptionID));
     49        // TODO save to db
    3050    }
    3151
     
    3353     * @see org.greenstone.gsdlas.profiles.Predicate#getSubscriptions()
    3454     */
    35     public Set getSubscriptions() {
     55    public Set getSubscriptionIDs() {
    3656        return Collections.unmodifiableSet(subscriptions);
    3757    }
     
    7494   
    7595    public abstract boolean isSatisfied(Map event);
     96
     97    /**
     98     * @param key
     99     * @return
     100     */
     101    public static boolean isSingleValued(String key) {
     102        return ArrayHelper.contains(singleValueFields, key);
     103    }
     104
     105    /**
     106     * @param key
     107     * @return
     108     */
     109    public static boolean isMultiValued(String key) {
     110        return ArrayHelper.contains(singleValueFields, key);
     111    }
     112
     113    /**
     114     * @return
     115     * @throws DatabaseException
     116     * @throws SQLException
     117     */
     118    int saveToDatabase() throws SQLException, DatabaseException {
     119        // TODO handle multi-valued predicate (in subclass?)
     120        String query = "SELECT id FROM predicates " +
     121                "WHERE type='single' AND field = '" + field +
     122                "' AND singleValue = '" + value + "';";
     123        Statement statement = DatabaseManager.getInstance().getDatabaseConnection().createStatement();
     124        System.out.println(query);
     125        ResultSet result = statement.executeQuery(query);
     126        if (result.next()) { // predicate already exists in database
     127            System.out.println("predicate " + id + " already exists");
     128            return result.getInt("id");
     129        }
     130        // predicate has been newly created
     131        String insert = "INSERT INTO predicates (type, field, singleValue) " +
     132        "VALUES ('single', '" + field + "', '" + value + "');";
     133        System.out.println(insert);
     134        statement.execute(insert);
     135        result = statement.executeQuery(query);
     136        if (result.next()) {
     137            return result.getInt("id");
     138        } else {
     139            throw new DatabaseException("could not save predicate");
     140        }
     141    }
    76142   
    77143}
Note: See TracChangeset for help on using the changeset viewer.