• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 #include "datashare_block_writer_impl.h"
16 #include "datashare_log.h"
17 #include "datashare_errno.h"
18 
19 namespace OHOS {
20 namespace DataShare {
DataShareBlockWriterImpl()21 DataShareBlockWriterImpl::DataShareBlockWriterImpl() : shareBlock_(nullptr)
22 {
23 }
24 
DataShareBlockWriterImpl(const std::string & name,size_t size)25 DataShareBlockWriterImpl::DataShareBlockWriterImpl(const std::string &name, size_t size)
26     : shareBlock_(nullptr)
27 {
28     AppDataFwk::SharedBlock::Create(name, size, shareBlock_);
29 }
30 
~DataShareBlockWriterImpl()31 DataShareBlockWriterImpl::~DataShareBlockWriterImpl()
32 {
33 }
34 
AllocRow()35 int DataShareBlockWriterImpl::AllocRow()
36 {
37     if (shareBlock_ == nullptr) {
38         LOG_ERROR("shareBlock_ is nullptr");
39         return E_ERROR;
40     }
41     return ConvertErrorCode(shareBlock_->AllocRow());
42 }
43 
Write(uint32_t column)44 int DataShareBlockWriterImpl::Write(uint32_t column)
45 {
46     uint32_t currentRowIndex = 0;
47     if (!GetCurrentRowIndex(currentRowIndex)) {
48         LOG_ERROR("Write null fail");
49         return E_ERROR;
50     }
51     return ConvertErrorCode(shareBlock_->PutNull(currentRowIndex, column));
52 }
53 
Write(uint32_t column,int64_t value)54 int DataShareBlockWriterImpl::Write(uint32_t column, int64_t value)
55 {
56     uint32_t currentRowIndex = 0;
57     if (!GetCurrentRowIndex(currentRowIndex)) {
58         LOG_ERROR("Write long fail");
59         return E_ERROR;
60     }
61     return ConvertErrorCode(shareBlock_->PutLong(currentRowIndex, column, value));
62 }
63 
Write(uint32_t column,double value)64 int DataShareBlockWriterImpl::Write(uint32_t column, double value)
65 {
66     uint32_t currentRowIndex = 0;
67     if (!GetCurrentRowIndex(currentRowIndex)) {
68         LOG_ERROR("Write double fail");
69         return E_ERROR;
70     }
71     return ConvertErrorCode(shareBlock_->PutDouble(currentRowIndex, column, value));
72 }
73 
Write(uint32_t column,const uint8_t * value,size_t size)74 int DataShareBlockWriterImpl::Write(uint32_t column, const uint8_t *value, size_t size)
75 {
76     uint32_t currentRowIndex = 0;
77     if (!GetCurrentRowIndex(currentRowIndex)) {
78         LOG_ERROR("Write blob fail");
79         return E_ERROR;
80     }
81     return ConvertErrorCode(shareBlock_->PutBlob(currentRowIndex, column, value, size));
82 }
83 
Write(uint32_t column,const char * value,size_t sizeIncludingNull)84 int DataShareBlockWriterImpl::Write(uint32_t column, const char *value, size_t sizeIncludingNull)
85 {
86     uint32_t currentRowIndex = 0;
87     if (!GetCurrentRowIndex(currentRowIndex)) {
88         LOG_ERROR("Write string fail");
89         return E_ERROR;
90     }
91     return ConvertErrorCode(shareBlock_->PutString(currentRowIndex, column, value, sizeIncludingNull));
92 }
93 
GetBlock() const94 AppDataFwk::SharedBlock *DataShareBlockWriterImpl::GetBlock() const
95 {
96     return shareBlock_;
97 }
98 
GetCurrentRowIndex(uint32_t & rowIndex)99 bool DataShareBlockWriterImpl::GetCurrentRowIndex(uint32_t &rowIndex)
100 {
101     if (shareBlock_ == nullptr) {
102         LOG_ERROR("shareBlock_ is nullptr");
103         return false;
104     }
105     uint32_t rowNum = shareBlock_->GetRowNum();
106     if (rowNum > 0) {
107         rowIndex = rowNum - 1;
108         return true;
109     }
110     return false;
111 }
112 } // namespace DataShare
113 } // namespace OHOS
114