3131import org .labkey .api .assay .transform .DataExchangeHandler ;
3232import org .labkey .api .assay .transform .DataTransformService ;
3333import org .labkey .api .audit .AuditLogService ;
34+ import org .labkey .api .audit .provider .FileSystemAuditProvider ;
3435import org .labkey .api .data .ActionButton ;
3536import org .labkey .api .data .ButtonBar ;
3637import org .labkey .api .data .ColumnInfo ;
136137import java .util .Iterator ;
137138import java .util .LinkedHashMap ;
138139import java .util .List ;
139- import java .util .ListIterator ;
140140import java .util .Map ;
141141import java .util .Objects ;
142142import java .util .Set ;
@@ -1798,7 +1798,7 @@ public record AssayFileMoveData(ExpRun run, Container sourceContainer, String fi
17981798 public record AssayMoveData (Map <String , Integer > counts , Map <Integer , List <AssayFileMoveData >> fileMovesByRunId ) {}
17991799
18001800 @ Override
1801- public void moveRuns (List <ExpRun > runs , Container targetContainer , User user , AbstractAssayProvider . AssayMoveData assayMoveData ) throws ExperimentException
1801+ public void moveRuns (List <ExpRun > runs , Container targetContainer , User user , AssayMoveData assayMoveData ) throws ExperimentException
18021802 {
18031803 if (runs .isEmpty ())
18041804 return ;
@@ -1968,7 +1968,7 @@ private void moveRunsBatch(List<ExpRun> runs, Container sourceContainer, Contain
19681968 if (updatedFile != null )
19691969 {
19701970 if (!fileMoveReferences .containsKey (sourceFileName ))
1971- fileMoveReferences .put (sourceFileName , new AssayFileMoveReference (sourceFileName , updatedFile , experiment .getName ()));
1971+ fileMoveReferences .put (sourceFileName , new AssayFileMoveReference (sourceFileName , updatedFile , experiment .getName (), fileProp . getName () ));
19721972
19731973 if (!fileMoveCounts .containsKey (sourceFileName ))
19741974 fileMoveCounts .put (sourceFileName , 0 );
@@ -1991,6 +1991,11 @@ private void moveRunsBatch(List<ExpRun> runs, Container sourceContainer, Contain
19911991 throw new ExperimentException ("Assay batch " + ref .runName + " cannot be moved since it references a shared file: " + sourceFile .getName ());
19921992
19931993 fileContentService .fireFileMoveEvent (sourceFile .toPath (), ref .updatedFile .toPath (), user , sourceContainer , targetContainer );
1994+ FileSystemAuditProvider .FileSystemAuditEvent event = new FileSystemAuditProvider .FileSystemAuditEvent (targetContainer , "File moved from " + sourceContainer .getPath () + " to " + targetContainer .getPath () + "." );
1995+ event .setProvidedFileName (sourceFile .getName ());
1996+ event .setFile (ref .updatedFile .getName ());
1997+ event .setDirectory (ref .updatedFile .getParent ());
1998+ AuditLogService .get ().addEvent (user , event );
19941999 }
19952000
19962001 }
@@ -2050,7 +2055,7 @@ private void updateRunFiles(List<ExpRun> runs, Container sourceContainer, Contai
20502055 if (updatedFile != null )
20512056 {
20522057 if (!fileMoveReferences .containsKey (sourceFileName ))
2053- fileMoveReferences .put (sourceFileName , new AssayFileMoveReference (sourceFileName , updatedFile , run .getName ()));
2058+ fileMoveReferences .put (sourceFileName , new AssayFileMoveReference (sourceFileName , updatedFile , run .getName (), fileProp . getName () ));
20542059
20552060 if (!fileMoveCounts .containsKey (sourceFileName ))
20562061 fileMoveCounts .put (sourceFileName , 0 );
@@ -2072,6 +2077,12 @@ private void updateRunFiles(List<ExpRun> runs, Container sourceContainer, Contai
20722077 throw new ExperimentException ("Assay run " + ref .runName + " cannot be moved since it references a shared file: " + sourceFile .getName ());
20732078
20742079 fileContentService .fireFileMoveEvent (sourceFile .toPath (), ref .updatedFile .toPath (), user , sourceContainer , targetContainer );
2080+ FileSystemAuditProvider .FileSystemAuditEvent event = new FileSystemAuditProvider .FileSystemAuditEvent (targetContainer , "File moved from " + sourceContainer .getPath () + " to " + targetContainer .getPath () + "." );
2081+ event .setProvidedFileName (sourceFile .getName ());
2082+ event .setFile (ref .updatedFile .getName ());
2083+ event .setDirectory (ref .updatedFile .getParent ());
2084+ event .setFieldName (ref .fieldName );
2085+ AuditLogService .get ().addEvent (user , event );
20752086 }
20762087
20772088 }
@@ -2116,6 +2127,11 @@ private void updateDataFileUrl(List<ExpRun> runs, Container sourceContainer, Con
21162127 movedFiles .putIfAbsent (runId , new ArrayList <>());
21172128 movedFiles .get (runId ).add (new AssayFileMoveData (run , run .getContainer (), null , sourceFile , updatedFile ));
21182129 fileContentService .fireFileMoveEvent (sourceFile .toPath (), updatedFile .toPath (), user , sourceContainer , targetContainer );
2130+ FileSystemAuditProvider .FileSystemAuditEvent event = new FileSystemAuditProvider .FileSystemAuditEvent (targetContainer , "File moved from " + sourceContainer .getPath () + " to " + targetContainer .getPath () + "." );
2131+ event .setProvidedFileName (sourceFile .getName ());
2132+ event .setFile (updatedFile .getName ());
2133+ event .setDirectory (updatedFile .getParent ());
2134+ AuditLogService .get ().addEvent (user , event );
21192135 }
21202136 }
21212137 catch (Exception e )
@@ -2136,7 +2152,7 @@ protected void moveAssayResults(List<ExpRun> runs, ExpProtocol protocol, Contain
21362152 updateResultFiles (assayResultTable , runs , protocol , sourceContainer , targetContainer , user , assayMoveData );
21372153 }
21382154
2139- record AssayFileMoveReference (String sourceFilePath , File updatedFile , String runName ) {}
2155+ record AssayFileMoveReference (String sourceFilePath , File updatedFile , String runName , String fieldName ) {}
21402156
21412157 private void updateResultFiles (FilteredTable assayResultTable , List <ExpRun > runs , ExpProtocol assayProtocol , Container sourceContainer , Container targetContainer , User user , AssayMoveData assayMoveData ) throws ExperimentException
21422158 {
@@ -2169,10 +2185,10 @@ private void updateResultFiles(FilteredTable assayResultTable, List<ExpRun> runs
21692185 Map <Integer , ExpRun > runMap = new HashMap <>();
21702186 runs .forEach (run -> runMap .put (run .getRowId (), run ));
21712187
2172- Map <String , AssayFileMoveReference > fileMoveReferences = new HashMap <>();
2173- Map <String , List <Integer >> fileMoveResultRowIds = new HashMap <>();
21742188 for (String fileField : fileFields )
21752189 {
2190+ Map <String , AssayFileMoveReference > fileMoveReferences = new HashMap <>();
2191+ Map <String , List <Integer >> fileMoveResultRowIds = new HashMap <>();
21762192 var fileColumn = assayResultTable .getColumn (fileField );
21772193 TableSelector ts = new TableSelector (assayResultTable , assayResultTable .getColumns ("rowid" , "run" , fileField ), filter , null );
21782194 Map <String , Object >[] resultFiles = ts .getMapArray ();
@@ -2194,7 +2210,7 @@ private void updateResultFiles(FilteredTable assayResultTable, List<ExpRun> runs
21942210 ExpRun run = runMap .get (resultRunId );
21952211
21962212 if (!fileMoveReferences .containsKey (sourceFileName ))
2197- fileMoveReferences .put (sourceFileName , new AssayFileMoveReference (sourceFileName , updatedFile , run .getName ()));
2213+ fileMoveReferences .put (sourceFileName , new AssayFileMoveReference (sourceFileName , updatedFile , run .getName (), fileField ));
21982214
21992215 movedFiles .putIfAbsent (resultRunId , new ArrayList <>());
22002216 movedFiles .get (resultRunId ).add (new AssayFileMoveData (run , run .getContainer (), fileField , sourceFile , updatedFile ));
@@ -2234,6 +2250,12 @@ private void updateResultFiles(FilteredTable assayResultTable, List<ExpRun> runs
22342250 .append (" WHERE rowId " ).appendInClause (fileMoveResultRowIds .get (sourceFileName ), realTable .getSqlDialect ());
22352251 new SqlExecutor (assayResultTable .getSchema ()).execute (updateSql );
22362252
2253+ FileSystemAuditProvider .FileSystemAuditEvent event = new FileSystemAuditProvider .FileSystemAuditEvent (targetContainer , "File moved from " + sourceContainer .getPath () + " to " + targetContainer .getPath () + "." );
2254+ event .setProvidedFileName (sourceFile .getName ());
2255+ event .setFile (updatedFile .getName ());
2256+ event .setDirectory (updatedFile .getParent ());
2257+ event .setFieldName (ref .fieldName );
2258+ AuditLogService .get ().addEvent (user , event );
22372259 }
22382260
22392261 }
0 commit comments