From bc56ad878a88cb63063e85b8866a2d84bfce55b0 Mon Sep 17 00:00:00 2001 From: Mike Cantelon Date: Thu, 30 May 2024 16:08:49 -0700 Subject: [PATCH] work --- cmd/worker/workercmd/cmd.go | 4 - go.mod | 1 - go.sum | 2 - internal/activities/combine_premis.go | 148 ------------------------ internal/workflow/preprocessing.go | 11 -- internal/workflow/preprocessing_test.go | 11 -- 6 files changed, 177 deletions(-) delete mode 100644 internal/activities/combine_premis.go diff --git a/cmd/worker/workercmd/cmd.go b/cmd/worker/workercmd/cmd.go index 396fd4ea..2219ba8d 100644 --- a/cmd/worker/workercmd/cmd.go +++ b/cmd/worker/workercmd/cmd.go @@ -76,10 +76,6 @@ func (m *Main) Run(ctx context.Context) error { activities.NewValidateMetadata().Execute, temporalsdk_activity.RegisterOptions{Name: activities.ValidateMetadataName}, ) - w.RegisterActivityWithOptions( - activities.NewCombinePREMIS().Execute, - temporalsdk_activity.RegisterOptions{Name: activities.CombinePREMISName}, - ) w.RegisterActivityWithOptions( activities.NewTransformSIP().Execute, temporalsdk_activity.RegisterOptions{Name: activities.TransformSIPName}, diff --git a/go.mod b/go.mod index 6b52065d..52234536 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,6 @@ go 1.22.3 require ( github.com/artefactual-sdps/temporal-activities v0.0.0-20240528131443-0d1f5defd565 - github.com/beevik/etree v1.4.0 github.com/go-logr/logr v1.4.1 github.com/otiai10/copy v1.14.0 github.com/richardlehane/siegfried v1.11.0 diff --git a/go.sum b/go.sum index 83446f94..7080c834 100644 --- a/go.sum +++ b/go.sum @@ -2,8 +2,6 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMT github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/artefactual-sdps/temporal-activities v0.0.0-20240528131443-0d1f5defd565 h1:BlAvtmnDfP/J2ZwYDElMkF6caNQWxOGXlXiCC59tj4A= github.com/artefactual-sdps/temporal-activities v0.0.0-20240528131443-0d1f5defd565/go.mod h1:C6z/8k6xFm9wrF4GSMKs13v941MtdrOzH2fn8hQEHtA= -github.com/beevik/etree v1.4.0 h1:oz1UedHRepuY3p4N5OjE0nK1WLCqtzHf25bxplKOHLs= -github.com/beevik/etree v1.4.0/go.mod h1:cyWiXwGoasx60gHvtnEh5x8+uIjUVnjWqBvEnhnqKDA= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= diff --git a/internal/activities/combine_premis.go b/internal/activities/combine_premis.go deleted file mode 100644 index b6708c1c..00000000 --- a/internal/activities/combine_premis.go +++ /dev/null @@ -1,148 +0,0 @@ -package activities - -import ( - "context" - "errors" - "os" - "path" - "path/filepath" - "strings" - - "github.com/beevik/etree" - "github.com/otiai10/copy" -) - -const CombinePREMISName = "combine-premis" - -type CombinePREMISParams struct { - Path string -} - -type CombinePREMISResult struct{} - -type CombinePREMIS struct{} - -func NewCombinePREMIS() *CombinePREMIS { - return &CombinePREMIS{} -} - -func (a *CombinePREMIS) Execute(ctx context.Context, params *CombinePREMISParams) (*CombinePREMISResult, error) { - // Get transfer's PREMIS file paths. - file_paths, err := CombinePREMISGetPaths(params.Path) - if err != nil { - return nil, err - } - - // Copy empty PREMIS file into metadata directory. - source_filepath := "empty_premis.xml" - dest_filepath := path.Join(params.Path, "metadata/premis.xml") - - err = copy.Copy(source_filepath, dest_filepath) - if err != nil { - return nil, err - } - - // Write elements from transfer's PREMIS files to combined PREMIS file. - combined_premis_filepath := path.Join(params.Path, "metadata/premis.xml") - - for _, file_path := range file_paths { - err := CombinePREMISCopy(file_path, combined_premis_filepath) - if err != nil { - return nil, err - } - } - - return &CombinePREMISResult{}, nil -} - -func CombinePREMISGetPaths(transfer_dir string) ([]string, error) { - objects_dir := filepath.Join(transfer_dir, "objects") - dir_items, err := os.ReadDir(objects_dir) - if err != nil { - return nil, err - } - - file_paths := []string{} - for _, dir_item := range dir_items { - if dir_item.IsDir() { - subdir := path.Join(objects_dir, dir_item.Name()) - - sub_items, err := os.ReadDir(subdir) - if err != nil { - return nil, err - } - - for _, subdir_item := range sub_items { - if !subdir_item.IsDir() { - if strings.HasSuffix(strings.ToLower(subdir_item.Name()), "_premis.xml") { - file_paths = append(file_paths, path.Join(subdir, subdir_item.Name())) - } - } - } - } - } - - return file_paths, nil -} - -func CombinePREMISCopy(source_filepath, destination_filepath string) error { - // Parse source document and get root PREMIS element. - source_doc := etree.NewDocument() - - if err := source_doc.ReadFromFile(source_filepath); err != nil { - return err - } - - source_premis_element := source_doc.FindElement("/premis") - if source_premis_element == nil { - return errors.New("no root premis element found in source document") - } - - // Read source child PREMIS elements. - source_premis_object_elements := source_premis_element.FindElements("object") - source_premis_event_elements := source_premis_element.FindElements("event") - source_premis_agent_elements := source_premis_element.FindElements("agent") - - // Parse destination document and get root PREMIS element. - dest_doc := etree.NewDocument() - if err := dest_doc.ReadFromFile(destination_filepath); err != nil { - return err - } - - dest_premis_element := dest_doc.FindElement("/premis") - if dest_premis_element == nil { - return errors.New("no root premis element found in destination document") - } - - // Update PREMIS originalname child elements of PREMIS object elements. - dirName := filepath.Base(filepath.Dir(source_filepath)) - for _, premis_object_element := range source_premis_object_elements { - objectname_element := premis_object_element.FindElement("originalName") - if objectname_element != nil { - objectname_element.SetText("objects/" + dirName + "/" + objectname_element.Text()) - } - } - - // Write destination child PREMIS elements. - CombinePREMISAddChildElements(dest_premis_element, source_premis_object_elements) - CombinePREMISAddChildElements(dest_premis_element, source_premis_event_elements) - CombinePREMISAddChildElements(dest_premis_element, source_premis_agent_elements) - - dest_doc.Indent(2) - err := dest_doc.WriteToFile(destination_filepath) - if err != nil { - return err - } - - return nil -} - -func CombinePREMISAddChildElements(parent_element *etree.Element, new_child_elements []*etree.Element) { - for _, child_element := range new_child_elements { - child_element.Space = "premis" - for _, element := range child_element.FindElements("//*") { - element.Space = "premis" - } - parent_element.AddChild(child_element) - } -} diff --git a/internal/workflow/preprocessing.go b/internal/workflow/preprocessing.go index f7b758ad..0a917496 100644 --- a/internal/workflow/preprocessing.go +++ b/internal/workflow/preprocessing.go @@ -106,17 +106,6 @@ func (w *PreprocessingWorkflow) Execute( return nil, e } - // Combine PREMIS files into one. - var combinePREMIS activities.CombinePREMISResult - e = temporalsdk_workflow.ExecuteActivity( - withLocalActOpts(ctx), - activities.CombinePREMISName, - &activities.CombinePREMISParams{Path: localPath}, - ).Get(ctx, &combinePREMIS) - if e != nil { - return nil, e - } - // Remove PREMIS files. var removeFiles removefiles.ActivityResult e = temporalsdk_workflow.ExecuteActivity( diff --git a/internal/workflow/preprocessing_test.go b/internal/workflow/preprocessing_test.go index 77d0ba41..4683cf81 100644 --- a/internal/workflow/preprocessing_test.go +++ b/internal/workflow/preprocessing_test.go @@ -57,10 +57,6 @@ func (s *PreprocessingTestSuite) SetupTest(cfg config.Configuration) { activities.NewTransformSIP().Execute, temporalsdk_activity.RegisterOptions{Name: activities.TransformSIPName}, ) - s.env.RegisterActivityWithOptions( - activities.NewCombinePREMIS().Execute, - temporalsdk_activity.RegisterOptions{Name: activities.CombinePREMISName}, - ) s.env.RegisterActivityWithOptions( removefiles.NewActivity().Execute, temporalsdk_activity.RegisterOptions{Name: removefiles.ActivityName}, @@ -131,13 +127,6 @@ func (s *PreprocessingTestSuite) TestPreprocessingWorkflowSuccess() { ).Return( &activities.TransformSIPResult{}, nil, ) - s.env.OnActivity( - activities.CombinePREMISName, - sessionCtx, - &activities.CombinePREMISParams{Path: sipPath}, - ).Return( - &activities.CombinePREMISResult{}, nil, - ) s.env.OnActivity( removefiles.ActivityName, sessionCtx,