| 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); |
nothing calls this directly
no outgoing calls
no test coverage detected