/* ======================================================================
The Bodington System Software License, Version 1.0
  
Copyright (c) 2001 The University of Leeds.  All rights reserved.
  
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:

1.  Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.

2.  Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.

3.  The end-user documentation included with the redistribution, if any,
must include the following acknowledgement:  "This product includes
software developed by the University of Leeds
(http://www.bodington.org/)."  Alternately, this acknowledgement may
appear in the software itself, if and wherever such third-party
acknowledgements normally appear.

4.  The names "Bodington", "Nathan Bodington", "Bodington System",
"Bodington Open Source Project", and "The University of Leeds" must not be
used to endorse or promote products derived from this software without
prior written permission. For written permission, please contact
d.gardner@leeds.ac.uk.

5.  The name "Bodington" may not appear in the name of products derived
from this software without prior written permission of the University of
Leeds.

THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
WARRANTIES, INCLUDING, BUT NOT LIMITED TO,  TITLE,  THE IMPLIED WARRANTIES 
OF QUALITY  AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO 
EVENT SHALL THE UNIVERSITY OF LEEDS OR ITS CONTRIBUTORS BE LIABLE FOR 
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 
GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
POSSIBILITY OF SUCH DAMAGE.
=========================================================

This software was originally created by the University of Leeds and may contain voluntary 
contributions from others.  For more information on the Bodington Open Source Project, please 
see http://bodington.org/

====================================================================== */

package org.bodington.server.realm;

import org.bodington.server.resources.*;
import org.bodington.server.realm.*;
import org.bodington.server.*;
import org.bodington.sqldatabase.*;
import org.bodington.database.*;
import java.io.BufferedReader;
import java.io.IOException;
import java.util.Enumeration;
import java.util.StringTokenizer;
import java.util.Vector;


/**
 * Represents properties and code for editing sets of aliases.
 * 
 * @author Jon Maber
 * @version 1.0
 */
public class GroupEditor extends org.bodington.sqldatabase.SqlPersistentObject
	{
	private PrimaryKey alias_editor_id;
	private PrimaryKey resource_id;
	private String group_prefix;

	/**
	 * Finds an GroupEditor given its primary key.
	 * 
	 * @param key The key to search for.
	 * @return An GroupEditor or null.
	 * @exception org.bodington.server.BuildingServerException If there is a database problem.
	 */
	
	
	public static GroupEditor findGroupEditor( PrimaryKey key )
	    throws BuildingServerException
	    {
	    return (GroupEditor)findPersistentObject( key, "org.bodington.server.realm.GroupEditor" );
	    }
	
	/**
	 * Finds an alias using a search expression.
	 * 
	 * @param where An SQL WHERE clause.
	 * @return An Group or null.
	 * @exception org.bodington.server.BuildingServerException If there is a database problem.
	 */
	public static GroupEditor findGroupEditor( String where )
	    throws BuildingServerException
	    {
	    return (GroupEditor)findPersistentObject( where, "org.bodington.server.realm.GroupEditor" );
	    }
	
	/**
	 * Finds a set of aliases.
	 * 
	 * @param where An SQL where clause.
	 * @return An enumeration of GroupEditors.
	 * @exception org.bodington.server.BuildingServerException If there is a database problem.
	 */
	public static Enumeration findGroupEditors( String where )
	    throws BuildingServerException
	    {
	    return findPersistentObjects( where, "org.bodington.server.realm.GroupEditor" );
	    }
    /**
     * Calls setGroupEditorId().
     * 
     * @param key New PrimaryKey.
     */
	
    public void setPrimaryKey( PrimaryKey key )
	    {
	    setGroupEditorId( key );
	    }

    /**
     * Calls getGroupEditorId().
     * 
     * @return The primary key.
     */
    public PrimaryKey getPrimaryKey()
	    {
        return getGroupEditorId();
	    }

    /**
     * Sets property.
     * 
     * @param key The new aliasEditor id.
     */
    public void setGroupEditorId( PrimaryKey key )
	    {
	    alias_editor_id = key;
	    setUnsaved();
	    }
    /**
     * Gets property.
     * 
     * @return The alias id.
     */

    public PrimaryKey getGroupEditorId()
	    {
        return alias_editor_id;
	    }
    
    /**
     * Sets property.
     * 
     * @param key The new resource id.
     */
    
    public void setResourceId( PrimaryKey key )
	    {
	    resource_id = key;
	    setUnsaved();
	    }
    /**
     * Sets property.
     * 
     * @return The resource id.
     */

    public PrimaryKey getResourceId()
	    {
        return resource_id;
	    }
	/**
	 * Sets resource id from given resource.
	 * 
	 * @param z The new resource.
	 */
	
	public void setResource( Resource z )
		{
		setResourceId( z.getResourceId() );
		}

	/**
	 * Finds the resource object associated with this ALiasEditor.
	 * 
	 * @return A resource or null.
	 * @exception org.bodington.server.BuildingServerException If there is a database problem.
	 */
	public Resource getResource()
		throws BuildingServerException
		{
		return Resource.findResource( resource_id );
		}
		

	}

