Skip to content

Commit 04b94df

Browse files
committed
Merge branch 'dev'
2 parents 886a602 + bf182d9 commit 04b94df

14 files changed

+65
-49
lines changed

pom.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
<groupId>ca.gc.aafc</groupId>
77
<artifactId>object-store.api</artifactId>
8-
<version>1.24</version>
8+
<version>1.25</version>
99
<packaging>jar</packaging>
1010

1111
<name>Object-Store API</name>
@@ -49,7 +49,7 @@
4949

5050
<asciidoctor-maven-plugin.version>2.1.0</asciidoctor-maven-plugin.version>
5151
<asciidoctorj.diagram.version>2.0.2</asciidoctorj.diagram.version>
52-
<dina-base-api.version>0.137</dina-base-api.version>
52+
<dina-base-api.version>0.139</dina-base-api.version>
5353

5454
<postgresql.version>42.4.4</postgresql.version>
5555

src/main/java/ca/gc/aafc/objectstore/api/dto/DerivativeDto.java

+3
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,9 @@ public class DerivativeDto implements ca.gc.aafc.dina.dto.JsonApiResource {
4242
@JsonInclude(Include.NON_EMPTY)
4343
private String notPubliclyReleasableReason;
4444

45+
@JsonInclude(Include.NON_EMPTY)
46+
private String[] acTags;
47+
4548
@JsonApiRelation
4649
private DerivativeDto generatedFromDerivative;
4750

src/main/java/ca/gc/aafc/objectstore/api/entities/AbstractObjectStoreMetadata.java

+12
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ public abstract class AbstractObjectStoreMetadata implements DinaEntity {
3939
private Boolean publiclyReleasable;
4040
private String notPubliclyReleasableReason;
4141

42+
private String[] acTags;
43+
4244
@NaturalId
4345
@NotNull
4446
@Column(name = "uuid", unique = true)
@@ -170,6 +172,16 @@ public void setNotPubliclyReleasableReason(String notPubliclyReleasableReason) {
170172
this.notPubliclyReleasableReason = notPubliclyReleasableReason;
171173
}
172174

175+
@Type(type = "string-array")
176+
@Column(name = "ac_tags", columnDefinition = "text[]")
177+
public String[] getAcTags() {
178+
return acTags;
179+
}
180+
181+
public void setAcTags(String[] acTags) {
182+
this.acTags = acTags;
183+
}
184+
173185
/**
174186
* Returns fileIdentifier + fileExtension
175187
*

src/main/java/ca/gc/aafc/objectstore/api/entities/Derivative.java

+5-3
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
public class Derivative extends AbstractObjectStoreMetadata {
2727

2828
public enum DerivativeType {
29-
THUMBNAIL_IMAGE("thumbnail"), LARGE_IMAGE("large");
29+
THUMBNAIL_IMAGE("thumbnail"), LARGE_IMAGE("large"), CROPPED_IMAGE("cropped");
3030

3131
private final String suffix;
3232

@@ -65,7 +65,8 @@ public Derivative(
6565
Derivative generatedFromDerivative,
6666
String dcFormat,
6767
Boolean publiclyReleasable,
68-
String notPubliclyReleasableReason
68+
String notPubliclyReleasableReason,
69+
String[] acTags
6970
) {
7071
super(
7172
uuid,
@@ -79,7 +80,8 @@ public Derivative(
7980
createdOn,
8081
dcFormat,
8182
publiclyReleasable,
82-
notPubliclyReleasableReason);
83+
notPubliclyReleasableReason,
84+
acTags);
8385
this.id = id;
8486
this.acDerivedFrom = acDerivedFrom;
8587
this.derivativeType = derivativeType;

src/main/java/ca/gc/aafc/objectstore/api/entities/ObjectStoreMetadata.java

+2-14
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,6 @@ public class ObjectStoreMetadata extends AbstractObjectStoreMetadata {
5656

5757
private String originalFilename;
5858

59-
private String[] acTags;
60-
6159
private Map<String, String> managedAttributes;
6260

6361
private UUID acMetadataCreator;
@@ -120,7 +118,8 @@ public ObjectStoreMetadata(
120118
createdOn,
121119
dcFormat,
122120
publiclyReleasable,
123-
notPubliclyReleasableReason);
121+
notPubliclyReleasableReason,
122+
acTags);
124123
this.id = id;
125124
this.acCaption = acCaption;
126125
this.acDigitizationDate = acDigitizationDate;
@@ -130,7 +129,6 @@ public ObjectStoreMetadata(
130129
this.xmpRightsOwner = xmpRightsOwner;
131130
this.xmpRightsUsageTerms = xmpRightsUsageTerms;
132131
this.originalFilename = originalFilename;
133-
this.acTags = acTags;
134132
this.managedAttributes = MapUtils.isNotEmpty(managedAttributeValues) ? managedAttributeValues : new HashMap<>();
135133
this.acMetadataCreator = acMetadataCreator;
136134
this.dcCreator = dcCreator;
@@ -190,16 +188,6 @@ public void setOriginalFilename(String originalFilename) {
190188
this.originalFilename = originalFilename;
191189
}
192190

193-
@Type(type = "string-array")
194-
@Column(name = "ac_tags", columnDefinition = "text[]")
195-
public String[] getAcTags() {
196-
return acTags;
197-
}
198-
199-
public void setAcTags(String[] acTags) {
200-
this.acTags = acTags;
201-
}
202-
203191
@NotNull
204192
@Column(name = "xmp_rights_web_statement")
205193
@Size(max = 250)

src/main/java/ca/gc/aafc/objectstore/api/repository/ObjectStoreMetadataRepositoryV2.java

+6-26
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,10 @@
99
import org.springframework.web.bind.annotation.RestController;
1010

1111
import com.fasterxml.jackson.databind.ObjectMapper;
12-
import com.toedter.spring.hateoas.jsonapi.JsonApiModelBuilder;
1312

1413
import ca.gc.aafc.dina.dto.ExternalRelationDto;
15-
import ca.gc.aafc.dina.dto.JsonApiDto;
1614
import ca.gc.aafc.dina.dto.JsonApiExternalResource;
15+
import ca.gc.aafc.dina.exception.ResourceGoneException;
1716
import ca.gc.aafc.dina.exception.ResourceNotFoundException;
1817
import ca.gc.aafc.dina.repository.DinaRepositoryV2;
1918
import ca.gc.aafc.dina.service.AuditService;
@@ -65,33 +64,14 @@ protected JsonApiExternalResource externalRelationDtoToJsonApiExternalResource(
6564
}
6665

6766
@GetMapping(TMP_V2_TYPE + "/{id}")
68-
public ResponseEntity<RepresentationModel<?>> handleFindOne(@PathVariable UUID id, HttpServletRequest req) throws ResourceNotFoundException {
69-
String queryString = decodeQueryString(req);
70-
71-
JsonApiDto<ObjectStoreMetadataDto> jsonApiDto = getOne(id, queryString);
72-
if (jsonApiDto == null) {
73-
return ResponseEntity.notFound().build();
74-
}
75-
76-
JsonApiModelBuilder builder = createJsonApiModelBuilder(jsonApiDto);
77-
78-
return ResponseEntity.ok(builder.build());
67+
public ResponseEntity<RepresentationModel<?>> onFindOne(@PathVariable UUID id, HttpServletRequest req)
68+
throws ResourceNotFoundException, ResourceGoneException {
69+
return handleFindOne(id, req);
7970
}
8071

8172
@GetMapping(TMP_V2_TYPE)
82-
public ResponseEntity<RepresentationModel<?>> handleFindAll(HttpServletRequest req) {
83-
String queryString = decodeQueryString(req);
84-
85-
PagedResource<JsonApiDto<ObjectStoreMetadataDto>> dtos;
86-
try {
87-
dtos = getAll(queryString);
88-
} catch (IllegalArgumentException iaEx) {
89-
return ResponseEntity.badRequest().build();
90-
}
91-
92-
JsonApiModelBuilder builder = createJsonApiModelBuilder(dtos);
93-
94-
return ResponseEntity.ok(builder.build());
73+
public ResponseEntity<RepresentationModel<?>> onFindAll(HttpServletRequest req) {
74+
return handleFindAll(req);
9575
}
9676

9777
}

src/main/java/ca/gc/aafc/objectstore/api/service/DerivativeService.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
package ca.gc.aafc.objectstore.api.service;
22

33
import org.apache.commons.lang3.StringUtils;
4-
import org.springframework.context.ApplicationEventPublisher;
54
import org.springframework.stereotype.Service;
65
import org.springframework.validation.SmartValidator;
76

87
import ca.gc.aafc.dina.jpa.BaseDAO;
8+
import ca.gc.aafc.dina.messaging.DinaEventPublisher;
99
import ca.gc.aafc.dina.messaging.EntityChanged;
1010
import ca.gc.aafc.dina.messaging.message.DocumentOperationType;
1111
import ca.gc.aafc.dina.service.MessageProducingService;
@@ -39,7 +39,7 @@ public DerivativeService(
3939
DerivativeGenerationService derivativeGenerationService,
4040
@NonNull DerivativeValidator validator,
4141
@NonNull SmartValidator smartValidator,
42-
ApplicationEventPublisher eventPublisher
42+
DinaEventPublisher<EntityChanged> eventPublisher
4343
) {
4444
super(baseDAO, smartValidator, DerivativeDto.TYPENAME, eventPublisher);
4545
this.derivativeGenerationService = derivativeGenerationService;

src/main/java/ca/gc/aafc/objectstore/api/service/ObjectStoreMetaDataService.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,12 @@
1111
import javax.validation.ValidationException;
1212

1313
import org.apache.commons.lang3.StringUtils;
14-
import org.springframework.context.ApplicationEventPublisher;
1514
import org.springframework.stereotype.Service;
1615
import org.springframework.validation.SmartValidator;
1716

1817
import ca.gc.aafc.dina.jpa.BaseDAO;
18+
import ca.gc.aafc.dina.messaging.DinaEventPublisher;
19+
import ca.gc.aafc.dina.messaging.EntityChanged;
1920
import ca.gc.aafc.dina.service.MessageProducingService;
2021
import ca.gc.aafc.dina.util.UUIDHelper;
2122
import ca.gc.aafc.objectstore.api.dto.ObjectStoreMetadataDto;
@@ -53,7 +54,7 @@ public ObjectStoreMetaDataService(
5354
@NonNull SmartValidator smartValidator,
5455
@NonNull ObjectStoreManagedAttributeValueValidator objectStoreManagedAttributeValueValidator,
5556
@NonNull ObjectStoreMetadataValidator objectStoreMetadataValidator,
56-
ApplicationEventPublisher eventPublisher) {
57+
DinaEventPublisher<EntityChanged> eventPublisher) {
5758
super(baseDAO, smartValidator, ObjectStoreMetadataDto.TYPENAME, eventPublisher);
5859
this.baseDAO = baseDAO;
5960
this.defaultValueSetterService = defaultValueSetterService;

src/main/resources/application.yml

+1
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ dina:
8585
queue: dina.export.queue
8686
export:
8787
maxObjectExportSize: 2GB
88+
apiPrefix: /api/v1
8889

8990
rabbitmq:
9091
queue: dina.search.queue

src/main/resources/db/changelog/db.changelog-master.xml

+2
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,6 @@
1919
<include file="db/changelog/migrations/14-Add_migration_hint_table.xml"/>
2020
<include file="db/changelog/migrations/15-Add_publiclyReleasable_To_Derivative.xml"/>
2121
<include file="db/changelog/migrations/data/1-Reset_ObjectUpload_sha1hex.xml"/>
22+
<include file="db/changelog/migrations/16-Add_CROPPED_IMAGE_to_derivative_type.xml"/>
23+
<include file="db/changelog/migrations/17-Add_acTags_to_Derivative.xml"/>
2224
</databaseChangeLog>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?xml version="1.1" encoding="UTF-8" standalone="no" ?>
2+
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog https://local.xsd/dbchangelog-4.4.xsd"
5+
objectQuotingStrategy="QUOTE_ONLY_RESERVED_WORDS">
6+
7+
<changeSet id="16-Add_CROPPED_IMAGE_to_derivative_type" context="schema-change" author="cgendreau" runInTransaction="false">
8+
<sql>
9+
ALTER TYPE derivative_type ADD VALUE 'CROPPED_IMAGE';
10+
</sql>
11+
</changeSet>
12+
</databaseChangeLog>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?xml version="1.1" encoding="UTF-8" standalone="no" ?>
2+
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog https://local.xsd/dbchangelog-4.4.xsd"
5+
objectQuotingStrategy="QUOTE_ONLY_RESERVED_WORDS">
6+
7+
<changeSet id="17-Add_acTags_to_Derivative" context="schema-change" author="cgendreau">
8+
<addColumn tableName="derivative">
9+
<column name="ac_tags" type="TEXT[]"/>
10+
</addColumn>
11+
</changeSet>
12+
</databaseChangeLog>

src/test/java/ca/gc/aafc/objectstore/api/repository/DerivativeRepositoryCRUDIT.java

+2
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import java.util.UUID;
2222

2323
import static org.junit.jupiter.api.Assertions.assertFalse;
24+
import static org.junit.jupiter.api.Assertions.assertNotNull;
2425
import static org.junit.jupiter.api.Assertions.assertTrue;
2526

2627
public class DerivativeRepositoryCRUDIT extends BaseIntegrationTest {
@@ -109,6 +110,7 @@ void save() {
109110
resource.getUuid(),
110111
new QuerySpec(DerivativeDto.class));
111112
assertTrue(result.getPubliclyReleasable());
113+
assertNotNull(result.getAcTags());
112114
}
113115

114116
private DerivativeDto newDerivative(UUID fileIdentifier) {

src/test/java/ca/gc/aafc/objectstore/api/testsupport/fixtures/DerivativeTestFixture.java

+1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ public static DerivativeDto newDerivative(UUID fileIdentifier) {
2323
dto.setCreatedBy(CREATED_BY);
2424
dto.setPubliclyReleasable(true);
2525
dto.setNotPubliclyReleasableReason("Classified");
26+
dto.setAcTags(new String[] {"tag 1"});
2627
return dto;
2728
}
2829
}

0 commit comments

Comments
 (0)