View Javadoc
1   package de.fhdw.wtf.common.ast;
2   
3   import java.io.Serializable;
4   
5   import de.fhdw.wtf.common.ast.visitor.DatabaseIDStateVisitor;
6   import de.fhdw.wtf.common.ast.visitor.DatabaseIDStateVisitorReturn;
7   import de.fhdw.wtf.common.ast.visitor.DatabaseIDStateVisitorReturnException;
8   import de.fhdw.wtf.common.exception.generation.NoTypeIdSetException;
9   
10  /**
11   * Interface for State-Pattern. {@link DatabaseIDState} can be {@link DatabaseIDSetState} or
12   * {@link DatabaseIDNotSetState}.
13   * 
14   */
15  public interface DatabaseIDState extends Serializable {
16  	
17  	/**
18  	 * Accepts a visitor.
19  	 * 
20  	 * @param v
21  	 *            The Visitor to be accepted.
22  	 */
23  	void accept(DatabaseIDStateVisitor v);
24  	
25  	/**
26  	 * Accepts a visitor with dynamic return type.
27  	 * 
28  	 * @param v
29  	 *            The Visitor to be accepted.
30  	 * @param <X>
31  	 *            ReturnType
32  	 * @return X
33  	 */
34  	<X> X accept(DatabaseIDStateVisitorReturn<X> v);
35  	
36  	/**
37  	 * Accepts a visitor with dynamic return type and exception.
38  	 * 
39  	 * @param v
40  	 *            The Visitor to be accepted.
41  	 * @param <X>
42  	 *            ReturnType
43  	 * @param <Y>
44  	 *            ExceptionType
45  	 * @return X
46  	 * @throws Y
47  	 *             Exception
48  	 */
49  	<X, Y extends Exception> X accept(DatabaseIDStateVisitorReturnException<X, Y> v) throws Y;
50  	
51  	/**
52  	 * Returns the current Id of this object.
53  	 * 
54  	 * @return database id
55  	 * @throws NoTypeIdSetException
56  	 *             no type id has been set.
57  	 */
58  	long getId() throws NoTypeIdSetException;
59  	
60  }