All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.datanucleus.store.schema.StoreSchemaHandler Maven / Gradle / Ivy

Go to download

DataNucleus Core provides the primary components of a heterogenous Java persistence solution. It supports persistence API's being layered on top of the core functionality.

There is a newer version: 6.0.7
Show newest version
/**********************************************************************
Copyright (c) 2008 Andy Jefferson and others. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Contributors:
    ...
**********************************************************************/
package org.datanucleus.store.schema;

import java.util.Properties;
import java.util.Set;

import org.datanucleus.store.StoreManager;

/**
 * Interface defining schema operation for a StoreManager.
 */
public interface StoreSchemaHandler
{
    StoreManager getStoreManager();

    boolean isAutoCreateSchema();
    boolean isAutoCreateTables();
    boolean isAutoCreateConstraints();
    boolean isAutoCreateColumns();
    boolean isAutoCreateWarnOnError();
    boolean isAutoDeleteColumns();

    boolean isValidateTables();
    boolean isValidateColumns();
    boolean isValidateConstraints();

    /**
     * Method to clear out any cached schema information.
     */
    void clear();

    /**
     * Method to create the specified schema.
     * @param schemaName Name of the schema
     * @param props Any properties controlling the schema generation
     * @param connection Connection to use (null implies this will obtain its own connection)
     */
    void createSchema(String schemaName, Properties props, Object connection);

    /**
     * Method to delete the specified schema.
     * @param schemaName Name of the schema
     * @param props Any properties controlling the schema deletion
     * @param connection Connection to use (null implies this will obtain its own connection)
     */
    void deleteSchema(String schemaName, Properties props, Object connection);

    /**
     * Method to generate the required schema for the supplied classes.
     * @param classNames Names of the classes we want the schema generating for.
     * @param props Any properties controlling the schema generation
     * @param connection Connection to use (null implies this will obtain its own connection)
     */
    void createSchemaForClasses(Set classNames, Properties props, Object connection);

    /**
     * Method to delete the schema for the supplied classes.
     * @param classNames Names of the classes we want the schema deleting for.
     * @param props Any properties controlling the schema deletion
     * @param connection Connection to use (null implies this will obtain its own connection)
     */
    void deleteSchemaForClasses(Set classNames, Properties props, Object connection);

    /**
     * Method to validate the schema for the supplied classes.
     * @param classNames Names of classes
     * @param props Any properties controlling schema validation
     * @param connection Connection to use (null implies this will obtain its own connection)
     */
    void validateSchema(Set classNames, Properties props, Object connection);

    /**
     * Accessor for schema data store under the provided name and defined by the specified values.
     * The supported types of values is particular to the implementation.
     * @param connection Connection to the datastore
     * @param name Name of the schema component to return.
     * @param values Value(s) to use as qualifier(s) for selecting the schema component
     * @return Schema data definition for this name
     */
    StoreSchemaData getSchemaData(Object connection, String name, Object[] values);
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy