Skip to content

Commit e92b025

Browse files
committed
Add more properties
1 parent 84bd095 commit e92b025

3 files changed

Lines changed: 74 additions & 9 deletions

File tree

app/controllers/csv.js

Lines changed: 72 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,13 @@ function readCsvFile(path) {
3939
});
4040
}
4141

42-
42+
function tryParse(value) {
43+
try {
44+
return JSON.parse(value);
45+
} catch (e) {
46+
return value;
47+
}
48+
}
4349

4450
function createEntitiesFromRows(rows) {
4551
const allEntities = [];
@@ -55,14 +61,22 @@ function createEntitiesFromRows(rows) {
5561
const value = row[key];
5662
if (value !== '') {
5763
switch (key) {
64+
case 'alternateName':
5865
case 'birthdate':
5966
case 'comment':
67+
case 'controlledProperty':
68+
case 'description':
69+
case 'deviceState':
6070
case 'fedWith':
6171
case 'givenName':
6272
case 'legalId':
6373
case 'name':
6474
case 'species':
65-
entity[key] = { value, type: 'Property' };
75+
case 'soilTextureType':
76+
case 'status':
77+
case 'supportedProtocol':
78+
case 'agroVocConcept':
79+
entity[key] = { value: tryParse(value), type: 'Property' };
6680
break;
6781

6882
case 'temperature':
@@ -76,6 +90,9 @@ function createEntitiesFromRows(rows) {
7690
case 'heartRate':
7791
entity[key] = { value: Number(value), type: 'Property', unitCode: '5K', observedAt: timestamp };
7892
break;
93+
case 'humidity':
94+
entity[key] = { value: Number(value), type: 'Property', unitCode: 'P1', observedAt: timestamp };
95+
break;
7996
case 'weight':
8097
entity[key] = {
8198
value: Number(value),
@@ -84,6 +101,13 @@ function createEntitiesFromRows(rows) {
84101
observedAt: timestamp
85102
};
86103
break;
104+
case 'batteryLevel':
105+
entity[key] = {
106+
value: Number(value),
107+
type: 'Property',
108+
unitCode: 'C62'
109+
};
110+
break;
87111

88112
case 'jobTitle_name':
89113
entity.jobTitle = {
@@ -125,32 +149,73 @@ function createEntitiesFromRows(rows) {
125149
case 'phenologicalCondition':
126150
case 'reproductiveCondition':
127151
case 'sex':
128-
entity[key] = { vocab: value, type: 'VocabProperty' };
152+
entity[key] = { vocab: tryParse(value), type: 'VocabProperty' };
129153
break;
130154
case 'calvedBy':
155+
case 'controlledAsset':
156+
case 'deviceModel':
131157
case 'cropType':
132158
case 'owns':
133159
case 'owner':
134160
case 'ownedBy':
135161
case 'siredBy':
136-
entity[key] = { object: value, type: 'Relationship' };
162+
case 'hasAgriSoil':
163+
case 'hasAgriCrop':
164+
case 'hasDevices':
165+
case 'hasAgriPest':
166+
case 'hasAgriParcel':
167+
case 'hasBuilding':
168+
entity[key] = { object: tryParse(value), type: 'Relationship' };
137169
break;
138170
case 'locatedAt':
139171
case 'observation':
140172
case 'prediction':
141-
entity[key] = { object: value, type: 'Relationship', observedAt: timestamp };
173+
entity[key] = { object: tryParse(value), type: 'Relationship', observedAt: timestamp };
142174
break;
143175
case 'id':
144176
case 'type':
177+
case 'lat':
178+
case 'lng':
179+
case 'addressLocality':
180+
case 'addressRegion':
181+
case 'postalCode':
182+
case 'providedBy':
145183
break;
146184
default:
147-
//debug('unknown : ' + key);
185+
if (!key.includes('_')) {
186+
debug('unknown : ' + key);
187+
}
148188
break;
149189
}
150190
}
151-
152191
});
153192

193+
switch (entity.type) {
194+
case 'Animal':
195+
if (row.providedBy) {
196+
if (entity.heartRate) {
197+
entity.heartRate.providedBy = {
198+
type: 'Relationship',
199+
object: row.providedBy
200+
};
201+
}
202+
if (entity.location) {
203+
entity.location.providedBy = {
204+
type: 'Relationship',
205+
object: row.providedBy
206+
};
207+
}
208+
}
209+
break;
210+
case 'AgriParcel':
211+
if (row.providedBy) {
212+
entity.humidity.providedBy = {
213+
type: 'Relationship',
214+
object: row.providedBy
215+
};
216+
}
217+
}
218+
154219
allEntities.push(entity);
155220
});
156221
return allEntities;

app/lib/batchUpdate.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
const CONTEXT_BROKER_URL = process.env.CONTEXT_BROKER || 'http://localhost:1026/ngsi-ld/v1';
2-
const LINKED_DATA = process.env.IOTA_JSON_LD_CONTEXT || 'http://context/ngsi-context.jsonld';
2+
const LINKED_DATA = process.env.IOTA_JSON_LD_CONTEXT || 'http://context/ngsi-context.jsonld';
33
const debug = require('debug')('tutorial:batchUpdate');
44

55
async function parse(response) {

app/lib/upload.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ const path = require('path');
33
const debug = require('debug')('tutorial:upload');
44

55
const csvFilter = (req, file, callback) => {
6-
debug(file)
6+
debug(file);
77
callback(null, true);
88
};
99

0 commit comments

Comments
 (0)