summaryrefslogtreecommitdiffstats
path: root/src/main/java/com/gitblit/wicket/charting/SecureChartDataEncoding.java
diff options
context:
space:
mode:
authorJames Moger <james.moger@gitblit.com>2013-07-03 10:01:49 -0400
committerJames Moger <james.moger@gitblit.com>2013-07-03 10:01:49 -0400
commitcf2ef78a8acd56363991c234830a7fe3f9d63651 (patch)
tree55b99b224420ff5d18aaadc30f6a9060b4d1f263 /src/main/java/com/gitblit/wicket/charting/SecureChartDataEncoding.java
parent49b480a6b5bdb7e60838896495a97869ef401ffe (diff)
downloadgitblit-cf2ef78a8acd56363991c234830a7fe3f9d63651.tar.gz
gitblit-cf2ef78a8acd56363991c234830a7fe3f9d63651.zip
Retrieve summary and metric charts over https (issue-61)
Diffstat (limited to 'src/main/java/com/gitblit/wicket/charting/SecureChartDataEncoding.java')
-rw-r--r--src/main/java/com/gitblit/wicket/charting/SecureChartDataEncoding.java99
1 files changed, 99 insertions, 0 deletions
diff --git a/src/main/java/com/gitblit/wicket/charting/SecureChartDataEncoding.java b/src/main/java/com/gitblit/wicket/charting/SecureChartDataEncoding.java
new file mode 100644
index 00000000..90a05964
--- /dev/null
+++ b/src/main/java/com/gitblit/wicket/charting/SecureChartDataEncoding.java
@@ -0,0 +1,99 @@
+/*
+ * Copyright 2007 Daniel Spiewak.
+ * Copyright 2013 gitblit.com.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.gitblit.wicket.charting;
+
+/**
+ * This class is a pristine fork of org.wicketstuff.googlecharts.ChartDataEncoding
+ * to bring the package-protected convert methods to SecureChart.
+ *
+ * @author Daniel Spiewak
+ */
+public enum SecureChartDataEncoding {
+
+ SIMPLE("s", "", ",") {
+
+ CharSequence convert(double value, double max) {
+ if (value < 0) {
+ return "_";
+ }
+
+ value = Math.round((CHARS.length() - 1) * value / max);
+
+ if (value > CHARS.length() - 1) {
+ throw new IllegalArgumentException(value + " is out of range for SIMPLE encoding");
+ }
+
+ return Character.toString(CHARS.charAt((int) value));
+ }
+ },
+ TEXT("t", ",", "|") {
+
+ CharSequence convert(double value, double max) {
+ if (value < 0) {
+ value = -1;
+ }
+
+ if (value > 100) {
+ throw new IllegalArgumentException(value + " is out of range for TEXT encoding");
+ }
+
+ return Double.toString(value);
+ }
+ },
+ EXTENDED("e", "", ",") {
+
+ CharSequence convert(double value, double max) {
+ if (value < 0) {
+ return "__";
+ }
+
+ value = Math.round(value);
+
+ if (value > (EXT_CHARS.length() - 1) * (EXT_CHARS.length() - 1)) {
+ throw new IllegalArgumentException(value + " is out of range for EXTENDED encoding");
+ }
+
+ int rem = (int) (value % EXT_CHARS.length());
+ int exp = (int) (value / EXT_CHARS.length());
+
+ return new StringBuilder().append(EXT_CHARS.charAt(exp)).append(EXT_CHARS.charAt(rem));
+ }
+ };
+ private static final String CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
+ private static final String EXT_CHARS = CHARS + "-_.";
+ private final String rendering, valueSeparator, setSeparator;
+
+ private SecureChartDataEncoding(String rendering, String valueSeparator, String setSeparator) {
+ this.rendering = rendering;
+ this.valueSeparator = valueSeparator;
+ this.setSeparator = setSeparator;
+ }
+
+ public String getRendering() {
+ return rendering;
+ }
+
+ public String getValueSeparator() {
+ return valueSeparator;
+ }
+
+ public String getSetSeparator() {
+ return setSeparator;
+ }
+
+ abstract CharSequence convert(double value, double max);
+}