org.dashbuilder.displayer.ColumnSettings Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of dashbuilder-displayer-api Show documentation
Show all versions of dashbuilder-displayer-api Show documentation
Dashbuilder Displayer API shared between client and server.
/*
* Copyright 2015 Red Hat, Inc. and/or its affiliates.
*
* 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 org.dashbuilder.displayer;
import org.dashbuilder.dataset.ColumnType;
import org.dashbuilder.dataset.DataColumn;
import org.dashbuilder.dataset.group.ColumnGroup;
import org.dashbuilder.dataset.group.DateIntervalType;
import org.dashbuilder.dataset.group.GroupStrategy;
import org.jboss.errai.common.client.api.annotations.Portable;
@Portable
public class ColumnSettings {
public static final String NUMBER_PATTERN = "#,##0.00";
public static final String EXPRESSION = "value";
public static final String DATE_PATTERN = "MMM dd, yyyy HH:mm";
public static final String DATE_YEAR = "yyyy";
public static final String DATE_MONTH = "MMM yyyy";
public static final String DATE_QUARTER = "MMM yyyy";
public static final String DATE_DAY = "dd MMM";
public static final String DATE_WEEK = "'Week' dd MMM";
public static final String DATE_HOUR = "HH'h'";
public static final String DATE_MINUTE = "mm'm'";
public static final String DATE_SECOND = "ss's'";
public static String getFixedExpression(DateIntervalType type) {
if (DateIntervalType.SECOND.equals(type)) {
return "value + \"\\\"\"";
}
if (DateIntervalType.MINUTE.equals(type)) {
return "value + \"'\"";
}
if (DateIntervalType.HOUR.equals(type)) {
return "value + \"h\"";
}
if (DateIntervalType.QUARTER.equals(type)) {
return "\"Q\" + value";
}
return "value";
}
public static String getDatePattern(DateIntervalType type) {
if (type.getIndex() <= DateIntervalType.SECOND.getIndex()) {
return DATE_SECOND;
}
if (DateIntervalType.MINUTE.equals(type)) {
return DATE_MINUTE;
}
if (DateIntervalType.HOUR.equals(type)) {
return DATE_HOUR;
}
if (DateIntervalType.DAY.equals(type)) {
return DATE_DAY;
}
if (DateIntervalType.WEEK.equals(type)) {
return DATE_WEEK;
}
if (DateIntervalType.MONTH.equals(type)) {
return DATE_MONTH;
}
if (DateIntervalType.QUARTER.equals(type)) {
return DATE_QUARTER;
}
return DATE_YEAR;
}
public static ColumnSettings cloneWithDefaults(ColumnSettings columnSettings, DataColumn column) {
ColumnSettings clone = columnSettings == null ? new ColumnSettings(column.getId()) : columnSettings.cloneInstance();
ColumnType columnType = column.getColumnType();
ColumnGroup columnGroup = column.getColumnGroup();
DateIntervalType intervalType = DateIntervalType.getByName(column.getIntervalType());
if (clone.columnName == null) {
clone.columnName = column.getId();
}
if (clone.emptyTemplate == null) {
clone.emptyTemplate = "---";
}
if (clone.valuePattern == null) {
if (intervalType != null && columnGroup.getStrategy().equals(GroupStrategy.DYNAMIC)) {
clone.valuePattern = getDatePattern(intervalType);
}
else if (ColumnType.DATE.equals(columnType)) {
clone.valuePattern = DATE_PATTERN;
}
else if (ColumnType.NUMBER.equals(columnType)) {
clone.valuePattern = NUMBER_PATTERN;
}
}
if (clone.valueExpression == null) {
if (intervalType != null && columnGroup.getStrategy().equals(GroupStrategy.FIXED)) {
clone.valueExpression = getFixedExpression(intervalType);
}
else if (!ColumnType.DATE.equals(columnType)) {
clone.valueExpression = EXPRESSION;
}
}
return clone;
}
protected String columnId;
protected String columnName;
protected String valueExpression;
protected String emptyTemplate;
protected String valuePattern;
public ColumnSettings() {
}
public ColumnSettings(String columnId) {
this.columnId = columnId;
}
public String getColumnId() {
return columnId;
}
public void setColumnId(String columnId) {
this.columnId = columnId;
}
public String getColumnName() {
return columnName;
}
public void setColumnName(String name) {
this.columnName = name;
}
public String getValueExpression() {
return valueExpression;
}
public void setValueExpression(String valueExpression) {
this.valueExpression = valueExpression;
}
public String getValuePattern() {
return valuePattern;
}
public void setValuePattern(String pattern) {
this.valuePattern = pattern;
}
public String getEmptyTemplate() {
return emptyTemplate;
}
public void setEmptyTemplate(String emptyTemplate) {
this.emptyTemplate = emptyTemplate;
}
public String toString() {
StringBuilder out = new StringBuilder();
if (columnId != null) out.append(columnId).append(" ");
if (columnName != null) out.append(columnName).append(" ");
if (valuePattern != null) out.append(valuePattern).append(" ");
if (valueExpression != null) out.append(valueExpression).append(" ");
if (emptyTemplate != null) out.append(emptyTemplate).append(" ");
return out.toString();
}
public ColumnSettings cloneInstance() {
ColumnSettings other = new ColumnSettings();
other.columnId = columnId;
other.columnName = columnName;
other.valuePattern = valuePattern;
other.valueExpression = valueExpression;
other.emptyTemplate = emptyTemplate;
return other;
}
public boolean equals(Object obj) {
try {
ColumnSettings other = (ColumnSettings) obj;
if (other == null) {
return false;
}
if (columnId != null && !columnId.equals(other.columnId)) {
return false;
}
if (columnName != null && !columnName.equals(other.columnName)) {
return false;
}
if (valuePattern != null && !valuePattern.equals(other.valuePattern)) {
return false;
}
if (valueExpression != null && !valueExpression.equals(other.valueExpression)) {
return false;
}
if (emptyTemplate != null && !emptyTemplate.equals(other.emptyTemplate)) {
return false;
}
return true;
} catch (ClassCastException e) {
return false;
}
}
}