Skip to content

Commit cfcfbd0

Browse files
committed
make AFM and ResultSpec conversion methods in VisualizationConverter public
1 parent 4b7e960 commit cfcfbd0

3 files changed

Lines changed: 54 additions & 21 deletions

File tree

src/main/java/com/gooddata/md/visualization/VisualizationConverter.java

Lines changed: 26 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,11 @@
1818
import com.gooddata.executeafm.afm.NegativeAttributeFilter;
1919
import com.gooddata.executeafm.afm.PositiveAttributeFilter;
2020
import com.gooddata.executeafm.afm.SimpleMeasureDefinition;
21-
import com.gooddata.executeafm.resultspec.AttributeSortItem;
2221
import com.gooddata.executeafm.resultspec.Dimension;
23-
import com.gooddata.executeafm.resultspec.Direction;
24-
import com.gooddata.executeafm.resultspec.MeasureLocatorItem;
25-
import com.gooddata.executeafm.resultspec.MeasureSortItem;
2622
import com.gooddata.executeafm.resultspec.ResultSpec;
2723
import com.gooddata.executeafm.resultspec.SortItem;
2824

2925
import java.util.ArrayList;
30-
import java.util.Collections;
3126
import java.util.List;
3227
import java.util.function.Function;
3328
import java.util.stream.Collectors;
@@ -47,35 +42,49 @@ public abstract class VisualizationConverter {
4742
private static final ObjectMapper MAPPER = new ObjectMapper();
4843

4944
/**
50-
* Generate Execution from Visualization object. Currently {@link ResultSpec}'s {@link Dimension}s can be generated
51-
* for table and four types of chart: bar, column, line and pie.
45+
* Generate Execution from Visualization object.
5246
*
5347
* @param visualizationObject which will be converted to {@link Execution}
5448
* @param visualizationClassGetter {@link Function} for fetching VisualizationClass, which is necessary for correct generation of {@link ResultSpec}
5549
* @return {@link Execution} object
50+
*
51+
* @see #convertToAfm(VisualizationObject)
52+
* @see #convertToResultSpec(VisualizationObject, Function)
5653
*/
5754
public static Execution convertToExecution(final VisualizationObject visualizationObject, final Function<String, VisualizationClass> visualizationClassGetter) {
58-
VisualizationClass visualizationClass = notNull(visualizationClassGetter).apply(notNull(visualizationObject).getVisualizationClassUri());
59-
60-
ResultSpec resultSpec = convertToResultSpec(visualizationObject, visualizationClass.getVisualizationType());
55+
ResultSpec resultSpec = convertToResultSpec(visualizationObject, visualizationClassGetter);
6156
Afm afm = convertToAfm(visualizationObject);
6257
return new Execution(afm, resultSpec);
6358
}
6459

65-
static Afm convertToAfm(final VisualizationObject visualizationObject) {
60+
/**
61+
* Generate Afm from Visualization object.
62+
*
63+
* @param visualizationObject which will be converted to {@link Execution}
64+
* @return {@link Afm} object
65+
*/
66+
public static Afm convertToAfm(final VisualizationObject visualizationObject) {
6667
final List<AttributeItem> attributes = convertAttributes(visualizationObject.getAttributes());
6768
final List<CompatibilityFilter> filters = convertFilters(visualizationObject.getFilters());
6869
final List<MeasureItem> measures = convertMeasures(visualizationObject.getMeasures());
6970

7071
return new Afm(attributes, filters, measures, null);
7172
}
7273

73-
static ResultSpec convertToResultSpec(final VisualizationObject visualizationObject,
74-
final VisualizationType visualizationType) {
75-
notNull(visualizationObject);
76-
notNull(visualizationType);
74+
/**
75+
* Generate ResultSpec from Visualization object. Currently {@link ResultSpec}'s {@link Dimension}s can be generated
76+
* for table and four types of chart: bar, column, line and pie.
77+
*
78+
* @param visualizationObject which will be converted to {@link Execution}
79+
* @param visualizationClassGetter {@link Function} for fetching VisualizationClass, which is necessary for correct generation of {@link ResultSpec}
80+
* @return {@link Execution} object
81+
*/
82+
public static ResultSpec convertToResultSpec(final VisualizationObject visualizationObject,
83+
final Function<String, VisualizationClass> visualizationClassGetter) {
84+
VisualizationClass visualizationClass = notNull(visualizationClassGetter).apply(notNull(visualizationObject).getVisualizationClassUri());
85+
7786
List<SortItem> sorts = getSorting(visualizationObject);
78-
List<Dimension> dimensions = getDimensions(visualizationObject, visualizationType);
87+
List<Dimension> dimensions = getDimensions(visualizationObject, visualizationClass.getVisualizationType());
7988
return new ResultSpec(dimensions, sorts);
8089
}
8190

@@ -206,12 +215,11 @@ private static List<CompatibilityFilter> convertFilters(final List<FilterItem> f
206215
}
207216

208217
private static List<MeasureItem> convertMeasures(final List<Measure> measures) {
209-
List<MeasureItem> measuresForAfm = measures.stream()
218+
return measures.stream()
210219
.map(VisualizationConverter::removeFormat)
211220
.map(VisualizationConverter::getAfmMeasure)
212221
.map(VisualizationConverter::convertMeasureFilters)
213222
.collect(toList());
214-
return measuresForAfm;
215223
}
216224

217225
private static Measure removeFormat(final Measure measure) {

src/main/java/com/gooddata/md/visualization/VisualizationObject.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,10 @@
1919
import static org.apache.commons.lang3.Validate.notNull;
2020

2121
import com.gooddata.executeafm.UriObjQualifier;
22+
import com.gooddata.executeafm.afm.Afm;
2223
import com.gooddata.executeafm.afm.FilterItem;
2324
import com.gooddata.executeafm.Execution;
25+
import com.gooddata.executeafm.resultspec.ResultSpec;
2426
import com.gooddata.md.AbstractObj;
2527
import com.gooddata.md.Meta;
2628
import com.gooddata.md.Queryable;
@@ -255,11 +257,30 @@ public void setVisualizationClass(UriObjQualifier uri) {
255257
content.setVisualizationClass(uri);
256258
}
257259

260+
/**
261+
* @see VisualizationConverter#convertToExecution(VisualizationObject, Function)
262+
*/
258263
@JsonIgnore
259264
public Execution convertToExecution(Function<String, VisualizationClass> visualizationClassgetter) {
260265
return VisualizationConverter.convertToExecution(this, visualizationClassgetter);
261266
}
262267

268+
/**
269+
* @see VisualizationConverter#convertToAfm(VisualizationObject)
270+
*/
271+
@JsonIgnore
272+
public Afm convertToAfm() {
273+
return VisualizationConverter.convertToAfm(this);
274+
}
275+
276+
/**
277+
* @see VisualizationConverter#convertToResultSpec(VisualizationObject, Function)
278+
*/
279+
@JsonIgnore
280+
public ResultSpec convertToResultSpec(Function<String, VisualizationClass> visualizationClassgetter) {
281+
return VisualizationConverter.convertToResultSpec(this, visualizationClassgetter);
282+
}
283+
263284
private Content getContent() {
264285
return content;
265286
}

src/test/groovy/com/gooddata/md/visualization/VisualizationObjectConverterTest.groovy renamed to src/test/groovy/com/gooddata/md/visualization/VisualizationConverterTest.groovy

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,16 @@ import com.gooddata.executeafm.resultspec.ResultSpec
2424
import com.gooddata.executeafm.resultspec.SortItem
2525
import spock.lang.Unroll
2626

27+
import java.util.function.Function
28+
2729
import static VisualizationConverter.convertToAfm
2830
import static VisualizationConverter.convertToResultSpec
2931
import static VisualizationConverter.parseSorting
3032
import static com.gooddata.util.ResourceUtils.readObjectFromResource
3133
import static net.javacrumbs.jsonunit.JsonMatchers.jsonEquals
3234
import static spock.util.matcher.HamcrestSupport.that
3335

34-
class VisualizationObjectConverterTest extends Specification {
36+
class VisualizationConverterTest extends Specification {
3537
private static final String COMPLEX_VISUALIZATION = "md/visualization/complexVisualizationObject.json"
3638
private static final String SIMPLE_VISUALIZATION = "md/visualization/simpleVisualizationObject.json"
3739

@@ -83,8 +85,9 @@ class VisualizationObjectConverterTest extends Specification {
8385
@Unroll
8486
def "should generate result spec for table with default sorting from #name"() {
8587
given:
88+
Function getter = { vizObject -> Stub(VisualizationClass) { getVisualizationType() >> VisualizationType.TABLE } }
8689
VisualizationObject vo = readObjectFromResource("/$resource", VisualizationObject)
87-
ResultSpec converted = convertToResultSpec(vo, VisualizationType.TABLE)
90+
ResultSpec converted = convertToResultSpec(vo, getter)
8891

8992
expect:
9093
that converted, jsonEquals(expected)
@@ -104,8 +107,9 @@ class VisualizationObjectConverterTest extends Specification {
104107
@Unroll
105108
def "should generate result spec for #type"() {
106109
given:
110+
Function getter = { vizObject -> Stub(VisualizationClass) { getVisualizationType() >> VisualizationType.of(type) } }
107111
VisualizationObject vo = readObjectFromResource("/$resource", VisualizationObject)
108-
ResultSpec converted = convertToResultSpec(vo, VisualizationType.of(type))
112+
ResultSpec converted = convertToResultSpec(vo, getter)
109113

110114
expect:
111115
that converted, jsonEquals(expected)

0 commit comments

Comments
 (0)