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:[EMAIL PROTECTED]">[EMAIL PROTECTED]</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:[EMAIL PROTECTED]">[EMAIL PROTECTED]</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:[EMAIL PROTECTED]">[EMAIL PROTECTED]</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:[EMAIL PROTECTED]">[EMAIL PROTECTED]</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:[EMAIL PROTECTED]">[EMAIL PROTECTED]</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:[EMAIL PROTECTED]">[EMAIL PROTECTED]</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: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>