1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package tools.gsf.facade.mda;
18
19 import COM.FutureTense.Interfaces.ICS;
20 import com.fatwire.assetapi.data.AssetId;
21 import com.fatwire.mda.Dimension;
22 import com.fatwire.mda.DimensionException;
23 import com.fatwire.mda.DimensionFilterInstance;
24 import com.fatwire.mda.DimensionManager;
25 import com.fatwire.mda.DimensionSetInstance;
26 import com.fatwire.mda.DimensionableAssetManager;
27 import com.fatwire.system.Session;
28 import com.fatwire.system.SessionFactory;
29 import org.slf4j.Logger;
30 import org.slf4j.LoggerFactory;
31
32 import java.util.Collection;
33 import java.util.List;
34
35
36
37
38
39
40
41
42 public final class DimensionUtils {
43 private static final Logger _log = LoggerFactory.getLogger("tools.gsf.facade.mda.DefaultLocaleService");
44
45
46
47
48
49
50
51
52 public static DimensionableAssetManager getDAM(ICS ics) {
53 Session session = SessionFactory.getSession(ics);
54 return (DimensionableAssetManager) session.getManager(DimensionableAssetManager.class.getName());
55 }
56
57
58
59
60
61
62
63
64 public static DimensionManager getDM(ICS ics) {
65 Session session = SessionFactory.getSession(ics);
66 return (DimensionManager) session.getManager(DimensionManager.class.getName());
67 }
68
69
70
71
72
73
74
75
76
77 public static Dimension getLocaleAsDimension(ICS ics, AssetId id) {
78 return getLocaleAsDimension(getDAM(ics), id);
79
80 }
81
82
83
84
85
86
87
88
89
90 public static Dimension getLocaleAsDimension(DimensionableAssetManager dam, AssetId id) {
91 Collection<Dimension> dims = dam.getDimensionsForAsset(id);
92 for (Dimension dim : dims) {
93 if ("locale".equalsIgnoreCase(dim.getGroup())) {
94 return dim;
95 }
96 }
97 return null;
98 }
99
100
101
102
103
104
105
106
107 public static long getDimensionIdForName(ICS ics, String name) {
108 AssetId id = getDimensionAssetIdForName(ics, name);
109 return id == null ? -1 : id.getId();
110 }
111
112
113
114
115
116
117
118
119 public static AssetId getDimensionAssetIdForName(ICS ics, String name) {
120 Dimension dim = getDimensionForName(ics, name);
121 return dim == null ? null : dim.getId();
122 }
123
124
125
126
127
128
129
130
131 public static Dimension getDimensionForName(ICS ics, String name) {
132 return getDM(ics).loadDimension(name);
133
134 }
135
136
137
138
139
140
141
142
143
144 public static String getNameForDimensionId(ICS ics, long dimensionid) {
145 return getDM(ics).loadDimension(dimensionid).getName();
146 }
147
148
149
150
151
152
153
154
155
156
157
158
159
160 public static DimensionFilterInstance getDimensionFilter(DimensionManager dimensionManager,
161 Collection<AssetId> preferredDimensionIds, DimensionSetInstance dimSet) throws DimensionException {
162 List<Dimension> preferredDimensions = dimensionManager.loadDimensions(preferredDimensionIds);
163 if (_log.isTraceEnabled()) {
164 _log.trace("Loaded preferred dimensions and found " + preferredDimensions.size());
165 }
166 DimensionFilterInstance filter = dimSet.getFilter();
167 if (_log.isTraceEnabled()) {
168 _log.trace("Loading filter. Success? " + (filter != null));
169 }
170 if (filter != null) {
171 filter.setDimensonPreference(preferredDimensions);
172 }
173 return filter;
174 }
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191 public static Collection<AssetId> filterAssets(DimensionManager dimensionManager, List<AssetId> toFilterList,
192 Collection<AssetId> preferredDimensionIds, DimensionSetInstance dimSet) throws DimensionException {
193 Collection<AssetId> result = getDimensionFilter(dimensionManager, preferredDimensionIds, dimSet).filterAssets(
194 toFilterList);
195 if (_log.isDebugEnabled()) {
196 _log.debug("Filtered " + toFilterList + " using " + dimSet + ", looking for " + preferredDimensionIds
197 + " and got " + result);
198 }
199 return result;
200 }
201
202 }