alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

Glassfish example source code file (PersistenceClassElementImpl.java)

This example Glassfish source code file (PersistenceClassElementImpl.java) is included in the DevDaily.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Java - Glassfish tags/keywords

bean, concurrencygroupelement, integer, javabean, modelexception, modelexception, modelvetoexception, object, object, persistenceclasselementimpl, persistenceelementcollection, persistenceelementcollection, persistencefieldelement, propertyvetoexception, string, string

The Glassfish PersistenceClassElementImpl.java source code

/*
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 *
 * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
 *
 * The contents of this file are subject to the terms of either the GNU
 * General Public License Version 2 only ("GPL") or the Common Development
 * and Distribution License("CDDL") (collectively, the "License").  You
 * may not use this file except in compliance with the License.  You can
 * obtain a copy of the License at
 * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
 * or packager/legal/LICENSE.txt.  See the License for the specific
 * language governing permissions and limitations under the License.
 *
 * When distributing the software, include this License Header Notice in each
 * file and include the License file at packager/legal/LICENSE.txt.
 *
 * GPL Classpath Exception:
 * Oracle designates this particular file as subject to the "Classpath"
 * exception as provided by Oracle in the GPL Version 2 section of the License
 * file that accompanied this code.
 *
 * Modifications:
 * If applicable, add the following below the License Header, with the fields
 * enclosed by brackets [] replaced by your own identifying information:
 * "Portions Copyright [year] [name of copyright owner]"
 *
 * Contributor(s):
 * If you wish your version of this file to be governed by only the CDDL or
 * only the GPL Version 2, indicate your decision by adding "[Contributor]
 * elects to include this software in this distribution under the [CDDL or GPL
 * Version 2] license."  If you don't indicate a single choice of license, a
 * recipient has the option to distribute your version of this file under
 * either the CDDL, the GPL Version 2 or to extend the choice of license to
 * its licensees as provided above.  However, if you add GPL Version 2 code
 * and therefore, elected the GPL Version 2 license, then the option applies
 * only if the new code is made subject to such option by the copyright
 * holder.
 */

/*
 * PersistenceClassElementImpl.java
 *
 * Created on March 2, 2000, 5:33 PM
 */

package com.sun.jdo.api.persistence.model.jdo.impl;

import java.beans.PropertyVetoException;

import com.sun.jdo.api.persistence.model.jdo.*;
import com.sun.jdo.api.persistence.model.ModelException;
import com.sun.jdo.api.persistence.model.ModelVetoException;
import com.sun.jdo.spi.persistence.utility.JavaTypeHelper;

/** 
 *
 * @author raccah
 * @version %I%
 */
public class PersistenceClassElementImpl extends PersistenceElementImpl 
	implements PersistenceClassElement.Impl
{
	/** Flag used to keep track of changes to this class element. */
	private boolean _isModified;

	/** Object identity type of the class element. */
	private int _objectIdentityType;

	/** Primary key class of the class element. */
	private String _keyClass;

	/** Fields of the class element. */
	private PersistenceElementCollection _fields;

	/** Concurrency groups of the class element. */
	private PersistenceElementCollection _groups;

	/** Create new PersistenceClassElementImpl with no corresponding name.   
	 * This constructor should only be used for cloning and archiving.
	 */
	public PersistenceClassElementImpl ()
	{
		this(null);
	}

	/** Creates new PersistenceClassElementImpl with the corresponding name 
	 * @param name the name of the element
	 */
	public PersistenceClassElementImpl (String name)
	{
		super(name);

		if (name != null)
			_keyClass = name + ".Oid";				// NOI18N

		_objectIdentityType = PersistenceClassElement.APPLICATION_IDENTITY;
		_fields = new PersistenceElementCollection(this, PROP_FIELDS, 
			new PersistenceFieldElement[0]);
		_groups = new PersistenceElementCollection(this, PROP_GROUPS, 
			new ConcurrencyGroupElement[0]);
	}

	/** Fires property change event.  This method overrides that of 
	 * PersistenceElementImpl to update the persistence class element's  
	 * modified status.
	 * @param name property name
	 * @param o old value
	 * @param n new value
	 */
	protected final void firePropertyChange (String name, Object o, Object n)
	{
		// even though o == null and n == null will signify a change, that 
		// is consistent with PropertyChangeSupport's behavior and is 
		// necessary for this to work
		boolean noChange = ((o != null) && (n != null) && o.equals(n));

		super.firePropertyChange(name, o, n);

		if (!(PROP_MODIFIED.equals(name)) && !noChange)
			setModified(true);
	}

	/** Fires vetoable change event.  This method overrides that of 
	 * PersistenceElementImpl to give listeners a chance to block 
	 * changes on the persistence class element modified status.
	 * @param name property name
	 * @param o old value
	 * @param n new value
	 * @exception PropertyVetoException when the change is vetoed by a listener
	 */
	protected final void fireVetoableChange (String name, Object o, Object n)
		throws PropertyVetoException
	{
		// even though o == null and n == null will signify a change, that 
		// is consistent with PropertyChangeSupport's behavior and is 
		// necessary for this to work
		boolean noChange = ((o != null) && (n != null) && o.equals(n));

		super.fireVetoableChange(name, o, n);

		if (!(PROP_MODIFIED.equals(name)) && !noChange)
			fireVetoableChange(PROP_MODIFIED, Boolean.FALSE, Boolean.TRUE);
	}

	/** Gets the modified flag for this persistence class.
	 * @return <code>true if there have been (property) changes to this 
	 * class, <code>false otherwise.
	 */
	public boolean isModified () { return _isModified; }

	/** Set the modified flag for this persistence class to flag.  This is  
	 * usually set to <code>true by property changes and 
	 * <code>false after a save.
	 * @param flag if <code>true, this class is marked as modified;
	 * if <code>false, it is marked as unmodified.
	 */
	public void setModified (boolean flag)
	{
		boolean oldFlag = isModified();

		if (flag != oldFlag)
		{
			_isModified = flag;
			firePropertyChange(PROP_MODIFIED, JavaTypeHelper.valueOf(oldFlag), 
				JavaTypeHelper.valueOf(flag));
		}
	}

	/** Get the object identity type of this class element.
	 * @return the object identity type, one of
	 * {@link PersistenceClassElement#APPLICATION_IDENTITY}, 
	 * {@link PersistenceClassElement#DATABASE_IDENTITY}, or
	 * {@link PersistenceClassElement#UNMANAGED_IDENTITY}.  The default is
	 * APPLICATION_IDENTITY.
	 */
	public int getObjectIdentityType ()
	{
		return _objectIdentityType;
	}

	/** Set the object identity type of this class element.
	 * @param type - an integer indicating the object identity type, one of:
	 * {@link PersistenceClassElement#APPLICATION_IDENTITY}, 
	 * {@link PersistenceClassElement#DATABASE_IDENTITY}, or
	 * {@link PersistenceClassElement#UNMANAGED_IDENTITY}
	 * @exception ModelException if impossible
	 */
	public void setObjectIdentityType (int type) throws ModelException
	{
		Integer old = new Integer(getObjectIdentityType());
		Integer newType = new Integer(type);

		try
		{
			fireVetoableChange(PROP_IDENTITY, old, newType);
			_objectIdentityType = type;
			firePropertyChange(PROP_IDENTITY, old, newType);
		}
		catch (PropertyVetoException e)
		{
			throw new ModelVetoException(e);
		}
 	}


	/** Get the fully qualified name of the primary key class for this class
	 * element.  This value is only used if <code>getObjectIdentityType
	 * returns <code>APPLICATION_IDENTITY
	 * @return the fully qualified key class name, <code>null if the
	 * identity type is not managed by the application
	 * @see #setObjectIdentityType
	 * @see PersistenceClassElement#APPLICATION_IDENTITY
	 *
	 */
	public String getKeyClass ()
	{
		return ((PersistenceClassElement.APPLICATION_IDENTITY == 
			getObjectIdentityType()) ? _keyClass : null);
	}

	/** Set the primary key class for this class element.
	 * @param name - the fully qualified name which represents the primary key
	 * class.  This value is only used if <code>getObjectIdentityType
	 * returns <code>APPLICATION_IDENTITY
	 * @exception ModelException if impossible
	 * @see #setObjectIdentityType
	 * @see PersistenceClassElement#APPLICATION_IDENTITY
	 */
	public void setKeyClass (String name) throws ModelException
	{
		String old = getKeyClass();
		
		try
		{
			fireVetoableChange(PROP_KEY_CLASS, old, name);
			_keyClass = name;
			firePropertyChange(PROP_KEY_CLASS, old, name);
		}
		catch (PropertyVetoException e)
		{
			throw new ModelVetoException(e);
		}
	}

	//================== Fields ===============================

	/** Change the set of fields.
	 * @param fields the new fields
	 * @param action {@link #ADD}, {@link #REMOVE}, or {@link #SET}
	 * @exception ModelException if impossible
	 */
	public void changeFields (PersistenceFieldElement[] fields, int action)
		throws ModelException
	{
		_fields.changeElements(fields, action);
	}

	/** Get all fields.
	 * @return the fields
	 */
	public PersistenceFieldElement[] getFields ()
	{
		return (PersistenceFieldElement[])_fields.getElements();
	}

	/** Find a field by name.
	 * @param name the name to match
	 * @return the field, or <code>null if it does not exist
	 */
	public PersistenceFieldElement getField (String name)
	{
		return (PersistenceFieldElement)_fields.getElement(name);
	}

	//================== ConcurrencyGroups ===============================

	/** Change the set of concurrency groups.
	 * @param groups the new concurrency groups
	 * @param action {@link #ADD}, {@link #REMOVE}, or {@link #SET}
	 * @exception ModelException if impossible
	 */
	public void changeConcurrencyGroups (ConcurrencyGroupElement[] groups,
		int action) throws ModelException
	{
		_groups.changeElements(groups, action);
	}

	/** Get all concurrency groups.
	 * @return the concurrency groups
	 */
	public ConcurrencyGroupElement[] getConcurrencyGroups ()
	{
		return (ConcurrencyGroupElement[])_groups.getElements();
	}

	/** Find a concurrency group by name.
	 * @param name the name to match
	 * @return the concurrency group, or <code>null if it does not exist
	 */
	public ConcurrencyGroupElement getConcurrencyGroup (String name)
	{
		return (ConcurrencyGroupElement)_groups.getElement(name);
	}

	//=============== extra methods needed for xml archiver ==============

	/** Returns the field collection of this class element.  This method 
	 * should only be used internally and for cloning and archiving.
	 * @return the field collection of this class element
	 */
	public PersistenceElementCollection getFieldCollection ()
	{
		return _fields;
	}

	/** Set the field collection of this class element to the supplied 
	 * collection.  This method should only be used internally and for 
	 * cloning and archiving.
	 * @param collection the field collection of this class element
	 */
	public void setFieldCollection (PersistenceElementCollection collection)
	{
		_fields = collection;
	}

	/** Returns the concurrency group collection of this class element.  
	 * This method should only be used internally and for cloning and 
	 * archiving.
	 * @return the concurrency group collection of this class element
	 */
	public PersistenceElementCollection getGroupCollection ()
	{
		return _groups;
	}

	/** Set the concurrency group collection of this class element to the 
	 * supplied collection.  This method should only be used internally 
	 * and for cloning and archiving.
	 * @param collection the concurrency group collection of this class element
	 */
	public void setGroupCollection (PersistenceElementCollection collection)
	{
		_groups = collection;
	}
}

Other Glassfish examples (source code examples)

Here is a short list of links related to this Glassfish PersistenceClassElementImpl.java source code file:

... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.