/* ======================================================================
   Parts Copyright 2006 University of Leeds, Oxford University, University of the Highlands and Islands.

   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.

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

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 );
		}
		

	}

