Skip to content

Commit

Permalink
Merge pull request #8 from dhinske/refactoring_day
Browse files Browse the repository at this point in the history
Refactoring day
  • Loading branch information
dhinske committed May 8, 2016
2 parents 945f198 + 8620b0e commit 9d39683
Show file tree
Hide file tree
Showing 18 changed files with 195 additions and 126 deletions.
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
package hudson.plugins.global_build_stats;


public interface FieldFilter {

boolean isFieldValueValid(String fieldValue);


public static final FieldFilter ALL = new FieldFilter() {
@Override
public boolean isFieldValueValid(String fieldValue) {
return true;
}
};
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
import hudson.model.listeners.RunListener;
import hudson.plugins.global_build_stats.business.GlobalBuildStatsBusiness;
import hudson.plugins.global_build_stats.model.*;
import hudson.plugins.global_build_stats.rententionstrategies.RetentionStragegy;
import hudson.plugins.global_build_stats.rententionstrategies.RetentionStrategy;
import hudson.plugins.global_build_stats.validation.GlobalBuildStatsValidator;
import hudson.security.Permission;
import hudson.util.ChartUtil;
Expand All @@ -21,7 +21,6 @@
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Logger;

import javax.servlet.ServletException;

Expand All @@ -45,8 +44,6 @@
@ExportedBean
public class GlobalBuildStatsPlugin extends Plugin {

private static final Logger LOGGER = Logger.getLogger(GlobalBuildStatsPlugin.class.getName());

/**
* List of aggregated job build results
* This list will grow over time, but will be monthly sharded in different files to keep
Expand All @@ -60,7 +57,7 @@ public class GlobalBuildStatsPlugin extends Plugin {
* @deprecated Use jobBuildResultsSharder instead of jobBuildResults (since v8 file format)
*/
@Deprecated
transient private List<JobBuildResult> jobBuildResults = new ArrayList<JobBuildResult>();
private transient List<JobBuildResult> jobBuildResults = new ArrayList<JobBuildResult>();

/**
* List of persisted build statistics configurations used on the
Expand All @@ -71,17 +68,17 @@ public class GlobalBuildStatsPlugin extends Plugin {
/**
* List of retention strategies applied on job results
*/
private List<RetentionStragegy> retentionStrategies = new ArrayList<RetentionStragegy>();
private List<RetentionStrategy> retentionStrategies = new ArrayList<RetentionStrategy>();

/**
* Business layer for global build stats
*/
transient private final GlobalBuildStatsBusiness business = new GlobalBuildStatsBusiness(this);
private transient final GlobalBuildStatsBusiness business = new GlobalBuildStatsBusiness(this);

/**
* Validator layer for global build stats
*/
transient private final GlobalBuildStatsValidator validator = new GlobalBuildStatsValidator();
private transient final GlobalBuildStatsValidator validator = new GlobalBuildStatsValidator();

/**
* Expose {@link GlobalBuildStatsPlugin} to the remote API :
Expand All @@ -95,6 +92,7 @@ public Api getApi() {
/**
* Highered visibility of load method
*/
@Override
public void load() throws IOException {
super.load();
}
Expand Down Expand Up @@ -127,7 +125,7 @@ public void doPython(StaplerRequest req, StaplerResponse rsp)
}
}

private boolean exposeChartData(StaplerRequest req, StaplerResponse rsp, Flavor flavor) throws ServletException, IOException{
private static boolean exposeChartData(StaplerRequest req, StaplerResponse rsp, Flavor flavor) throws ServletException, IOException{
boolean chartDataHasBeenExposed = false;
String buildStatConfigId = req.getParameter("buildStatConfigId");
if(buildStatConfigId != null){
Expand Down Expand Up @@ -164,14 +162,17 @@ public void onLoaded() {
@Extension
public static class GlobalBuildStatsManagementLink extends ManagementLink {

@Override
public String getIconFileName() {
return "/plugin/global-build-stats/icons/global-build-stats.png";
}

@Override
public String getDisplayName() {
return Messages.Global_Builds_Stats();
}

@Override
public String getUrlName() {
return "plugin/global-build-stats/";
}
Expand Down Expand Up @@ -273,6 +274,7 @@ public HttpResponse doRecordBuildInfos() throws IOException {
business.recordBuildInfos();

return new HttpResponse() {
@Override
public void generateResponse(StaplerRequest req, StaplerResponse rsp,
Object node) throws IOException, ServletException {
}
Expand Down Expand Up @@ -304,7 +306,7 @@ public void doCreateChartMap(StaplerRequest req, StaplerResponse res) throws Ser
Hudson.getInstance().checkPermission(getRequiredPermission());

String buildStatId = req.getParameter("buildStatId");
BuildStatConfiguration config = null;
BuildStatConfiguration config;
if(buildStatId != null){
config = business.searchBuildStatConfigById(buildStatId);
} else {
Expand All @@ -331,7 +333,7 @@ public void doBuildHistory(StaplerRequest req, StaplerResponse res) throws Servl
public void doUpdateBuildStatConfiguration(StaplerRequest req, StaplerResponse res) throws ServletException, IOException {
Hudson.getInstance().checkPermission(getRequiredPermission());

boolean regenerateId = Boolean.valueOf(req.getParameter("regenerateId")).booleanValue();
boolean regenerateId = Boolean.parseBoolean(req.getParameter("regenerateId"));

BuildStatConfiguration config = FromRequestObjectFactory.createBuildStatConfiguration(req.getParameter("buildStatId"), req);
business.updateBuildStatConfiguration(req.getParameter("buildStatId"), config, regenerateId);
Expand Down Expand Up @@ -377,10 +379,10 @@ public void doMoveDownConf(StaplerRequest req, StaplerResponse res) throws Servl
public void doUpdateRetentionStrategies(StaplerRequest req, StaplerResponse res) throws ServletException, IOException {
Hudson.getInstance().checkPermission(getRequiredPermission());

List<RetentionStragegy> selectedStrategies = new ArrayList<RetentionStragegy>();
List<RetentionStrategy> selectedStrategies = new ArrayList<RetentionStrategy>();
if(req.getParameterValues("retentionStrategies") != null){
for(String selectedStrategyId : req.getParameterValues("retentionStrategies")){
RetentionStragegy retentionStrategy = RetentionStragegy.valueOf(selectedStrategyId);
RetentionStrategy retentionStrategy = RetentionStrategy.valueOf(selectedStrategyId);
retentionStrategy.updateState(req.getParameterMap());
selectedStrategies.add(retentionStrategy);
}
Expand Down Expand Up @@ -459,19 +461,19 @@ public void reloadJobBuildResults(List<JobBuildResult> results) {
this.jobBuildResultsSharder = new JobBuildResultSharder(this.jobBuildResultsSharder, results);
}

public List<RetentionStragegy> getAvailableRetentionStrategies(){
return RetentionStragegy.values();
public List<RetentionStrategy> getAvailableRetentionStrategies(){
return RetentionStrategy.values();
}

public boolean isStrategySelected(String strategyId){
return retentionStrategies.contains(RetentionStragegy.valueOf(strategyId));
return retentionStrategies.contains(RetentionStrategy.valueOf(strategyId));
}

public void setRetentionStrategies(List<RetentionStragegy> retentionStrategies) {
public void setRetentionStrategies(List<RetentionStrategy> retentionStrategies) {
this.retentionStrategies = retentionStrategies;
}

public List<RetentionStragegy> getRetentionStrategies() {
public List<RetentionStrategy> getRetentionStrategies() {
return retentionStrategies;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
import hudson.plugins.global_build_stats.JobBuildResultFactory;
import hudson.plugins.global_build_stats.model.*;
import hudson.plugins.global_build_stats.model.AbstractBuildStatChartDimension.LegendItemData;
import hudson.plugins.global_build_stats.rententionstrategies.RetentionStragegy;
import hudson.plugins.global_build_stats.rententionstrategies.RetentionStrategy;
import hudson.plugins.global_build_stats.util.CollectionsUtil;
import hudson.util.DataSetBuilder;
import hudson.util.ShiftedCategoryAxis;
Expand Down Expand Up @@ -53,12 +53,12 @@ public GlobalBuildStatsBusiness(GlobalBuildStatsPlugin _plugin){
* Records the result of a build.
*/
public void onJobCompleted(final AbstractBuild build) {
for(RetentionStragegy s : plugin.getRetentionStrategies()){
for(RetentionStrategy s : plugin.getRetentionStrategies()){
s.onBuildCompleted(build, pluginSaver);
}
this.pluginSaver.updatePlugin(new GlobalBuildStatsPluginSaver.BeforeSavePluginCallback(){
@Override
public void changePluginStateBeforeSavingIt(GlobalBuildStatsPlugin plugin) {

plugin.getJobBuildResultsSharder().queueResultToAdd(JobBuildResultFactory.INSTANCE.createJobBuildResult(build));
}
});
Expand Down Expand Up @@ -92,6 +92,7 @@ private int searchBuildStatConfigIndexById(String id){
public void recordBuildInfos() throws IOException {

this.pluginSaver.updatePlugin(new GlobalBuildStatsPluginSaver.BeforeSavePluginCallback(){
@Override
public void changePluginStateBeforeSavingIt(GlobalBuildStatsPlugin plugin) {

List<JobBuildResult> jobBuildResultsRead = new ArrayList<JobBuildResult>();
Expand Down Expand Up @@ -121,7 +122,7 @@ public void handleItem(List<JobBuildResult> results, TopLevelItem item){

public JFreeChart createChart(BuildStatConfiguration config){
List<AbstractBuildStatChartDimension> dimensions = createDataSetBuilder(config);
return createChart(config, dimensions, config.getBuildStatTitle());
return createChart(dimensions, config.getBuildStatTitle());
}

public List<JobBuildSearchResult> searchBuilds(BuildHistorySearchCriteria searchCriteria){
Expand All @@ -145,16 +146,15 @@ public void updateBuildStatConfiguration(final String oldBuildStatId,
final boolean regenerateId) throws IOException {

this.pluginSaver.updatePlugin(new GlobalBuildStatsPluginSaver.BeforeSavePluginCallback(){
@Override
public void changePluginStateBeforeSavingIt(GlobalBuildStatsPlugin plugin) {

if(regenerateId){
String newBuildStatId = ModelIdGenerator.INSTANCE.generateIdForClass(BuildStatConfiguration.class);
config.setId(newBuildStatId);
}

int buildStatIndex = searchBuildStatConfigIndexById(oldBuildStatId);

plugin.getBuildStatConfigs().addAll(plugin.getBuildStatConfigs());
plugin.getBuildStatConfigs().set(buildStatIndex, config);
}

Expand Down Expand Up @@ -235,7 +235,7 @@ public static String escapeAntiSlashes(String value){
}
}

private JFreeChart createChart(final BuildStatConfiguration config, List<AbstractBuildStatChartDimension> dimensions, String title) {
private JFreeChart createChart(List<AbstractBuildStatChartDimension> dimensions, String title) {

final JFreeChart chart = ChartFactory.createStackedAreaChart(title, null, "",
new DataSetBuilder<String, DateRange>().build(), PlotOrientation.VERTICAL, true, true, false);
Expand Down Expand Up @@ -300,12 +300,12 @@ private static LegendItemCollection sortLegendItems(LegendItemCollection legendI
return sortedLegendItems;
}

public void updateRetentionStrategies(final List<RetentionStragegy> selectedStrategies) {
public void updateRetentionStrategies(final List<RetentionStrategy> selectedStrategies) {
this.pluginSaver.updatePlugin(new GlobalBuildStatsPluginSaver.BeforeSavePluginCallback(){
@Override
public void changePluginStateBeforeSavingIt(GlobalBuildStatsPlugin plugin) {
plugin.setRetentionStrategies(selectedStrategies);
for(RetentionStragegy s : selectedStrategies){
for(RetentionStrategy s : selectedStrategies){
s.strategyActivated(pluginSaver);
}
}
Expand Down Expand Up @@ -395,7 +395,7 @@ public void reloadPlugin() {
this.pluginSaver.reloadPlugin();

// If job results are empty, let's perform an initialization !
if(this.plugin.getJobBuildResults()==null || this.plugin.getJobBuildResults().size() == 0){
if(this.plugin.getJobBuildResults()==null || this.plugin.getJobBuildResults().isEmpty()){
try {
this.recordBuildInfos();
} catch (IOException e) {
Expand All @@ -405,7 +405,7 @@ public void reloadPlugin() {
}

public void onBuildDeleted(AbstractBuild build) {
for(RetentionStragegy s : plugin.getRetentionStrategies()){
for(RetentionStrategy s : plugin.getRetentionStrategies()){
s.onBuildDeleted(build, pluginSaver);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import hudson.plugins.global_build_stats.rententionstrategies.DiscardResultsOlderThanDays;
import hudson.plugins.global_build_stats.rententionstrategies.DoNotKeepBuildResultWhenDiscarded;
import hudson.plugins.global_build_stats.rententionstrategies.KeepExistingJobResultsOnly;
import hudson.plugins.global_build_stats.rententionstrategies.RetentionStragegy;
import hudson.plugins.global_build_stats.rententionstrategies.RetentionStrategy;
import hudson.plugins.global_build_stats.xstream.GlobalBuildStatsXStreamConverter;
import hudson.security.Permission;
import hudson.util.DaemonThreadFactory;
Expand Down Expand Up @@ -119,7 +119,7 @@ public void reloadPlugin() {
*/
public void updatePlugin(BeforeSavePluginCallback callback){
final List<BuildStatConfiguration> configsBeforeStateChange = new ArrayList<BuildStatConfiguration>(plugin.getBuildStatConfigs());
final List<RetentionStragegy> retentionStrategiesBeforeStateChange = new ArrayList<RetentionStragegy>(plugin.getRetentionStrategies());
final List<RetentionStrategy> retentionStrategiesBeforeStateChange = new ArrayList<RetentionStrategy>(plugin.getRetentionStrategies());
callback.changePluginStateBeforeSavingIt(plugin);
LOGGER.log(Level.FINER, "Global build stats state update queued !");

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -137,4 +137,19 @@ public String getLauncherFilter() {
public void setShownBuildResults(short shownBuildResults) {
this.shownBuildResults = shownBuildResults;
}

@Override
public boolean equals(Object o) {
if (o == null) return false;
if (o == this) return true;

BuildSearchCriteria bsc = (BuildSearchCriteria) o;

if (!jobFilter.equals(bsc.jobFilter)) return false;
if (!nodeFilter.equals(bsc.nodeFilter)) return false;
if (!launcherFilter.equals(bsc.launcherFilter)) return false;
if (shownBuildResults!=bsc.shownBuildResults) return false;

return true;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -265,7 +265,15 @@ public boolean equals(Object o) {
BuildStatConfiguration that = (BuildStatConfiguration) o;

if (!id.equals(that.id)) return false;

if (!buildStatTitle.equals(that.buildStatTitle)) return false;
if (buildStatWidth != that.buildStatWidth) return false;
if (buildStatHeight != that.buildStatHeight) return false;
if (historicLength != that.historicLength) return false;
if (!historicScale.equals(that.historicScale)) return false;
if (!yAxisChartType.equals(that.yAxisChartType)) return false;
if (!dimensionsShown.equals(that.dimensionsShown)) return false;
if (!buildFilters.equals(that.buildFilters)) return false;

return true;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
public class JobBuildResult implements Serializable {

private static final long serialVersionUID = -4697202185011561179L;
public static long EMPTY_DURATION = -1;
public static final long EMPTY_DURATION = -1;
public static final String EMPTY_NODE_NAME = null;
public static final String EMPTY_USER_NAME = null;
public static final String MASTER_NODE_NAME = "master";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
/**
* @author fcamblor
*/
public class DiscardResultsOlderThanDays extends RetentionStragegy<DiscardResultsOlderThanDays>
public class DiscardResultsOlderThanDays extends RetentionStrategy<DiscardResultsOlderThanDays>
implements ParameterizedStrategy<DiscardResultsOlderThanDays>, BuildCompletedListener {

private static final long PURGE_FREQUENCY = 1000L * 3600L * 24L; // Let's purge job build results once a day
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
/**
* @author fcamblor
*/
public class DoNotKeepBuildResultWhenDiscarded extends RetentionStragegy<DoNotKeepBuildResultWhenDiscarded>
public class DoNotKeepBuildResultWhenDiscarded extends RetentionStrategy<DoNotKeepBuildResultWhenDiscarded>
implements BuildDeletedListener {

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
/**
* @author fcamblor
*/
public class KeepExistingJobResultsOnly extends RetentionStragegy<KeepExistingJobResultsOnly> {
public class KeepExistingJobResultsOnly extends RetentionStrategy<KeepExistingJobResultsOnly> {
@Override
public String getConfigPage() {
return "keepExistingJobResultsOnly.jelly";
Expand Down
Loading

0 comments on commit 9d39683

Please sign in to comment.