|
|
|
|
@ -14,6 +14,7 @@ import static java.lang.System.Logger.Level.INFO;
@@ -14,6 +14,7 @@ import static java.lang.System.Logger.Level.INFO;
|
|
|
|
|
import static java.text.MessageFormat.format; |
|
|
|
|
|
|
|
|
|
import de.srsoftware.tools.jdbc.Query; |
|
|
|
|
import de.srsoftware.umbrella.core.api.EntityId; |
|
|
|
|
import de.srsoftware.umbrella.core.exceptions.UmbrellaException; |
|
|
|
|
import java.sql.Connection; |
|
|
|
|
import java.sql.SQLException; |
|
|
|
|
@ -84,13 +85,13 @@ CREATE TABLE IF NOT EXISTS "{0}" (
@@ -84,13 +85,13 @@ CREATE TABLE IF NOT EXISTS "{0}" (
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public String delete(long userId, String module, long entityId, String tag) { |
|
|
|
|
public String delete(long userId, String module, EntityId<?> entity, String tag) { |
|
|
|
|
try { |
|
|
|
|
Query.delete().from(TABLE_TAGS) |
|
|
|
|
.where(TAG,equal(tag)).where(MODULE,equal(module)).where(ID,equal(entityId)).where(USER_ID,equal(userId)) |
|
|
|
|
.where(TAG,equal(tag)).where(MODULE,equal(module)).where(ID,equal(entity.unwrap())).where(USER_ID,equal(userId)) |
|
|
|
|
.execute(db); |
|
|
|
|
Query.delete().from(TABLE_TAGS) |
|
|
|
|
.where(TAG,equal(tag)).where(MODULE,equal(module)).where(ID,equal(entityId)).where(USER_ID,isNull()) |
|
|
|
|
.where(TAG,equal(tag)).where(MODULE,equal(module)).where(ID,equal(entity.unwrap())).where(USER_ID,isNull()) |
|
|
|
|
.execute(db); |
|
|
|
|
return tag; |
|
|
|
|
} catch (SQLException e){ |
|
|
|
|
@ -99,10 +100,10 @@ CREATE TABLE IF NOT EXISTS "{0}" (
@@ -99,10 +100,10 @@ CREATE TABLE IF NOT EXISTS "{0}" (
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void deleteEntity(String module, long entityId) { |
|
|
|
|
public void deleteEntity(String module, EntityId<?> entityId) { |
|
|
|
|
try { |
|
|
|
|
Query.delete().from(TABLE_TAGS) |
|
|
|
|
.where(MODULE,equal(module)).where(ID,equal(entityId)) |
|
|
|
|
.where(MODULE,equal(module)).where(ID,equal(entityId.unwrap())) |
|
|
|
|
.execute(db); |
|
|
|
|
} catch (SQLException e){ |
|
|
|
|
throw new UmbrellaException("Failed to save tags ({0} {1})",module,entityId); |
|
|
|
|
@ -139,12 +140,12 @@ CREATE TABLE IF NOT EXISTS "{0}" (
@@ -139,12 +140,12 @@ CREATE TABLE IF NOT EXISTS "{0}" (
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public Set<String> list(long userId, String module, long entityId) { |
|
|
|
|
public Set<String> list(long userId, String module, EntityId<?> entityId) { |
|
|
|
|
try { |
|
|
|
|
var tags = new HashSet<String>(); |
|
|
|
|
var rs = select(TAG).from(TABLE_TAGS).where(MODULE,equal(module)).where(ID,equal(entityId)).where(USER_ID,equal(userId)).exec(db); |
|
|
|
|
var rs = select(TAG).from(TABLE_TAGS).where(MODULE,equal(module)).where(ID,equal(entityId.unwrap())).where(USER_ID,equal(userId)).exec(db); |
|
|
|
|
while (rs.next()) tags.add(rs.getString(1)); |
|
|
|
|
rs = select(TAG).from(TABLE_TAGS).where(MODULE,equal(module)).where(ID,equal(entityId)).where(USER_ID,isNull()).exec(db); |
|
|
|
|
rs = select(TAG).from(TABLE_TAGS).where(MODULE,equal(module)).where(ID,equal(entityId.unwrap())).where(USER_ID,isNull()).exec(db); |
|
|
|
|
while (rs.next()) tags.add(rs.getString(1)); |
|
|
|
|
rs.close(); |
|
|
|
|
return tags; |
|
|
|
|
@ -154,14 +155,14 @@ CREATE TABLE IF NOT EXISTS "{0}" (
@@ -154,14 +155,14 @@ CREATE TABLE IF NOT EXISTS "{0}" (
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void save(Collection<Long> userIds, String module, long entityId, Collection<String> tags) { |
|
|
|
|
public void save(Collection<Long> userIds, String module, EntityId<?> entityId, Collection<String> tags) { |
|
|
|
|
try { |
|
|
|
|
var query = replaceInto(TABLE_TAGS,USER_ID,MODULE,ID,TAG); |
|
|
|
|
for (var tag : tags) { |
|
|
|
|
if (userIds == null) { // tags not assigned to a user are available to all users
|
|
|
|
|
query.values(null, module, entityId, tag); |
|
|
|
|
query.values(null, module, entityId.unwrap(), tag); |
|
|
|
|
} else for (var userId : userIds) { |
|
|
|
|
query.values(userId,module,entityId,tag); |
|
|
|
|
query.values(userId,module,entityId.unwrap(),tag); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
query.execute(db).close(); |
|
|
|
|
|