blob: 6aedb2c9818d7903d4ff25fb8c03297113324dc6 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2006, 2007 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.core.internal.context.orm;
import org.eclipse.jpt.core.TextRange;
import org.eclipse.jpt.core.context.AccessType;
import org.eclipse.jpt.core.context.orm.PersistenceUnitDefaults;
import org.eclipse.jpt.core.context.orm.PersistenceUnitMetadata;
import org.eclipse.jpt.core.resource.orm.OrmFactory;
import org.eclipse.jpt.core.resource.orm.XmlEntityMappings;
import org.eclipse.jpt.core.resource.orm.XmlPersistenceUnitDefaults;
import org.eclipse.jpt.core.resource.orm.XmlPersistenceUnitMetadata;
public class GenericPersistenceUnitDefaults extends AbstractOrmJpaContextNode
implements PersistenceUnitDefaults
{
protected String schema;
protected String catalog;
protected AccessType access;
protected boolean cascadePersist;
protected XmlEntityMappings entityMappings;
public GenericPersistenceUnitDefaults(PersistenceUnitMetadata parent, XmlEntityMappings xmlEntityMappings) {
super(parent);
this.initialize(xmlEntityMappings);
}
public AccessType getAccess() {
return this.access;
}
public void setAccess(AccessType newAccess) {
AccessType oldAccess = this.access;
this.access = newAccess;
if (oldAccess != newAccess) {
if (this.persistenceUnitDefaults() != null) {
this.persistenceUnitDefaults().setAccess(AccessType.toXmlResourceModel(newAccess));
if (this.persistenceUnitDefaults().isAllFeaturesUnset()) {
this.persistenceUnitMetadata().setPersistenceUnitDefaults(null);
if (this.persistenceUnitMetadata().isAllFeaturesUnset()) {
this.entityMappings.setPersistenceUnitMetadata(null);
}
}
}
else {
if (persistenceUnitMetadata() == null) {
this.entityMappings.setPersistenceUnitMetadata(OrmFactory.eINSTANCE.createXmlPersistenceUnitMetadata());
}
persistenceUnitMetadata().setPersistenceUnitDefaults(OrmFactory.eINSTANCE.createXmlPersistenceUnitDefaults());
persistenceUnitDefaults().setAccess(AccessType.toXmlResourceModel(newAccess));
}
}
firePropertyChanged(PersistenceUnitDefaults.ACCESS_PROPERTY, oldAccess, newAccess);
}
protected void setAccess_(AccessType newAccess) {
AccessType oldAccess = this.access;
this.access = newAccess;
firePropertyChanged(PersistenceUnitDefaults.ACCESS_PROPERTY, oldAccess, newAccess);
}
public String getCatalog() {
return this.catalog;
}
public void setCatalog(String newCatalog) {
String oldCatalog = this.catalog;
this.catalog = newCatalog;
if (oldCatalog != newCatalog) {
if (this.persistenceUnitDefaults() != null) {
this.persistenceUnitDefaults().setCatalog(newCatalog);
if (this.persistenceUnitDefaults().isAllFeaturesUnset()) {
this.persistenceUnitMetadata().setPersistenceUnitDefaults(null);
if (this.persistenceUnitMetadata().isAllFeaturesUnset()) {
this.entityMappings.setPersistenceUnitMetadata(null);
}
}
}
else {
if (persistenceUnitMetadata() == null) {
this.entityMappings.setPersistenceUnitMetadata(OrmFactory.eINSTANCE.createXmlPersistenceUnitMetadata());
}
persistenceUnitMetadata().setPersistenceUnitDefaults(OrmFactory.eINSTANCE.createXmlPersistenceUnitDefaults());
persistenceUnitDefaults().setCatalog(newCatalog);
}
}
firePropertyChanged(PersistenceUnitDefaults.CATALOG_PROPERTY, oldCatalog, newCatalog);
}
protected void setCatalog_(String newCatalog) {
String oldCatalog = this.catalog;
this.catalog = newCatalog;
firePropertyChanged(PersistenceUnitDefaults.CATALOG_PROPERTY, oldCatalog, newCatalog);
}
public String getSchema() {
return this.schema;
}
public void setSchema(String newSchema) {
String oldSchema = this.schema;
this.schema = newSchema;
if (oldSchema != newSchema) {
if (this.persistenceUnitDefaults() != null) {
this.persistenceUnitDefaults().setSchema(newSchema);
if (this.persistenceUnitDefaults().isAllFeaturesUnset()) {
this.persistenceUnitMetadata().setPersistenceUnitDefaults(null);
if (this.persistenceUnitMetadata().isAllFeaturesUnset()) {
this.entityMappings.setPersistenceUnitMetadata(null);
}
}
}
else {
if (persistenceUnitMetadata() == null) {
this.entityMappings.setPersistenceUnitMetadata(OrmFactory.eINSTANCE.createXmlPersistenceUnitMetadata());
}
persistenceUnitMetadata().setPersistenceUnitDefaults(OrmFactory.eINSTANCE.createXmlPersistenceUnitDefaults());
persistenceUnitDefaults().setSchema(newSchema);
}
}
firePropertyChanged(PersistenceUnitDefaults.SCHEMA_PROPERTY, oldSchema, newSchema);
}
protected void setSchema_(String newSchema) {
String oldSchema = this.schema;
this.schema = newSchema;
firePropertyChanged(PersistenceUnitDefaults.SCHEMA_PROPERTY, oldSchema, newSchema);
}
public boolean isCascadePersist() {
return this.cascadePersist;
}
public void setCascadePersist(boolean newCascadePersist) {
boolean oldCascadePersist = this.cascadePersist;
this.cascadePersist = newCascadePersist;
if (oldCascadePersist != newCascadePersist) {
if (this.persistenceUnitDefaults() != null) {
this.persistenceUnitDefaults().setCascadePersist(newCascadePersist);
if (this.persistenceUnitDefaults().isAllFeaturesUnset()) {
this.persistenceUnitMetadata().setPersistenceUnitDefaults(null);
if (this.persistenceUnitMetadata().isAllFeaturesUnset()) {
this.entityMappings.setPersistenceUnitMetadata(null);
}
}
}
else if (newCascadePersist) {
if (persistenceUnitMetadata() == null) {
this.entityMappings.setPersistenceUnitMetadata(OrmFactory.eINSTANCE.createXmlPersistenceUnitMetadata());
}
persistenceUnitMetadata().setPersistenceUnitDefaults(OrmFactory.eINSTANCE.createXmlPersistenceUnitDefaults());
persistenceUnitDefaults().setCascadePersist(newCascadePersist);
}
}
firePropertyChanged(PersistenceUnitDefaults.CASCADE_PERSIST_PROPERTY, oldCascadePersist, newCascadePersist);
}
protected void setCascadePersist_(boolean newCascadePersist) {
boolean oldCascadePersist = this.cascadePersist;
this.cascadePersist = newCascadePersist;
firePropertyChanged(PersistenceUnitDefaults.CASCADE_PERSIST_PROPERTY, oldCascadePersist, newCascadePersist);
}
protected void initialize(XmlEntityMappings entityMappings) {
this.entityMappings = entityMappings;
if (this.persistenceUnitDefaults() != null) {
this.access = AccessType.fromXmlResourceModel(this.persistenceUnitDefaults().getAccess());
this.cascadePersist = this.persistenceUnitDefaults().isCascadePersist();
this.catalog = this.persistenceUnitDefaults().getCatalog();
this.schema = this.persistenceUnitDefaults().getSchema();
}
}
public void update(XmlEntityMappings entityMappings) {
this.entityMappings = entityMappings;
if (this.persistenceUnitDefaults() != null) {
this.setAccess_(AccessType.fromXmlResourceModel(this.persistenceUnitDefaults().getAccess()));
this.setCascadePersist_(this.persistenceUnitDefaults().isCascadePersist());
this.setCatalog_(this.persistenceUnitDefaults().getCatalog());
this.setSchema_(this.persistenceUnitDefaults().getSchema());
}
else {
this.setAccess_(null);
this.setCascadePersist_(false);
this.setCatalog_(null);
this.setSchema_(null);
}
}
protected XmlPersistenceUnitDefaults persistenceUnitDefaults() {
if (persistenceUnitMetadata() != null) {
return persistenceUnitMetadata().getPersistenceUnitDefaults();
}
return null;
}
protected XmlPersistenceUnitMetadata persistenceUnitMetadata() {
return this.entityMappings.getPersistenceUnitMetadata();
}
public TextRange validationTextRange() {
if (persistenceUnitDefaults() != null) {
return persistenceUnitDefaults().validationTextRange();
}
return this.entityMappings.validationTextRange();
}
}