/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.cms.upgrade.task.datasource.method;
import java.util.List;
import org.jdom.Element;
import com.google.common.base.Strings;
import com.google.common.collect.Lists;
final class GetRelatedContentsConverter
extends DataSourceMethodConverter
{
public GetRelatedContentsConverter()
{
super( "getRelatedContents" );
}
@Override
public Element convert( final String[] params )
{
List<Integer> validParametersNumber = Lists.newArrayList( 13, 15, 16 );
final int parametersLength = params.length;
if ( !validParametersNumber.contains( parametersLength ) )
{
return null;
}
if ( parametersLength == 13 )
{
String query = "";
final String categoriesString = params[10];
if ( !Strings.isNullOrEmpty( categoriesString ) )
{
query = appendInFilterToQuery( query, categoriesString, "categorykey" );
}
final String contentTypesString = params[12];
if ( !Strings.isNullOrEmpty( contentTypesString ) )
{
query = appendInFilterToQuery( query, contentTypesString, "contenttypekey" );
}
return method("getRelatedContent")
.param( "contentKeys", params[1])
.param( "relation", params[0])
.param( "orderBy", params[2])
.param( "index", params[4])
.param( "count", params[5])
.param( "includeData", "true" )
.param( "childrenLevel", params[7])
.param( "parentLevel", params[6])
.param( "requireAll", params[3])
.param( "query", query )
.build();
}
if ( parametersLength == 15 )
{
/*
public XMLDocument getRelatedContents_old(15)
0 int relation,
1 int[] contentKeys,
2 String orderBy,
3 boolean requireAll,
4 int fromIndex,
5 int count,
6 boolean titlesOnly,
7 int parentLevel,
8 int childrenLevel,
9 int parentChildrenLevel,
10 boolean relatedTitlesOnly,
11 boolean includeTotalCount,
12 int[] filterByCategories,
13 boolean categoryRecursive,
14 int[] filterByContentTypes );
*/
String query = "";
final String categoriesString = params[12];
if ( !Strings.isNullOrEmpty( categoriesString ) )
{
query = appendInFilterToQuery( query, categoriesString, "categorykey" );
}
final String contentTypesString = params[14];
if ( !Strings.isNullOrEmpty( contentTypesString ) )
{
query = appendInFilterToQuery( query, contentTypesString, "contenttypekey" );
}
// Translated from !relatedTitlesOnly && !titlesOnly
boolean includeData = !Boolean.valueOf( params[10] ) || !Boolean.valueOf( params[6] );
return method("getRelatedContent")
.param( "contentKeys", params[1])
.param( "relation", params[0])
.param( "orderBy", params[2])
.param( "index", params[4])
.param( "count", params[5])
.param( "includeData", Boolean.toString( includeData ) )
.param( "childrenLevel", params[8])
.param( "parentLevel", params[7])
.param( "requireAll", params[3])
.param( "query", query )
.build();
}
/*
public XMLDocument getRelatedContents_old(16)
0 int relation,
1 int[] contentKeys,
2 String query,
3 String orderBy,
4 boolean requireAll,
5 int fromIndex,
6 int count,
7 boolean titlesOnly,
8 int parentLevel,
9 int childrenLevel,
10 int parentChildrenLevel,
11 boolean relatedTitlesOnly,
12 boolean includeTotalCount,
13 int[] filterByCategories,
14 boolean categoryRecursive,
15 int[] filterByContentTypes );
*/
String query = params[2];
final String categoriesString = params[13];
if ( !Strings.isNullOrEmpty( categoriesString ) )
{
query = appendInFilterToQuery( query, categoriesString, "categorykey" );
}
final String contentTypesString = params[15];
if ( !Strings.isNullOrEmpty( contentTypesString ) )
{
query = appendInFilterToQuery( query, contentTypesString, "contenttypekey" );
}
// Translated from !relatedTitlesOnly && !titlesOnly
boolean includeData = !Boolean.valueOf( params[11] ) || !Boolean.valueOf( params[7] );
return method("getRelatedContent")
.param( "contentKeys", params[1])
.param( "relation", params[0])
.param( "query", query)
.param( "orderBy", params[3])
.param( "index", params[5])
.param( "count", params[6])
.param( "includeData", Boolean.toString( includeData) )
.param( "childrenLevel", params[9])
.param( "parentLevel", params[8])
.param( "requireAll", params[4])
.build();
}
}