com.vii.streamline.services.db.couchdb.CouchMediator Maven / Gradle / Ivy
/*
* Copyright (c) 2012 Imre Fazekas.
* All rights reserved.
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
*
* Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* Neither the name of the Brillien nor the names of its
* terms and concepts may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
package com.vii.streamline.services.db.couchdb;
import com.vii.streamline.services.error.StreamLineException;
import org.jcouchdb.db.Database;
import org.jcouchdb.db.Options;
import org.jcouchdb.db.ServerImpl;
import org.jcouchdb.document.BaseDocument;
import java.util.List;
/**
* Defines basic behavior for entities providing Couchdb connectivity
*/
public interface CouchMediator {
/**
* Retrieves server instance
*/
ServerImpl getServer();
/**
* Retrieves database connection
*/
Database getDatabase();
/**
* Gets the address of the server
*/
String getServerAddress();
/**
* Sets the address of the server
*/
void setServerAddress(String serverAddress);
/**
* Gets the name of the database
*/
String getDbName();
/**
* Sets the name of the database
*/
void setDbName(String dbName);
/**
* Tells whether to clean DB while starting up
*/
boolean isCleanAtStartup();
/**
* Defines whether to clean DB while starting up
*/
void setCleanAtStartup(boolean cleanAtStartup);
/**
* Gets the path where to find design documents
*/
String getCouchDesignDocumentsPath();
/**
* Sets the path where to find design documents
*/
void setCouchDesignDocumentsPath(String couchDesignDocumentsPath);
/**
* Updates design documents in the db according to the files found on the design document path
*/
void updateDesignDocuments();
/**
* Connects to the Couchdb instance
*/
boolean timeToRelax();
/**
* Checks if the status of the connectivity is all right
*/
void checkDB() throws StreamLineException;
/**
* Closes connection
*/
boolean closeCouch();
/**
* Stores a document in the database
*/
boolean storeDocument( BaseDocument db) throws StreamLineException;
/**
* Updates a document in the database
*/
boolean updateDocument( BaseDocument db) throws StreamLineException;
/**
* Removes a document in the database
*/
boolean deleteDocument( BaseDocument db) throws StreamLineException;
/**
* Collects objects from the database retrieved by the given map-reduce function
*/
List getData(Class type, String function) throws StreamLineException;
/**
* Collects objects from the database retrieved by the given map-reduce function
*/
List getData(Class type, String function, Options options) throws StreamLineException;
/**
* Maps a document from the database identified by the given ID
*/
T getDocumentById(Class classReference, String id) throws StreamLineException;
}