This project has retired. For details please refer to its
Attic page.
CopyFileEvent xref
1 package org.apache.archiva.transaction;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.apache.archiva.checksum.ChecksumAlgorithm;
23 import org.apache.commons.io.FileUtils;
24
25 import java.io.IOException;
26 import java.nio.file.Files;
27 import java.nio.file.Path;
28 import java.nio.file.Paths;
29 import java.util.List;
30
31
32
33
34
35
36 public class CopyFileEvent
37 extends AbstractTransactionEvent
38 {
39 private final Path source;
40
41 private final Path destination;
42
43
44
45
46
47
48
49 public CopyFileEvent( Path source, Path destination, List<ChecksumAlgorithm> checksumAlgorithms )
50 {
51 super( checksumAlgorithms );
52 this.source = source;
53 this.destination = destination;
54 }
55
56 @Override
57 public void commit()
58 throws IOException
59 {
60 createBackup( destination );
61
62 mkDirs( destination.getParent() );
63
64 FileUtils.copyFile( source.toFile(), destination.toFile() );
65
66 createChecksums( destination, true );
67 copyChecksums();
68
69 copyChecksum( "asc" );
70 }
71
72
73
74
75
76
77 private void copyChecksums()
78 throws IOException
79 {
80 for ( ChecksumAlgorithm checksumAlgorithm : getChecksumAlgorithms() )
81 {
82 copyChecksum( getChecksumFileExtension( checksumAlgorithm ) );
83 }
84 }
85
86
87
88
89
90
91
92
93 private boolean copyChecksum( String extension )
94 throws IOException
95 {
96 Path checksumSource = Paths.get( source.toAbsolutePath() + "." + extension );
97 if ( Files.exists(checksumSource) )
98 {
99 Path checksumDestination = Paths.get( destination.toAbsolutePath() + "." + extension );
100 FileUtils.copyFile( checksumSource.toFile(), checksumDestination.toFile() );
101 return true;
102 }
103 return false;
104 }
105
106 @Override
107 public void rollback()
108 throws IOException
109 {
110 Files.deleteIfExists(destination);
111
112 revertFilesCreated();
113
114 revertMkDirs();
115
116 restoreBackups();
117 }
118 }