You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@avalon.apache.org by ha...@apache.org on 2001/11/12 16:09:04 UTC

cvs commit: jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/persistence/store StorePersistence.java

hammant     01/11/12 07:09:04

  Modified:    apps/db/src/java/org/apache/avalon/db/data Queryable.java
                        RowListener.java
               apps/db/src/java/org/apache/avalon/db/data/impl
                        AbstractDelegatedQueryable.java
                        AbstractQueryable.java
               apps/db/src/java/org/apache/avalon/db/persistence/store
                        StorePersistence.java
  Added:       apps/db/src/java/org/apache/avalon/db/data Cataloged.java
  Log:
  Start of Store persistence
  
  Revision  Changes    Path
  1.2       +2 -2      jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/data/Queryable.java
  
  Index: Queryable.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/data/Queryable.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Queryable.java	2001/11/11 13:03:45	1.1
  +++ Queryable.java	2001/11/12 15:09:04	1.2
  @@ -15,9 +15,9 @@
    *
    *
    * @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
  - * @version * $Revision: 1.1 $
  + * @version * $Revision: 1.2 $
    */
  -public interface Queryable extends Nameable {
  +public interface Queryable extends Nameable, Cataloged {
       Column[] getColumns();
   
       void addRow(Row row);
  
  
  
  1.2       +4 -4      jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/data/RowListener.java
  
  Index: RowListener.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/data/RowListener.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- RowListener.java	2001/11/10 09:15:45	1.1
  +++ RowListener.java	2001/11/12 15:09:04	1.2
  @@ -13,13 +13,13 @@
    *
    *
    * @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
  - * @version * $Revision: 1.1 $
  + * @version * $Revision: 1.2 $
    */
   public interface RowListener {
   
  -    void rowsAdded(Row[] rows);
  -    void rowsDeleted(Row[] rows);
  -    void rowsChanged(Row[] rows);
  +    void rowsAdded(Queryable queryable, Row[] rows);
  +    void rowsDeleted(Queryable queryable, Row[] rows);
  +    void rowsChanged(Queryable queryable, Row[] rows);
   
   
   }
  
  
  
  1.1                  jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/data/Cataloged.java
  
  Index: Cataloged.java
  ===================================================================
  
  /*
   * Copyright (C) The Apache Software Foundation. All rights reserved.
   *
   * This software is published under the terms of the Apache Software License
   * version 1.1, a copy of which has been included with this distribution in
   * the LICENSE file.
   */
  package org.apache.avalon.db.data;
  
  import java.io.Serializable;
  
  /**
   * Interface Cataloged
   *
   *
   * @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
   * @version * $Revision: 1.1 $
   */
  public interface Cataloged extends Serializable {
  
      /**
       * Method getCatalogName
       *
       *
       * @return
       *
       */
      String getCatalogName();
  }
  
  
  
  1.2       +9 -0      jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/data/impl/AbstractDelegatedQueryable.java
  
  Index: AbstractDelegatedQueryable.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/data/impl/AbstractDelegatedQueryable.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- AbstractDelegatedQueryable.java	2001/11/11 13:03:45	1.1
  +++ AbstractDelegatedQueryable.java	2001/11/12 15:09:04	1.2
  @@ -25,11 +25,12 @@
    *
    *
    * @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
  - * @version $Revision: 1.1 $
  + * @version $Revision: 1.2 $
    */
   public abstract class AbstractDelegatedQueryable extends AbstractNameable implements Queryable {
   
       private AbstractQueryable mAbstractQueryable;
  +    protected String mCatalogName;
   
       /**
        * Constructor AbstractDelegatedQueryable
  @@ -42,6 +43,14 @@
       public AbstractDelegatedQueryable(String indexName, AbstractQueryable rowAbstractQueryable) {
           super(indexName);
           mAbstractQueryable = rowAbstractQueryable;
  +    }
  +
  +    public String getCatalogName() {
  +        return mCatalogName;
  +    }
  +
  +    public void setCatalogName(String catalogName) {
  +        mCatalogName = catalogName;
       }
   
       /**
  
  
  
  1.2       +14 -5     jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/data/impl/AbstractQueryable.java
  
  Index: AbstractQueryable.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/data/impl/AbstractQueryable.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- AbstractQueryable.java	2001/11/11 13:03:45	1.1
  +++ AbstractQueryable.java	2001/11/12 15:09:04	1.2
  @@ -25,15 +25,15 @@
    *
    *
    * @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
  - * @version $Revision: 1.1 $
  + * @version $Revision: 1.2 $
    */
   public abstract class AbstractQueryable extends AbstractNameable implements Queryable {
   
       protected Column[] mColumns;
       protected Vector mRows = new Vector();
       protected Vector mListeners = new Vector();
  +    protected String mCatalogName = "?";
   
  -
       /**
        * Constructor AbstractQueryable
        *
  @@ -47,6 +47,15 @@
           mColumns = columns;
       }
   
  +    public String getCatalogName() {
  +        return mCatalogName;
  +    }
  +
  +    public void setCatalogName(String catalogName) {
  +        mCatalogName = catalogName;
  +    }
  +
  +
       /**
        * Method getColumns
        *
  @@ -92,7 +101,7 @@
               if (listener == null) {
                   it.remove();
               } else {
  -                listener.rowsAdded(rows);
  +                listener.rowsAdded(this, rows);
               }
           }
       }
  @@ -105,7 +114,7 @@
               if (listener == null) {
                   it.remove();
               } else {
  -                listener.rowsChanged(rows);
  +                listener.rowsChanged(this, rows);
               }
           }
       }
  @@ -118,7 +127,7 @@
               if (listener == null) {
                   it.remove();
               } else {
  -                listener.rowsDeleted(rows);
  +                listener.rowsDeleted(this, rows);
               }
           }
       }
  
  
  
  1.9       +55 -54    jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/persistence/store/StorePersistence.java
  
  Index: StorePersistence.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-cornerstone/apps/db/src/java/org/apache/avalon/db/persistence/store/StorePersistence.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- StorePersistence.java	2001/11/11 21:44:47	1.8
  +++ StorePersistence.java	2001/11/12 15:09:04	1.9
  @@ -8,26 +8,17 @@
    */
   package org.apache.avalon.db.persistence.store;
   
  -
  -
  -import org.apache.avalon.db.services.DatabasePersistor;
  -import org.apache.avalon.db.services.ActionCache;
  -import org.apache.avalon.db.data.Table;
  -import org.apache.avalon.db.data.View;
  -import org.apache.avalon.db.data.Index;
  +import org.apache.avalon.db.persistence.inmemory.NoPersistence;
   import org.apache.avalon.db.data.Queryable;
  -import org.apache.avalon.framework.logger.AbstractLogEnabled;
  -import org.apache.avalon.framework.context.Contextualizable;
  -import org.apache.avalon.framework.context.Context;
  -import org.apache.avalon.framework.context.ContextException;
  -import org.apache.avalon.framework.component.Composable;
  +import org.apache.avalon.db.data.RowListener;
  +import org.apache.avalon.db.data.Row;
  +import org.apache.avalon.db.data.Table;
   import org.apache.avalon.framework.component.ComponentManager;
   import org.apache.avalon.framework.component.ComponentException;
  -import org.apache.avalon.framework.configuration.Configurable;
   import org.apache.avalon.framework.configuration.Configuration;
   import org.apache.avalon.framework.configuration.ConfigurationException;
  -import org.apache.avalon.framework.activity.Initializable;
  -import org.apache.avalon.phoenix.Block;
  +import org.apache.avalon.cornerstone.services.store.Store;
  +import org.apache.avalon.cornerstone.services.store.ObjectRepository;
   
   
   /**
  @@ -35,25 +26,13 @@
    *
    *
    * @author Paul Hammant <a href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a>
  - * @version $Revision: 1.8 $
  + * @version $Revision: 1.9 $
    */
  -public class StorePersistence extends AbstractLogEnabled
  -        implements DatabasePersistor, Block, Contextualizable, Composable, Configurable,
  -                   Initializable {
  -
  -    // depends on CornerStone's Store.
  -
  -    /**
  -     * Method contextualize
  -     *
  -     *
  -     * @param context
  -     *
  -     * @throws ContextException
  -     *
  -     */
  -    public void contextualize(Context context) throws ContextException {}
  +public class StorePersistence extends NoPersistence implements RowListener {
   
  +    protected Store mStore;
  +    protected Configuration mStoreConfig;
  +    protected ObjectRepository mObjectRepository;
       /**
        * Method compose
        *
  @@ -63,37 +42,59 @@
        * @throws ComponentException
        *
        */
  -    public void compose(ComponentManager componentManager) throws ComponentException {}
  +    public void compose(ComponentManager componentManager) throws ComponentException {
  +        mStore = (Store) componentManager.lookup(Store.class.getName());
  +        super.compose(componentManager);
  +    }
   
  -    /**
  -     * Method configure
  -     *
  -     *
  -     * @param configuration
  -     *
  -     * @throws ConfigurationException
  -     *
  -     */
  -    public void configure(Configuration configuration) throws ConfigurationException {}
  +    public void configure(Configuration configuration)
  +            throws ConfigurationException {
  +        mStoreConfig = configuration.getChild("repository");
  +        super.configure(configuration);
  +    }
   
  -    /**
  -     * Method initialize
  -     *
  -     *
  -     * @throws Exception
  -     *
  -     */
  -    public void initialize() throws Exception {}
  +    public void initialize()
  +            throws Exception {
  +        mObjectRepository = (ObjectRepository) mStore.select(mStoreConfig);
  +    }
   
       public boolean queryableExists(String queryableName) {
  -        return false;
  +        return super.queryableExists(queryableName);
       }
   
       public Queryable getQueryable(String queryableName) {
  -        return null;
  +        Queryable qy = super.getQueryable(queryableName);
  +        if (qy instanceof Table) {
  +            qy.addRowListener(this);
  +        }
  +        return qy;
  +    }
  +
  +    public void addQueryable(String queryableName, Queryable queryable) {
  +        super.addQueryable(queryableName, queryable);
  +        if (queryable instanceof Table) {
  +            queryable.addRowListener(this);
  +        }
  +    }
  +
  +    public void rowsAdded(Queryable queryable, Row[] rows) {
  +        persist(queryable);
  +    }
  +
  +    public void rowsDeleted(Queryable queryable, Row[] rows) {
  +        persist(queryable);
  +    }
  +
  +    public void rowsChanged(Queryable queryable, Row[] rows) {
  +        persist(queryable);
  +    }
  +
  +    private void persist(Queryable queryable) {
  +        String path = queryable.getCatalogName() + "/" + queryable.getName();
  +        mObjectRepository.put(path,queryable);
       }
   
  -    public void addQueryable(String queryableName, Queryable queryable) {}
  +    //TODO - de persistence on demand.
   
   
   }
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>