1 /*
2 * Copyright 2009-2017 Alibaba Cloud All rights reserved.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17 #include <alibabacloud/oss/model/OutputFormat.h>
18 #include <sstream>
19 #include "utils/Utils.h"
20
21 using namespace AlibabaCloud::OSS;
22
OutputFormat()23 OutputFormat::OutputFormat():
24 keepAllColumns_(false), outputRawData_(false),
25 enablePayloadCrc_(true), outputHeader_(false)
26 {}
27
setEnablePayloadCrc(bool enablePayloadCrc)28 void OutputFormat::setEnablePayloadCrc(bool enablePayloadCrc)
29 {
30 enablePayloadCrc_ = enablePayloadCrc;
31 }
32
setKeepAllColumns(bool keepAllColumns)33 void OutputFormat::setKeepAllColumns(bool keepAllColumns)
34 {
35 keepAllColumns_ = keepAllColumns;
36 }
37
setOutputHeader(bool outputHeader)38 void OutputFormat::setOutputHeader(bool outputHeader)
39 {
40 outputHeader_ = outputHeader;
41 }
42
setOutputRawData(bool outputRawData)43 void OutputFormat::setOutputRawData(bool outputRawData)
44 {
45 outputRawData_ = outputRawData;
46 }
47
OutputRawData() const48 bool OutputFormat::OutputRawData() const
49 {
50 return outputRawData_;
51 }
52
KeepAllColumns() const53 bool OutputFormat::KeepAllColumns() const
54 {
55 return keepAllColumns_;
56 }
57
EnablePayloadCrc() const58 bool OutputFormat::EnablePayloadCrc() const
59 {
60 return enablePayloadCrc_;
61 }
62
OutputHeader() const63 bool OutputFormat::OutputHeader() const
64 {
65 return outputHeader_;
66 }
67
validate() const68 int OutputFormat::validate() const
69 {
70 return 0;
71 }
72
73 ////////////////////////////////////////////////////////////////////////////////////////
74
CSVOutputFormat()75 CSVOutputFormat::CSVOutputFormat()
76 : CSVOutputFormat("\n", ",")
77 {}
78
CSVOutputFormat(const std::string & recordDelimiter,const std::string & fieldDelimiter)79 CSVOutputFormat::CSVOutputFormat(
80 const std::string& recordDelimiter,
81 const std::string& fieldDelimiter)
82 : OutputFormat(), recordDelimiter_(recordDelimiter), fieldDelimiter_(fieldDelimiter)
83 {}
84
setRecordDelimiter(const std::string & recordDelimiter)85 void CSVOutputFormat::setRecordDelimiter(const std::string& recordDelimiter)
86 {
87 recordDelimiter_ = recordDelimiter;
88 }
89
setFieldDelimiter(const std::string & fieldDelimiter)90 void CSVOutputFormat::setFieldDelimiter(const std::string& fieldDelimiter)
91 {
92 fieldDelimiter_ = fieldDelimiter;
93 }
94
FieldDelimiter() const95 const std::string& CSVOutputFormat::FieldDelimiter() const
96 {
97 return fieldDelimiter_;
98 }
99
RecordDelimiter() const100 const std::string& CSVOutputFormat::RecordDelimiter() const
101 {
102 return recordDelimiter_;
103 }
104
Type() const105 std::string CSVOutputFormat::Type() const
106 {
107 return "csv";
108 }
109
toXML() const110 std::string CSVOutputFormat::toXML() const
111 {
112 std::stringstream ss;
113 ss << "<OutputSerialization>" << std::endl;
114 ss << "<CSV>" << std::endl;
115 ss << "<RecordDelimiter>" << Base64Encode(recordDelimiter_) << "</RecordDelimiter>" << std::endl;
116 ss << "<FieldDelimiter>" << Base64Encode(fieldDelimiter_.empty() ? "" : std::string(1, fieldDelimiter_.front())) << "</FieldDelimiter>" << std::endl;
117 ss << "</CSV>" << std::endl;
118 ss << "<KeepAllColumns>" << (OutputFormat::KeepAllColumns() ? "true" : "false") << "</KeepAllColumns>" << std::endl;
119 ss << "<OutputRawData>" << (OutputFormat::OutputRawData() ? "true" : "false") << "</OutputRawData>" << std::endl;
120 ss << "<OutputHeader>" << (OutputFormat::OutputHeader() ? "true" : "false") << "</OutputHeader>" << std::endl;
121 ss << "<EnablePayloadCrc>" << (OutputFormat::EnablePayloadCrc() ? "true" : "false") << "</EnablePayloadCrc>" << std::endl;
122 ss << "</OutputSerialization>" << std::endl;
123 return ss.str();
124 }
125
126 ////////////////////////////////////////////////////////////////////////////////////////
127
JSONOutputFormat()128 JSONOutputFormat::JSONOutputFormat()
129 :JSONOutputFormat("\n")
130 {}
131
JSONOutputFormat(const std::string & recordDelimiter)132 JSONOutputFormat::JSONOutputFormat(const std::string& recordDelimiter)
133 :OutputFormat(), recordDelimiter_(recordDelimiter)
134 {}
135
setRecordDelimiter(const std::string & recordDelimiter)136 void JSONOutputFormat::setRecordDelimiter(const std::string& recordDelimiter)
137 {
138 recordDelimiter_ = recordDelimiter;
139 }
140
RecordDelimiter() const141 const std::string& JSONOutputFormat::RecordDelimiter() const
142 {
143 return recordDelimiter_;
144 }
145
Type() const146 std::string JSONOutputFormat::Type() const
147 {
148 return "json";
149 }
150
toXML() const151 std::string JSONOutputFormat::toXML() const
152 {
153 std::stringstream ss;
154 ss << "<OutputSerialization>" << std::endl;
155 ss << "<JSON>" << std::endl;
156 ss << "<RecordDelimiter>" << Base64Encode(recordDelimiter_) << "</RecordDelimiter>" << std::endl;
157 ss << "</JSON>" << std::endl;
158 ss << "<KeepAllColumns>" << (OutputFormat::KeepAllColumns() ? "true" : "false") << "</KeepAllColumns>" << std::endl;
159 ss << "<OutputRawData>" << (OutputFormat::OutputRawData() ? "true" : "false") << "</OutputRawData>" << std::endl;
160 ss << "<OutputHeader>" << (OutputFormat::OutputHeader() ? "true" : "false") << "</OutputHeader>" << std::endl;
161 ss << "<EnablePayloadCrc>" << (OutputFormat::EnablePayloadCrc() ? "true" : "false") << "</EnablePayloadCrc>" << std::endl;
162 ss << "</OutputSerialization>" << std::endl;
163 return ss.str();
164 }
165