1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package org.efaps.admin.datamodel.ui;
22
23 import java.text.Collator;
24 import java.util.List;
25
26 import org.apache.commons.lang3.StringEscapeUtils;
27 import org.efaps.admin.dbproperty.DBProperties;
28 import org.efaps.admin.ui.AbstractUserInterfaceObject.TargetMode;
29 import org.efaps.admin.ui.field.Field;
30 import org.efaps.db.Context;
31 import org.efaps.util.EFapsException;
32 import org.efaps.util.cache.CacheReloadException;
33
34
35
36
37
38
39
40
41 public class StringUI
42 extends AbstractUI
43 {
44
45
46
47
48 private static final long serialVersionUID = 1L;
49
50
51
52
53 @Override
54 public String getReadOnlyHtml(final FieldValue _fieldValue)
55 {
56 final StringBuilder ret = new StringBuilder();
57 final Field field = _fieldValue.getField();
58 final Object value = _fieldValue.getValue();
59
60 if (value instanceof List<?>) {
61 final List<?> values = (List<?>) value;
62 boolean first = true;
63 for (final Object obj : values) {
64 final String tmp = obj.toString();
65 if (tmp != null) {
66 if (first) {
67 first = false;
68 } else {
69 ret.append("<br/>");
70 }
71 ret.append(StringEscapeUtils.escapeHtml4(tmp).replaceAll("\\n", "<br/>"));
72 }
73 }
74 } else {
75 final String tmp = value != null ? value.toString() : "";
76 if (tmp != null) {
77 ret.append("<span name=\"").append(field.getName()).append("\" ").append(UIInterface.EFAPSTMPTAG)
78 .append(">").append(StringEscapeUtils.escapeHtml4(tmp).replaceAll("\\n", "<br/>"))
79 .append("</span>");
80 }
81 }
82 return ret.toString();
83 }
84
85
86
87
88 @Override
89 public String getHiddenHtml(final FieldValue _fieldValue)
90 throws EFapsException
91 {
92 final StringBuilder ret = new StringBuilder();
93 final Field field = _fieldValue.getField();
94 final Object value = _fieldValue.getValue();
95 final String tmp = value != null ? value.toString() : "";
96
97 ret.append("<input type=\"hidden\" ").append(" name=\"").append(field.getName())
98 .append("\" value=\"").append(StringEscapeUtils.escapeHtml4(tmp)).append("\"")
99 .append(UIInterface.EFAPSTMPTAG).append("/>");
100
101 return ret.toString();
102 }
103
104
105
106
107 @Override
108 public String getEditHtml(final FieldValue _fieldValue)
109 {
110 final StringBuilder ret = new StringBuilder();
111 final Field field = _fieldValue.getField();
112 final Object value = _fieldValue.getValue();
113 if (_fieldValue.getTargetMode().equals(TargetMode.SEARCH)) {
114 final String tmp = value != null ? value.toString() : "*";
115 ret.append("<input type=\"text\"")
116 .append(" size=\"").append(field.getCols())
117 .append("\" name=\"").append(field.getName())
118 .append("\" value=\"").append(StringEscapeUtils.escapeHtml4(tmp)).append("\" />");
119 } else {
120 final String tmp = value != null ? value.toString() : "";
121 if (field.getRows() > 1) {
122 ret.append("<textarea type=\"text\"")
123 .append(" cols=\"").append(field.getCols())
124 .append("\" rows=\"").append(field.getRows())
125 .append("\" name=\"").append(field.getName()).append("\"")
126 .append(UIInterface.EFAPSTMPTAG).append("/>");
127 if (value != null) {
128 ret.append(StringEscapeUtils.escapeHtml4(tmp));
129 }
130 ret.append("</textarea>");
131 } else {
132 ret.append("<input type=\"text\" size=\"").append(field.getCols())
133 .append("\" name=\"").append(field.getName())
134 .append("\" value=\"").append(StringEscapeUtils.escapeHtml4(tmp))
135 .append("\"").append(UIInterface.EFAPSTMPTAG).append("/>");
136 }
137 }
138 return ret.toString();
139 }
140
141
142
143
144 @Override
145 public String getStringValue(final FieldValue _fieldValue)
146 throws EFapsException
147 {
148 return _fieldValue.getValue() == null ? "" : _fieldValue.getValue().toString();
149 }
150
151
152
153
154 @Override
155 public int compare(final FieldValue _fieldValue,
156 final FieldValue _fieldValue2)
157 {
158 final String value = _fieldValue.getValue().toString();
159 final String value2 = _fieldValue2.getValue().toString();
160 Collator collator;
161 try {
162 collator = Collator.getInstance(Context.getThreadContext().getLocale());
163 } catch (final EFapsException e) {
164
165 collator = Collator.getInstance();
166 }
167 collator.setStrength(Collator.PRIMARY);
168 return collator.compare(value, value2);
169 }
170
171
172
173
174 @Override
175 public String validateValue(final UIValue _value)
176 throws CacheReloadException
177 {
178 String ret = null;
179 if (_value.getAttribute() != null && _value.getDbValue() != null) {
180 if (_value.getAttribute().getSize() > 0
181 && String.valueOf(_value.getDbValue()).length() > _value.getAttribute().getSize()) {
182 ret = DBProperties.getProperty(StringUI.class.getName() + ".InvalidValue") + " "
183 + _value.getAttribute().getSize();
184 }
185 }
186 return ret;
187 }
188
189
190
191
192 @Override
193 public Object getObject4Compare(final FieldValue _fieldValue)
194 throws EFapsException
195 {
196 return _fieldValue.getValue();
197 }
198 }