/*
* Copyright (C) 2003-2012 eXo Platform SAS.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License
* as published by the Free Software Foundation; either version 3
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see<http://www.gnu.org/licenses/>.
*/
package org.exoplatform.services.jcr.impl.storage.jdbc;
import org.exoplatform.services.jcr.impl.dataflow.SpoolConfig;
import org.exoplatform.services.jcr.storage.value.ValueStoragePluginProvider;
import org.exoplatform.services.jdbc.DataSourceProvider;
/**
* Contains JDBCWorkspaceDataContainer-specific configuration
*
* Created by The eXo Platform SAS 1.03.2012.
*
* @author <a href="mailto:nzamosenchuk@exoplatform.com.ua">Nikolay Zamosenchuk</a>
* @version $Id: JDBCDataContainerConfig.java 5024 2012-03-01 13:36:58Z nzasemochuk $
*/
public class JDBCDataContainerConfig
{
public static enum DatabaseStructureType {
/**
* Each workspace has it's own database
*/
MULTI {
@Override
public boolean isMultiDatabase()
{
return true;
}
@Override
public boolean isShareSameDatasource()
{
return false;
}
},
/**
* All workspaces from each repositories can be stored in a single database within one set of
* tables.
*/
SINGLE {
@Override
public boolean isMultiDatabase()
{
return false;
}
@Override
public boolean isShareSameDatasource()
{
return true;
}
},
/**
* "ISOLATED" database structure combines SINGLE and MULTI, by offering workspace and repository
* storage isolation within one datasource using per-workspace table spaces. So each workspace
* have it's own set of database tables, that are isolated from others.
*/
ISOLATED {
@Override
public boolean isMultiDatabase()
{
return true;
}
@Override
public boolean isShareSameDatasource()
{
return true;
}
};
/**
* @return true if every workspace stores data in separate table within one repository
*/
public abstract boolean isMultiDatabase();
/**
* @return true if every workspace should have same datasource name parameter in container
*/
public abstract boolean isShareSameDatasource();
}
/**
* Use additional connection to database to check same name siblings
*/
public boolean checkSNSNewConnection;
/**
* Container name
*/
public String containerName;
/**
* Database dialect
*/
public String dbDialect;
/**
* Datasource name
*/
public String dbSourceName;
/**
* Data structure type, replaces deprecated multiDb
*/
public JDBCDataContainerConfig.DatabaseStructureType dbStructureType;
/**
* Suffix used in tables names when isolated-databse structure used
*/
public String dbTableSuffix;
/**
* Datasource provider
*/
public DataSourceProvider dsProvider;
/**
* If datasource is managed by outer container
*/
public boolean isManaged;
/**
* Version of persisted storage
*/
public String storageVersion;
/**
* Spool container configuration.
*/
public SpoolConfig spoolConfig;
/**
* Unique container name
*/
public String uniqueName;
/**
* Some DataBases supports query hints, that may improve query performance.
* For default hints are enabled.
*/
public boolean useQueryHints;
/**
* ValueStorage provier
*/
public ValueStoragePluginProvider valueStorageProvider;
/**
* Path to SQL initialization scripts
*/
public String initScriptPath;
/**
* Batch size.
*/
public int batchSize;
/**
* Use sequence for order number.
*/
public boolean useSequenceForOrderNumber;
}