1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.enforcer.rules.files;
20
21 import javax.inject.Inject;
22 import javax.inject.Named;
23
24 import java.io.File;
25 import java.util.Collections;
26 import java.util.Objects;
27
28 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
29 import org.apache.maven.project.MavenProject;
30
31
32
33
34
35
36
37 @Named("requireFilesSize")
38 public final class RequireFilesSize extends AbstractRequireFiles {
39
40 private static final long MAXSIZE = 10000;
41
42
43 private long maxsize = MAXSIZE;
44
45
46 private long minsize = 0;
47
48
49 private String errorMsg;
50
51 private final MavenProject project;
52
53 @Inject
54 public RequireFilesSize(MavenProject project) {
55 this.project = Objects.requireNonNull(project);
56 }
57
58 @Override
59 public void execute() throws EnforcerRuleException {
60
61
62 if (getFiles().isEmpty()) {
63 setFilesList(Collections.singletonList(project.getArtifact().getFile()));
64 super.execute();
65 } else {
66 super.execute();
67 }
68 }
69
70 @Override
71 public String getCacheId() {
72
73 return null;
74 }
75
76 @Override
77 boolean checkFile(File file) {
78 if (file == null) {
79
80 return true;
81 }
82
83
84 if (file.exists()) {
85 long length = file.length();
86 if (length < minsize) {
87 this.errorMsg = (file + " size (" + length + ") too small. Min. is " + minsize);
88 return false;
89 } else if (length > maxsize) {
90 this.errorMsg = (file + " size (" + length + ") too large. Max. is " + maxsize);
91 return false;
92 } else {
93
94 getLog().debug(() -> file
95 + " size ("
96 + length
97 + ") is OK ("
98 + (minsize == maxsize || minsize == 0
99 ? ("max. " + maxsize)
100 : ("between " + minsize + " and " + maxsize))
101 + " byte).");
102
103 return true;
104 }
105 } else {
106 this.errorMsg = (file + " does not exist!");
107 return false;
108 }
109 }
110
111 @Override
112 String getErrorMsg() {
113 return this.errorMsg;
114 }
115
116 public void setMaxsize(long maxsize) {
117 this.maxsize = maxsize;
118 }
119
120 public void setMinsize(long minsize) {
121 this.minsize = minsize;
122 }
123 }