diff --git a/src/Entity.js b/src/Entity.js index 8ebdae9e7b54ec13b0ad5583d4645a1208663b2b..cd62dc1e47d2af77a526b71e83120f7937b6cfd4 100644 --- a/src/Entity.js +++ b/src/Entity.js @@ -39,7 +39,7 @@ function _getRoleString(role) { case roles.ENTITY_ROLE_FILE: return "FILE"; default: - throw `Unknown role ${role}.`; + throw new Error(`Unknown role ${role}.`); } } @@ -53,6 +53,14 @@ export class Entity { return this.wrappedEntity.getDescription(); } + getFilePath() { + if (!this.isFile()) { + throw new Error(`Only FILE entities can have a file path.`); + } + const fileDescriptor = this.wrappedEntity.getFileDescriptor(); + return fileDescriptor.getPath(); + } + getId() { return this.wrappedEntity.getId(); } @@ -90,4 +98,8 @@ export class Entity { isRecord() { return this.wrappedEntity.getRole() === api.v1.EntityRole.ENTITY_ROLE_RECORD; } + + isFile() { + return this.wrappedEntity.getRole() === api.v1.EntityRole.ENTITY_ROLE_FILE; + } } diff --git a/src/Property.js b/src/Property.js index 2fa7a5c232bc8bbbbb4fd6bd7cae1990f3199448..e22cf36481b080ce019c0634278185b22f701c0d 100644 --- a/src/Property.js +++ b/src/Property.js @@ -37,7 +37,7 @@ function _getScalarValue(value) { case valueCases.SPECIAL_VALUE: return value.getSpecialValue(); default: - throw `Unkown value type ${value.getScalarValueCase()}.`; + throw new Error(`Unkown value type ${value.getScalarValueCase()}.`); } } @@ -78,12 +78,17 @@ export class Property { case valueCases.LIST_VALUES: return _getListValue(wrappedValue.getListValues().getValuesList()); default: - throw `Unknown value type ${wrappedValue.getValueCase()}.`; + throw new Error(`Unknown value type ${wrappedValue.getValueCase()}.`); } } + isList() { + const dtypeCase = this.wrappedProperty.getDataType().getDataTypeCase(); + return dtypeCase === api.v1.DataType.DataTypeCase.LIST_DATA_TYPE; + } + isReference() { - const wrappedDataType = this.wrappedProperty.getDataType() + const wrappedDataType = this.wrappedProperty.getDataType(); const dtypeCase = wrappedDataType.getDataTypeCase(); return ( (dtypeCase === api.v1.DataType.DataTypeCase.REFERENCE_DATA_TYPE) || diff --git a/src/TransactionService.js b/src/TransactionService.js index cfe1328990d3327f6fb1acb7d9105290817990a3..53e5cd5688e154cdf882557d0d654aa93c1f8c36 100644 --- a/src/TransactionService.js +++ b/src/TransactionService.js @@ -27,13 +27,19 @@ export class TransactionService { this.uri = uri || "/api"; } - _PrepareTransaction(retrieveRequest) { + _PrepareTransaction(retrieveRequests) { + if (!(Array.isArray(retrieveRequests))) { + retrieveRequests = [retrieveRequests]; + } const client = new api.v1.EntityTransactionServiceClient(this.uri, null, null); - var transactionRequest = new api.v1.TransactionRequest(); - transactionRequest.setRetrieveRequest(retrieveRequest); var request = new api.v1.MultiTransactionRequest(); - request.addRequests(transactionRequest); + var transactionRequest; + for (let retrieveRequest of retrieveRequests) { + transactionRequest = new api.v1.TransactionRequest(); + transactionRequest.setRetrieveRequest(retrieveRequest); + request.addRequests(transactionRequest); + } const headers = {}; return (res_cb, err_cb) => { @@ -66,9 +72,12 @@ export class TransactionService { return query_request; } - async retrieve(id) { - const retrieveRequest = this._CreateRetrieveRequest(id); - return new Promise(this._PrepareTransaction(retrieveRequest)); + async retrieve(ids) { + if (!(Array.isArray(ids))) { + ids = [ids] + } + const retrieveRequests = ids.map(id => this._CreateRetrieveRequest(id)); + return new Promise(this._PrepareTransaction(retrieveRequests)); } async executeQuery(query) {