1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package com.fatwire.gst.foundation.facade.mda;
18
19 import java.util.Collection;
20 import java.util.List;
21
22 import COM.FutureTense.Interfaces.ICS;
23
24 import com.fatwire.assetapi.data.AssetId;
25 import com.fatwire.mda.Dimension;
26 import com.fatwire.mda.DimensionException;
27 import com.fatwire.mda.DimensionFilterInstance;
28 import com.fatwire.mda.DimensionManager;
29 import com.fatwire.mda.DimensionSetInstance;
30 import com.fatwire.mda.DimensionableAssetManager;
31 import com.fatwire.system.Session;
32 import com.fatwire.system.SessionFactory;
33
34 import org.apache.commons.logging.Log;
35 import org.apache.commons.logging.LogFactory;
36
37
38
39
40
41
42
43 public final class DimensionUtils {
44 private static final Log _log = LogFactory.getLog(DefaultLocaleService.class.getPackage().getName());
45
46
47
48
49
50
51
52
53 public static DimensionableAssetManager getDAM(ICS ics) {
54 Session session = SessionFactory.getSession(ics);
55 return (DimensionableAssetManager) session.getManager(DimensionableAssetManager.class.getName());
56 }
57
58
59
60
61
62
63
64
65 public static DimensionManager getDM(ICS ics) {
66 Session session = SessionFactory.getSession(ics);
67 return (DimensionManager) session.getManager(DimensionManager.class.getName());
68 }
69
70
71
72
73
74
75
76
77
78 public static Dimension getLocaleAsDimension(ICS ics, AssetId id) {
79 return getLocaleAsDimension(getDAM(ics), id);
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 DimensionFilterInstance filter = dimSet.getFilter();
166 if (_log.isTraceEnabled())
167 _log.trace("Loading filter. Success? " + (filter != null));
168 if (filter != null)
169 filter.setDimensonPreference(preferredDimensions);
170 return filter;
171 }
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188 public static Collection<AssetId> filterAssets(DimensionManager dimensionManager, List<AssetId> toFilterList,
189 Collection<AssetId> preferredDimensionIds, DimensionSetInstance dimSet) throws DimensionException {
190 Collection<AssetId> result = getDimensionFilter(dimensionManager, preferredDimensionIds, dimSet).filterAssets(
191 toFilterList);
192 if (_log.isDebugEnabled())
193 _log.debug("Filtered " + toFilterList + " using " + dimSet + ", looking for " + preferredDimensionIds
194 + " and got " + result);
195 return result;
196 }
197
198 }