diff --git a/src/main/java/caosdb/server/database/BackendTransaction.java b/src/main/java/caosdb/server/database/BackendTransaction.java index b1b4359ba404ced1de0a5bfa91ae8f27b3c38919..55987005d2c8c76f432cb12065f45b598075ec9c 100644 --- a/src/main/java/caosdb/server/database/BackendTransaction.java +++ b/src/main/java/caosdb/server/database/BackendTransaction.java @@ -50,7 +50,6 @@ import caosdb.server.database.backend.implementation.MySQL.MySQLRegisterSubDomai import caosdb.server.database.backend.implementation.MySQL.MySQLRetrieveAll; import caosdb.server.database.backend.implementation.MySQL.MySQLRetrieveAllUncheckedFiles; import caosdb.server.database.backend.implementation.MySQL.MySQLRetrieveDatatypes; -import caosdb.server.database.backend.implementation.MySQL.MySQLRetrieveFullVersion; import caosdb.server.database.backend.implementation.MySQL.MySQLRetrieveLogRecord; import caosdb.server.database.backend.implementation.MySQL.MySQLRetrieveParents; import caosdb.server.database.backend.implementation.MySQL.MySQLRetrievePasswordValidator; @@ -61,6 +60,7 @@ import caosdb.server.database.backend.implementation.MySQL.MySQLRetrieveRole; import caosdb.server.database.backend.implementation.MySQL.MySQLRetrieveSparseEntity; import caosdb.server.database.backend.implementation.MySQL.MySQLRetrieveTransactionHistory; import caosdb.server.database.backend.implementation.MySQL.MySQLRetrieveUser; +import caosdb.server.database.backend.implementation.MySQL.MySQLRetrieveVersionHistory; import caosdb.server.database.backend.implementation.MySQL.MySQLRuleLoader; import caosdb.server.database.backend.implementation.MySQL.MySQLSetFileCheckedTimestampImpl; import caosdb.server.database.backend.implementation.MySQL.MySQLSetPassword; @@ -106,7 +106,6 @@ import caosdb.server.database.backend.interfaces.RegisterSubDomainImpl; import caosdb.server.database.backend.interfaces.RetrieveAllImpl; import caosdb.server.database.backend.interfaces.RetrieveAllUncheckedFilesImpl; import caosdb.server.database.backend.interfaces.RetrieveDatatypesImpl; -import caosdb.server.database.backend.interfaces.RetrieveFullVersionInfoImpl; import caosdb.server.database.backend.interfaces.RetrieveLogRecordImpl; import caosdb.server.database.backend.interfaces.RetrieveParentsImpl; import caosdb.server.database.backend.interfaces.RetrievePasswordValidatorImpl; @@ -117,6 +116,7 @@ import caosdb.server.database.backend.interfaces.RetrieveRoleImpl; import caosdb.server.database.backend.interfaces.RetrieveSparseEntityImpl; import caosdb.server.database.backend.interfaces.RetrieveTransactionHistoryImpl; import caosdb.server.database.backend.interfaces.RetrieveUserImpl; +import caosdb.server.database.backend.interfaces.RetrieveVersionHistoryImpl; import caosdb.server.database.backend.interfaces.RuleLoaderImpl; import caosdb.server.database.backend.interfaces.SetFileCheckedTimestampImpl; import caosdb.server.database.backend.interfaces.SetPasswordImpl; @@ -208,7 +208,7 @@ public abstract class BackendTransaction implements Undoable { setImpl( RetrieveQueryTemplateDefinitionImpl.class, MySQLRetrieveQueryTemplateDefinition.class); setImpl(InsertEntityDatatypeImpl.class, MySQLInsertEntityDatatype.class); - setImpl(RetrieveFullVersionInfoImpl.class, MySQLRetrieveFullVersion.class); + setImpl(RetrieveVersionHistoryImpl.class, MySQLRetrieveVersionHistory.class); } } diff --git a/src/main/java/caosdb/server/database/backend/implementation/MySQL/MySQLRetrieveFullVersion.java b/src/main/java/caosdb/server/database/backend/implementation/MySQL/MySQLRetrieveVersionHistory.java similarity index 57% rename from src/main/java/caosdb/server/database/backend/implementation/MySQL/MySQLRetrieveFullVersion.java rename to src/main/java/caosdb/server/database/backend/implementation/MySQL/MySQLRetrieveVersionHistory.java index db28b8c21720bda2a1621eb7a7a121ba81dbcb1c..22ac0c2e30c0f48fbc884f40593bac2dc45d7b7d 100644 --- a/src/main/java/caosdb/server/database/backend/implementation/MySQL/MySQLRetrieveFullVersion.java +++ b/src/main/java/caosdb/server/database/backend/implementation/MySQL/MySQLRetrieveVersionHistory.java @@ -1,8 +1,30 @@ +/* + * ** header v3.0 + * This file is a part of the CaosDB Project. + * + * Copyright (C) 2020 IndiScale GmbH <info@indiscale.com> + * Copyright (C) 2020 Timm Fitschen <t.fitschen@indiscale.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <https://www.gnu.org/licenses/>. + * + * ** end header + */ package caosdb.server.database.backend.implementation.MySQL; import caosdb.server.database.DatabaseUtils; import caosdb.server.database.access.Access; -import caosdb.server.database.backend.interfaces.RetrieveFullVersionInfoImpl; +import caosdb.server.database.backend.interfaces.RetrieveVersionHistoryImpl; import caosdb.server.database.exceptions.TransactionException; import caosdb.server.database.proto.VersionHistoryItem; import java.sql.PreparedStatement; @@ -11,12 +33,17 @@ import java.sql.SQLException; import java.util.HashMap; import java.util.LinkedList; -public class MySQLRetrieveFullVersion extends MySQLTransaction - implements RetrieveFullVersionInfoImpl { +/** + * Transaction to retrieve all versions of an entity. + * + * <p>Creates a mapping ID :: (VersionHistoryItem) + */ +public class MySQLRetrieveVersionHistory extends MySQLTransaction + implements RetrieveVersionHistoryImpl { public static final String VERSION_HISTORY_STMT = "CALL get_version_history(?)"; - public MySQLRetrieveFullVersion(Access access) { + public MySQLRetrieveVersionHistory(Access access) { super(access); } diff --git a/src/main/java/caosdb/server/database/backend/interfaces/RetrieveFullVersionInfoImpl.java b/src/main/java/caosdb/server/database/backend/interfaces/RetrieveVersionHistoryImpl.java similarity index 72% rename from src/main/java/caosdb/server/database/backend/interfaces/RetrieveFullVersionInfoImpl.java rename to src/main/java/caosdb/server/database/backend/interfaces/RetrieveVersionHistoryImpl.java index a6201cec61c889d79f53dd23595e0d4a501bc8de..118e783d816ce45d1a43738bf8959e4a94740d3c 100644 --- a/src/main/java/caosdb/server/database/backend/interfaces/RetrieveFullVersionInfoImpl.java +++ b/src/main/java/caosdb/server/database/backend/interfaces/RetrieveVersionHistoryImpl.java @@ -3,7 +3,7 @@ package caosdb.server.database.backend.interfaces; import caosdb.server.database.proto.VersionHistoryItem; import java.util.HashMap; -public interface RetrieveFullVersionInfoImpl extends BackendTransactionImpl { +public interface RetrieveVersionHistoryImpl extends BackendTransactionImpl { public HashMap<String, VersionHistoryItem> execute(Integer entityId); } diff --git a/src/main/java/caosdb/server/database/backend/transaction/RetrieveFullVersionHistory.java b/src/main/java/caosdb/server/database/backend/transaction/RetrieveFullVersionHistory.java deleted file mode 100644 index 5c61811e5fcaf5e3c9986b11cae486d71a8da8aa..0000000000000000000000000000000000000000 --- a/src/main/java/caosdb/server/database/backend/transaction/RetrieveFullVersionHistory.java +++ /dev/null @@ -1,56 +0,0 @@ -package caosdb.server.database.backend.transaction; - -import caosdb.server.database.CacheableBackendTransaction; -import caosdb.server.database.backend.interfaces.RetrieveFullVersionInfoImpl; -import caosdb.server.database.exceptions.TransactionException; -import caosdb.server.database.proto.VersionHistoryItem; -import caosdb.server.entity.EntityInterface; -import java.util.Collection; -import java.util.HashMap; - -public abstract class RetrieveFullVersionHistory - extends CacheableBackendTransaction<Integer, HashMap<String, VersionHistoryItem>> { - - // TODO - // private static final ICacheAccess<String, Version> cache = - // Cache.getCache("BACKEND_RetrieveFullVersionInfo"); - private EntityInterface entity; - private HashMap<String, VersionHistoryItem> map; - - public static void removeCached(Integer entityId) { - // TODO - } - - public RetrieveFullVersionHistory(EntityInterface e) { - super(null); // TODO - this.entity = e; - } - - @Override - public HashMap<String, VersionHistoryItem> executeNoCache() throws TransactionException { - RetrieveFullVersionInfoImpl impl = getImplementation(RetrieveFullVersionInfoImpl.class); - return impl.execute(getKey()); - } - - @Override - protected void process(HashMap<String, VersionHistoryItem> map) throws TransactionException { - this.map = map; - } - - @Override - protected Integer getKey() { - return entity.getId(); - } - - public HashMap<String, VersionHistoryItem> getMap() { - return this.map; - } - - public EntityInterface getEntity() { - return this.entity; - } - - public Collection<VersionHistoryItem> getList() { - return this.map.values(); - } -} diff --git a/src/main/java/caosdb/server/database/backend/transaction/RetrieveVersionHistory.java b/src/main/java/caosdb/server/database/backend/transaction/RetrieveVersionHistory.java new file mode 100644 index 0000000000000000000000000000000000000000..20be2f8fb60ce54877fdb2fd85d27a6944a71d86 --- /dev/null +++ b/src/main/java/caosdb/server/database/backend/transaction/RetrieveVersionHistory.java @@ -0,0 +1,79 @@ +/* + * ** header v3.0 + * This file is a part of the CaosDB Project. + * + * Copyright (C) 2020 IndiScale GmbH <info@indiscale.com> + * Copyright (C) 2020 Timm Fitschen <t.fitschen@indiscale.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <https://www.gnu.org/licenses/>. + * + * ** end header + */ +package caosdb.server.database.backend.transaction; + +import caosdb.server.database.CacheableBackendTransaction; +import caosdb.server.database.backend.interfaces.RetrieveVersionHistoryImpl; +import caosdb.server.database.exceptions.TransactionException; +import caosdb.server.database.proto.VersionHistoryItem; +import caosdb.server.entity.EntityInterface; +import java.util.Collection; +import java.util.HashMap; + +public abstract class RetrieveVersionHistory + extends CacheableBackendTransaction<Integer, HashMap<String, VersionHistoryItem>> { + + // TODO + // private static final ICacheAccess<String, Version> cache = + // Cache.getCache("BACKEND_RetrieveVersionHistory"); + private EntityInterface entity; + private HashMap<String, VersionHistoryItem> map; + + public static void removeCached(Integer entityId) { + // TODO + } + + public RetrieveVersionHistory(EntityInterface e) { + super(null); // TODO caching + this.entity = e; + } + + @Override + public HashMap<String, VersionHistoryItem> executeNoCache() throws TransactionException { + RetrieveVersionHistoryImpl impl = getImplementation(RetrieveVersionHistoryImpl.class); + return impl.execute(getKey()); + } + + /** After this method call, the version map is available to the object. */ + @Override + protected void process(HashMap<String, VersionHistoryItem> map) throws TransactionException { + this.map = map; + } + + @Override + protected Integer getKey() { + return entity.getId(); + } + + public HashMap<String, VersionHistoryItem> getMap() { + return this.map; + } + + public EntityInterface getEntity() { + return this.entity; + } + + public Collection<VersionHistoryItem> getList() { + return this.map.values(); + } +} diff --git a/src/main/java/caosdb/server/database/backend/transaction/RetrieveVersionInfo.java b/src/main/java/caosdb/server/database/backend/transaction/RetrieveVersionInfo.java index b0bec81a8ff9b3724120b5d9a6570a5e8f489f9d..77f282d08e2b054f079013a1dd47d112592fa16e 100644 --- a/src/main/java/caosdb/server/database/backend/transaction/RetrieveVersionInfo.java +++ b/src/main/java/caosdb/server/database/backend/transaction/RetrieveVersionInfo.java @@ -30,7 +30,7 @@ import caosdb.server.entity.Version; import java.util.HashMap; import java.util.LinkedList; -public class RetrieveVersionInfo extends RetrieveFullVersionHistory { +public class RetrieveVersionInfo extends RetrieveVersionHistory { public RetrieveVersionInfo(EntityInterface e) { super(e); diff --git a/src/main/java/caosdb/server/resource/AbstractCaosDBServerResource.java b/src/main/java/caosdb/server/resource/AbstractCaosDBServerResource.java index 15256a00a941254a89978c7a7c0b693d66d52eda..97488a6ba2a7984d66bb94332b4d7df0f9478cfb 100644 --- a/src/main/java/caosdb/server/resource/AbstractCaosDBServerResource.java +++ b/src/main/java/caosdb/server/resource/AbstractCaosDBServerResource.java @@ -4,7 +4,8 @@ * * Copyright (C) 2018 Research Group Biomedical Physics, * Max-Planck-Institute for Dynamics and Self-Organization Göttingen - * Copyright (C) 2019 IndiScale GmbH + * Copyright (C) 2019,2020 IndiScale GmbH <info@indiscale.com> + * Copyright (C) 2020 Timm Fitschen <t.fitschen@indiscale.com> * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as