changeset 165:81ad657569e1

Added Helper for lazy loading users. artifacts/trunk@1390 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Thu, 03 Mar 2011 14:30:21 +0000
parents 268c2972d4a7
children 89db80380f7f
files ChangeLog artifact-database/src/main/java/de/intevation/artifactdatabase/LazyBackendUser.java
diffstat 2 files changed, 75 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Thu Mar 03 14:28:02 2011 +0000
+++ b/ChangeLog	Thu Mar 03 14:30:21 2011 +0000
@@ -1,3 +1,8 @@
+2011-03-03	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
+
+	* artifact-database/src/main/java/de/intevation/artifactdatabase/LazyBackendUser.java:
+	  New: Helper for lazy loading users.
+
 2011-03-03  Ingo Weinzierl <ingo@intevation.de>
 
 	* artifact-database/src/main/java/de/intevation/artifactdatabase/Backend.java:
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/artifact-database/src/main/java/de/intevation/artifactdatabase/LazyBackendUser.java	Thu Mar 03 14:30:21 2011 +0000
@@ -0,0 +1,70 @@
+/*
+ * Copyright (c) 2011 by Intevation GmbH
+ *
+ * This program is free software under the LGPL (>=v2.1)
+ * Read the file LGPL.txt coming with the software for details
+ * or visit http://www.gnu.org/licenses/ if it does not exist.
+ */
+package de.intevation.artifactdatabase;
+
+import de.intevation.artifacts.User;
+import de.intevation.artifacts.UserFactory;
+
+import org.w3c.dom.Document;
+
+public class LazyBackendUser
+implements   User
+{
+    protected UserFactory factory;
+    protected Backend     backend;
+    protected String      identifier;
+    protected User        user;
+    protected Object      context;
+
+    public LazyBackendUser(
+        String      identifier,
+        UserFactory factory, 
+        Backend     backend,
+        Object      context
+    ) {
+        this.identifier = identifier;
+        this.factory    = factory;
+        this.backend    = backend;
+        this.context    = context;
+    }
+
+    protected User getUser() {
+        if (user == null) {
+            user = backend.getUser(identifier, factory, context);
+            if (user == null) {
+                throw new IllegalStateException("loading user failed");
+            }
+        }
+        return user;
+    }
+
+    public String identifier() {
+        return getUser().identifier();
+    }
+
+    public String getName() {
+        return getUser().getName();
+    }
+
+    public void setName(String name) {
+        getUser().setName(name);
+    }
+
+    public void setIdentifier(String identifier) {
+        getUser().setIdentifier(identifier);
+    }
+
+    public Document getRole() {
+        return getUser().getRole();
+    }
+
+    public void setRole(Document document) {
+        getUser().setRole(document);
+    }
+}
+// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org