Skip to content

Commit 45e133a

Browse files
authored
Merge pull request #8 from RADAR-CNS/output_avro
Output schema.json with output files
2 parents 4d8581e + c1809c8 commit 45e133a

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

src/main/java/org/radarcns/RestructureAvroRecords.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package org.radarcns;
1818

1919
import java.io.File;
20+
import java.io.FileWriter;
2021
import java.io.IOException;
2122
import java.text.SimpleDateFormat;
2223
import java.util.ArrayList;
@@ -49,6 +50,7 @@ public class RestructureAvroRecords {
4950
private final String outputFileExtension;
5051
private static final String OFFSETS_FILE_NAME = "offsets.csv";
5152
private static final String BINS_FILE_NAME = "bins.csv";
53+
private static final String SCHEMA_OUTPUT_FILE_NAME = "schema.json";
5254
private static final SimpleDateFormat FILE_DATE_FORMAT = new SimpleDateFormat("yyyyMMdd_HH");
5355

5456
static {
@@ -252,14 +254,21 @@ private void writeRecord(GenericRecord record, String topicName, FileCacheStore
252254
String outputFileName = createFilename(valueField, timeField);
253255

254256
// Clean user id and create final output pathname
255-
String userId = keyField.get("userId").toString().replaceAll("\\W+", "");
257+
String userId = keyField.get("userId").toString().replaceAll("[^a-zA-Z0-9_-]+", "");
256258
File userDir = new File(this.outputPath, userId);
257259
File userTopicDir = new File(userDir, topicName);
258260
File outputFile = new File(userTopicDir, outputFileName);
259261

260262
// Write data
261263
cache.writeRecord(outputFile, record);
262264

265+
File schemaFile = new File(userTopicDir, SCHEMA_OUTPUT_FILE_NAME);
266+
if (!schemaFile.exists()) {
267+
try (FileWriter writer = new FileWriter(schemaFile, false)) {
268+
writer.write(record.getSchema().toString(true));
269+
}
270+
}
271+
263272
// Count data (binned and total)
264273
bins.add(topicName, keyField.get("sourceId").toString(), valueField, timeField);
265274
processedRecordsCount++;

0 commit comments

Comments
 (0)