diff --git a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/DatabaseUtils.java b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/DatabaseUtils.java index c87ef79ac858bf8dec81176aa1131f32f4055795..e7b684e6699c77b6fa1380aac0d33d13f4a6057d 100644 --- a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/DatabaseUtils.java +++ b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/DatabaseUtils.java @@ -152,10 +152,10 @@ public class DatabaseUtils { public static void parseOverrides(final List<ProtoProperty> properties, final ResultSet rs) throws SQLException { while (rs.next()) { - int property_id = rs.getInt("property_id"); - if (rs.wasNull()) property_id = rs.getInt("InternalPropertyID"); + String property_id = rs.getString("property_id"); + if (rs.wasNull()) property_id = rs.getString("InternalPropertyID"); for (final FlatProperty p : properties) { - if (p.id == property_id) { + if (p.id.equals(property_id)) { final String name = bytes2UTF8(rs.getBytes("name_override")); if (name != null) { p.name = name; @@ -181,9 +181,9 @@ public class DatabaseUtils { final List<ProtoProperty> ret = new LinkedList<>(); while (rs.next()) { ProtoProperty pp = new ProtoProperty(); - pp.id = rs.getInt("PropertyID"); + pp.id = rs.getString("PropertyID"); if (rs.wasNull()) { - pp.id = rs.getInt("InternalPropertyID"); + pp.id = rs.getString("InternalPropertyID"); } pp.value = bytes2UTF8(rs.getBytes("PropertyValue")); pp.status = bytes2UTF8(rs.getBytes("PropertyStatus")); @@ -219,7 +219,7 @@ public class DatabaseUtils { */ public static SparseEntity parseEntityResultSet(final ResultSet rs) throws SQLException { final SparseEntity ret = parseNameRoleACL(rs); - ret.id = rs.getInt("EntityID"); + ret.id = rs.getString("EntityID"); ret.description = bytes2UTF8(rs.getBytes("EntityDesc")); ret.datatype = bytes2UTF8(rs.getBytes("Datatype")); ret.collection = bytes2UTF8(rs.getBytes("Collection")); @@ -237,7 +237,7 @@ public class DatabaseUtils { final LinkedList<VerySparseEntity> ret = new LinkedList<>(); while (rs.next()) { final VerySparseEntity vsp = new VerySparseEntity(); - vsp.id = rs.getInt("ParentID"); + vsp.id = rs.getString("ParentID"); vsp.name = bytes2UTF8(rs.getBytes("ParentName")); vsp.description = bytes2UTF8(rs.getBytes("ParentDescription")); vsp.role = bytes2UTF8(rs.getBytes("ParentRole")); @@ -251,7 +251,7 @@ public class DatabaseUtils { EntityInterface entity, List<ProtoProperty> protos) { final ArrayList<Property> ret = new ArrayList<Property>(); for (final ProtoProperty pp : protos) { - if (pp.id.equals(entity.getId().toInteger())) { + if (pp.id.equals(entity.getId().toString())) { if (pp.value != null) { entity.setValue(new GenericValue(pp.value)); } diff --git a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLDeleteEntityProperties.java b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLDeleteEntityProperties.java index f8cba7d4c9734c1e6e12b72498ceaa6c57ed1a17..615adca41a021003700ae73fc6943a9ee795521b 100644 --- a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLDeleteEntityProperties.java +++ b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLDeleteEntityProperties.java @@ -44,7 +44,7 @@ public class MySQLDeleteEntityProperties extends MySQLTransaction try { final PreparedStatement stmt = prepareStatement(STMT_DELETE_ENTITY_PROPERTIES); - stmt.setInt(1, id.toInteger()); + stmt.setString(1, id.toString()); stmt.execute(); } catch (final SQLIntegrityConstraintViolationException exc) { throw new IntegrityException(exc); diff --git a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLDeleteSparseEntity.java b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLDeleteSparseEntity.java index 7fe8ac303b53ec26dc947c1e4a84e648d7b6517d..b634864656ce601cb59915f9b6fd92cf3f6c428a 100644 --- a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLDeleteSparseEntity.java +++ b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLDeleteSparseEntity.java @@ -44,7 +44,7 @@ public class MySQLDeleteSparseEntity extends MySQLTransaction implements DeleteS try { final PreparedStatement stmt = prepareStatement(STMT_DELETE_SPARSE_ENTITY); - stmt.setInt(1, id.toInteger()); + stmt.setString(1, id.toString()); stmt.execute(); } catch (final SQLIntegrityConstraintViolationException exc) { throw new IntegrityException(exc); diff --git a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLGetChildren.java b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLGetChildren.java index 649639415184e65129957c065246743a5e963dee..3d3662c6961828436597ee17651adba457ec5fc1 100644 --- a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLGetChildren.java +++ b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLGetChildren.java @@ -44,7 +44,7 @@ public class MySQLGetChildren extends MySQLTransaction implements GetChildrenImp try { final PreparedStatement stmt = prepareStatement(STMT_GET_CHILDREN); - stmt.setInt(1, entity.toInteger()); + stmt.setString(1, entity.toString()); ResultSet rs = null; try { diff --git a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLGetDependentEntities.java b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLGetDependentEntities.java index 9384c8a04861a01f1e56236b0ab42433d87990f5..fabe5233d48cbda8b57fe4af10797aa0bd8ad8c5 100644 --- a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLGetDependentEntities.java +++ b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLGetDependentEntities.java @@ -45,7 +45,7 @@ public class MySQLGetDependentEntities extends MySQLTransaction try { final PreparedStatement stmt = prepareStatement(STMT_GET_DEPENDENT_ENTITIES); - stmt.setInt(1, entity.toInteger()); + stmt.setString(1, entity.toString()); final ResultSet rs = stmt.executeQuery(); try { 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 16d84002b50a2e7b5847eb98cac07a190d2994c3..922c2b6b9814a4431604a91687f41948ef715ccf 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 @@ -49,7 +49,7 @@ public class MySQLGetFileRecordByPath extends MySQLTransaction implements GetFil try { if (rs.next()) { final SparseEntity ret = new SparseEntity(); - ret.id = rs.getInt("entity_id"); + ret.id = rs.getString("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/MySQLInsertEntityDatatype.java b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLInsertEntityDatatype.java index e9ca7fd19a69a23139cd8aed0ea7644b7184d61e..7aa692e4dc61db462573d55e39f1eb376ec7416e 100644 --- a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLInsertEntityDatatype.java +++ b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLInsertEntityDatatype.java @@ -33,7 +33,7 @@ public class MySQLInsertEntityDatatype extends MySQLTransaction final PreparedStatement insertEntityDatatypeStmt = prepareStatement(STMT_INSERT_ENTITY_DATATYPE); - insertEntityDatatypeStmt.setInt(1, entity.id); + insertEntityDatatypeStmt.setString(1, entity.id); insertEntityDatatypeStmt.setString(2, entity.datatype); insertEntityDatatypeStmt.execute(); @@ -42,7 +42,7 @@ public class MySQLInsertEntityDatatype extends MySQLTransaction final PreparedStatement insertEntityCollectionStmt = prepareStatement(STMT_INSERT_ENTITY_COLLECTION); - insertEntityCollectionStmt.setInt(1, entity.id); + insertEntityCollectionStmt.setString(1, entity.id); insertEntityCollectionStmt.setString(2, entity.collection); insertEntityCollectionStmt.execute(); diff --git a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLInsertEntityProperties.java b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLInsertEntityProperties.java index becb56a2397fffa323f005507463a586bdecc0cf..8d70660486b571f7f81e125df200b2be0fce89e0 100644 --- a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLInsertEntityProperties.java +++ b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLInsertEntityProperties.java @@ -89,9 +89,9 @@ public class MySQLInsertEntityProperties extends MySQLTransaction try { final PreparedStatement stmt = prepareStatement(STMT_INSERT_ENTITY_PROPERTY); - stmt.setInt(1, domain.toInteger()); - stmt.setInt(2, entity.toInteger()); - stmt.setInt(3, fp.id); + stmt.setString(1, domain.toString()); + stmt.setString(2, entity.toString()); + stmt.setString(3, fp.id); stmt.setString(4, table.toString()); stmt.setString(5, fp.value); @@ -124,7 +124,7 @@ public class MySQLInsertEntityProperties extends MySQLTransaction final FlatProperty fp = new FlatProperty(); Table table = Table.null_data; Long unit_sig = null; - fp.id = property.getId().toInteger(); + fp.id = property.getId().toString(); fp.idx = property.getPIdx(); fp.status = property.getStatementStatus().name(); @@ -140,7 +140,7 @@ public class MySQLInsertEntityProperties extends MySQLTransaction fp.value = fp.id.toString(); // id is to be the replacement id (an internally used/private id) - fp.id = ((ReferenceValue) property.getValue()).getId().toInteger(); + fp.id = ((ReferenceValue) property.getValue()).getId().toString(); table = Table.reference_data; } else { diff --git a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLInsertParents.java b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLInsertParents.java index 61a5e8c48cdc85098e1b0a2f5531c358d6c6058d..0e44c687b05d4184d81f05eeb8640a15b1e88662 100644 --- a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLInsertParents.java +++ b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLInsertParents.java @@ -40,8 +40,8 @@ public class MySQLInsertParents extends MySQLTransaction implements InsertParent public void execute(final EntityID entity, final EntityID parent) throws TransactionException { try { final PreparedStatement stmt = prepareStatement(STMT_INSERT_ISA); - stmt.setInt(1, entity.toInteger()); - stmt.setInt(2, parent.toInteger()); + stmt.setString(1, entity.toString()); + stmt.setString(2, parent.toString()); stmt.execute(); } catch (final Exception e) { throw new TransactionException(e); 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 62237d3e9f4731878ff6b4c1439f4a3b188e74e1..459244032cac8128dc6b72679279eb05e8f940c5 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 @@ -47,7 +47,7 @@ public class MySQLInsertSparseEntity extends MySQLTransaction implements InsertS final PreparedStatement insertEntityStmt = prepareStatement(STMT_INSERT_SPARSE_ENTITY); final PreparedStatement insertFilePropsStmt = prepareStatement(STMT_INSERT_FILE_PROPERTIES); - insertEntityStmt.setInt(1, entity.id); + insertEntityStmt.setString(1, entity.id); insertEntityStmt.setString(2, entity.name); insertEntityStmt.setString(3, entity.description); insertEntityStmt.setString(4, entity.role); @@ -62,7 +62,7 @@ public class MySQLInsertSparseEntity extends MySQLTransaction implements InsertS } if (entity.filePath != null) { - insertFilePropsStmt.setInt(1, entity.id); + insertFilePropsStmt.setString(1, entity.id); if (entity.fileHash != null) { insertFilePropsStmt.setString(2, entity.fileHash); } else { diff --git a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLInsertTransactionHistory.java b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLInsertTransactionHistory.java index 0832790a0b56446570fbd7b9c3a4383390c443a7..155cb2d0b8c8db4948b4a2970785eecb636dcf9b 100644 --- a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLInsertTransactionHistory.java +++ b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLInsertTransactionHistory.java @@ -56,7 +56,7 @@ public class MySQLInsertTransactionHistory extends MySQLTransaction logStmt.setString(3, user); logStmt.setLong(4, seconds); logStmt.setInt(5, nanos); - logStmt.setInt(6, entity.toInteger()); + logStmt.setString(6, entity.toString()); logStmt.execute(); } catch (final Exception e) { throw new TransactionException(e); diff --git a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLIsSubType.java b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLIsSubType.java index f6c2daf8d4a0bf4defcaa550cf715032d57cd9cd..0d469a79482069d1f19de3931433e90faf5c667a 100644 --- a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLIsSubType.java +++ b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLIsSubType.java @@ -43,8 +43,8 @@ public class MySQLIsSubType extends MySQLTransaction implements IsSubTypeImpl { try { final PreparedStatement isSubtypeStmt = prepareStatement(STMT_IS_SUBTYPE); - isSubtypeStmt.setInt(1, child.toInteger()); - isSubtypeStmt.setInt(2, parent.toInteger()); + isSubtypeStmt.setString(1, child.toString()); + isSubtypeStmt.setString(2, parent.toString()); final ResultSet rs = isSubtypeStmt.executeQuery(); try { diff --git a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLRetrieveAllUncheckedFiles.java b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLRetrieveAllUncheckedFiles.java index 09a4e7c2edabea49617224fdb9159116f2cd742b..cfbf2281b920382b30be10f2ff9e8a0ab16728ab 100644 --- a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLRetrieveAllUncheckedFiles.java +++ b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLRetrieveAllUncheckedFiles.java @@ -51,7 +51,7 @@ public class MySQLRetrieveAllUncheckedFiles extends MySQLTransaction final ResultSet rs = stmt.executeQuery(); if (rs.next()) { final SparseEntity first = new SparseEntity(); - first.id = rs.getInt("file_id"); + first.id = rs.getString("file_id"); first.filePath = rs.getString("path"); first.fileHash = rs.getString("file_hash"); first.fileSize = rs.getLong("size"); @@ -71,7 +71,7 @@ public class MySQLRetrieveAllUncheckedFiles extends MySQLTransaction try { if (rs.next()) { this.next = new SparseEntity(); - this.next.id = rs.getInt("file_id"); + this.next.id = rs.getString("file_id"); this.next.filePath = rs.getString("path"); this.next.fileHash = rs.getString("file_hash"); this.next.fileSize = rs.getLong("size"); diff --git a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLRetrieveEntityACL.java b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLRetrieveEntityACL.java index 5db8ed7597b1c0d357273848fb7c36febdcfed13..716b7ff65814d1464ccac39ef64af275996e096d 100644 --- a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLRetrieveEntityACL.java +++ b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLRetrieveEntityACL.java @@ -39,9 +39,9 @@ public class MySQLRetrieveEntityACL extends MySQLTransaction implements Retrieve "SELECT a.acl FROM entities AS e LEFT JOIN entity_acl AS a ON (a.id = e.acl) WHERE e.id = ? LIMIT 1"; @Override - public VerySparseEntity execute(Integer id) { + public VerySparseEntity execute(String id) { try (PreparedStatement stmt = prepareStatement(STMT)) { - stmt.setInt(1, id); + stmt.setString(1, id); ResultSet rs = stmt.executeQuery(); if (rs.next()) { VerySparseEntity result = new VerySparseEntity(); diff --git a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLRetrieveParents.java b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLRetrieveParents.java index 1e2a6621d2fb85a5a5260b1a607670e970f54701..6f48e755537b7cd891d0254c9f2255f537a1d10a 100644 --- a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLRetrieveParents.java +++ b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLRetrieveParents.java @@ -49,7 +49,7 @@ public class MySQLRetrieveParents extends MySQLTransaction implements RetrievePa try { final PreparedStatement prepareStatement = prepareStatement(stmtStr); - prepareStatement.setInt(1, id.toInteger()); + prepareStatement.setString(1, id.toString()); if (version == null) { prepareStatement.setNull(2, Types.VARBINARY); } else { diff --git a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLRetrieveProperties.java b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLRetrieveProperties.java index 100df4ce72ebae75d3022866b345bacc9752ad91..546b5675cb5e1b0d51398230155f61b1e11f2ebb 100644 --- a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLRetrieveProperties.java +++ b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLRetrieveProperties.java @@ -50,12 +50,12 @@ public class MySQLRetrieveProperties extends MySQLTransaction implements Retriev final PreparedStatement prepareStatement = prepareStatement(stmtStr); final List<ProtoProperty> propsStage1 = - retrieveFlatPropertiesStage1(0, entity.toInteger(), version, prepareStatement); + retrieveFlatPropertiesStage1("0", entity.toString(), version, prepareStatement); for (final ProtoProperty p : propsStage1) { p.subProperties = - retrieveFlatPropertiesStage1(entity.toInteger(), p.id, version, prepareStatement); + retrieveFlatPropertiesStage1(entity.toString(), p.id, version, prepareStatement); } return DatabaseUtils.transformToDeepPropertyTree(propsStage1, isHead); } catch (final SQLException e) { @@ -66,18 +66,11 @@ public class MySQLRetrieveProperties extends MySQLTransaction implements Retriev } private List<ProtoProperty> retrieveFlatPropertiesStage1( - final Integer domain, - final Integer entity, - final String version, - final PreparedStatement stmt) + final String domain, final String entity, final String version, final PreparedStatement stmt) throws SQLException, ConnectionException { - if (domain != null && domain >= 0) { - stmt.setInt(1, domain); - } else { - stmt.setInt(1, 0); - } - stmt.setInt(2, entity); + stmt.setString(1, domain); + stmt.setString(2, entity); if (version == null) { stmt.setNull(3, Types.VARBINARY); } else { @@ -94,15 +87,17 @@ public class MySQLRetrieveProperties extends MySQLTransaction implements Retriev final PreparedStatement retrieveOverrides = prepareStatement(stmtStr2); - retrieveOverrides(domain, entity, version, retrieveOverrides, properties); + if (properties != null & !properties.isEmpty()) { + retrieveOverrides(domain, entity, version, retrieveOverrides, properties); + } return properties; } } private void retrieveOverrides( - final Integer domain, - final Integer entity, + final String domain, + final String entity, final String version, final PreparedStatement retrieveOverrides, final List<ProtoProperty> props) @@ -110,8 +105,8 @@ public class MySQLRetrieveProperties extends MySQLTransaction implements Retriev ResultSet rs = null; try { - retrieveOverrides.setInt(1, domain); - retrieveOverrides.setInt(2, entity); + retrieveOverrides.setString(1, domain); + retrieveOverrides.setString(2, entity); if (version == null) { retrieveOverrides.setNull(3, Types.VARBINARY); } else { diff --git a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLRetrieveQueryTemplateDefinition.java b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLRetrieveQueryTemplateDefinition.java index 1ab95ae7afc756742475ff2f3c79eddfd632aae9..5e96353af089d469faef2ef5c970fb4de725fab0 100644 --- a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLRetrieveQueryTemplateDefinition.java +++ b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLRetrieveQueryTemplateDefinition.java @@ -46,7 +46,7 @@ public class MySQLRetrieveQueryTemplateDefinition extends MySQLTransaction try { final PreparedStatement stmt = prepareStatement(STMT_RETRIEVE_QUERY_TEMPLATE_DEF); - stmt.setInt(1, id.toInteger()); + stmt.setString(1, id.toString()); if (version == null) { stmt.setNull(2, Types.VARBINARY); } else { diff --git a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLRetrieveSparseEntity.java b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLRetrieveSparseEntity.java index 48cd84b3869262ba7f1d8129fdde2335bed6cd8e..c4a9b6262a7506c38b8dff6215682014203da1c1 100644 --- a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLRetrieveSparseEntity.java +++ b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLRetrieveSparseEntity.java @@ -51,7 +51,7 @@ public class MySQLRetrieveSparseEntity extends MySQLTransaction try { final PreparedStatement preparedStatement = prepareStatement(stmtStr); - preparedStatement.setInt(1, id.toInteger()); + preparedStatement.setString(1, id.toString()); if (version == null) { preparedStatement.setNull(2, Types.VARBINARY); } else { diff --git a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLRetrieveVersionHistory.java b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLRetrieveVersionHistory.java index 6c4c2629a5effee25128f478bef20f5558a027ba..9493b382ec61f11953f1ba045f5c914b7502f690 100644 --- a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLRetrieveVersionHistory.java +++ b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLRetrieveVersionHistory.java @@ -53,7 +53,7 @@ public class MySQLRetrieveVersionHistory extends MySQLTransaction final HashMap<String, VersionHistoryItem> result = new HashMap<>(); try { final PreparedStatement s = prepareStatement(VERSION_HISTORY_STMT); - s.setInt(1, entityId.toInteger()); + s.setString(1, entityId.toString()); final ResultSet rs = s.executeQuery(); while (rs.next()) { diff --git a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLSetFileCheckedTimestampImpl.java b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLSetFileCheckedTimestampImpl.java index 18d7d9b7f510f5cb24e1fe844ac4caac86ff4913..b08d05170dbc45168f597181389c18a1454ee103 100644 --- a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLSetFileCheckedTimestampImpl.java +++ b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLSetFileCheckedTimestampImpl.java @@ -43,7 +43,7 @@ public class MySQLSetFileCheckedTimestampImpl extends MySQLTransaction try { final PreparedStatement stmt = getMySQLHelper().prepareStatement(STMT_SET_TS); stmt.setLong(1, ts); - stmt.setInt(2, id.toInteger()); + stmt.setString(2, id.toString()); } catch (final SQLException e) { throw new TransactionException(e); } catch (final ConnectionException 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 c9b51f7ada8aa9a9ee90a6505c85ff55e8ef4141..69ecfba5089e96176766db402b9e07eade354df3 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 @@ -25,7 +25,7 @@ public class MySQLSetFileChecksum extends MySQLTransaction implements SetFileChe public void execute(final EntityID id, final String checksum) { try { final PreparedStatement stmt = prepareStatement(STMT_SET_CHECKSUM); - stmt.setInt(2, id.toInteger()); + stmt.setString(2, id.toString()); stmt.setString(1, checksum); stmt.execute(); } catch (SQLException | ConnectionException e) { 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 02ebdd361d7293bafa2f61aa7557bfb180e0dd8f..b03630f56f571e21533b8a5a932ea5259c07309e 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 @@ -43,7 +43,7 @@ public class MySQLSetQueryTemplateDefinition extends MySQLTransaction public void insert(final EntityID id, final String definition) { try { final PreparedStatement stmt = prepareStatement(STMT_INSERT_QUERY_TEMPLATE_DEF); - stmt.setInt(1, id.toInteger()); + stmt.setString(1, id.toString()); stmt.setString(2, definition); stmt.setString(3, definition); stmt.execute(); diff --git a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLUpdateSparseEntity.java b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLUpdateSparseEntity.java index b2d0fb9e3b7615e7e95243a2a7bde2fa99e98ca2..8d2af662f32d2f5a788d6470cf6cd526e15d0976 100644 --- a/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLUpdateSparseEntity.java +++ b/src/main/java/org/caosdb/server/database/backend/implementation/MySQL/MySQLUpdateSparseEntity.java @@ -47,7 +47,7 @@ public class MySQLUpdateSparseEntity extends MySQLTransaction implements UpdateS try { // file properties; final PreparedStatement updateFilePropsStmt = prepareStatement(STMT_UPDATE_FILE_PROPS); - updateFilePropsStmt.setInt(1, spe.id); + updateFilePropsStmt.setString(1, spe.id); if (spe.filePath != null) { updateFilePropsStmt.setString(2, spe.filePath); updateFilePropsStmt.setLong(3, spe.fileSize); @@ -65,7 +65,7 @@ public class MySQLUpdateSparseEntity extends MySQLTransaction implements UpdateS // very sparse entity final PreparedStatement updateEntityStmt = prepareStatement(STMT_UPDATE_ENTITY); - updateEntityStmt.setInt(1, spe.id); + updateEntityStmt.setString(1, spe.id); updateEntityStmt.setString(2, spe.name); updateEntityStmt.setString(3, spe.description); updateEntityStmt.setString(4, spe.role); diff --git a/src/main/java/org/caosdb/server/database/backend/interfaces/RetrieveEntityACLImpl.java b/src/main/java/org/caosdb/server/database/backend/interfaces/RetrieveEntityACLImpl.java index 230d4d34103603d5499532a7dc1a941cf82068e7..cc61461996dc46ae5ea4a997bd0938587959cd24 100644 --- a/src/main/java/org/caosdb/server/database/backend/interfaces/RetrieveEntityACLImpl.java +++ b/src/main/java/org/caosdb/server/database/backend/interfaces/RetrieveEntityACLImpl.java @@ -25,5 +25,5 @@ import org.caosdb.server.database.proto.VerySparseEntity; public interface RetrieveEntityACLImpl extends BackendTransactionImpl { - public VerySparseEntity execute(Integer id); + public VerySparseEntity execute(String id); } diff --git a/src/main/java/org/caosdb/server/database/backend/transaction/RetrieveEntityACLTransaction.java b/src/main/java/org/caosdb/server/database/backend/transaction/RetrieveEntityACLTransaction.java index 8ef143b44e292e5b100ff30ca023e91c0adb190e..00f8c51026278d3c3660c798b5b0854aff5900eb 100644 --- a/src/main/java/org/caosdb/server/database/backend/transaction/RetrieveEntityACLTransaction.java +++ b/src/main/java/org/caosdb/server/database/backend/transaction/RetrieveEntityACLTransaction.java @@ -43,7 +43,7 @@ public class RetrieveEntityACLTransaction @Override public VerySparseEntity executeNoCache() throws TransactionException { RetrieveEntityACLImpl t = getImplementation(RetrieveEntityACLImpl.class); - return t.execute(getKey().toInteger()); + return t.execute(getKey().toString()); } @Override diff --git a/src/main/java/org/caosdb/server/database/proto/FlatProperty.java b/src/main/java/org/caosdb/server/database/proto/FlatProperty.java index b92d3def38d26f0f5f6cd6a0455d472b8f4f3ccb..b2123ce206ce01acee3ef70b1c22151b94f59bd9 100644 --- a/src/main/java/org/caosdb/server/database/proto/FlatProperty.java +++ b/src/main/java/org/caosdb/server/database/proto/FlatProperty.java @@ -27,7 +27,7 @@ import java.io.Serializable; public class FlatProperty implements Serializable { private static final long serialVersionUID = 6039288034435124195L; - public Integer id = null; + public String id = null; public String value = null; public String status = null; public Integer idx = null; diff --git a/src/main/java/org/caosdb/server/database/proto/VerySparseEntity.java b/src/main/java/org/caosdb/server/database/proto/VerySparseEntity.java index 8f32bf52038a00275568688b016b830b19fba5f0..5ceca456abc58d945599cc978987eca783637f95 100644 --- a/src/main/java/org/caosdb/server/database/proto/VerySparseEntity.java +++ b/src/main/java/org/caosdb/server/database/proto/VerySparseEntity.java @@ -35,7 +35,7 @@ public class VerySparseEntity implements Serializable { private static final long serialVersionUID = 7370925076064714740L; - public Integer id = null; + public String id = null; public String name = null; public String description = null; public String role = null; diff --git a/src/main/java/org/caosdb/server/entity/Entity.java b/src/main/java/org/caosdb/server/entity/Entity.java index f271e627d46ab61d027a7bbe9094611864506689..19934568c93a421af5dab35635686de61052bc93 100644 --- a/src/main/java/org/caosdb/server/entity/Entity.java +++ b/src/main/java/org/caosdb/server/entity/Entity.java @@ -349,7 +349,7 @@ public abstract class Entity extends AbstractObservable implements EntityInterfa @Override public SparseEntity getSparseEntity() { final SparseEntity ret = new SparseEntity(); - ret.id = getId().toInteger(); + ret.id = getId().toString(); ret.name = getName(); ret.description = getDescription(); ret.acl = getEntityACL().serialize(); @@ -647,7 +647,9 @@ 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 { - this.getId().setId(Integer.parseInt(element.getAttributeValue("id"))); + // check is integer compatible + Integer.parseInt(element.getAttributeValue("id")); + this.getId().setId(element.getAttributeValue("id")); } catch (final NumberFormatException e) { addInfo("Id was " + element.getAttributeValue("id") + "."); addError(ServerMessages.PARSING_FAILED); diff --git a/src/main/java/org/caosdb/server/entity/EntityID.java b/src/main/java/org/caosdb/server/entity/EntityID.java index 6a2d2ca368088e54c2f3c77ae669c6feda07bb4e..f1a13769140e856d62e197108c9cc8e1c298de11 100644 --- a/src/main/java/org/caosdb/server/entity/EntityID.java +++ b/src/main/java/org/caosdb/server/entity/EntityID.java @@ -14,36 +14,36 @@ import java.util.Objects; */ public class EntityID implements Serializable { - private static final long serialVersionUID = -9092133023135548179L; + private static final long serialVersionUID = -9062285447437546105L; - public static final EntityID DEFAULT_DOMAIN = new EntityID(0); - private Integer i = null; + public static final EntityID DEFAULT_DOMAIN = new EntityID("0"); + private String id = null; private EntityID link = null; public EntityID() {} - public EntityID(final Integer id) { - this.i = id; + public EntityID(final int id) { + this(Integer.toString(id)); } - public void setId(final Integer i) { - this.i = i; + public EntityID(final String id) { + this.id = id.toString(); } - public Integer toInteger() { - if (this.link != null) { - return this.link.toInteger(); - } - return this.i; + public void setId(final String id) { + this.id = id; } @Override public String toString() { - return toInteger().toString(); + if (this.link != null) { + return this.link.toString(); + } + return this.id; } boolean hasId() { - return this.i != null || this.link != null && this.link.hasId(); + return this.id != null || this.link != null && this.link.hasId(); } public void link(final EntityInterface entity) { @@ -57,7 +57,7 @@ public class EntityID implements Serializable { @Override public boolean equals(final Object obj) { if (obj instanceof EntityID) { - return Objects.equals(((EntityID) obj).toInteger(), this.toInteger()); + return Objects.equals(((EntityID) obj).toString(), this.toString()); } return false; } @@ -65,16 +65,20 @@ public class EntityID implements Serializable { @Override public int hashCode() { if (this.hasId()) { - return toInteger(); + return toString().hashCode(); } return super.hashCode(); } public boolean isTemporary() { - return toInteger() < 0; + return toString().startsWith("-"); } public static boolean isReserved(final EntityID id) { - return id.toInteger() < 100; + try { + return id.hasId() && Integer.parseInt(id.toString()) < 100; + } catch (NumberFormatException e) { + return false; + } } } diff --git a/src/main/java/org/caosdb/server/entity/EntityIdRegistry.java b/src/main/java/org/caosdb/server/entity/EntityIdRegistry.java index a870f03cc300b0a5dc3621b366d642b7dca2f81d..6ab18d156225fc683e73128c1d92381cfe87892d 100644 --- a/src/main/java/org/caosdb/server/entity/EntityIdRegistry.java +++ b/src/main/java/org/caosdb/server/entity/EntityIdRegistry.java @@ -41,11 +41,11 @@ public class EntityIdRegistry { .getCurrentMaxId()); } - public Integer generate() { + public String generate() { if (!isInit) { init(); } ++currentMaxId; - return ++currentMaxId; + return Integer.toString(++currentMaxId); } } diff --git a/src/main/java/org/caosdb/server/entity/MagicTypes.java b/src/main/java/org/caosdb/server/entity/MagicTypes.java index 39556385235e6b72736bed8dff67a178cfe60aff..e132ddc00c2aeac2630c0aabfc5a93a07ce504dc 100644 --- a/src/main/java/org/caosdb/server/entity/MagicTypes.java +++ b/src/main/java/org/caosdb/server/entity/MagicTypes.java @@ -51,12 +51,12 @@ public enum MagicTypes { } public static MagicTypes getType(final EntityID id) { - switch (id.toInteger()) { - case 21: + switch (id.toString()) { + case "21": return UNIT; - case 20: + case "20": return NAME; - case 24: + case "24": return DESCRIPTION; default: return null; 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 d555bf95e2720e1e54b7fd23d95d01445846b457..bd4d4b807cfeb283a784cee1b62df6d259ff2332 100644 --- a/src/main/java/org/caosdb/server/jobs/core/EntityIdHandler.java +++ b/src/main/java/org/caosdb/server/jobs/core/EntityIdHandler.java @@ -18,7 +18,7 @@ public class EntityIdHandler extends EntityJob { if (entity instanceof InsertEntity && getTransaction() instanceof WriteTransactionInterface && entity.getEntityStatus() == EntityStatus.QUALIFIED) { - Integer id = ((WriteTransactionInterface) getTransaction()).generateId(); + String id = ((WriteTransactionInterface) getTransaction()).generateId(); entity.getId().setId(id); } } diff --git a/src/main/java/org/caosdb/server/query/Query.java b/src/main/java/org/caosdb/server/query/Query.java index 5966a135e1709bbcd20b5c2f7fefdce1a8f5019d..ad3fb778c67c1390973fab1d8ed6391a0f5b7317 100644 --- a/src/main/java/org/caosdb/server/query/Query.java +++ b/src/main/java/org/caosdb/server/query/Query.java @@ -424,7 +424,7 @@ public class Query implements QueryInterface, ToElementable, TransactionInterfac // Run thru all QTs found... for (final Entry<EntityID, String> q : queryTemplates.entrySet()) { // ... remove the QT from resultSet... - removeQTStmt.setInt(1, q.getKey().toInteger()); + removeQTStmt.setString(1, q.getKey().toString()); removeQTStmt.execute(); // ... check for RETRIEVE:ENTITY permission... diff --git a/src/main/java/org/caosdb/server/transaction/UpdateACL.java b/src/main/java/org/caosdb/server/transaction/UpdateACL.java index 3da0b572b764936dcd94be0edad701d9775f2e20..289b5d53a14c642b4ac85bd9c02dd5c69484fa91 100644 --- a/src/main/java/org/caosdb/server/transaction/UpdateACL.java +++ b/src/main/java/org/caosdb/server/transaction/UpdateACL.java @@ -145,7 +145,7 @@ public class UpdateACL extends Transaction<TransactionContainer> } @Override - public Integer generateId() { + public String 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 0bc4f4e3f4fbc6e2c3892bf9209aa4adaf6822d2..87d299477119dcc20b6f730d1bb014b253a49497 100644 --- a/src/main/java/org/caosdb/server/transaction/WriteTransaction.java +++ b/src/main/java/org/caosdb/server/transaction/WriteTransaction.java @@ -597,7 +597,7 @@ public class WriteTransaction extends Transaction<WritableContainer> } @Override - public Integer generateId() { + public String generateId() { if (this.idRegistry == null) { this.idRegistry = new EntityIdRegistry(this); } diff --git a/src/main/java/org/caosdb/server/transaction/WriteTransactionInterface.java b/src/main/java/org/caosdb/server/transaction/WriteTransactionInterface.java index e635c0c581f4c00d5241f17304f777cf0ac5a420..c39d2c14a7dc625b1aa8bf0529feaeec2c4ca8b3 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 String generateId(); } diff --git a/src/test/java/org/caosdb/server/database/backend/implementation/MySQL/InsertTest.java b/src/test/java/org/caosdb/server/database/backend/implementation/MySQL/InsertTest.java index 03bd185c8884822f89f8ff323a1c32125b66f88b..94febb12a91bc4db8f8878bb5a670f856b17edf5 100644 --- a/src/test/java/org/caosdb/server/database/backend/implementation/MySQL/InsertTest.java +++ b/src/test/java/org/caosdb/server/database/backend/implementation/MySQL/InsertTest.java @@ -143,31 +143,31 @@ public class InsertTest { assertEquals(7, stage1Inserts.size()); assertFalse(stage1Inserts.get(0) instanceof Replacement); - assertEquals(1, stage1Inserts.get(0).getId().toInteger()); + assertEquals("1", stage1Inserts.get(0).getId().toString()); assertEquals("V1", ((SingleValue) stage1Inserts.get(0).getValue()).toDatabaseString()); assertFalse(stage1Inserts.get(1) instanceof Replacement); - assertEquals(2, stage1Inserts.get(1).getId().toInteger()); + assertEquals("2", stage1Inserts.get(1).getId().toString()); assertEquals("V2", ((SingleValue) stage1Inserts.get(1).getValue()).toDatabaseString()); assertFalse(stage1Inserts.get(2) instanceof Replacement); - assertEquals(4, stage1Inserts.get(2).getId().toInteger()); + assertEquals("4", stage1Inserts.get(2).getId().toString()); assertEquals("V4", ((SingleValue) stage1Inserts.get(2).getValue()).toDatabaseString()); assertTrue(stage1Inserts.get(3) instanceof Replacement); - assertEquals(-1, stage1Inserts.get(3).getId().toInteger()); + assertEquals("-1", stage1Inserts.get(3).getId().toString()); assertEquals("V5", ((SingleValue) stage1Inserts.get(3).getValue()).toDatabaseString()); assertFalse(stage1Inserts.get(4) instanceof Replacement); - assertEquals(7, stage1Inserts.get(4).getId().toInteger()); + assertEquals("7", stage1Inserts.get(4).getId().toString()); assertEquals("V7", ((SingleValue) stage1Inserts.get(4).getValue()).toDatabaseString()); assertTrue(stage1Inserts.get(5) instanceof Replacement); - assertEquals(-2, stage1Inserts.get(5).getId().toInteger()); + assertEquals("-2", stage1Inserts.get(5).getId().toString()); assertEquals("V8", ((SingleValue) stage1Inserts.get(5).getValue()).toDatabaseString()); assertTrue(stage1Inserts.get(6) instanceof Replacement); - assertEquals(-3, stage1Inserts.get(6).getId().toInteger()); + assertEquals("-3", stage1Inserts.get(6).getId().toString()); assertEquals("V9", ((SingleValue) stage1Inserts.get(6).getValue()).toDatabaseString()); assertEquals(6, stage2Inserts.size()); @@ -300,7 +300,7 @@ public class InsertTest { assertFalse(stage1Inserts.get(1) instanceof Replacement); assertEquals(new EntityID(-1), stage1Inserts.get(1).getId()); - assertEquals(1, ((ReferenceValue) stage1Inserts.get(1).getValue()).getId().toInteger()); + assertEquals("1", ((ReferenceValue) stage1Inserts.get(1).getValue()).getId().toString()); assertFalse(stage1Inserts.get(2) instanceof Replacement); assertEquals(new EntityID(1), stage1Inserts.get(2).getId()); @@ -368,7 +368,7 @@ public class InsertTest { assertFalse(stage1Inserts.get(2) instanceof Replacement); assertEquals(new EntityID(-1), stage1Inserts.get(2).getId()); - assertEquals(2, ((ReferenceValue) stage1Inserts.get(2).getValue()).getId().toInteger()); + assertEquals("2", ((ReferenceValue) stage1Inserts.get(2).getValue()).getId().toString()); assertFalse(stage1Inserts.get(3) instanceof Replacement); assertEquals(new EntityID(3), stage1Inserts.get(3).getId());