Skip to content

Commit 8d1784e

Browse files
committed
added stats rest interface
1 parent bfba139 commit 8d1784e

3 files changed

Lines changed: 97 additions & 66 deletions

File tree

src/main/java/de/unirostock/sems/cbarchive/web/QuotaManager.java

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -131,9 +131,9 @@ public StatisticData getUserStats(UserManager user) {
131131
if( user != null ) {
132132
// add user stats
133133
if( Fields.QUOTA_WORKSPACE_SIZE != Fields.QUOTA_UNLIMITED )
134-
stats.setWorkspaceSizeQuota( (double) Fields.QUOTA_WORKSPACE_SIZE / (double) getWorkspaceSize( user.getWorkspace() ) );
134+
stats.setUserWorkspaceSizeQuota( (double) getWorkspaceSize( user.getWorkspace() ) / (double) Fields.QUOTA_WORKSPACE_SIZE );
135135
if( Fields.QUOTA_ARCHIVE_LIMIT != Fields.QUOTA_UNLIMITED)
136-
stats.setArchiveCountQuota( (double) Fields.QUOTA_ARCHIVE_LIMIT / (double) user.getArchives().size() );
136+
stats.setUserArchiveCountQuota( (double) user.getArchives().size() / (double) Fields.QUOTA_ARCHIVE_LIMIT );
137137
}
138138

139139
return stats;
@@ -257,17 +257,18 @@ public void run() {
257257
stats.setGenerated(now);
258258

259259
stats.setTotalSize(totalSize);
260-
stats.setWorkspaceCount(workspaceCount);
261-
stats.setSizePerWorkspace( (double) totalSize / (double) workspaceCount );
262-
stats.setArchivesPerWorkspace( (double) totalArchiveCount / (double) workspaceCount );
263-
stats.setAvgWorkspaceAge( (double) totalWorkspaceAge / (double) workspaceCount );
260+
stats.setTotalWorkspaceCount(workspaceCount);
261+
stats.setTotalArchiveCount(totalArchiveCount);
262+
stats.setAverageWorkspaceSize( (double) totalSize / (double) workspaceCount );
263+
stats.setAverageArchiveCount( (double) totalArchiveCount / (double) workspaceCount );
264+
stats.setAverageWorkspaceAge( (double) totalWorkspaceAge / (double) workspaceCount );
264265

265266
if( Fields.QUOTA_WORKSPACE_SIZE != Fields.QUOTA_UNLIMITED )
266-
stats.setAvgWorkspaceSizeQuota( (double) Fields.QUOTA_WORKSPACE_SIZE / stats.getSizePerWorkspace() );
267+
stats.setAverageWorkspaceSizeQuota( stats.getAverageWorkspaceSize() / (double) Fields.QUOTA_WORKSPACE_SIZE );
267268
if( Fields.QUOTA_TOTAL_SIZE != Fields.QUOTA_UNLIMITED )
268-
stats.setTotalQuota( (double) Fields.QUOTA_TOTAL_SIZE / (double) totalSize );
269+
stats.setTotalSizeQuota( (double) totalSize / (double) Fields.QUOTA_TOTAL_SIZE );
269270
if( Fields.QUOTA_ARCHIVE_LIMIT != Fields.QUOTA_UNLIMITED )
270-
stats.setAvgArchiveCountQuota( (double) Fields.QUOTA_ARCHIVE_LIMIT / stats.getArchivesPerWorkspace() );
271+
stats.setAverageArchiveCountQuota( stats.getAverageArchiveCount() / (double) Fields.QUOTA_ARCHIVE_LIMIT );
271272

272273
// tranfer the results to the main class
273274
quotaManager.workspaceCache = cache;

src/main/java/de/unirostock/sems/cbarchive/web/dataholder/StatisticData.java

Lines changed: 69 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -15,39 +15,42 @@ public class StatisticData implements Serializable, Cloneable {
1515
public static final long IGNORE_LONG = -1L;
1616

1717
/** total number of workspaces hosted on this instance */
18-
private long workspaceCount = IGNORE_LONG;
18+
private long totalWorkspaceCount = IGNORE_LONG;
1919
/** total size in bytes of all workspaces combined */
2020
private long totalSize = IGNORE_LONG;
21+
/** total number of archives hosted on this instance */
22+
private long totalArchiveCount = IGNORE_LONG;
2123
/** average size per workspace */
22-
private double sizePerWorkspace = IGNORE_DOUBLE;
24+
private double averageWorkspaceSize = IGNORE_DOUBLE;
2325
/** average amount of archives per workspace */
24-
private double archivesPerWorkspace = IGNORE_DOUBLE;
26+
private double averageArchiveCount = IGNORE_DOUBLE;
2527
/** average age of the workspaces in seconds */
26-
private double avgWorkspaceAge = IGNORE_DOUBLE;
28+
private double averageWorkspaceAge = IGNORE_DOUBLE;
2729

2830
/** relative usage of the total size quota (0.0 - 1.0) */
29-
private double totalQuota = IGNORE_DOUBLE;
31+
private double totalSizeQuota = IGNORE_DOUBLE;
3032
/** average usage of space per Workspace quota (0.0 - 1.0) */
31-
private double avgWorkspaceSizeQuota = IGNORE_DOUBLE;
33+
private double averageWorkspaceSizeQuota = IGNORE_DOUBLE;
3234
/** average usage of archives per workspace (0.0 - 1.0) */
33-
private double avgArchiveCountQuota = IGNORE_DOUBLE;
35+
private double averageArchiveCountQuota = IGNORE_DOUBLE;
3436

37+
// user stats
3538
/** relative usage of space for the current workspace (0.0 - 1.0) */
36-
private double workspaceSizeQuota = IGNORE_DOUBLE;
39+
private double userWorkspaceSizeQuota = IGNORE_DOUBLE;
3740
/** relative usage of archives per workspace quota (0.0 - 1.0) */
38-
private double archiveCountQuota = IGNORE_DOUBLE;
41+
private double userArchiveCountQuota = IGNORE_DOUBLE;
3942

4043
/** Timestamp of generation */
4144
private Date generated = new Date();
4245

4346
public StatisticData() {}
44-
45-
public long getWorkspaceCount() {
46-
return workspaceCount;
47+
48+
public long getTotalWorkspaceCount() {
49+
return totalWorkspaceCount;
4750
}
4851

49-
public void setWorkspaceCount(long workspaceCount) {
50-
this.workspaceCount = workspaceCount;
52+
public void setTotalWorkspaceCount(long totalWorkspaceCount) {
53+
this.totalWorkspaceCount = totalWorkspaceCount;
5154
}
5255

5356
public long getTotalSize() {
@@ -58,60 +61,68 @@ public void setTotalSize(long totalSize) {
5861
this.totalSize = totalSize;
5962
}
6063

61-
public double getSizePerWorkspace() {
62-
return sizePerWorkspace;
64+
public double getAverageWorkspaceSize() {
65+
return averageWorkspaceSize;
66+
}
67+
68+
public void setAverageWorkspaceSize(double averageWorkspaceSize) {
69+
this.averageWorkspaceSize = averageWorkspaceSize;
70+
}
71+
72+
public double getAverageArchiveCount() {
73+
return averageArchiveCount;
6374
}
6475

65-
public void setSizePerWorkspace(double sizePerWorkspace) {
66-
this.sizePerWorkspace = sizePerWorkspace;
76+
public void setAverageArchiveCount(double averageArchiveCount) {
77+
this.averageArchiveCount = averageArchiveCount;
6778
}
6879

69-
public double getTotalQuota() {
70-
return totalQuota;
80+
public double getAverageWorkspaceAge() {
81+
return averageWorkspaceAge;
7182
}
7283

73-
public void setTotalQuota(double totalQuota) {
74-
this.totalQuota = totalQuota;
84+
public void setAverageWorkspaceAge(double averageWorkspaceAge) {
85+
this.averageWorkspaceAge = averageWorkspaceAge;
7586
}
7687

77-
public double getAvgWorkspaceSizeQuota() {
78-
return avgWorkspaceSizeQuota;
88+
public double getTotalSizeQuota() {
89+
return totalSizeQuota;
7990
}
8091

81-
public void setAvgWorkspaceSizeQuota(double avgWorkspaceSizeQuota) {
82-
this.avgWorkspaceSizeQuota = avgWorkspaceSizeQuota;
92+
public void setTotalSizeQuota(double totalSizeQuota) {
93+
this.totalSizeQuota = totalSizeQuota;
8394
}
8495

85-
public double getAvgArchiveCountQuota() {
86-
return avgArchiveCountQuota;
96+
public double getAverageWorkspaceSizeQuota() {
97+
return averageWorkspaceSizeQuota;
8798
}
8899

89-
public void setAvgArchiveCountQuota(double avgArchiveCountQuota) {
90-
this.avgArchiveCountQuota = avgArchiveCountQuota;
100+
public void setAverageWorkspaceSizeQuota(double averageWorkspaceSizeQuota) {
101+
this.averageWorkspaceSizeQuota = averageWorkspaceSizeQuota;
91102
}
92103

93-
public double getAvgWorkspaceAge() {
94-
return avgWorkspaceAge;
104+
public double getAverageArchiveCountQuota() {
105+
return averageArchiveCountQuota;
95106
}
96107

97-
public void setAvgWorkspaceAge(double d) {
98-
this.avgWorkspaceAge = d;
108+
public void setAverageArchiveCountQuota(double averageArchiveCountQuota) {
109+
this.averageArchiveCountQuota = averageArchiveCountQuota;
99110
}
100111

101-
public double getWorkspaceSizeQuota() {
102-
return workspaceSizeQuota;
112+
public double getUserWorkspaceSizeQuota() {
113+
return userWorkspaceSizeQuota;
103114
}
104115

105-
public void setWorkspaceSizeQuota(double workspaceSizeQuota) {
106-
this.workspaceSizeQuota = workspaceSizeQuota;
116+
public void setUserWorkspaceSizeQuota(double userWorkspaceSizeQuota) {
117+
this.userWorkspaceSizeQuota = userWorkspaceSizeQuota;
107118
}
108119

109-
public double getArchiveCountQuota() {
110-
return archiveCountQuota;
120+
public double getUserArchiveCountQuota() {
121+
return userArchiveCountQuota;
111122
}
112123

113-
public void setArchiveCountQuota(double archiveCountQuota) {
114-
this.archiveCountQuota = archiveCountQuota;
124+
public void setUserArchiveCountQuota(double userArchiveCountQuota) {
125+
this.userArchiveCountQuota = userArchiveCountQuota;
115126
}
116127

117128
public Date getGenerated() {
@@ -121,29 +132,30 @@ public Date getGenerated() {
121132
public void setGenerated(Date generated) {
122133
this.generated = generated;
123134
}
124-
125-
public double getArchivesPerWorkspace() {
126-
return archivesPerWorkspace;
135+
136+
public long getTotalArchiveCount() {
137+
return totalArchiveCount;
127138
}
128139

129-
public void setArchivesPerWorkspace(double archivesPerWorkspace) {
130-
this.archivesPerWorkspace = archivesPerWorkspace;
140+
public void setTotalArchiveCount(long totalArchiveCount) {
141+
this.totalArchiveCount = totalArchiveCount;
131142
}
132-
143+
133144
@Override
134145
public StatisticData clone() {
135146
StatisticData clone = new StatisticData();
136147

137-
clone.archiveCountQuota = archiveCountQuota;
138-
clone.archivesPerWorkspace = clone.archivesPerWorkspace;
139-
clone.avgArchiveCountQuota = avgArchiveCountQuota;
140-
clone.avgWorkspaceAge = avgWorkspaceAge;
141-
clone.avgWorkspaceSizeQuota = avgWorkspaceSizeQuota;
142-
clone.sizePerWorkspace = sizePerWorkspace;
143-
clone.totalQuota = totalQuota;
148+
clone.userArchiveCountQuota = userArchiveCountQuota;
149+
clone.averageArchiveCount = averageArchiveCount;
150+
clone.averageArchiveCountQuota = averageArchiveCountQuota;
151+
clone.averageWorkspaceAge = averageWorkspaceAge;
152+
clone.averageWorkspaceSizeQuota = averageWorkspaceSizeQuota;
153+
clone.averageWorkspaceSize = averageWorkspaceSize;
154+
clone.totalSizeQuota = totalSizeQuota;
144155
clone.totalSize = totalSize;
145-
clone.workspaceCount = workspaceCount;
146-
clone.workspaceSizeQuota = workspaceSizeQuota;
156+
clone.totalWorkspaceCount = totalWorkspaceCount;
157+
clone.totalArchiveCount = totalArchiveCount;
158+
clone.userWorkspaceSizeQuota = userWorkspaceSizeQuota;
147159

148160
clone.generated = new Date(generated.getTime());
149161

src/main/java/de/unirostock/sems/cbarchive/web/rest/RestApi.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@
7575
import de.unirostock.sems.cbarchive.web.dataholder.ArchiveEntryDataholder;
7676
import de.unirostock.sems.cbarchive.web.dataholder.ArchiveFromExisting;
7777
import de.unirostock.sems.cbarchive.web.dataholder.MetaObjectDataholder;
78+
import de.unirostock.sems.cbarchive.web.dataholder.StatisticData;
7879
import de.unirostock.sems.cbarchive.web.dataholder.UserData;
7980
import de.unirostock.sems.cbarchive.web.dataholder.Workspace;
8081
import de.unirostock.sems.cbarchive.web.dataholder.WorkspaceHistory;
@@ -173,6 +174,23 @@ public Response storeSettings( @CookieParam(Fields.COOKIE_PATH) String userPath,
173174
return buildResponse(200, user).entity(result).build();
174175
}
175176

177+
@GET
178+
@Path("/stats")
179+
@Produces( MediaType.APPLICATION_JSON )
180+
public Response getStats( @CookieParam(Fields.COOKIE_PATH) String userPath ) {
181+
// user stuff
182+
UserManager user = null;
183+
try {
184+
user = new UserManager( userPath );
185+
} catch (IOException e) {
186+
LOGGER.error(e, "Cannot create user");
187+
return buildErrorResponse(500, null, "user not creatable!", e.getMessage() );
188+
}
189+
190+
StatisticData stats = QuotaManager.getInstance().getUserStats(user);
191+
return buildResponse(200, user).entity(stats).build();
192+
}
193+
176194
@GET
177195
@Path("/workspaces")
178196
@Produces( MediaType.APPLICATION_JSON )

0 commit comments

Comments
 (0)