diff options
author | James Moger <james.moger@gitblit.com> | 2012-10-30 17:01:57 -0400 |
---|---|---|
committer | James Moger <james.moger@gitblit.com> | 2012-10-30 17:01:57 -0400 |
commit | e26d9338ddc5f0f0440947e60013a57b82043783 (patch) | |
tree | 753d7620585655734292ee66adc7f44b550d20be /src | |
parent | f5cbd026002eed8209368e9071726dfb67183e81 (diff) | |
download | gitblit-e26d9338ddc5f0f0440947e60013a57b82043783.tar.gz gitblit-e26d9338ddc5f0f0440947e60013a57b82043783.zip |
Refactor GC period into an integer for simpler translations
Also hooked-up GC settings in the Manager.
Diffstat (limited to 'src')
-rw-r--r-- | src/com/gitblit/GCExecutor.java | 4 | ||||
-rw-r--r-- | src/com/gitblit/GitBlit.java | 25 | ||||
-rw-r--r-- | src/com/gitblit/client/EditRepositoryDialog.java | 15 | ||||
-rw-r--r-- | src/com/gitblit/models/RepositoryModel.java | 2 | ||||
-rw-r--r-- | src/com/gitblit/wicket/pages/EditRepositoryPage.java | 30 |
5 files changed, 67 insertions, 9 deletions
diff --git a/src/com/gitblit/GCExecutor.java b/src/com/gitblit/GCExecutor.java index c5fe43b4..243cbb92 100644 --- a/src/com/gitblit/GCExecutor.java +++ b/src/com/gitblit/GCExecutor.java @@ -33,7 +33,6 @@ import org.slf4j.LoggerFactory; import com.gitblit.models.RepositoryModel;
import com.gitblit.utils.FileUtils;
-import com.gitblit.utils.TimeUtils;
/**
* The GC executor handles periodic garbage collection in repositories.
@@ -162,14 +161,13 @@ public class GCExecutor implements Runnable { RepoStatistics stats = gc.getStatistics();
// determine if this is a scheduled GC
- int gcPeriodInDays = TimeUtils.convertFrequencyToMinutes(model.gcPeriod)/(60*24);
Calendar cal = Calendar.getInstance();
cal.setTime(model.lastGC);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
- cal.add(Calendar.DATE, gcPeriodInDays);
+ cal.add(Calendar.DATE, model.gcPeriod);
Date gcDate = cal.getTime();
boolean shouldCollectGarbage = now.after(gcDate);
diff --git a/src/com/gitblit/GitBlit.java b/src/com/gitblit/GitBlit.java index 6e587caa..e7b7bb9b 100644 --- a/src/com/gitblit/GitBlit.java +++ b/src/com/gitblit/GitBlit.java @@ -1445,7 +1445,7 @@ public class GitBlit implements ServletContextListener { Constants.CONFIG_GITBLIT, null, "federationSets")));
model.isFederated = getConfig(config, "isFederated", false);
model.gcThreshold = getConfig(config, "gcThreshold", settings.getString(Keys.git.defaultGarbageCollectionThreshold, "500KB"));
- model.gcPeriod = getConfig(config, "gcPeriod", settings.getString(Keys.git.defaultGarbageCollectionPeriod, "7 days"));
+ model.gcPeriod = getConfig(config, "gcPeriod", settings.getInteger(Keys.git.defaultGarbageCollectionPeriod, 7));
try {
model.lastGC = new SimpleDateFormat(Constants.ISO8601).parse(getConfig(config, "lastGC", "1970-01-01'T'00:00:00Z"));
} catch (Exception e) {
@@ -1730,6 +1730,27 @@ public class GitBlit implements ServletContextListener { private boolean getConfig(StoredConfig config, String field, boolean defaultValue) {
return config.getBoolean(Constants.CONFIG_GITBLIT, field, defaultValue);
}
+
+ /**
+ * Returns the gitblit string value for the specified key. If key is not
+ * set, returns defaultValue.
+ *
+ * @param config
+ * @param field
+ * @param defaultValue
+ * @return field value or defaultValue
+ */
+ private int getConfig(StoredConfig config, String field, int defaultValue) {
+ String value = config.getString(Constants.CONFIG_GITBLIT, null, field);
+ if (StringUtils.isEmpty(value)) {
+ return defaultValue;
+ }
+ try {
+ return Integer.parseInt(value);
+ } catch (Exception e) {
+ }
+ return defaultValue;
+ }
/**
* Creates/updates the repository model keyed by reopsitoryName. Saves all
@@ -1896,7 +1917,7 @@ public class GitBlit implements ServletContextListener { repository.federationStrategy.name());
config.setBoolean(Constants.CONFIG_GITBLIT, null, "isFederated", repository.isFederated);
config.setString(Constants.CONFIG_GITBLIT, null, "gcThreshold", repository.gcThreshold);
- config.setString(Constants.CONFIG_GITBLIT, null, "gcPeriod", repository.gcPeriod);
+ config.setInt(Constants.CONFIG_GITBLIT, null, "gcPeriod", repository.gcPeriod);
if (repository.lastGC != null) {
config.setString(Constants.CONFIG_GITBLIT, null, "lastGC", new SimpleDateFormat(Constants.ISO8601).format(repository.lastGC));
}
diff --git a/src/com/gitblit/client/EditRepositoryDialog.java b/src/com/gitblit/client/EditRepositoryDialog.java index 06621c21..d91d18dd 100644 --- a/src/com/gitblit/client/EditRepositoryDialog.java +++ b/src/com/gitblit/client/EditRepositoryDialog.java @@ -120,6 +120,10 @@ public class EditRepositoryDialog extends JDialog { private JComboBox ownerField;
private JComboBox headRefField;
+
+ private JComboBox gcPeriod;
+
+ private JTextField gcThreshold;
private RegistrantPermissionsPanel usersPalette;
@@ -193,6 +197,13 @@ public class EditRepositoryDialog extends JDialog { anRepository.availableRefs.toArray());
headRefField.setSelectedItem(anRepository.HEAD);
}
+
+ Integer [] gcPeriods = { 1, 2, 3, 4, 5, 7, 10, 14 };
+ gcPeriod = new JComboBox(gcPeriods);
+ gcPeriod.setSelectedItem(anRepository.gcPeriod);
+
+ gcThreshold = new JTextField(8);
+ gcThreshold.setText(anRepository.gcThreshold);
ownerField = new JComboBox();
@@ -288,6 +299,8 @@ public class EditRepositoryDialog extends JDialog { .add(newFieldPanel(Translation.get("gb.origin"), originField));
fieldsPanel.add(newFieldPanel(Translation.get("gb.headRef"), headRefField));
fieldsPanel.add(newFieldPanel(Translation.get("gb.owner"), ownerField));
+ fieldsPanel.add(newFieldPanel(Translation.get("gb.gcPeriod"), gcPeriod));
+ fieldsPanel.add(newFieldPanel(Translation.get("gb.gcThreshold"), gcThreshold));
fieldsPanel.add(newFieldPanel(Translation.get("gb.enableTickets"),
useTickets));
@@ -534,6 +547,8 @@ public class EditRepositoryDialog extends JDialog { : ownerField.getSelectedItem().toString();
repository.HEAD = headRefField.getSelectedItem() == null ? null
: headRefField.getSelectedItem().toString();
+ repository.gcPeriod = (Integer) gcPeriod.getSelectedItem();
+ repository.gcThreshold = gcThreshold.getText();
repository.useTickets = useTickets.isSelected();
repository.useDocs = useDocs.isSelected();
repository.showRemoteBranches = showRemoteBranches.isSelected();
diff --git a/src/com/gitblit/models/RepositoryModel.java b/src/com/gitblit/models/RepositoryModel.java index 23ce9e3b..ed9e7188 100644 --- a/src/com/gitblit/models/RepositoryModel.java +++ b/src/com/gitblit/models/RepositoryModel.java @@ -77,7 +77,7 @@ public class RepositoryModel implements Serializable, Comparable<RepositoryModel public String originRepository;
public boolean verifyCommitter;
public String gcThreshold;
- public String gcPeriod;
+ public int gcPeriod;
public transient boolean isCollectingGarbage;
public Date lastGC;
diff --git a/src/com/gitblit/wicket/pages/EditRepositoryPage.java b/src/com/gitblit/wicket/pages/EditRepositoryPage.java index 58fdf66b..f791cf60 100644 --- a/src/com/gitblit/wicket/pages/EditRepositoryPage.java +++ b/src/com/gitblit/wicket/pages/EditRepositoryPage.java @@ -389,9 +389,10 @@ public class EditRepositoryPage extends RootSubPage { }
form.add(new DropDownChoice<String>("HEAD", availableRefs).setEnabled(availableRefs.size() > 0));
- List<String> gcPeriods = Arrays.asList("1 day", "2 days", "3 days", "4 days", "5 days", "7 days", "10 days", "14 days");
- form.add(new DropDownChoice<String>("gcPeriod", gcPeriods));
- form.add(new TextField<String>("gcThreshold"));
+ boolean gcEnabled = GitBlit.getBoolean(Keys.git.enableGarbageCollection, false);
+ List<Integer> gcPeriods = Arrays.asList(1, 2, 3, 4, 5, 7, 10, 14 );
+ form.add(new DropDownChoice<Integer>("gcPeriod", gcPeriods, new GCPeriodRenderer()).setEnabled(gcEnabled));
+ form.add(new TextField<String>("gcThreshold").setEnabled(gcEnabled));
// federation strategies - remove ORIGIN choice if this repository has
// no origin.
@@ -619,4 +620,27 @@ public class EditRepositoryPage extends RootSubPage { return Integer.toString(index);
}
}
+
+ private class GCPeriodRenderer implements IChoiceRenderer<Integer> {
+
+ private static final long serialVersionUID = 1L;
+
+ public GCPeriodRenderer() {
+ }
+
+ @Override
+ public String getDisplayValue(Integer value) {
+ if (value == 1) {
+ return getString("gb.duration.oneDay");
+ } else {
+ return MessageFormat.format(getString("gb.duration.days"), value);
+ }
+ }
+
+ @Override
+ public String getIdValue(Integer value, int index) {
+ return Integer.toString(index);
+ }
+ }
+
}
|