# HG changeset patch # User gernotbelger # Date 1518179179 -3600 # Node ID 68f01f10624e32d6051003854409a1ce6dd862e7 # Parent e781b847fdca562185fc23e5444b25dfbb50dfc1 Introduced helper for finding the user name for a given artifact diff -r e781b847fdca -r 68f01f10624e artifact-database/src/main/java/org/dive4elements/artifactdatabase/ArtifactDatabaseImpl.java --- a/artifact-database/src/main/java/org/dive4elements/artifactdatabase/ArtifactDatabaseImpl.java Mon Feb 22 17:25:21 2016 +0100 +++ b/artifact-database/src/main/java/org/dive4elements/artifactdatabase/ArtifactDatabaseImpl.java Fri Feb 09 13:26:19 2018 +0100 @@ -1979,5 +1979,10 @@ } }); } + + @Override + public String findArtifactUser(final String artifactIdentifier) { + return backend.findUserName(artifactIdentifier); + } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : diff -r e781b847fdca -r 68f01f10624e artifact-database/src/main/java/org/dive4elements/artifactdatabase/Backend.java --- a/artifact-database/src/main/java/org/dive4elements/artifactdatabase/Backend.java Mon Feb 22 17:25:21 2016 +0100 +++ b/artifact-database/src/main/java/org/dive4elements/artifactdatabase/Backend.java Fri Feb 09 13:26:19 2018 +0100 @@ -133,6 +133,7 @@ public String SQL_COLLECTIONS_TOUCH_BY_ID; public String SQL_COLLECTION_ITEMS_LIST_GID; public String SQL_ALL_ARTIFACTS; + public String SQL_FIND_USER_BY_ARTIFACT; /** The singleton.*/ protected static Backend instance; @@ -361,6 +362,7 @@ SQL_COLLECTIONS_TOUCH_BY_ID = sql.get("collections.touch.by.id"); SQL_COLLECTION_ITEMS_LIST_GID = sql.get("collection.items.list.gid"); SQL_ALL_ARTIFACTS = sql.get("all.artifacts"); + SQL_FIND_USER_BY_ARTIFACT = sql.get("find.user.by.artifact"); } public void addListener(BackendListener listener) { @@ -1030,6 +1032,43 @@ return exec.runRead() ? user[0] : null; } + + /** Find the owner of a given artifact */ + public String findUserName(final String artifactGid) { + + final String[] returnValue = new String[1]; + + final SQLExecutor.Instance exec = this.sqlExecutor.new Instance() { + + @Override + public boolean doIt() throws SQLException { + + prepareStatement(Backend.this.SQL_FIND_USER_BY_ARTIFACT); + this.stmnt.setString(1, artifactGid); + + this.result = this.stmnt.executeQuery(); + + // final HashMap users = new HashMap(); + + while (this.result.next()) { + // final String userIdentifier = this.result.getString(1); + final String userName = this.result.getString(2); + + // We only need the name at the moment, else we could do this: User user = new LazyBackendUser( + // userIdentifier, userFactory, Backend.this, context); + returnValue[0] = userName; + return true; + } + + return true; + } + }; + + if (exec.runRead()) + return returnValue[0]; + + return null; + } public User [] getUsers( final UserFactory factory, diff -r e781b847fdca -r 68f01f10624e artifact-database/src/main/resources/sql/org-h2-driver.properties --- a/artifact-database/src/main/resources/sql/org-h2-driver.properties Mon Feb 22 17:25:21 2016 +0100 +++ b/artifact-database/src/main/resources/sql/org-h2-driver.properties Fri Feb 09 13:26:19 2018 +0100 @@ -196,3 +196,10 @@ INNER JOIN collection_items ci ON c.id = ci.collection_id \ INNER JOIN artifacts a ON a.id = ci.artifact_id \ ORDER BY u_gid, c_gid + +find.user.by.artifact = \ + SELECT users.id, users.name FROM users, collections, collection_items, artifacts \ + WHERE users.id = collections.owner_id AND \ + collections.id = collection_items.collection_id AND \ + collection_items.artifact_id = artifacts.id AND \ + artifacts.gid = ?::uuid diff -r e781b847fdca -r 68f01f10624e artifact-database/src/main/resources/sql/org-postgresql-driver.properties --- a/artifact-database/src/main/resources/sql/org-postgresql-driver.properties Mon Feb 22 17:25:21 2016 +0100 +++ b/artifact-database/src/main/resources/sql/org-postgresql-driver.properties Fri Feb 09 13:26:19 2018 +0100 @@ -185,3 +185,10 @@ INNER JOIN collection_items ci ON c.id = ci.collection_id \ INNER JOIN artifacts a ON a.id = ci.artifact_id \ ORDER BY u_gid, c_gid + +find.user.by.artifact = \ + SELECT users.id, users.name FROM users, collections, collection_items, artifacts \ + WHERE users.id = collections.owner_id AND \ + collections.id = collection_items.collection_id AND \ + collection_items.artifact_id = artifacts.id AND \ + artifacts.gid = ?::uuid diff -r e781b847fdca -r 68f01f10624e artifacts/src/main/java/org/dive4elements/artifacts/ArtifactDatabase.java --- a/artifacts/src/main/java/org/dive4elements/artifacts/ArtifactDatabase.java Mon Feb 22 17:25:21 2016 +0100 +++ b/artifacts/src/main/java/org/dive4elements/artifacts/ArtifactDatabase.java Fri Feb 09 13:26:19 2018 +0100 @@ -290,9 +290,11 @@ String artifactId, Date artifactCreated, Artifact artifact); - }; + } public void loadAllArtifacts(ArtifactLoadedCallback callback) throws ArtifactDatabaseException; + + String findArtifactUser(String artifactIdentifier); } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :