001
014
015 package com.liferay.portal.kernel.template;
016
017 import com.liferay.portal.kernel.util.ArrayUtil;
018 import com.liferay.portal.kernel.util.TextFormatter;
019 import com.liferay.portal.kernel.util.UniqueList;
020
021 import java.util.Collection;
022
023
026 public class TemplateVariableGroup {
027
028 public TemplateVariableGroup(String label) {
029 _label = label;
030 }
031
032 public TemplateVariableGroup(String label, String[] restrictedVariables) {
033 this(label);
034
035 _restrictedVariables = restrictedVariables;
036 }
037
038 public TemplateVariableDefinition addCollectionVariable(
039 String collectionLabel, Class<?> collectionClazz, String collectionName,
040 String itemLabel, Class<?> itemClazz, String itemName,
041 String itemAccessor) {
042
043 if (isRestrictedVariable(collectionName)) {
044 return null;
045 }
046
047 TemplateVariableDefinition itemTemplateVariableDefinition =
048 new TemplateVariableDefinition(
049 itemLabel, itemClazz, itemName, itemAccessor);
050
051 TemplateVariableDefinition collectionTemplateVariableDefinition =
052 new TemplateVariableDefinition(
053 collectionLabel, collectionClazz, collectionName,
054 itemTemplateVariableDefinition);
055
056 _templateVariableDefinitions.add(collectionTemplateVariableDefinition);
057
058 return collectionTemplateVariableDefinition;
059 }
060
061 public TemplateVariableDefinition addFieldVariable(
062 String label, Class<?> clazz, String variableName, String help,
063 String dataType, boolean repeatable,
064 TemplateVariableCodeHandler templateVariableCodeHandler) {
065
066 if (isRestrictedVariable(variableName)) {
067 return null;
068 }
069
070 TemplateVariableDefinition templateVariableDefinition =
071 new TemplateVariableDefinition(
072 label, clazz, dataType, variableName, null, help, repeatable,
073 templateVariableCodeHandler);
074
075 _templateVariableDefinitions.add(templateVariableDefinition);
076
077 return templateVariableDefinition;
078 }
079
080 public void addServiceLocatorVariables(Class<?>... serviceClasses) {
081 if (isRestrictedVariable("serviceLocator")) {
082 return;
083 }
084
085 for (Class<?> serviceClass : serviceClasses) {
086 String label = TextFormatter.format(
087 serviceClass.getSimpleName(), TextFormatter.I);
088
089 label = TextFormatter.format(label, TextFormatter.K);
090
091 TemplateVariableDefinition templateVariableDefinition =
092 new TemplateVariableDefinition(
093 label, serviceClass, "service-locator",
094 serviceClass.getCanonicalName(), null, label + "-help",
095 false, null);
096
097 _templateVariableDefinitions.add(templateVariableDefinition);
098 }
099 }
100
101 public TemplateVariableDefinition addVariable(
102 String label, Class<?> clazz, String name) {
103
104 return addVariable(label, clazz, name, null);
105 }
106
107 public TemplateVariableDefinition addVariable(
108 String label, Class<?> clazz, String name, String accessor) {
109
110 if (isRestrictedVariable(name)) {
111 return null;
112 }
113
114 TemplateVariableDefinition templateVariableDefinition =
115 new TemplateVariableDefinition(label, clazz, name, accessor);
116
117 _templateVariableDefinitions.add(templateVariableDefinition);
118
119 return templateVariableDefinition;
120 }
121
122 public void empty() {
123 _templateVariableDefinitions.clear();
124 }
125
126 public String getLabel() {
127 return _label;
128 }
129
130 public Collection<TemplateVariableDefinition>
131 getTemplateVariableDefinitions() {
132
133 return _templateVariableDefinitions;
134 }
135
136 public boolean isAutocompleteEnabled() {
137 return _autocompleteEnabled;
138 }
139
140 public boolean isEmpty() {
141 return _templateVariableDefinitions.isEmpty();
142 }
143
144 public void setAutocompleteEnabled(boolean autocompleteEnabled) {
145 _autocompleteEnabled = autocompleteEnabled;
146 }
147
148 public void setLabel(String label) {
149 _label = label;
150 }
151
152 protected boolean isRestrictedVariable(String variableName) {
153 return ArrayUtil.contains(_restrictedVariables, variableName);
154 }
155
156 private boolean _autocompleteEnabled = true;
157 private String _label;
158 private String[] _restrictedVariables;
159 private Collection<TemplateVariableDefinition>
160 _templateVariableDefinitions =
161 new UniqueList<TemplateVariableDefinition>();
162
163 }