src/output/db/nuforc/NuforcRecordFormatter.ts

Summary

Maintainability
B
5 hrs
Test Coverage
import {Util} from "../../../Util"
import {NuforcInputRecord} from "../../../input"
import {NuforcOutputRecord} from "./NuforcOutputRecord"
import {RecordFormatter} from "../RecordFormatter"

/**
 * Formats input records as output records.
 */
export class NuforcRecordFormatter implements RecordFormatter {

  constructor() {
  }

  formatProperties(record: NuforcInputRecord): NuforcOutputRecord {
    let expectedKeysOrder = ["source", "occurred", "entered", "reported", "posted", "location", "shape", "duration", "desc"]
    const sortedRecord: NuforcOutputRecord = <NuforcOutputRecord>Util.sortProps(record, (prop1, prop2) => {
      let index1 = expectedKeysOrder.indexOf(prop1)
      if (index1 < 0) index1 = 1000
      let index2 = expectedKeysOrder.indexOf(prop2)
      if (index2 < 0) index2 = 1000
      return index1 < index2 ? -1 : index1 > index2 ? 1 : 0
    })
    return sortedRecord;
  }

  formatData(rec: NuforcInputRecord): NuforcOutputRecord {
    const record: NuforcOutputRecord = <NuforcOutputRecord>Util.copy(rec);
    return record;
  }
}