diff --git a/src/main/java/org/caosdb/server/database/BackendTransaction.java b/src/main/java/org/caosdb/server/database/BackendTransaction.java index 3ab09fd1bd908a8a6e1545b94818b647d675cf04..270839af40d40668ca3079abcc3e09eb6caaf8ae 100644 --- a/src/main/java/org/caosdb/server/database/BackendTransaction.java +++ b/src/main/java/org/caosdb/server/database/BackendTransaction.java @@ -108,10 +108,10 @@ import org.caosdb.server.database.backend.interfaces.ListUsersImpl; import org.caosdb.server.database.backend.interfaces.LogUserVisitImpl; import org.caosdb.server.database.backend.interfaces.RetrieveAllImpl; import org.caosdb.server.database.backend.interfaces.RetrieveAllUncheckedFilesImpl; +import org.caosdb.server.database.backend.interfaces.RetrieveCurrentMaxIdImpl; import org.caosdb.server.database.backend.interfaces.RetrieveDatatypesImpl; import org.caosdb.server.database.backend.interfaces.RetrieveEntityACLImpl; import org.caosdb.server.database.backend.interfaces.RetrieveLogRecordImpl; -import org.caosdb.server.database.backend.interfaces.RetrieveCurrentMaxIdImpl; import org.caosdb.server.database.backend.interfaces.RetrieveParentsImpl; import org.caosdb.server.database.backend.interfaces.RetrievePasswordValidatorImpl; import org.caosdb.server.database.backend.interfaces.RetrievePermissionRulesImpl; diff --git a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLGetFileRecordByPath.java b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLGetFileRecordByPath.java index 9b147d289b337f63dd359ce604719d9e00a149be..16d84002b50a2e7b5847eb98cac07a190d2994c3 100644 --- a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLGetFileRecordByPath.java +++ b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLGetFileRecordByPath.java @@ -37,7 +37,7 @@ public class MySQLGetFileRecordByPath extends MySQLTransaction implements GetFil } public static final String STMT_GET_ID_BY_PATH = - "SELECT file_id, size, hex(hash) AS file_hash, checked_timestamp FROM files WHERE path=?"; + "SELECT (Select id from entity_ids WHERE internal_id = files.file_id) as entity_id, size, hex(hash) AS file_hash, checked_timestamp FROM files WHERE path=?"; @Override public SparseEntity execute(final String path) throws TransactionException { @@ -49,7 +49,7 @@ public class MySQLGetFileRecordByPath extends MySQLTransaction implements GetFil try { if (rs.next()) { final SparseEntity ret = new SparseEntity(); - ret.id = rs.getInt("file_id"); + ret.id = rs.getInt("entity_id"); ret.fileHash = rs.getString("file_hash"); ret.fileSize = rs.getLong("size"); ret.fileChecked = rs.getLong("checked_timestamp"); diff --git a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLGetUpdateableChecksums.java b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLGetUpdateableChecksums.java index 28c55032e0ae6b6c2fcfb779339a72b96c703ba0..dd6c87760c18702b4e69dd5ec46996f0dbd15a63 100644 --- a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLGetUpdateableChecksums.java +++ b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLGetUpdateableChecksums.java @@ -34,7 +34,7 @@ public class MySQLGetUpdateableChecksums extends MySQLTransaction implements GetUpdateableChecksumsImpl { private final String GET_UPDATEABLE_CHECKSUMS = - "SELECT file_id FROM files WHERE hash IS NULL LIMIT 1"; + "SELECT (SELECT id FROM entity_ids WHERE internal_id = files.file_id) AS entity_id FROM files WHERE hash IS NULL LIMIT 1"; public MySQLGetUpdateableChecksums(final Access access) { super(access); diff --git a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLInsertSparseEntity.java b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLInsertSparseEntity.java index 51ecddc7eab98ac704e7b0e0fcf3723c19cf28bf..62237d3e9f4731878ff6b4c1439f4a3b188e74e1 100644 --- a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLInsertSparseEntity.java +++ b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLInsertSparseEntity.java @@ -38,7 +38,7 @@ public class MySQLInsertSparseEntity extends MySQLTransaction implements InsertS super(access); } - public static final String STMT_INSERT_SPARSE_ENTITY = "call insertEntity(?,?,?,?)"; + public static final String STMT_INSERT_SPARSE_ENTITY = "call insertEntity(?,?,?,?,?)"; public static final String STMT_INSERT_FILE_PROPERTIES = "call insertFile(?, ?, ?, ?)"; @Override @@ -57,7 +57,7 @@ public class MySQLInsertSparseEntity extends MySQLTransaction implements InsertS if (rs.next()) { entity.versionId = DatabaseUtils.bytes2UTF8(rs.getBytes("Version")); } else { - throw new TransactionException("Didn't get new EntityID back."); + throw new TransactionException("Didn't get the version id back."); } } diff --git a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLRetrieveCurrentMaxId.java b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLRetrieveCurrentMaxId.java index ff4e917584694c4dc733cfdcd5f9bd7cc8335a02..18cf01f159d10aac470bdeb919df185b09d6c7fa 100644 --- a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLRetrieveCurrentMaxId.java +++ b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLRetrieveCurrentMaxId.java @@ -3,37 +3,34 @@ package org.caosdb.server.database.backend.implementation.MySQL; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; - import org.caosdb.server.database.access.Access; import org.caosdb.server.database.backend.interfaces.RetrieveCurrentMaxIdImpl; import org.caosdb.server.database.exceptions.TransactionException; -public class MySQLRetrieveCurrentMaxId extends MySQLTransaction implements RetrieveCurrentMaxIdImpl { +public class MySQLRetrieveCurrentMaxId extends MySQLTransaction + implements RetrieveCurrentMaxIdImpl { - public MySQLRetrieveCurrentMaxId(Access access) { - super(access); - } - - public static final String STMT = "SELECT max(entity_id) AS max_id FROM transaction_log"; + public MySQLRetrieveCurrentMaxId(Access access) { + super(access); + } - @Override - public Integer execute() { -try { - try ( - PreparedStatement stmt = prepareStatement(STMT) - ) { - - try (ResultSet rs = stmt.executeQuery()) { - if(rs.next()) { - return rs.getInt("max_id"); - } else { - return 100; - } - } - } -} catch (SQLException | ConnectionException e) { -throw new TransactionException(e); -} - } + public static final String STMT = "SELECT max(entity_id) AS max_id FROM transaction_log"; + + @Override + public Integer execute() { + try { + try (PreparedStatement stmt = prepareStatement(STMT)) { + try (ResultSet rs = stmt.executeQuery()) { + if (rs.next()) { + return rs.getInt("max_id"); + } else { + return 100; + } + } + } + } catch (SQLException | ConnectionException e) { + throw new TransactionException(e); + } + } } diff --git a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLSetFileChecksum.java b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLSetFileChecksum.java index fb6d4188c835fbc895ed4d5e427bb1b2bbc0bb4c..c9b51f7ada8aa9a9ee90a6505c85ff55e8ef4141 100644 --- a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLSetFileChecksum.java +++ b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLSetFileChecksum.java @@ -19,7 +19,7 @@ public class MySQLSetFileChecksum extends MySQLTransaction implements SetFileChe } public static final String STMT_SET_CHECKSUM = - "UPDATE files SET hash = unhex(?) WHERE file_id = ?"; + "UPDATE files SET hash = unhex(?) WHERE EXISTS (SELECT 1 FROM entity_ids AS eids WHERE eids.id = ? AND eids.internal_id = files.file_id)"; @Override public void execute(final EntityID id, final String checksum) { diff --git a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLSetQueryTemplateDefinition.java b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLSetQueryTemplateDefinition.java index f3ded949383c7d250d4ad58e6ae964aa9f96324c..02ebdd361d7293bafa2f61aa7557bfb180e0dd8f 100644 --- a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLSetQueryTemplateDefinition.java +++ b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLSetQueryTemplateDefinition.java @@ -37,7 +37,7 @@ public class MySQLSetQueryTemplateDefinition extends MySQLTransaction } public static final String STMT_INSERT_QUERY_TEMPLATE_DEF = - "INSERT INTO query_template_def (id, definition) VALUES (?,?) ON DUPLICATE KEY UPDATE definition=?;"; + "INSERT INTO query_template_def (id, definition) VALUES ((SELECT internal_id FROM entity_ids WHERE entity_ids.id = ?),?) ON DUPLICATE KEY UPDATE definition=?;"; @Override public void insert(final EntityID id, final String definition) { diff --git a/src/main/java/org/caosdb/server/database/backend/interfaces/RetrieveCurrentMaxIdImpl.java b/src/main/java/org/caosdb/server/database/backend/interfaces/RetrieveCurrentMaxIdImpl.java index 6d7b2d3ff03a69c54f924f5d1b3c4c1a482ba73e..2a3ce327bef98501c53fae26ce053071cb5a3f99 100644 --- a/src/main/java/org/caosdb/server/database/backend/interfaces/RetrieveCurrentMaxIdImpl.java +++ b/src/main/java/org/caosdb/server/database/backend/interfaces/RetrieveCurrentMaxIdImpl.java @@ -2,6 +2,5 @@ package org.caosdb.server.database.backend.interfaces; public interface RetrieveCurrentMaxIdImpl extends BackendTransactionImpl { - public Integer execute(); - + public Integer execute(); } diff --git a/src/main/java/org/caosdb/server/database/backend/transaction/RetrieveCurrentMaxId.java b/src/main/java/org/caosdb/server/database/backend/transaction/RetrieveCurrentMaxId.java index 0efc4f8c7b3d3babd79afa012f17e573ca9bb734..a3b9f6d96eddf4583e60a329dec971830dcee72a 100644 --- a/src/main/java/org/caosdb/server/database/backend/transaction/RetrieveCurrentMaxId.java +++ b/src/main/java/org/caosdb/server/database/backend/transaction/RetrieveCurrentMaxId.java @@ -5,16 +5,15 @@ import org.caosdb.server.database.backend.interfaces.RetrieveCurrentMaxIdImpl; public class RetrieveCurrentMaxId extends BackendTransaction { - private Integer maxId; + private Integer maxId; - @Override - protected void execute() { - RetrieveCurrentMaxIdImpl t = getImplementation(RetrieveCurrentMaxIdImpl.class); - this.maxId = t.execute(); - } - - public Integer getCurrentMaxId() { - return this.maxId; - } + @Override + protected void execute() { + RetrieveCurrentMaxIdImpl t = getImplementation(RetrieveCurrentMaxIdImpl.class); + this.maxId = t.execute(); + } + public Integer getCurrentMaxId() { + return this.maxId; + } } diff --git a/src/main/java/org/caosdb/server/entity/Entity.java b/src/main/java/org/caosdb/server/entity/Entity.java index 614397c50526606176fc50b06e2f07e76cbfb9ff..f271e627d46ab61d027a7bbe9094611864506689 100644 --- a/src/main/java/org/caosdb/server/entity/Entity.java +++ b/src/main/java/org/caosdb/server/entity/Entity.java @@ -647,7 +647,7 @@ public abstract class Entity extends AbstractObservable implements EntityInterfa // Parse ID. Generate error if it isn't an integer. if (element.getAttribute("id") != null && !element.getAttributeValue("id").equals("")) { try { - setId(new EntityID(Integer.parseInt(element.getAttributeValue("id")))); + this.getId().setId(Integer.parseInt(element.getAttributeValue("id"))); } catch (final NumberFormatException e) { addInfo("Id was " + element.getAttributeValue("id") + "."); addError(ServerMessages.PARSING_FAILED); @@ -727,6 +727,9 @@ public abstract class Entity extends AbstractObservable implements EntityInterfa // record. final Property property = new Property(new WritableEntity(pe, Role.Property)); + + // Ignore parents of properties + property.getParents().clear(); property.setPIdx(pidx++); addProperty(property); } else if (pe.getName().equalsIgnoreCase("Parent")) { diff --git a/src/main/java/org/caosdb/server/entity/EntityID.java b/src/main/java/org/caosdb/server/entity/EntityID.java index a8867152d9914cb5b9414f018fee91eabdd8c920..6a2d2ca368088e54c2f3c77ae669c6feda07bb4e 100644 --- a/src/main/java/org/caosdb/server/entity/EntityID.java +++ b/src/main/java/org/caosdb/server/entity/EntityID.java @@ -77,5 +77,4 @@ public class EntityID implements Serializable { public static boolean isReserved(final EntityID id) { return id.toInteger() < 100; } - } diff --git a/src/main/java/org/caosdb/server/entity/EntityIdRegistry.java b/src/main/java/org/caosdb/server/entity/EntityIdRegistry.java index b3b99498dcb8bb324aa80728d22ded5b2a8972a4..ba0e8dc9e413a2487d839bdf6c65302c0f8b351c 100644 --- a/src/main/java/org/caosdb/server/entity/EntityIdRegistry.java +++ b/src/main/java/org/caosdb/server/entity/EntityIdRegistry.java @@ -1,53 +1,47 @@ - package org.caosdb.server.entity; import org.caosdb.server.database.backend.transaction.RetrieveCurrentMaxId; import org.caosdb.server.transaction.Transaction; /** - * <p> * Aufgaben: * * <ul> - * <li>Ids generieren - * <ul> - * <li>Pattern (positive Integer, uuid) - * </ul> - * <li> + * <li>Ids generieren + * <ul> + * <li>Pattern (positive Integer, uuid) + * </ul> + * <li> * </ul> * * @author tf */ - public class EntityIdRegistry { - - private boolean isInit; - private Integer currentMaxId; - private Transaction<?> transaction; - - public EntityIdRegistry(Transaction<?> t) { - this.transaction = t; - this.isInit = false; - } - - public void init() { - isInit = true; - initCurrentMaxId(); - } - - private void initCurrentMaxId() { - this.currentMaxId = transaction.execute(new RetrieveCurrentMaxId(), transaction.getAccess()).getCurrentMaxId(); - } - - public Integer generate() { - if(!isInit) { - init(); - } - return ++currentMaxId; - } - - public boolean isUnused(Integer i) { - return i>currentMaxId; - } + private boolean isInit; + private Integer currentMaxId; + private Transaction<?> transaction; + + public EntityIdRegistry(Transaction<?> t) { + this.transaction = t; + this.isInit = false; + } + + public void init() { + isInit = true; + initCurrentMaxId(); + } + + private void initCurrentMaxId() { + this.currentMaxId = + transaction.execute(new RetrieveCurrentMaxId(), transaction.getAccess()).getCurrentMaxId(); + } + + public Integer generate() { + if (!isInit) { + init(); + } + ++currentMaxId; + return ++currentMaxId; + } } diff --git a/src/main/java/org/caosdb/server/entity/container/TransactionContainer.java b/src/main/java/org/caosdb/server/entity/container/TransactionContainer.java index 47a0452b9382223795e63b965a676e140e35245b..3e5ec4d55f086061e2d0766c9f700ef61fbe809f 100644 --- a/src/main/java/org/caosdb/server/entity/container/TransactionContainer.java +++ b/src/main/java/org/caosdb/server/entity/container/TransactionContainer.java @@ -122,7 +122,7 @@ public class TransactionContainer extends Container<EntityInterface> private TransactionBenchmark benchmark; private Query query; -private Integer currentMaxId =null; + private Integer currentMaxId = null; public void setFiles(final HashMap<String, FileProperties> files) { this.files = files; @@ -194,6 +194,4 @@ private Integer currentMaxId =null; public Query getQuery() { return query; } - - } diff --git a/src/main/java/org/caosdb/server/jobs/core/EntityIdHandler.java b/src/main/java/org/caosdb/server/jobs/core/EntityIdHandler.java index e8740107926072e4938658eb13c118727914a405..d555bf95e2720e1e54b7fd23d95d01445846b457 100644 --- a/src/main/java/org/caosdb/server/jobs/core/EntityIdHandler.java +++ b/src/main/java/org/caosdb/server/jobs/core/EntityIdHandler.java @@ -1,4 +1,3 @@ - package org.caosdb.server.jobs.core; import org.caosdb.server.entity.EntityInterface; @@ -8,17 +7,19 @@ import org.caosdb.server.jobs.EntityJob; import org.caosdb.server.jobs.JobAnnotation; import org.caosdb.server.jobs.TransactionStage; import org.caosdb.server.transaction.WriteTransactionInterface; +import org.caosdb.server.utils.EntityStatus; @JobAnnotation(stage = TransactionStage.PRE_TRANSACTION) public class EntityIdHandler extends EntityJob { - @Override - protected void run() throws Message { - EntityInterface entity = getEntity(); - if(entity instanceof InsertEntity && getTransaction() instanceof WriteTransactionInterface) { - Integer id = ((WriteTransactionInterface) getTransaction()).generateId(); - entity.getId().setId(id); - } - } + @Override + protected void run() throws Message { + EntityInterface entity = getEntity(); + if (entity instanceof InsertEntity + && getTransaction() instanceof WriteTransactionInterface + && entity.getEntityStatus() == EntityStatus.QUALIFIED) { + Integer id = ((WriteTransactionInterface) getTransaction()).generateId(); + entity.getId().setId(id); + } + } } - diff --git a/src/main/java/org/caosdb/server/jobs/core/ProcessNameProperties.java b/src/main/java/org/caosdb/server/jobs/core/ProcessNameProperties.java index 7196f04edc99cf1269603e820975a96703639965..cbcf738ee99716f58e2ca9a9526497e7b9113029 100644 --- a/src/main/java/org/caosdb/server/jobs/core/ProcessNameProperties.java +++ b/src/main/java/org/caosdb/server/jobs/core/ProcessNameProperties.java @@ -24,9 +24,9 @@ package org.caosdb.server.jobs.core; import static org.caosdb.server.entity.MagicTypes.NAME; -import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; +import java.util.LinkedList; import java.util.Set; import org.caosdb.server.datatype.AbstractDatatype; import org.caosdb.server.entity.EntityID; @@ -133,19 +133,19 @@ public class ProcessNameProperties extends EntityJob { } private Collection<Object> getNearestValidParents(final Property prop) { - if (prop.hasId() && !prop.getId().isTemporary()) { - final ArrayList<Object> ret = new ArrayList<Object>(); - if (prop.hasParents()) { - for (final Parent par : prop.getParents()) { + if (prop.hasParents()) { + final Collection<Object> ret = new LinkedList<Object>(); + for (final Parent par : prop.getParents()) { + if (par.hasId()) { ret.add(par.getId()); } - } else { - ret.add(prop.getId()); } return ret; } else if (prop.hasId()) { - // property is new -> get valid parents of any depth - final EntityInterface propertyEntity = getEntityById(prop.getId()); + EntityInterface propertyEntity = getEntityById(prop.getId()); + if (propertyEntity == null) { + propertyEntity = retrieveValidEntity(prop.getId()); + } if (propertyEntity != null) { return getNearestValidParents(propertyEntity); } diff --git a/src/main/java/org/caosdb/server/query/Query.java b/src/main/java/org/caosdb/server/query/Query.java index a437c7146017acd43fc104826303afabb3a69330..5966a135e1709bbcd20b5c2f7fefdce1a8f5019d 100644 --- a/src/main/java/org/caosdb/server/query/Query.java +++ b/src/main/java/org/caosdb/server/query/Query.java @@ -412,7 +412,14 @@ public class Query implements QueryInterface, ToElementable, TransactionInterfac final Map<EntityID, String> queryTemplates = getQueryTemplates(query, resultSet); final PreparedStatement removeQTStmt = - query.getConnection().prepareStatement("DELETE FROM `" + resultSet + "` WHERE id=?"); + query + .getConnection() + .prepareStatement( + "DELETE FROM `" + + resultSet + + "` WHERE EXISTS (SELECT 1 FROM entity_ids AS eids WHERE eids.id=? AND eids.internal_id=`" + + resultSet + + "`.id)"); // Run thru all QTs found... for (final Entry<EntityID, String> q : queryTemplates.entrySet()) { @@ -468,7 +475,7 @@ public class Query implements QueryInterface, ToElementable, TransactionInterfac query .getConnection() .prepareCall( - "SELECT q.id, q.definition FROM query_template_def AS q INNER JOIN `" + "SELECT (SELECT eids.id FROM entity_ids AS eids WHERE eids.internal_id = q.id) as id, q.definition FROM query_template_def AS q INNER JOIN `" + resultSet + "` AS r ON (r.id=q.id);"); rs = stmt.executeQuery(); @@ -645,15 +652,16 @@ public class Query implements QueryInterface, ToElementable, TransactionInterfac private String generateSelectStatementForResultSet( final String resultSetTableName, final boolean versioned) { if (resultSetTableName.equals("entity_ids")) { + // TODO remove "DOMAIN" final String baseStatement = - "SELECT (SELECT id FROM entity_ids WHERE internal_id = entities.id) as id, entity_acl.acl FROM entities INNER JOIN entity_acl ON entity_acl.id=entities.acl WHERE entities.role!='DOMAIN'"; + "SELECT entities.id AS internal_id, (SELECT id FROM entity_ids WHERE internal_id = entities.id) as id, entity_acl.acl FROM entities INNER JOIN entity_acl ON entity_acl.id=entities.acl WHERE entities.role!='DOMAIN'"; if (!versioned) { return baseStatement + ";"; } // if versioned, the statement is surrounded with another SELECT and JOIN return ("SELECT id, acl, version FROM (" + baseStatement - + ") AS tmp JOIN entity_version ON entity_version.entity_id=tmp.id;"); + + ") AS tmp JOIN entity_version ON entity_version.entity_id=tmp.internal_id;"); } else { if (!versioned) { return (" SELECT (SELECT id FROM entity_ids WHERE internal_id = tmp.id) AS id, entity_acl.acl FROM " diff --git a/src/main/java/org/caosdb/server/transaction/UpdateACL.java b/src/main/java/org/caosdb/server/transaction/UpdateACL.java index 89640addc023ea93bb1b09b8fce3b5423f96b29c..3da0b572b764936dcd94be0edad701d9775f2e20 100644 --- a/src/main/java/org/caosdb/server/transaction/UpdateACL.java +++ b/src/main/java/org/caosdb/server/transaction/UpdateACL.java @@ -143,9 +143,10 @@ public class UpdateACL extends Transaction<TransactionContainer> public String getSRID() { return getContainer().getRequestId(); } - + @Override - public Integer generateId() { - throw new UnsupportedOperationException("This is not implemented on purpose. This exception indicates a usage error of this UpdateACL class."); - } + public Integer generateId() { + throw new UnsupportedOperationException( + "This is not implemented on purpose. This exception indicates a usage error of this UpdateACL class."); + } } diff --git a/src/main/java/org/caosdb/server/transaction/WriteTransaction.java b/src/main/java/org/caosdb/server/transaction/WriteTransaction.java index b1b1153aa380ef04517d47739377d87e2f943697..0bc4f4e3f4fbc6e2c3892bf9209aa4adaf6822d2 100644 --- a/src/main/java/org/caosdb/server/transaction/WriteTransaction.java +++ b/src/main/java/org/caosdb/server/transaction/WriteTransaction.java @@ -74,7 +74,7 @@ public class WriteTransaction extends Transaction<WritableContainer> implements WriteTransactionInterface { private boolean noIdIsError = true; -private EntityIdRegistry idRegistry; + private EntityIdRegistry idRegistry; public WriteTransaction(final WritableContainer container) { super(container); @@ -596,12 +596,12 @@ private EntityIdRegistry idRegistry; return getContainer().getRequestId(); } -@Override -public Integer generateId() { - if (this.idRegistry == null) { - this.idRegistry = new EntityIdRegistry(getAccess()); - } + @Override + public Integer generateId() { + if (this.idRegistry == null) { + this.idRegistry = new EntityIdRegistry(this); + } - return this.idRegistry.generate(); -} + return this.idRegistry.generate(); + } } diff --git a/src/main/java/org/caosdb/server/transaction/WriteTransactionInterface.java b/src/main/java/org/caosdb/server/transaction/WriteTransactionInterface.java index ccc6a83bbadd695a94a8f24cba52098542e33c50..e635c0c581f4c00d5241f17304f777cf0ac5a420 100644 --- a/src/main/java/org/caosdb/server/transaction/WriteTransactionInterface.java +++ b/src/main/java/org/caosdb/server/transaction/WriteTransactionInterface.java @@ -11,5 +11,5 @@ public interface WriteTransactionInterface extends TransactionInterface { public String getSRID(); -public Integer generateId(); + public Integer generateId(); }