annotate artifacts/src/main/java/de/intevation/artifacts/ArtifactCollection.java @ 116:2707b7ec273f

Added missing call contexts to API. artifacts/trunk@1339 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Tue, 01 Mar 2011 14:07:05 +0000
parents a1200c6ed048
children 0e0c27bc0b90
rev   line source
115
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1 /*
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
2 * Copyright (c) 2011 by Intevation GmbH
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
3 *
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
4 * This program is free software under the LGPL (>=v2.1)
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
5 * Read the file LGPL.txt coming with the software for details
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
6 * or visit http://www.gnu.org/licenses/ if it does not exist.
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
7 */
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
8
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
9 package de.intevation.artifacts;
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
10
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
11 import org.w3c.dom.Document;
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
12
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
13 import java.io.IOException;
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
14 import java.io.OutputStream;
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
15 import java.io.Serializable;
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
16
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
17 public interface ArtifactCollection
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
18 extends Serializable
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
19 {
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
20 /**
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
21 * Set a new identifier for this collection.
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
22 * @param identifier New identifier for this collection.
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
23 */
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
24 void setIdentifier(String identifier);
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
25
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
26 /**
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
27 * Identify this collection.
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
28 * @return Returns unique string to identify this collection globally.
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
29 */
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
30 String identifier();
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
31
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
32 /**
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
33 * Set a new owner of this collection.
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
34 * @param user New owner for this collection.
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
35 */
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
36 void setUser(User user);
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
37
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
38 /**
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
39 * Identify the owner of the collection.
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
40 * @return Returns owner of the collection.
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
41 */
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
42 User getUser(); // FIXME: Is ArtifactCollectionFactory needed?
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
43
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
44 /**
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
45 * When created by a factory this method is called to
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
46 * initialize the collection.
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
47 * @param identifier The identifier from collection database
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
48 * @param factory The factory which created this collection.
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
49 * @param context The global context of the runtime system.
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
50 * @param data The data which can be use to setup a collection with
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
51 * more details.
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
52 */
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
53 void setup(
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
54 String identifier,
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
55 ArtifactCollectionFactory factory,
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
56 Object context,
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
57 Document data);
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
58
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
59 //TODO: create LifeCycle interface
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
60 /**
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
61 * Called from artifact database when an artifact is
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
62 * going to be removed from system.
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
63 * @param context The global context of the runtime system.
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
64 */
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
65 void endOfLife(Object context);
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
66
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
67 /**
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
68 * Internal hash of this collection.
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
69 * @return Returns hash that should stay the same if the internal
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
70 * value has not changed. Useful for caching
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
71 */
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
72 String hash();
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
73
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
74
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
75 /**
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
76 * Called from artifact database before an artifact is
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
77 * going to be exported as xml document.
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
78 * @param context The global context of the runtime system.
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
79 */
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
80 void cleanup(Object context);
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
81
116
2707b7ec273f Added missing call contexts to API.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 115
diff changeset
82 void addArtifact(Artifact artifact, Document attributes, CallContext context);
115
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
83
116
2707b7ec273f Added missing call contexts to API.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 115
diff changeset
84 void removeArtifact(Artifact artifact, CallContext context);
115
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
85
116
2707b7ec273f Added missing call contexts to API.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 115
diff changeset
86 Artifact [] getArtifacts(CallContext context);
115
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
87
116
2707b7ec273f Added missing call contexts to API.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 115
diff changeset
88 Document getAttribute(Artifact artifactCall, CallContext context);
2707b7ec273f Added missing call contexts to API.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 115
diff changeset
89
2707b7ec273f Added missing call contexts to API.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 115
diff changeset
90 void setAttribute(Artifact artifact, Document document, CallContext context);
115
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
91
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
92 /**
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
93 * Produce output for this collection.
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
94 * @param format Specifies the format of the output.
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
95 * @param out Stream to write the result data to.
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
96 * @param context The global context of the runtime system.
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
97 * @throws IOException Thrown if an I/O occurs.
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
98 */
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
99 void out(
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
100 Document format,
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
101 OutputStream out,
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
102 CallContext context)
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
103 throws IOException;
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
104 }
a1200c6ed048 Initial interfaces to handle with Collections and Users.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
105 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org