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 }