01: /*
02:
03: This software is OSI Certified Open Source Software.
04: OSI Certified is a certification mark of the Open Source Initiative.
05:
06: The license (Mozilla version 1.0) can be read at the MMBase site.
07: See http://www.MMBase.org/license
08:
09: */
10: package org.mmbase.storage.search;
11:
12: /**
13: * A stepfield refers to a field in a step.
14: * Each stepfield has an unique alias to identify it.
15: * <p>
16: * This corresponds to a prefixed fieldname in a SQL SELECT-syntax.
17: *
18: * @author Rob van Maris
19: * @version $Id: StepField.java,v 1.6 2007/12/06 08:13:36 michiel Exp $
20: * @since MMBase-1.7
21: */
22: public interface StepField {
23: /**
24: * Gets the name of the associated field (without prefix).
25: * <p>
26: * This corresponds to the fieldname in SQL SELECT-syntax.
27: */
28: String getFieldName();
29:
30: /**
31: * Gets the alias for the associated field.
32: * <p>
33: * This corresponds to the field alias in SQL SELECT-syntax.
34: */
35: String getAlias();
36:
37: /**
38: * Gets the step associated with this fieldstep.
39: */
40: Step getStep();
41:
42: /**
43: * Gets the type of the associated field.
44: * This is one of the values defined in {@link org.mmbase.bridge.Field Field}.
45: */
46: int getType();
47:
48: /**
49: * Compares this stepfield to the specified object. The result is
50: * <code>true</code> if and only if the argument is a non-null
51: * StepField object associated with the same field, using the same alias.
52: *
53: * @param obj The object to compare with.
54: * @return <code>true</code> if the objects are equal,
55: * <code>false</code> otherwise.
56: */
57: public boolean equals(Object obj);
58:
59: // javadoc is inherited
60: public int hashCode();
61:
62: /**
63: * Returns a string representation of this StepField.
64: * The string representation has the form
65: * "StepField(step:<step>, fieldname:<fieldname>, alias:<alias>)"
66: * where
67: * <ul>
68: * <li><em><step></em> is the step alias returned by
69: * <code>getStep().getAlias()</code> or,
70: * when the step alias is <code>null</code>, the step tablename
71: * returned by <code>getStep().getTableName()</code>.
72: * <li><em><fieldname></em> is the fieldname returned by
73: * {@link #getFieldName getFieldName()}
74: * <li><em><alias></em> is the alias returned by {@link #getAlias getAlias()}
75: * </ul>
76: *
77: * @return A string representation of this StepField.
78: */
79: public String toString();
80:
81: }
|