/* This file is part of the db4o object database http://www.db4o.com
Copyright (C) 2004 - 2011 Versant Corporation http://www.versant.com
db4o is free software; you can redistribute it and/or modify it under
the terms of version 3 of the GNU General Public License as published
by the Free Software Foundation.
db4o is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License along
with this program. If not, see http://www.gnu.org/licenses/. */
package com.db4o.ext;
/**
* the internal representation of a stored class.
*/
public interface StoredClass {
/**
* returns the name of this stored class.
*/
public String getName();
/**
* returns an array of IDs of all stored object instances of this stored class.
*/
public long[] getIDs();
/**
* returns the StoredClass for the parent of the class, this StoredClass represents.
*/
public StoredClass getParentStoredClass();
/**
* returns all stored fields of this stored class.
*/
public StoredField[] getStoredFields();
/**
* returns true if this StoredClass has a class index.
*/
public boolean hasClassIndex();
/**
* renames this stored class.
* <br><br>After renaming one or multiple classes the ObjectContainer has
* to be closed and reopened to allow internal caches to be refreshed.
* <br><br>.NET: As the name you should provide [Classname, Assemblyname]<br><br>
* @param name the new name
*/
public void rename(String name);
// TODO: add field creation
/**
* returns an existing stored field of this stored class.
* @param name the name of the field
* @param type the type of the field.
* There are four possibilities how to supply the type:<br>
* - a Class object. (.NET: a Type object)<br>
* - a fully qualified classname.<br>
* - any object to be used as a template.<br><br>
* - null, if the first found field should be returned.
* @return the {@link StoredField}
*/
public StoredField storedField(String name, Object type);
/**
* Returns the number of instances of this class that have been persisted to the
* database, as seen by the transaction (container) that produces this StoredClass
* instance.
*
* @return The number of instances
*/
public int instanceCount();
}