Skip to content

Commit 2cf9bff

Browse files
Feature/as 3419 link to spo files ivpr (#75)
* AS-3419: Implement farms_ivpr_pkg.insert_staging_row. * AS-3419: Implement farms_ivpr_pkg.staging_to_operational. * AS-3419: Add changelog. * AS-3419: Add the urlId and url fields. * AS-3419: Fix query errors. * AS-3419: Change FileLocation header.
1 parent 9931e8c commit 2cf9bff

File tree

16 files changed

+291
-3
lines changed

16 files changed

+291
-3
lines changed

farms-api/farms-api-rest-common/src/main/java/ca/bc/gov/farms/api/rest/v1/resource/InventoryItemDetailRsrc.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ public class InventoryItemDetailRsrc extends BaseResource implements InventoryIt
3232
private String fruitVegTypeDesc;
3333
private String multiStageCommdtyCode;
3434
private String multiStageCommdtyDesc;
35+
private Long urlId;
36+
private String url;
3537
private String userEmail;
3638

3739
@Override
@@ -174,6 +176,26 @@ public void setMultiStageCommdtyDesc(String multiStageCommdtyDesc) {
174176
this.multiStageCommdtyDesc = multiStageCommdtyDesc;
175177
}
176178

179+
@Override
180+
public Long getUrlId() {
181+
return urlId;
182+
}
183+
184+
@Override
185+
public void setUrlId(Long urlId) {
186+
this.urlId = urlId;
187+
}
188+
189+
@Override
190+
public String getUrl() {
191+
return url;
192+
}
193+
194+
@Override
195+
public void setUrl(String url) {
196+
this.url = url;
197+
}
198+
177199
@Override
178200
public String getUserEmail() {
179201
return userEmail;

farms-api/farms-api-rest-endpoints/src/main/java/ca/bc/gov/farms/api/rest/v1/resource/factory/InventoryItemDetailRsrcFactory.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@ private void populateDefaultResource(InventoryItemDetailRsrc resource, Inventory
5252
resource.setFruitVegTypeDesc(dto.getFruitVegTypeDesc());
5353
resource.setMultiStageCommdtyCode(dto.getMultiStageCommdtyCode());
5454
resource.setMultiStageCommdtyDesc(dto.getMultiStageCommdtyDesc());
55+
resource.setUrlId(dto.getUrlId());
56+
resource.setUrl(dto.getUrl());
5557
}
5658

5759
@Override
@@ -99,6 +101,8 @@ static InventoryItemDetailRsrc populate(InventoryItemDetailDto dto) {
99101
resource.setFruitVegTypeDesc(dto.getFruitVegTypeDesc());
100102
resource.setMultiStageCommdtyCode(dto.getMultiStageCommdtyCode());
101103
resource.setMultiStageCommdtyDesc(dto.getMultiStageCommdtyDesc());
104+
resource.setUrlId(dto.getUrlId());
105+
resource.setUrl(dto.getUrl());
102106

103107
return resource;
104108
}
@@ -144,6 +148,8 @@ public void updateInventoryItemDetail(InventoryItemDetailDto dto, InventoryItemD
144148
dto.setFruitVegTypeDesc(model.getFruitVegTypeDesc());
145149
dto.setMultiStageCommdtyCode(model.getMultiStageCommdtyCode());
146150
dto.setMultiStageCommdtyDesc(model.getMultiStageCommdtyDesc());
151+
dto.setUrlId(model.getUrlId());
152+
dto.setUrl(model.getUrl());
147153
}
148154

149155
}

farms-api/farms-api-rest-endpoints/src/test/java/ca/bc/gov/farms/api/rest/v1/endpoints/InventoryItemDetailEndpointsTest.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ public void testCreateInventoryItemDetail() throws Exception {
7777
inventoryItemDetail.setCommodityTypeCode("GRAIN");
7878
inventoryItemDetail.setFruitVegTypeCode("APPLE");
7979
inventoryItemDetail.setMultiStageCommdtyCode(null);
80+
inventoryItemDetail.setUrlId(1L);
8081
inventoryItemDetail.setUserEmail("jsmith@gmail.com");
8182

8283
Response response = target("/inventoryItemDetails").request().post(Entity.json(inventoryItemDetail));
@@ -99,6 +100,8 @@ public void testCreateInventoryItemDetail() throws Exception {
99100
assertEquals("Apples", jsonObject.getString("fruitVegTypeDesc"));
100101
assertEquals("null", jsonObject.getString("multiStageCommdtyCode"));
101102
assertEquals("null", jsonObject.getString("multiStageCommdtyDesc"));
103+
assertEquals(1, jsonObject.getInt("urlId"));
104+
assertEquals("https://google.com", jsonObject.getString("url"));
102105
assertEquals("null", jsonObject.getString("userEmail"));
103106
}
104107

@@ -131,6 +134,8 @@ public void testGetInventoryItemDetailsByInventoryItemCode() throws Exception {
131134
assertEquals("Apples", inventoryItemDetail.getString("fruitVegTypeDesc"));
132135
assertEquals("null", inventoryItemDetail.getString("multiStageCommdtyCode"));
133136
assertEquals("null", inventoryItemDetail.getString("multiStageCommdtyDesc"));
137+
assertEquals(1, inventoryItemDetail.getInt("urlId"));
138+
assertEquals("https://google.com", inventoryItemDetail.getString("url"));
134139
assertEquals("null", inventoryItemDetail.getString("userEmail"));
135140
}
136141

@@ -158,6 +163,8 @@ public void testGetInventoryItemDetail() throws Exception {
158163
assertEquals("Apples", jsonObject.getString("fruitVegTypeDesc"));
159164
assertEquals("null", jsonObject.getString("multiStageCommdtyCode"));
160165
assertEquals("null", jsonObject.getString("multiStageCommdtyDesc"));
166+
assertEquals(1, jsonObject.getInt("urlId"));
167+
assertEquals("https://google.com", jsonObject.getString("url"));
161168
assertEquals("null", jsonObject.getString("userEmail"));
162169
}
163170

@@ -175,6 +182,7 @@ public void testUpdateInventoryItemDetail() throws Exception {
175182
inventoryItemDetail.setCommodityTypeCode("FORAGE");
176183
inventoryItemDetail.setFruitVegTypeCode("APRICOT");
177184
inventoryItemDetail.setMultiStageCommdtyCode(null);
185+
inventoryItemDetail.setUrlId(2L);
178186
inventoryItemDetail.setUserEmail("jsmith@gmail.com");
179187

180188
Response response = target("/inventoryItemDetails/55361").request().put(Entity.json(inventoryItemDetail));
@@ -198,6 +206,8 @@ public void testUpdateInventoryItemDetail() throws Exception {
198206
assertEquals("Apricots", jsonObject.getString("fruitVegTypeDesc"));
199207
assertEquals("null", jsonObject.getString("multiStageCommdtyCode"));
200208
assertEquals("null", jsonObject.getString("multiStageCommdtyDesc"));
209+
assertEquals(2, jsonObject.getInt("urlId"));
210+
assertEquals("https://microsoft.com", jsonObject.getString("url"));
201211
assertEquals("null", jsonObject.getString("userEmail"));
202212
}
203213

farms-api/farms-model/src/main/java/ca/bc/gov/farms/model/v1/InventoryItemDetail.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,12 @@ public interface InventoryItemDetail extends Serializable {
4747
public String getMultiStageCommdtyDesc();
4848
public void setMultiStageCommdtyDesc(String multiStageCommdtyDesc);
4949

50+
public Long getUrlId();
51+
public void setUrlId(Long urlId);
52+
53+
public String getUrl();
54+
public void setUrl(String url);
55+
5056
public String getUserEmail();
5157
public void setUserEmail(String userEmail);
5258
}

farms-api/farms-persistence/src/main/java/ca/bc/gov/farms/persistence/v1/dao/mybatis/ImportIVPRDaoImpl.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,14 +48,15 @@ public void insertStagingRow(ImportIVPRDto dto, String userId, int rowNum) throw
4848

4949
try (CallableStatement callableStatement = this.conn
5050
.prepareCall(
51-
"call farms_ivpr_pkg.insert_staging_row(?, ?, ?, ?, ?, ?)")) {
51+
"call farms_ivpr_pkg.insert_staging_row(?, ?, ?, ?, ?, ?, ?)")) {
5252
callableStatement.setLong(1, rowNum);
5353
callableStatement.setObject(2, dto.getProgramYear() == null ? null : dto.getProgramYear().shortValue(),
5454
Types.SMALLINT);
5555
callableStatement.setString(3, dto.getInventoryItemCode());
5656
callableStatement.setBigDecimal(4, dto.getInsurableValue());
5757
callableStatement.setBigDecimal(5, dto.getPremiumRate());
58-
callableStatement.setString(6, userId);
58+
callableStatement.setString(6, dto.getFileLocation());
59+
callableStatement.setString(7, userId);
5960
callableStatement.execute();
6061
} catch (RuntimeException | SQLException e) {
6162
handleException(e);

farms-api/farms-persistence/src/main/java/ca/bc/gov/farms/persistence/v1/dto/ImportIVPRDto.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ public class ImportIVPRDto implements Serializable {
1212
private String inventoryItemDesc;
1313
private BigDecimal insurableValue;
1414
private BigDecimal premiumRate;
15+
private String fileLocation;
1516

1617
public Integer getProgramYear() {
1718
return programYear;
@@ -52,4 +53,12 @@ public BigDecimal getPremiumRate() {
5253
public void setPremiumRate(BigDecimal premiumRate) {
5354
this.premiumRate = premiumRate;
5455
}
56+
57+
public String getFileLocation() {
58+
return fileLocation;
59+
}
60+
61+
public void setFileLocation(String fileLocation) {
62+
this.fileLocation = fileLocation;
63+
}
5564
}

farms-api/farms-persistence/src/main/java/ca/bc/gov/farms/persistence/v1/dto/InventoryItemDetailDto.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ public class InventoryItemDetailDto extends BaseDto<InventoryItemDetailDto> {
2929
private String fruitVegTypeDesc;
3030
private String multiStageCommdtyCode;
3131
private String multiStageCommdtyDesc;
32+
private Long urlId;
33+
private String url;
3234

3335
private Integer revisionCount;
3436
private String createUser;
@@ -54,6 +56,8 @@ public InventoryItemDetailDto(InventoryItemDetailDto dto) {
5456
this.fruitVegTypeDesc = dto.fruitVegTypeDesc;
5557
this.multiStageCommdtyCode = dto.multiStageCommdtyCode;
5658
this.multiStageCommdtyDesc = dto.multiStageCommdtyDesc;
59+
this.urlId = dto.urlId;
60+
this.url = dto.url;
5761

5862
this.revisionCount = dto.revisionCount;
5963
this.createUser = dto.createUser;
@@ -101,6 +105,8 @@ public boolean equalsAll(InventoryItemDetailDto other) {
101105
&& dtoUtils.equals("multiStageCommdtyCode", multiStageCommdtyCode, other.multiStageCommdtyCode);
102106
result = result
103107
&& dtoUtils.equals("multiStageCommdtyDesc", multiStageCommdtyDesc, other.multiStageCommdtyDesc);
108+
result = result && dtoUtils.equals("urlId", urlId, other.urlId);
109+
result = result && dtoUtils.equals("url", url, other.url);
104110
}
105111

106112
return result;
@@ -218,6 +224,22 @@ public void setMultiStageCommdtyDesc(String multiStageCommdtyDesc) {
218224
this.multiStageCommdtyDesc = multiStageCommdtyDesc;
219225
}
220226

227+
public Long getUrlId() {
228+
return urlId;
229+
}
230+
231+
public void setUrlId(Long urlId) {
232+
this.urlId = urlId;
233+
}
234+
235+
public String getUrl() {
236+
return url;
237+
}
238+
239+
public void setUrl(String url) {
240+
this.url = url;
241+
}
242+
221243
public Integer getRevisionCount() {
222244
return revisionCount;
223245
}

farms-api/farms-persistence/src/main/resources/ca/bc/gov/farms/persistence/v1/dao/mybatis/mapper/InventoryItemDetailMapper.xml

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
<result property="fruitVegTypeDesc" column="fruit_veg_type_desc" javaType="java.lang.String" jdbcType="VARCHAR" />
2020
<result property="multiStageCommdtyCode" column="multi_stage_commdty_code" javaType="java.lang.String" jdbcType="VARCHAR" />
2121
<result property="multiStageCommdtyDesc" column="multi_stage_commdty_desc" javaType="java.lang.String" jdbcType="VARCHAR" />
22+
<result property="urlId" column="url_id" javaType="java.lang.Long" jdbcType="BIGINT" />
23+
<result property="url" column="url" javaType="java.lang.String" jdbcType="VARCHAR" />
2224

2325
<result property="revisionCount" column="revision_count" javaType="java.lang.Integer" jdbcType="NUMERIC" />
2426
<result property="createUser" column="who_created" javaType="java.lang.String" jdbcType="VARCHAR" />
@@ -41,7 +43,9 @@
4143
fvtc.fruit_veg_type_code,
4244
fvtc.description as fruit_veg_type_desc,
4345
mscc.multi_stage_commdty_code,
44-
mscc.description as multi_stage_commdty_desc
46+
mscc.description as multi_stage_commdty_desc,
47+
u.url_id,
48+
u.url
4549
</sql>
4650

4751
<sql id="fromClause">
@@ -50,6 +54,7 @@
5054
left join farms.farm_commodity_type_codes ctc using (commodity_type_code)
5155
left join farms.farm_fruit_veg_type_codes fvtc using (fruit_veg_type_code)
5256
left join farms.farm_multi_stage_commdty_codes mscc using (multi_stage_commdty_code)
57+
left join farms.farm_urls u using (url_id)
5358
</sql>
5459

5560
<select id="fetch" resultMap="InventoryItemDetailDtoMap">
@@ -80,6 +85,7 @@
8085
commodity_type_code,
8186
fruit_veg_type_code,
8287
multi_stage_commdty_code,
88+
url_id,
8389
revision_count,
8490
who_created,
8591
when_created,
@@ -112,6 +118,11 @@
112118
from farms.farm_multi_stage_commdty_codes mscc
113119
where mscc.multi_stage_commdty_code = #{dto.multiStageCommdtyCode, javaType=java.lang.String, jdbcType=VARCHAR, mode=IN}
114120
),
121+
(
122+
select u.url_id
123+
from farms.farm_urls u
124+
where u.url_id = #{dto.urlId, javaType=java.lang.Long, jdbcType=BIGINT, mode=IN}
125+
),
115126
1,
116127
#{userId, javaType=java.lang.String, jdbcType=VARCHAR, mode=IN},
117128
now(),
@@ -147,6 +158,11 @@
147158
from farms.farm_multi_stage_commdty_codes mscc
148159
where mscc.multi_stage_commdty_code = #{dto.multiStageCommdtyCode, javaType=java.lang.String, jdbcType=VARCHAR, mode=IN}
149160
),
161+
url_id = (
162+
select u.url_id
163+
from farms.farm_urls u
164+
where u.url_id = #{dto.urlId, javaType=java.lang.Long, jdbcType=BIGINT, mode=IN}
165+
),
150166
revision_count = revision_count + 1,
151167
who_updated = #{userId, javaType=java.lang.String, jdbcType=VARCHAR, mode=IN},
152168
when_updated = now()

farms-api/farms-persistence/src/test/java/ca/bc/gov/farms/persistence/v1/dao/InventoryItemDetailDaoTest.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ public void testInsert() {
4646
dto.setCommodityTypeCode(null);
4747
dto.setFruitVegTypeCode(null);
4848
dto.setMultiStageCommdtyCode(null);
49+
dto.setUrlId(1L);
4950

5051
InventoryItemDetailDto result = null;
5152
try {
@@ -70,6 +71,8 @@ public void testInsert() {
7071
assertThat(result.getFruitVegTypeDesc()).isNull();
7172
assertThat(result.getMultiStageCommdtyCode()).isNull();
7273
assertThat(result.getMultiStageCommdtyDesc()).isNull();
74+
assertThat(result.getUrlId()).isEqualTo(1);
75+
assertThat(result.getUrl()).isEqualTo("https://google.com");
7376
}
7477

7578
@Test
@@ -100,6 +103,8 @@ public void testFetchByInventoryItemCode() {
100103
assertThat(fetchedDto.getFruitVegTypeDesc()).isNull();
101104
assertThat(fetchedDto.getMultiStageCommdtyCode()).isNull();
102105
assertThat(fetchedDto.getMultiStageCommdtyDesc()).isNull();
106+
assertThat(fetchedDto.getUrlId()).isEqualTo(1);
107+
assertThat(fetchedDto.getUrl()).isEqualTo("https://google.com");
103108
}
104109

105110
@Test
@@ -123,6 +128,7 @@ public void testUpdate() {
123128
dto.setCommodityTypeCode(null);
124129
dto.setFruitVegTypeCode(null);
125130
dto.setMultiStageCommdtyCode(null);
131+
dto.setUrlId(2L);
126132

127133
InventoryItemDetailDto result = null;
128134
try {
@@ -146,6 +152,8 @@ public void testUpdate() {
146152
assertThat(result.getFruitVegTypeDesc()).isNull();
147153
assertThat(result.getMultiStageCommdtyCode()).isNull();
148154
assertThat(result.getMultiStageCommdtyDesc()).isNull();
155+
assertThat(result.getUrlId()).isEqualTo(2);
156+
assertThat(result.getUrl()).isEqualTo("https://microsoft.com");
149157
}
150158

151159
@Test

farms-api/farms-persistence/src/test/resources/farms/tables/farms.farm_inventory_item_details.sql

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ CREATE TABLE farms.farm_inventory_item_details (
99
commodity_type_code varchar(10),
1010
fruit_veg_type_code varchar(10),
1111
multi_stage_commdty_code varchar(10),
12+
url_id bigint,
1213
revision_count integer NOT NULL DEFAULT 1,
1314
who_created varchar(30) NOT NULL,
1415
when_created timestamp(0) NOT NULL DEFAULT statement_timestamp(),
@@ -31,12 +32,14 @@ COMMENT ON COLUMN farms.farm_inventory_item_details.when_created IS E'WHEN CREAT
3132
COMMENT ON COLUMN farms.farm_inventory_item_details.when_updated IS E'WHEN UPDATED indicates when the physical record was updated in the database.';
3233
COMMENT ON COLUMN farms.farm_inventory_item_details.who_created IS E'WHO CREATED indicates the user that created the physical record in the database.';
3334
COMMENT ON COLUMN farms.farm_inventory_item_details.who_updated IS E'WHO UPDATED indicates the user that updated the physical record in the database.';
35+
COMMENT ON COLUMN farms.farm_inventory_item_details.url_id IS E'URL ID is a foreign key to FARM_URLS.';
3436
CREATE INDEX farm_iid_elig_ind_i ON farms.farm_inventory_item_details (program_year, eligibility_ind);
3537
CREATE INDEX farm_iid_farm_ctc_fk_i ON farms.farm_inventory_item_details (commodity_type_code);
3638
CREATE INDEX farm_iid_farm_fvtc_fk_i ON farms.farm_inventory_item_details (fruit_veg_type_code);
3739
CREATE INDEX farm_iid_farm_ic_fk_i ON farms.farm_inventory_item_details (inventory_item_code);
3840
CREATE INDEX farm_iid_farm_mscc_fk_i ON farms.farm_inventory_item_details (multi_stage_commdty_code);
3941
CREATE INDEX farm_iid_line_item_i ON farms.farm_inventory_item_details (program_year, line_item);
42+
CREATE INDEX farm_iid_farm_url_fk_i ON farms.farm_inventory_item_details (url_id);
4043
ALTER TABLE farms.farm_inventory_item_details ADD CONSTRAINT farm_iid_pk PRIMARY KEY (inventory_item_detail_id);
4144
ALTER TABLE farms.farm_inventory_item_details ADD CONSTRAINT farm_iid_uk UNIQUE (program_year,inventory_item_code);
4245
ALTER TABLE farms.farm_inventory_item_details ADD CONSTRAINT farm_iid_elig_chk CHECK (eligibility_ind in ('N', 'Y'));

0 commit comments

Comments
 (0)