added activation time with + and * stuff

This commit is contained in:
Radu Ioan Fericean
2013-07-30 23:06:31 +03:00
parent 11e7eed149
commit 1d3ce69c5d
9 changed files with 51 additions and 43 deletions

View File

@@ -27,7 +27,6 @@ import (
"os"
"strconv"
"strings"
"time"
)
type CSVReader struct {
@@ -306,7 +305,7 @@ func (csvr *CSVReader) LoadRatingProfiles() (err error) {
}
for record, err := csvReader.Read(); err == nil; record, err = csvReader.Read() {
tenant, tor, direction, subject, fallbacksubject := record[0], record[1], record[2], record[3], record[6]
at, err := time.Parse(time.RFC3339, record[4])
at, err := utils.ParseDate(record[4])
if err != nil {
return errors.New(fmt.Sprintf("Cannot parse activation time from %v", record[4]))
}

View File

@@ -23,7 +23,6 @@ import (
"fmt"
"github.com/cgrates/cgrates/utils"
"log"
"time"
)
type DbReader struct {
@@ -184,7 +183,10 @@ func (dbr *DbReader) LoadRatingProfiles() error {
return err
}
for _, rp := range rpfs {
at := time.Unix(rp.ActivationTime, 0)
at, err := utils.ParseDate(rp.ActivationTime)
if err != nil {
return errors.New(fmt.Sprintf("Cannot parse activation time from %v", rp.ActivationTime))
}
for _, d := range dbr.destinations {
ap, exists := dbr.activationPeriods[rp.DestRatesTimingTag]
if !exists {
@@ -211,7 +213,10 @@ func (dbr *DbReader) LoadRatingProfileByTag(tag string) error {
}
for _, ratingProfile := range rpm {
resultRatingProfile.FallbackKey = ratingProfile.FallbackKey // it will be the last fallback key
at := time.Unix(ratingProfile.ActivationTime, 0)
at, err := utils.ParseDate(ratingProfile.ActivationTime)
if err != nil {
return errors.New(fmt.Sprintf("Cannot parse activation time from %v", ratingProfile.ActivationTime))
}
drtm, err := dbr.storDb.GetTpDestinationRateTimings(dbr.tpid, ratingProfile.DestRatesTimingTag)
if err != nil {
return err

View File

@@ -29,11 +29,10 @@ const (
)
type RatingProfile struct {
Id string
FallbackKey string // FallbackKey is used as complete combination of Tenant:TOR:Direction:Subject
DestinationMap map[string][]*ActivationPeriod
Tag, Tenant, TOR, Direction, Subject, DestRatesTimingTag, RatesFallbackSubject string // used only for loading
ActivationTime int64
Id string
FallbackKey string // FallbackKey is used as complete combination of Tenant:TOR:Direction:Subject
DestinationMap map[string][]*ActivationPeriod
Tag, Tenant, TOR, Direction, Subject, DestRatesTimingTag, RatesFallbackSubject, ActivationTime string // used only for loading
}
// Adds an activation period that applyes to current rating profile if not already present.

View File

@@ -478,8 +478,7 @@ func (self *SQLStorage) GetTPRatingProfile(tpid, rpId string) (*utils.TPRatingPr
i := 0
for rows.Next() {
i++ //Keep here a reference so we know we got at least one result
var tenant, tor, direction, subject, drtId, fallbackSubj string
var aTime int64
var tenant, tor, direction, subject, drtId, fallbackSubj, aTime string
err = rows.Scan(&tenant, &tor, &direction, &subject, &aTime, &drtId, &fallbackSubj)
if err != nil {
return nil, err
@@ -1076,8 +1075,7 @@ func (self *SQLStorage) GetTpRatingProfiles(tpid, tag string) (map[string]*Ratin
}
defer rows.Close()
for rows.Next() {
var tag, tenant, tor, direction, subject, fallback_subject, destrates_timing_tag string
var activation_time int64
var tag, tenant, tor, direction, subject, fallback_subject, destrates_timing_tag, activation_time string
if err := rows.Scan(&tag, &tenant, &tor, &direction, &subject, &activation_time, &destrates_timing_tag, &fallback_subject); err != nil {
return nil, err
}

View File

@@ -239,11 +239,12 @@ func (self *TPCSVImporter) importRatingProfiles(fn string) error {
continue
}
tenant, tor, direction, subject, destRatesTimingTag, fallbacksubject := record[0], record[1], record[2], record[3], record[5], record[6]
at, err := time.Parse(time.RFC3339, record[4])
_, err = utils.ParseDate(record[4])
if err != nil {
if self.Verbose {
log.Printf("Ignoring line %d, warning: <%s> ", lineNr, err.Error())
}
continue
}
rpTag := "TPCSV" //Autogenerate rating profile id
if self.ImportId != "" {
@@ -254,7 +255,7 @@ func (self *TPCSVImporter) importRatingProfiles(fn string) error {
TOR: tor,
Direction: direction,
Subject: subject,
ActivationTime: at.Unix(),
ActivationTime: record[4],
DestRatesTimingTag: destRatesTimingTag,
RatesFallbackSubject: fallbacksubject,
}
@@ -303,7 +304,7 @@ func (self *TPCSVImporter) importActions(fn string) error {
continue
}
}
rateValue, _ := strconv.ParseFloat(record[8], 64) // Ignore errors since empty string is error, we can find out based on rateType if defined
rateValue, _ := strconv.ParseFloat(record[8], 64) // Ignore errors since empty string is error, we can find out based on rateType if defined
minutesWeight, _ := strconv.ParseFloat(record[9], 64)
weight, err := strconv.ParseFloat(record[10], 64)
if err != nil {
@@ -313,16 +314,16 @@ func (self *TPCSVImporter) importActions(fn string) error {
continue
}
act := &Action{
ActionType: actionType,
BalanceId: balanceType,
Direction: direction,
ActionType: actionType,
BalanceId: balanceType,
Direction: direction,
Units: units,
ExpirationDate: expiryTime,
DestinationTag: destTag,
RateType: rateType,
RateValue: rateValue,
MinutesWeight: minutesWeight,
Weight: weight,
RateType: rateType,
RateValue: rateValue,
MinutesWeight: minutesWeight,
Weight: weight,
}
if err := self.StorDb.SetTPActions(self.TPid, map[string][]*Action{actId: []*Action{act}}); err != nil {
if self.Verbose {
@@ -359,11 +360,11 @@ func (self *TPCSVImporter) importActionTimings(fn string) error {
}
continue
}
at := &ActionTiming{
Tag: tag,
at := &ActionTiming{
Tag: tag,
ActionsTag: actionsTag,
TimingsTag: timingTag,
Weight: weight,
TimingsTag: timingTag,
Weight: weight,
}
if err := self.StorDb.SetTPActionTimings(self.TPid, map[string][]*ActionTiming{tag: []*ActionTiming{at}}); err != nil {
if self.Verbose {
@@ -407,14 +408,14 @@ func (self *TPCSVImporter) importActionTriggers(fn string) error {
}
continue
}
at := &ActionTrigger{
BalanceId: balanceType,
Direction: direction,
ThresholdType: thresholdType,
at := &ActionTrigger{
BalanceId: balanceType,
Direction: direction,
ThresholdType: thresholdType,
ThresholdValue: threshold,
DestinationId: destinationTag,
Weight: weight,
ActionsId: actionsTag,
DestinationId: destinationTag,
Weight: weight,
ActionsId: actionsTag,
}
if err := self.StorDb.SetTPActionTriggers(self.TPid, map[string][]*ActionTrigger{tag: []*ActionTrigger{at}}); err != nil {
if self.Verbose {