Skip to content
Snippets Groups Projects
Unverified Commit fc70e7a5 authored by Martin Weise's avatar Martin Weise
Browse files

Finally can save iid

parent b423eff4
No related branches found
No related tags found
2 merge requests!81New stable release,!80Multiple features connected with user management and ownership of databases
This commit is part of merge request !81. Comments created here will be created in the context of that merge request.
...@@ -123,8 +123,6 @@ public class IdentifierServiceIntegrationTest extends BaseUnitTest { ...@@ -123,8 +123,6 @@ public class IdentifierServiceIntegrationTest extends BaseUnitTest {
assertEquals(IDENTIFIER_2_TITLE, response.getTitle()); assertEquals(IDENTIFIER_2_TITLE, response.getTitle());
assertEquals(IDENTIFIER_2_DESCRIPTION, response.getDescription()); assertEquals(IDENTIFIER_2_DESCRIPTION, response.getDescription());
assertEquals(2, response.getCreators().size()); assertEquals(2, response.getCreators().size());
assertEquals(1, response.getRelatedIdentifiers().size());
assertEquals(IDENTIFIER_2_ID, response.getRelatedIdentifiers().get(0).getIdentifier().getId());
} }
@Test @Test
......
package at.tuwien.repository.jpa;
import at.tuwien.entities.identifier.RelatedIdentifier;
import at.tuwien.entities.identifier.RelatedIdentifierKey;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface RelatedIdentifierRepository extends JpaRepository<RelatedIdentifier, RelatedIdentifierKey> {
}
...@@ -16,6 +16,7 @@ import at.tuwien.gateway.QueryServiceGateway; ...@@ -16,6 +16,7 @@ import at.tuwien.gateway.QueryServiceGateway;
import at.tuwien.mapper.DocumentMapper; import at.tuwien.mapper.DocumentMapper;
import at.tuwien.mapper.IdentifierMapper; import at.tuwien.mapper.IdentifierMapper;
import at.tuwien.repository.jpa.IdentifierRepository; import at.tuwien.repository.jpa.IdentifierRepository;
import at.tuwien.repository.jpa.RelatedIdentifierRepository;
import at.tuwien.service.DatabaseService; import at.tuwien.service.DatabaseService;
import at.tuwien.service.IdentifierService; import at.tuwien.service.IdentifierService;
import at.tuwien.service.UserService; import at.tuwien.service.UserService;
...@@ -39,16 +40,19 @@ public class IdentifierServiceImpl implements IdentifierService { ...@@ -39,16 +40,19 @@ public class IdentifierServiceImpl implements IdentifierService {
private final IdentifierMapper identifierMapper; private final IdentifierMapper identifierMapper;
private final QueryServiceGateway queryServiceGateway; private final QueryServiceGateway queryServiceGateway;
private final IdentifierRepository identifierRepository; private final IdentifierRepository identifierRepository;
private final RelatedIdentifierRepository relatedIdentifierRepository;
public IdentifierServiceImpl(UserService userService, DocumentMapper documentMapper, public IdentifierServiceImpl(UserService userService, DocumentMapper documentMapper,
DatabaseService databaseService, IdentifierMapper identifierMapper, DatabaseService databaseService, IdentifierMapper identifierMapper,
QueryServiceGateway queryServiceGateway, IdentifierRepository identifierRepository) { QueryServiceGateway queryServiceGateway, IdentifierRepository identifierRepository,
RelatedIdentifierRepository relatedIdentifierRepository) {
this.userService = userService; this.userService = userService;
this.documentMapper = documentMapper; this.documentMapper = documentMapper;
this.databaseService = databaseService; this.databaseService = databaseService;
this.identifierMapper = identifierMapper; this.identifierMapper = identifierMapper;
this.queryServiceGateway = queryServiceGateway; this.queryServiceGateway = queryServiceGateway;
this.identifierRepository = identifierRepository; this.identifierRepository = identifierRepository;
this.relatedIdentifierRepository = relatedIdentifierRepository;
} }
@Override @Override
...@@ -114,15 +118,13 @@ public class IdentifierServiceImpl implements IdentifierService { ...@@ -114,15 +118,13 @@ public class IdentifierServiceImpl implements IdentifierService {
}) })
.collect(Collectors.toList())); .collect(Collectors.toList()));
if (data.getRelatedIdentifiers() != null) { if (data.getRelatedIdentifiers() != null) {
entity.setRelatedIdentifiers(data.getRelatedIdentifiers() data.getRelatedIdentifiers()
.stream() .forEach(r -> {
.map(r -> {
final RelatedIdentifier id = identifierMapper.relatedIdentifierCreateDtoToRelatedIdentifier(r); final RelatedIdentifier id = identifierMapper.relatedIdentifierCreateDtoToRelatedIdentifier(r);
id.setIdentifier(entity); id.setIid(entity.getId());
id.setCreator(creator); id.setCreator(creator);
return id; relatedIdentifierRepository.save(id);
}) });
.collect(Collectors.toList()));
} }
final Identifier identifier = identifierRepository.save(entity); final Identifier identifier = identifierRepository.save(entity);
log.info("Created identifier with id {}", identifier.getId()); log.info("Created identifier with id {}", identifier.getId());
......
...@@ -84,9 +84,6 @@ public class Identifier { ...@@ -84,9 +84,6 @@ public class Identifier {
}) })
private Database database; private Database database;
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "identifier")
private List<RelatedIdentifier> relatedIdentifiers;
@Column(nullable = false, columnDefinition = "enum('EVERYONE', 'TRUSTED', 'SELF')") @Column(nullable = false, columnDefinition = "enum('EVERYONE', 'TRUSTED', 'SELF')")
@Enumerated(EnumType.STRING) @Enumerated(EnumType.STRING)
private VisibilityType visibility = VisibilityType.SELF; private VisibilityType visibility = VisibilityType.SELF;
......
...@@ -18,15 +18,17 @@ import java.time.Instant; ...@@ -18,15 +18,17 @@ import java.time.Instant;
@ToString @ToString
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
@IdClass(RelatedIdentifierKey.class)
@Where(clause = "deleted is null") @Where(clause = "deleted is null")
@EqualsAndHashCode(onlyExplicitlyIncluded = true)
@EntityListeners(AuditingEntityListener.class) @EntityListeners(AuditingEntityListener.class)
@SQLDelete(sql = "update mdb_related_identifiers set deleted = NOW() where id = ?") @Table(name = "mdb_related_identifiers", uniqueConstraints = {
@Table(name = "mdb_related_identifiers") @UniqueConstraint(columnNames = {"id", "iid"})
})
public class RelatedIdentifier { public class RelatedIdentifier {
@Id @Id
@EqualsAndHashCode.Include @EqualsAndHashCode.Include
@ToString.Include
@GeneratedValue(generator = "related-identifier-sequence") @GeneratedValue(generator = "related-identifier-sequence")
@GenericGenerator( @GenericGenerator(
name = "related-identifier-sequence", name = "related-identifier-sequence",
...@@ -35,6 +37,10 @@ public class RelatedIdentifier { ...@@ -35,6 +37,10 @@ public class RelatedIdentifier {
) )
private Long id; private Long id;
@Id
@EqualsAndHashCode.Include
private Long iid;
@Column(nullable = false) @Column(nullable = false)
private String value; private String value;
...@@ -52,13 +58,6 @@ public class RelatedIdentifier { ...@@ -52,13 +58,6 @@ public class RelatedIdentifier {
}) })
private User creator; private User creator;
@ToString.Exclude
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumns({
@JoinColumn(name = "identifier_id", referencedColumnName = "id")
})
private Identifier identifier;
@Column(nullable = false, updatable = false) @Column(nullable = false, updatable = false)
@CreatedDate @CreatedDate
private Instant created; private Instant created;
......
package at.tuwien.entities.identifier;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
@EqualsAndHashCode
public class RelatedIdentifierKey implements Serializable {
private Long id;
private Long iid;
}
...@@ -478,7 +478,7 @@ CREATE TABLE IF NOT EXISTS mdb_identifiers ...@@ -478,7 +478,7 @@ CREATE TABLE IF NOT EXISTS mdb_identifiers
CREATE TABLE IF NOT EXISTS mdb_related_identifiers CREATE TABLE IF NOT EXISTS mdb_related_identifiers
( (
id bigint DEFAULT nextval('mdb_related_identifiers_seq'), id bigint DEFAULT nextval('mdb_related_identifiers_seq'),
identifier_id bigint NOT NULL, iid bigint NOT NULL,
value text NOT NULL, value text NOT NULL,
type varchar(255), type varchar(255),
relation varchar(255), relation varchar(255),
...@@ -486,8 +486,8 @@ CREATE TABLE IF NOT EXISTS mdb_related_identifiers ...@@ -486,8 +486,8 @@ CREATE TABLE IF NOT EXISTS mdb_related_identifiers
created_by bigint NOT NULL, created_by bigint NOT NULL,
last_modified timestamp without time zone, last_modified timestamp without time zone,
deleted timestamp without time zone, deleted timestamp without time zone,
PRIMARY KEY (id), /* must be a single id from persistent identifier concept */ PRIMARY KEY (id, iid), /* must be a single id from persistent identifier concept */
FOREIGN KEY (identifier_id) REFERENCES mdb_identifiers (id), FOREIGN KEY (iid) REFERENCES mdb_identifiers (id),
FOREIGN KEY (created_by) REFERENCES mdb_users (UserID) FOREIGN KEY (created_by) REFERENCES mdb_users (UserID)
); );
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment