blob: 22507e40262421099a6ec13415f793468d895d6e [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2007, 2010 Oracle. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0, which accompanies this distribution
* and is available at http://www.eclipse.org/legal/epl-v10.html.
*
* Contributors:
* Oracle - initial API and implementation
******************************************************************************/
package org.eclipse.jpt.jpa.core.internal.context;
import org.eclipse.jpt.common.core.JptResourceType;
import org.eclipse.jpt.jpa.core.JpaNode;
import org.eclipse.jpt.jpa.core.context.JpaContextNode;
import org.eclipse.jpt.jpa.core.context.MappingFileRoot;
import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnit;
import org.eclipse.jpt.jpa.core.internal.AbstractJpaNode;
import org.eclipse.jpt.jpa.db.Catalog;
import org.eclipse.jpt.jpa.db.Schema;
import org.eclipse.jpt.jpa.db.SchemaContainer;
public abstract class AbstractJpaContextNode
extends AbstractJpaNode
implements JpaContextNode
{
protected AbstractJpaContextNode(JpaNode parent) {
super(parent);
}
// ********** synchronize/update **********
public void synchronizeWithResourceModel() {
// NOP
}
/**
* convenience method
*/
protected void synchronizeNodesWithResourceModel(Iterable<? extends JpaContextNode> nodes) {
for (JpaContextNode node : nodes) {
node.synchronizeWithResourceModel();
}
}
public void update() {
// NOP
}
/**
* convenience method
*/
protected void updateNodes(Iterable<? extends JpaContextNode> nodes) {
for (JpaContextNode node : nodes) {
node.update();
}
}
// ********** containment hierarchy **********
/**
* covariant override
*/
@Override
public JpaContextNode getParent() {
return (JpaContextNode) super.getParent();
}
/**
* Overridden in:<ul>
* <li>{@link org.eclipse.jpt.jpa.core.internal.context.java.AbstractJavaJpaContextNode#getResourceType() AbstractJavaJpaContextNode}
* <li>{@link org.eclipse.jpt.jpa.core.internal.jpa1.context.java.GenericJarFile#getResourceType() GenericJarFile}
* <li>{@link org.eclipse.jpt.jpa.core.internal.jpa1.context.orm.GenericOrmXml#getResourceType() GenericOrmXml}
* <li>{@link org.eclipse.jpt.jpa.core.internal.jpa1.context.persistence.GenericPersistenceXml#getResourceType() GenericPersistenceXml}
* </ul>
*/
public JptResourceType getResourceType() {
return this.getParent().getResourceType();
}
/**
* Overridden in:<ul>
* <li>{@link org.eclipse.jpt.jpa.core.internal.context.persistence.AbstractPersistenceUnit#getPersistenceUnit() AbstractPersistenceUnit}
* to return itself
* <li>{@link org.eclipse.jpt.jpa.core.internal.jpa1.context.GenericRootContextNode#getPersistenceUnit() GenericRootContextNode}
* to return <code>null</code>
* </ul>
*/
public PersistenceUnit getPersistenceUnit() {
return this.getParent().getPersistenceUnit();
}
/**
* Overridden in:<ul>
* <li>{@link org.eclipse.jpt.jpa.core.internal.context.orm.AbstractEntityMappings#getMappingFileRoot() AbstractEntityMappings}
* to return itself
* <li>{@link org.eclipse.jpt.jpa.core.internal.jpa1.context.GenericRootContextNode#getMappingFileRoot() GenericRootContextNode}
* to return <code>null</code>
* </ul>
*/
public MappingFileRoot getMappingFileRoot() {
return this.getParent().getMappingFileRoot();
}
// ********** database stuff **********
public Schema getContextDefaultDbSchema() {
SchemaContainer dbSchemaContainer = this.getContextDefaultDbSchemaContainer();
return (dbSchemaContainer == null) ? null : dbSchemaContainer.getSchemaForIdentifier(this.getContextDefaultSchema());
}
protected String getContextDefaultSchema() {
MappingFileRoot mfr = this.getMappingFileRoot();
return (mfr != null) ? mfr.getSchema() : this.getPersistenceUnit().getDefaultSchema();
}
/**
* If we don't have a catalog (i.e. we don't even have a <em>default</em> catalog),
* then the database probably does not support catalogs; and we need to
* get the schema directly from the database.
*/
public SchemaContainer getContextDefaultDbSchemaContainer() {
String catalog = this.getContextDefaultCatalog();
return (catalog != null) ? this.resolveDbCatalog(catalog) : this.getDatabase();
}
/**
* If we don't have a catalog (i.e. we don't even have a <em>default</em>
* catalog), then the database probably does not support catalogs.
*/
public Catalog getContextDefaultDbCatalog() {
String catalog = this.getContextDefaultCatalog();
return (catalog == null) ? null : this.resolveDbCatalog(catalog);
}
protected String getContextDefaultCatalog() {
MappingFileRoot mfr = this.getMappingFileRoot();
return (mfr != null) ? mfr.getCatalog() : this.getPersistenceUnit().getDefaultCatalog();
}
}