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.WidgetSelectOptions; 026 027/** 028 * @author Anahide Tchertchian 029 * @since 5.4.2 030 */ 031public class WidgetSelectOptionsImpl implements WidgetSelectOptions { 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 protected String ordering; 050 051 protected Boolean caseSensitive; 052 053 // needed by GWT serialization 054 protected WidgetSelectOptionsImpl() { 055 super(); 056 } 057 058 public WidgetSelectOptionsImpl(Serializable value, String var, String itemLabel, String itemValue) { 059 this(value, var, itemLabel, itemValue, null, null); 060 } 061 062 public WidgetSelectOptionsImpl(Serializable value, String var, String itemLabel, String itemValue, 063 Serializable itemDisabled, Serializable itemRendered) { 064 this(value, var, itemLabel, itemValue, itemDisabled, itemRendered, null, null); 065 } 066 067 public WidgetSelectOptionsImpl(Serializable value, String var, String itemLabel, String itemValue, 068 Serializable itemDisabled, Serializable itemRendered, String ordering, Boolean caseSensitive) { 069 super(); 070 this.value = value; 071 this.var = var; 072 this.itemLabel = itemLabel; 073 this.itemValue = itemValue; 074 this.itemDisabled = itemDisabled; 075 this.itemRendered = itemRendered; 076 this.ordering = ordering; 077 this.caseSensitive = caseSensitive; 078 } 079 080 @Override 081 public Serializable getValue() { 082 return value; 083 } 084 085 @Override 086 public String getVar() { 087 return var; 088 } 089 090 @Override 091 public String getItemLabel() { 092 return itemLabel; 093 } 094 095 @Override 096 public String getItemLabel(String locale) { 097 return labels.get(locale); 098 } 099 100 @Override 101 public Map<String, String> getItemLabels() { 102 return labels; 103 } 104 105 public void setItemLabels(Map<String, String> labels) { 106 this.labels = labels; 107 } 108 109 @Override 110 public String getItemValue() { 111 return itemValue; 112 } 113 114 @Override 115 public Serializable getItemDisabled() { 116 return itemDisabled; 117 } 118 119 @Override 120 public Serializable getItemRendered() { 121 return itemRendered; 122 } 123 124 @Override 125 public String getOrdering() { 126 return ordering; 127 } 128 129 @Override 130 public Boolean getCaseSensitive() { 131 return caseSensitive; 132 } 133 134 @Override 135 public String getTagConfigId() { 136 StringBuilder builder = new StringBuilder(); 137 builder.append(value).append(";"); 138 builder.append(var).append(";"); 139 builder.append(itemLabel).append(";"); 140 if (labels != null) { 141 builder.append(labels.toString()); 142 } 143 builder.append(";"); 144 builder.append(itemValue).append(";"); 145 if (itemDisabled != null) { 146 builder.append(itemDisabled.toString()); 147 } 148 builder.append(";"); 149 if (itemRendered != null) { 150 builder.append(itemRendered.toString()); 151 } 152 builder.append(";"); 153 builder.append(ordering).append(";"); 154 builder.append(caseSensitive).append(";"); 155 156 Integer intValue = Integer.valueOf(builder.toString().hashCode()); 157 return intValue.toString(); 158 } 159 160 @Override 161 public WidgetSelectOptions clone() { 162 WidgetSelectOptionsImpl clone = new WidgetSelectOptionsImpl(value, var, itemLabel, itemValue, itemDisabled, 163 itemRendered, ordering, caseSensitive); 164 if (labels != null) { 165 clone.setItemLabels(new HashMap<>(labels)); 166 } 167 return clone; 168 } 169 170 /** 171 * @since 7.2 172 */ 173 @Override 174 public boolean equals(Object obj) { 175 if (!(obj instanceof WidgetSelectOptionsImpl)) { 176 return false; 177 } 178 if (obj == this) { 179 return true; 180 } 181 WidgetSelectOptionsImpl w = (WidgetSelectOptionsImpl) obj; 182 return new EqualsBuilder().append(value, w.value).append(var, w.var).append(itemLabel, w.itemLabel).append( 183 labels, w.labels).append(itemValue, w.itemValue).append(itemDisabled, w.itemDisabled).append( 184 itemRendered, w.itemRendered).append(ordering, w.ordering).isEquals(); 185 } 186}