001: /* Copyright (C) 2004 - 2007 db4objects Inc. http://www.db4o.com
002:
003: This file is part of the db4o open source object database.
004:
005: db4o is free software; you can redistribute it and/or modify it under
006: the terms of version 2 of the GNU General Public License as published
007: by the Free Software Foundation and as clarified by db4objects' GPL
008: interpretation policy, available at
009: http://www.db4o.com/about/company/legalpolicies/gplinterpretation/
010: Alternatively you can write to db4objects, Inc., 1900 S Norfolk Street,
011: Suite 350, San Mateo, CA 94403, USA.
012:
013: db4o is distributed in the hope that it will be useful, but WITHOUT ANY
014: WARRANTY; without even the implied warranty of MERCHANTABILITY or
015: FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
016: for more details.
017:
018: You should have received a copy of the GNU General Public License along
019: with this program; if not, write to the Free Software Foundation, Inc.,
020: 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
021: package com.db4o.config;
022:
023: /**
024: * configuration interface for fields of classes.
025: * <br><br>
026: * Use the global Configuration object to configure db4o before opening an
027: * {@link com.db4o.ObjectContainer ObjectContainer}.<br><br>
028: * <b>Example:</b><br>
029: * <code>
030: * Configuration config = Db4o.configure();<br>
031: * ObjectClass oc = config.objectClass("package.className");<br>
032: * ObjectField of = oc.objectField("fieldName");
033: * of.rename("newFieldName");
034: * of.queryEvaluation(false);
035: * </code>
036: */
037: public interface ObjectField {
038:
039: /**
040: * sets cascaded activation behaviour.
041: * <br><br>
042: * Setting cascadeOnActivate to true will result in the activation
043: * of the object attribute stored in this field if the parent object
044: * is activated.
045: * <br><br>
046: * The default setting is <b>false</b>.<br><br>
047: * In client-server environment this setting should be used on both
048: * client and server. <br><br>
049: * @param flag whether activation is to be cascaded to the member object.
050: * @see Configuration#activationDepth Why activation?
051: * @see ObjectClass#cascadeOnActivate
052: * @see com.db4o.ObjectContainer#activate
053: * @see com.db4o.ext.ObjectCallbacks Using callbacks
054: */
055: public void cascadeOnActivate(boolean flag);
056:
057: /**
058: * sets cascaded delete behaviour.
059: * <br><br>
060: * Setting cascadeOnDelete to true will result in the deletion of
061: * the object attribute stored in this field on the parent object
062: * if the parent object is passed to
063: * {@link com.db4o.ObjectContainer#delete}.
064: * <br><br>
065: * <b>Caution !</b><br>
066: * This setting will also trigger deletion of the old member object, on
067: * calls to {@link com.db4o.ObjectContainer#set }.
068: * An example of the behaviour can be found in
069: * {@link ObjectClass#cascadeOnDelete}
070: * <br><br>
071: * The default setting is <b>false</b>.<br><br>
072: * In client-server environment this setting should be used on both
073: * client and server. <br><br>
074: * @param flag whether deletes are to be cascaded to the member object.
075: * @see ObjectClass#cascadeOnDelete
076: * @see com.db4o.ObjectContainer#delete
077: * @see com.db4o.ext.ObjectCallbacks Using callbacks
078: */
079: public void cascadeOnDelete(boolean flag);
080:
081: /**
082: * sets cascaded update behaviour.
083: * <br><br>
084: * Setting cascadeOnUpdate to true will result in the update
085: * of the object attribute stored in this field if the parent object
086: * is passed to
087: * {@link com.db4o.ObjectContainer#set}.
088: * <br><br>
089: * The default setting is <b>false</b>.<br><br>
090: * In client-server environment this setting should be used on both
091: * client and server. <br><br>
092: * @param flag whether updates are to be cascaded to the member object.
093: * @see com.db4o.ObjectContainer#set
094: * @see ObjectClass#cascadeOnUpdate
095: * @see ObjectClass#updateDepth
096: * @see com.db4o.ext.ObjectCallbacks Using callbacks
097: */
098: public void cascadeOnUpdate(boolean flag);
099:
100: /**
101: * turns indexing on or off.
102: * <br><br>Field indices dramatically improve query performance but they may
103: * considerably reduce storage and update performance.<br>The best benchmark whether
104: * or not an index on a field achieves the desired result is the completed application
105: * - with a data load that is typical for it's use.<br><br>This configuration setting
106: * is only checked when the {@link com.db4o.ObjectContainer} is opened. If the
107: * setting is set to <code>true</code> and an index does not exist, the index will be
108: * created. If the setting is set to <code>false</code> and an index does exist the
109: * index will be dropped.<br><br>
110: * In client-server environment this setting should be used on both
111: * client and server. <br><br>
112: * @param flag specify <code>true</code> or <code>false</code> to turn indexing on for
113: * this field
114: */
115: public void indexed(boolean flag);
116:
117: /**
118: * renames a field of a stored class.
119: * <br><br>Use this method to refactor classes.
120: * <br><br>
121: * In client-server environment this setting should be used on both
122: * client and server. <br><br>
123: * @param newName the new fieldname.
124: */
125: public void rename(String newName);
126:
127: /**
128: * toggles query evaluation.
129: * <br><br>All fields are evaluated by default. Use this method to turn query
130: * evaluation of for specific fields.<br><br>
131: * In client-server environment this setting should be used on both
132: * client and server. <br><br>
133: * @param flag specify <code>false</code> to ignore this field during query evaluation.
134: */
135: public void queryEvaluation(boolean flag);
136:
137: }
|