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