From 8a0011eda2b8c2bd286c5443c4362f294b4fd080 Mon Sep 17 00:00:00 2001 From: DanB Date: Sun, 19 Oct 2014 20:40:55 +0200 Subject: [PATCH] More methods on TPExporter --- engine/tpexporter.go | 118 ++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 112 insertions(+), 6 deletions(-) diff --git a/engine/tpexporter.go b/engine/tpexporter.go index bfc4f5b29..0b5282f4a 100644 --- a/engine/tpexporter.go +++ b/engine/tpexporter.go @@ -30,7 +30,11 @@ import ( "github.com/cgrates/cgrates/utils" ) -var TPExportFormats = []string{utils.DRYRUN, utils.CSV} +var ( + TPExportFormats = []string{utils.DRYRUN, utils.CSV} + exportedFiles = []string{utils.TIMINGS_CSV, utils.DESTINATIONS_CSV, utils.RATES_CSV, utils.DESTINATION_RATES_CSV, utils.RATING_PLANS_CSV, utils.RATING_PROFILES_CSV, + utils.SHARED_GROUPS_CSV, utils.ACTIONS_CSV, utils.ACTION_PLANS_CSV, utils.ACTION_TRIGGERS_CSV, utils.ACCOUNT_ACTIONS_CSV, utils.DERIVED_CHARGERS_CSV, utils.CDR_STATS_CSV} +) func NewTPExporter(storDb LoadStorage, tpID, dir, fileFormat, sep string, dryRunBuff *bytes.Buffer) (*TPExporter, error) { if !utils.IsSliceMember(TPExportFormats, fileFormat) { @@ -88,6 +92,9 @@ func (self *TPExporter) Run() error { // Some export did not end up well, remove the files here func (self *TPExporter) removeFiles() error { + for _, fileName := range exportedFiles { + os.Remove(path.Join(self.dirPath, fileName)) + } return nil } @@ -117,15 +124,30 @@ func (self *TPExporter) writeOut(fileName string, tpData []utils.ExportedData) e } func (self *TPExporter) exportTimings() error { + //fileName := exportedFiles[0] // Define it out of group so we make sure it is cleaned up by removeFiles return nil } func (self *TPExporter) exportDestinations() error { + fileName := exportedFiles[1] + storData, err := self.storDb.GetTpDestinations(self.tpID, "") + if err != nil { + return nil + } + exportedData := make([]utils.ExportedData, len(storData)) + idx := 0 + for _, dst := range storData { + exportedData[idx] = &utils.TPDestination{TPid: self.tpID, DestinationId: dst.Id, Prefixes: dst.Prefixes} + idx += 1 + } + if err := self.writeOut(fileName, exportedData); err != nil { + return err + } return nil } func (self *TPExporter) exportRates() error { - fileName := utils.RATES_CSV + fileName := exportedFiles[2] storData, err := self.storDb.GetTpRates(self.tpID, "") if err != nil { return nil @@ -143,7 +165,7 @@ func (self *TPExporter) exportRates() error { } func (self *TPExporter) exportDestinationRates() error { - fileName := utils.DESTINATION_RATES_CSV + fileName := exportedFiles[3] storData, err := self.storDb.GetTpDestinationRates(self.tpID, "", nil) if err != nil { return nil @@ -161,11 +183,25 @@ func (self *TPExporter) exportDestinationRates() error { } func (self *TPExporter) exportRatingPlans() error { + fileName := exportedFiles[4] + storData, err := self.storDb.GetTpRatingPlans(self.tpID, "", nil) + if err != nil { + return nil + } + exportedData := make([]utils.ExportedData, len(storData)) + idx := 0 + for rpId, rpBinding := range storData { + exportedData[idx] = &utils.TPRatingPlan{TPid: self.tpID, RatingPlanId: rpId, RatingPlanBindings: rpBinding} + idx += 1 + } + if err := self.writeOut(fileName, exportedData); err != nil { + return err + } return nil } func (self *TPExporter) exportRatingProfiles() error { - fileName := utils.RATING_PROFILES_CSV + fileName := exportedFiles[5] storData, err := self.storDb.GetTpRatingProfiles(&utils.TPRatingProfile{TPid: self.tpID}) if err != nil { return nil @@ -183,23 +219,79 @@ func (self *TPExporter) exportRatingProfiles() error { } func (self *TPExporter) exportSharedGroups() error { + fileName := exportedFiles[6] + storData, err := self.storDb.GetTpSharedGroups(self.tpID, "") + if err != nil { + return nil + } + exportedData := make([]utils.ExportedData, len(storData)) + idx := 0 + for sgId, sg := range storData { + exportedData[idx] = &utils.TPSharedGroups{TPid: self.tpID, SharedGroupsId: sgId, SharedGroups: sg} + idx += 1 + } + if err := self.writeOut(fileName, exportedData); err != nil { + return err + } return nil } func (self *TPExporter) exportActions() error { + fileName := exportedFiles[7] + storData, err := self.storDb.GetTpActions(self.tpID, "") + if err != nil { + return nil + } + exportedData := make([]utils.ExportedData, len(storData)) + idx := 0 + for actsId, acts := range storData { + exportedData[idx] = &utils.TPActions{TPid: self.tpID, ActionsId: actsId, Actions: acts} + idx += 1 + } + if err := self.writeOut(fileName, exportedData); err != nil { + return err + } return nil } func (self *TPExporter) exportActionPlans() error { + fileName := exportedFiles[8] + storData, err := self.storDb.GetTPActionTimings(self.tpID, "") + if err != nil { + return nil + } + exportedData := make([]utils.ExportedData, len(storData)) + idx := 0 + for apId, ats := range storData { + exportedData[idx] = &utils.TPActionPlan{TPid: self.tpID, Id: apId, ActionPlan: ats} + idx += 1 + } + if err := self.writeOut(fileName, exportedData); err != nil { + return err + } return nil } func (self *TPExporter) exportActionTriggers() error { + fileName := exportedFiles[9] + storData, err := self.storDb.GetTpActionTriggers(self.tpID, "") + if err != nil { + return nil + } + exportedData := make([]utils.ExportedData, len(storData)) + idx := 0 + for atId, ats := range storData { + exportedData[idx] = &utils.TPActionTriggers{TPid: self.tpID, ActionTriggersId: atId, ActionTriggers: ats} + idx += 1 + } + if err := self.writeOut(fileName, exportedData); err != nil { + return err + } return nil } func (self *TPExporter) exportAccountActions() error { - fileName := utils.ACCOUNT_ACTIONS_CSV + fileName := exportedFiles[10] storData, err := self.storDb.GetTpAccountActions(&utils.TPAccountActions{TPid: self.tpID}) if err != nil { return nil @@ -217,7 +309,7 @@ func (self *TPExporter) exportAccountActions() error { } func (self *TPExporter) exportDerivedChargers() error { - fileName := utils.DERIVED_CHARGERS_CSV + fileName := exportedFiles[11] storData, err := self.storDb.GetTpDerivedChargers(&utils.TPDerivedChargers{TPid: self.tpID}) if err != nil { return nil @@ -235,5 +327,19 @@ func (self *TPExporter) exportDerivedChargers() error { } func (self *TPExporter) exportCdrStats() error { + fileName := exportedFiles[12] + storData, err := self.storDb.GetTpCdrStats(self.tpID, "") + if err != nil { + return nil + } + exportedData := make([]utils.ExportedData, len(storData)) + idx := 0 + for cdrstId, cdrsts := range storData { + exportedData[idx] = &utils.TPCdrStats{TPid: self.tpID, CdrStatsId: cdrstId, CdrStats: cdrsts} + idx += 1 + } + if err := self.writeOut(fileName, exportedData); err != nil { + return err + } return nil }