MCPcopy Create free account
hub / github.com/apache/orc / Factory

Class Factory

java/core/src/java/org/apache/orc/impl/writer/TreeWriter.java:114–196  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

112 void getCurrentStatistics(ColumnStatistics[] output);
113
114 class Factory {
115 /**
116 * Create a new tree writer for the given types and insert encryption if
117 * required.
118 * @param schema the type to build a writer for
119 * @param encryption the encryption status
120 * @param streamFactory the writer context
121 * @return a new tree writer
122 */
123 public static TreeWriter create(TypeDescription schema,
124 WriterEncryptionVariant encryption,
125 WriterContext streamFactory) throws IOException {
126 if (encryption == null) {
127 // If we are the root of an encryption variant, create a special writer.
128 encryption = streamFactory.getEncryption(schema.getId());
129 if (encryption != null) {
130 return new EncryptionTreeWriter(schema, encryption, streamFactory);
131 }
132 }
133 return createSubtree(schema, encryption, streamFactory);
134 }
135
136 /**
137 * Create a subtree without inserting encryption nodes
138 * @param schema the schema to create
139 * @param encryption the encryption variant
140 * @param streamFactory the writer context
141 * @return a new tree writer
142 */
143 static TreeWriter createSubtree(TypeDescription schema,
144 WriterEncryptionVariant encryption,
145 WriterContext streamFactory) throws IOException {
146 OrcFile.Version version = streamFactory.getVersion();
147 switch (schema.getCategory()) {
148 case BOOLEAN:
149 return new BooleanTreeWriter(schema, encryption, streamFactory);
150 case BYTE:
151 return new ByteTreeWriter(schema, encryption, streamFactory);
152 case SHORT:
153 case INT:
154 case LONG:
155 return new IntegerTreeWriter(schema, encryption, streamFactory);
156 case FLOAT:
157 return new FloatTreeWriter(schema, encryption, streamFactory);
158 case DOUBLE:
159 return new DoubleTreeWriter(schema, encryption, streamFactory);
160 case STRING:
161 return new StringTreeWriter(schema, encryption, streamFactory);
162 case CHAR:
163 return new CharTreeWriter(schema, encryption, streamFactory);
164 case VARCHAR:
165 return new VarcharTreeWriter(schema, encryption, streamFactory);
166 case BINARY:
167 return new BinaryTreeWriter(schema, encryption, streamFactory);
168 case TIMESTAMP:
169 return new TimestampTreeWriter(schema, encryption, streamFactory, false);
170 case TIMESTAMP_INSTANT:
171 return new TimestampTreeWriter(schema, encryption, streamFactory, true);

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected