diff --git a/bindings/java/src/org/sleuthkit/datamodel/CaseDatabaseFactory.java b/bindings/java/src/org/sleuthkit/datamodel/CaseDatabaseFactory.java index 7cbe2b0f91f40d0661f6a38ef671c67d87d92d50..d7782fef832654f1879281e63b29581c43c451ab 100644 --- a/bindings/java/src/org/sleuthkit/datamodel/CaseDatabaseFactory.java +++ b/bindings/java/src/org/sleuthkit/datamodel/CaseDatabaseFactory.java @@ -264,9 +264,9 @@ private void createArtifactTables(Statement stmt) throws SQLException { private void createTagTables(Statement stmt) throws SQLException { stmt.execute("CREATE TABLE tsk_tag_sets (tag_set_id " + dbQueryHelper.getPrimaryKey() + " PRIMARY KEY, name TEXT UNIQUE)"); - stmt.execute("CREATE TABLE tag_names (tag_name_id " + dbQueryHelper.getPrimaryKey() + " PRIMARY KEY, display_name TEXT, " + stmt.execute("CREATE TABLE tag_names (tag_name_id " + dbQueryHelper.getPrimaryKey() + " PRIMARY KEY, display_name TEXT UNIQUE, " + "description TEXT NOT NULL, color TEXT NOT NULL, knownStatus INTEGER NOT NULL," - + " tag_set_id " + dbQueryHelper.getBigIntType() + ", rank INTEGER, CONSTRAINT ck_name_set_id UNIQUE(display_name, tag_set_id),FOREIGN KEY(tag_set_id) REFERENCES tsk_tag_sets(tag_set_id) ON DELETE SET NULL)"); + + " tag_set_id " + dbQueryHelper.getBigIntType() + ", rank INTEGER, FOREIGN KEY(tag_set_id) REFERENCES tsk_tag_sets(tag_set_id) ON DELETE SET NULL)"); stmt.execute("CREATE TABLE tsk_examiners (examiner_id " + dbQueryHelper.getPrimaryKey() + " PRIMARY KEY, " + "login_name TEXT NOT NULL, display_name TEXT, UNIQUE(login_name))"); diff --git a/bindings/java/src/org/sleuthkit/datamodel/SleuthkitCase.java b/bindings/java/src/org/sleuthkit/datamodel/SleuthkitCase.java index 2145d522629396322718bf6c02870479fb8f04e2..a2214166727b483bfbe3b8b9ab1bee029dd31e23 100644 --- a/bindings/java/src/org/sleuthkit/datamodel/SleuthkitCase.java +++ b/bindings/java/src/org/sleuthkit/datamodel/SleuthkitCase.java @@ -9761,6 +9761,7 @@ public TagName addOrUpdateTagName(String displayName, String description, TagNam statement.clearParameters(); statement.setLong(1, tagId); resultSet = connection.executeQuery(statement); + resultSet.next(); return new TagName(this, tagId, displayName, description, color, knownStatus, resultSet.getLong("tag_set_id"), resultSet.getInt("rank")); @@ -11523,7 +11524,7 @@ private enum PREPARED_STATEMENT { + "FROM tsk_objects INNER JOIN blackboard_artifacts " //NON-NLS + "ON tsk_objects.obj_id=blackboard_artifacts.obj_id " //NON-NLS + "WHERE (tsk_objects.par_obj_id = ?)"), - INSERT_OR_UPDATE_TAG_NAME("INSERT INTO tag_names (display_name, description, color, knownStatus) VALUES (?, ?, ?, ?) ON CONFLICT (display_name, tag_set_id) DO UPDATE SET description = ?, color = ?, knownStatus = ?"), + INSERT_OR_UPDATE_TAG_NAME("INSERT INTO tag_names (display_name, description, color, knownStatus) VALUES (?, ?, ?, ?) ON CONFLICT (display_name) DO UPDATE SET description = ?, color = ?, knownStatus = ?"), SELECT_EXAMINER_BY_ID("SELECT * FROM tsk_examiners WHERE examiner_id = ?"), SELECT_EXAMINER_BY_LOGIN_NAME("SELECT * FROM tsk_examiners WHERE login_name = ?"), INSERT_EXAMINER_POSTGRESQL("INSERT INTO tsk_examiners (login_name) VALUES (?) ON CONFLICT DO NOTHING"), diff --git a/bindings/java/src/org/sleuthkit/datamodel/TaggingManager.java b/bindings/java/src/org/sleuthkit/datamodel/TaggingManager.java index 284a86cde5a985048eccf073a8ad0662380b597b..97e8b7b4b7a42e1d4b963e9c234104a3f25c3c95 100755 --- a/bindings/java/src/org/sleuthkit/datamodel/TaggingManager.java +++ b/bindings/java/src/org/sleuthkit/datamodel/TaggingManager.java @@ -173,55 +173,6 @@ public void deleteTagSet(TagSet tagSet) throws TskCoreException { } } - /** - * Add the given TagName to the TagSet. - * - * @param tagSet The tag set being added to. - * @param tagName The tag name to add to the set. - * - * @return TagSet TagSet object with newly added TagName. - * - * @throws TskCoreException - */ - public TagSet addTagNameToTagSet(TagSet tagSet, TagName tagName) throws TskCoreException { - if (tagSet == null || tagName == null) { - throw new IllegalArgumentException("NULL value passed to addTagToTagSet"); - } - - // Make sure the tagName is not already in the list. - List<TagName> setTagNameList = tagSet.getTagNames(); - for (TagName tag : setTagNameList) { - if (tagName.getId() == tag.getId()) { - return tagSet; - } - } - - CaseDbConnection connection = skCase.getConnection(); - skCase.acquireSingleUserCaseWriteLock(); - - try (Statement stmt = connection.createStatement()) { - connection.beginTransaction(); - - String queryTemplate = "UPDATE tag_names SET tag_set_id = %d where tag_name_id = %d"; - stmt.executeUpdate(String.format(queryTemplate, tagSet.getId(), tagName.getId())); - - connection.commitTransaction(); - - List<TagName> newTagNameList = new ArrayList<>(); - newTagNameList.addAll(setTagNameList); - newTagNameList.add(new TagName(skCase, tagName.getId(), tagName.getDisplayName(), tagName.getDescription(), tagName.getColor(), tagName.getKnownStatus(), tagSet.getId(), tagName.getRank())); - - return new TagSet(tagSet.getId(), tagSet.getName(), newTagNameList); - - } catch (SQLException ex) { - connection.rollbackTransaction(); - throw new TskCoreException(String.format("Error adding TagName (id=%d) to TagSet (id=%s)", tagName.getId(), tagSet.getId()), ex); - } finally { - connection.close(); - skCase.releaseSingleUserCaseWriteLock(); - } - } - /** * Inserts a row into the blackboard_artifact_tags table in the case * database.