001/* 002 * (C) Copyright 2010 Nuxeo SA (http://nuxeo.com/) and others. 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 * 016 * Contributors: 017 * Anahide Tchertchian 018 */ 019package org.nuxeo.ecm.platform.forms.layout.api.impl; 020 021import java.io.Serializable; 022import java.util.HashMap; 023import java.util.Map; 024 025import org.nuxeo.ecm.platform.forms.layout.api.WidgetSelectOption; 026 027/** 028 * @author Anahide Tchertchian 029 * @since 5.4.2 030 */ 031public class WidgetSelectOptionImpl implements WidgetSelectOption { 032 033 private static final long serialVersionUID = 1L; 034 035 protected Serializable value; 036 037 protected String var; 038 039 protected String itemLabel; 040 041 protected Map<String, String> labels; 042 043 protected String itemValue; 044 045 protected Serializable itemDisabled; 046 047 protected Serializable itemRendered; 048 049 // needed by GWT serialization 050 protected WidgetSelectOptionImpl() { 051 super(); 052 } 053 054 public WidgetSelectOptionImpl(String itemLabel, String itemValue) { 055 this(null, null, itemLabel, itemValue); 056 } 057 058 public WidgetSelectOptionImpl(Serializable value, String var, String itemLabel, String itemValue) { 059 this(value, var, itemLabel, itemValue, null, null); 060 } 061 062 public WidgetSelectOptionImpl(Serializable value, String var, String itemLabel, String itemValue, 063 Serializable itemDisabled, Serializable itemRendered) { 064 super(); 065 this.value = value; 066 this.var = var; 067 this.itemLabel = itemLabel; 068 this.itemValue = itemValue; 069 this.itemDisabled = itemDisabled; 070 this.itemRendered = itemRendered; 071 } 072 073 @Override 074 public Serializable getValue() { 075 return value; 076 } 077 078 @Override 079 public String getVar() { 080 return var; 081 } 082 083 @Override 084 public String getItemLabel() { 085 return itemLabel; 086 } 087 088 @Override 089 public String getItemLabel(String locale) { 090 return labels.get(locale); 091 } 092 093 @Override 094 public Map<String, String> getItemLabels() { 095 return labels; 096 } 097 098 public void setItemLabels(Map<String, String> labels) { 099 this.labels = labels; 100 } 101 102 @Override 103 public String getItemValue() { 104 return itemValue; 105 } 106 107 @Override 108 public Serializable getItemDisabled() { 109 return itemDisabled; 110 } 111 112 @Override 113 public Serializable getItemRendered() { 114 return itemRendered; 115 } 116 117 @Override 118 public String getTagConfigId() { 119 StringBuilder builder = new StringBuilder(); 120 builder.append(value).append(";"); 121 builder.append(var).append(";"); 122 builder.append(itemLabel).append(";"); 123 if (labels != null) { 124 builder.append(labels.toString()); 125 } 126 builder.append(";"); 127 builder.append(itemValue).append(";"); 128 if (itemDisabled != null) { 129 builder.append(itemDisabled.toString()); 130 } 131 builder.append(";"); 132 if (itemRendered != null) { 133 builder.append(itemRendered.toString()); 134 } 135 builder.append(";"); 136 137 Integer intValue = Integer.valueOf(builder.toString().hashCode()); 138 return intValue.toString(); 139 } 140 141 @Override 142 public WidgetSelectOption clone() { 143 WidgetSelectOptionImpl clone = new WidgetSelectOptionImpl(value, var, itemLabel, itemValue, itemDisabled, 144 itemRendered); 145 if (labels != null) { 146 clone.setItemLabels(new HashMap<>(labels)); 147 } 148 return clone; 149 } 150 151 /** 152 * @since 7.2 153 */ 154 @Override 155 public boolean equals(Object obj) { 156 if (!(obj instanceof WidgetSelectOptionImpl)) { 157 return false; 158 } 159 if (obj == this) { 160 return true; 161 } 162 WidgetSelectOptionImpl w = (WidgetSelectOptionImpl) obj; 163 return new EqualsBuilder().append(value, w.value).append(var, w.var).append(itemLabel, w.itemLabel).append( 164 labels, w.labels).append(itemValue, w.itemValue).append(itemDisabled, w.itemDisabled).append( 165 itemRendered, w.itemRendered).isEquals(); 166 } 167 168}