in wstl1/mapping_engine/transform/transform.go [138:221]
func NewDefaultTransformer(ctx context.Context, config *dhpb.DataHarmonizationConfig, tconfig TransformationConfig, setters ...Option) (*DefaultTransformer, error) {
t := &DefaultTransformer{
registry: types.NewRegistry(),
dataHarmonizationConfig: config,
transformationConfig: tconfig,
}
if err := registerall.RegisterAll(t.registry); err != nil {
return nil, err
}
options := &Options{}
for _, setter := range setters {
setter(options)
}
gcsutil.InitializeClient(options.GCSClient)
if hc := config.GetHarmonizationConfig(); hc != nil {
if err := harmonizecode.LoadCodeHarmonizationProjectors(t.registry, hc); err != nil {
return nil, err
}
}
if uc := config.GetUnitHarmonizationConfig(); uc != nil {
if err := harmonizeunit.LoadUnitHarmonizationProjectors(t.registry, uc); err != nil {
return nil, err
}
}
mpc, err := t.LoadMappingConfig(config)
if err != nil {
return nil, err
}
t.mappingConfig = mpc
if err := t.LoadProjectors(mpc.GetProjector()); err != nil {
return nil, err
}
// Load the library configurations.
for _, lc := range config.GetLibraryConfig() {
if err := t.LoadProjectors(lc.Projector); err != nil {
return nil, err
}
if options.CloudFunctions {
if err := cloudfunction.LoadCloudFunctionProjectors(t.registry, lc.CloudFunction); err != nil {
return nil, err
}
} else {
if len(lc.CloudFunction) != 0 {
return nil, &invalidCloudFunctionProjectorError{lc: lc}
}
}
if err := auth.LoadServerConfigs(lc.Servers); err != nil {
return nil, err
}
if options.FetchConfigs {
if err := fetch.LoadFetchProjectors(context.Background(), t.registry, lc.HttpQuery); err != nil {
return nil, err
}
} else {
if len(lc.HttpQuery) != 0 {
return nil, &invalidFetchProjectorError{lc: lc}
}
}
for _, lib := range lc.GetUserLibraries() {
mpc, err := loadMappingConfig(lib.GetPath(), lib.GetType())
if err != nil {
return nil, err
}
// Custom library configs should only have projectors defined, all else is ignored.
if err := t.LoadProjectors(mpc.GetProjector()); err != nil {
return nil, err
}
}
}
return t, nil
}