/******************************************************************************* * Copyright (c) 2014 EclipseSource and others. All rights reserved. This * program and the accompanying materials are made available under the terms of * the Eclipse Public License v1.0 which accompanies this distribution, and is * available at http://www.eclipse.org/legal/epl-v10.html Contributors: * EclipseSource - initial API and implementation ******************************************************************************/ package com.eclipsesource.tabris.tracking.internal.piwik.model; import static com.eclipsesource.tabris.internal.Clauses.when; import static com.eclipsesource.tabris.internal.Clauses.whenNull; import static com.eclipsesource.tabris.tracking.internal.piwik.request.RequestKeyProvider.getRequestKey; import static com.eclipsesource.tabris.tracking.internal.piwik.request.RequestKeys.IS_BOT; import static com.eclipsesource.tabris.tracking.internal.piwik.request.RequestKeys.NEW_VISIT; import static com.eclipsesource.tabris.tracking.internal.piwik.request.RequestKeys.TOKEN_AUTH; import static com.eclipsesource.tabris.tracking.internal.piwik.request.RequestKeys.VISITOR_CITY_OVERRIDE; import static com.eclipsesource.tabris.tracking.internal.piwik.request.RequestKeys.VISITOR_COUNTRY_OVERRIDE; import static com.eclipsesource.tabris.tracking.internal.piwik.request.RequestKeys.VISITOR_DATETIME_OVERRIDE; import static com.eclipsesource.tabris.tracking.internal.piwik.request.RequestKeys.VISITOR_ID_ENFORCED; import static com.eclipsesource.tabris.tracking.internal.piwik.request.RequestKeys.VISITOR_IP_OVERRIDE; import static com.eclipsesource.tabris.tracking.internal.piwik.request.RequestKeys.VISITOR_LATITUDE_OVERRIDE; import static com.eclipsesource.tabris.tracking.internal.piwik.request.RequestKeys.VISITOR_LONGITUDE_OVERRIDE; import static com.eclipsesource.tabris.tracking.internal.piwik.request.RequestKeys.VISITOR_REGION_OVERRIDE; import java.util.HashMap; import java.util.Map; import com.eclipsesource.tabris.tracking.internal.Requestable; @SuppressWarnings("restriction") public class AdvancedConfiguration implements Requestable { private final Map<String, Object> parameters; public AdvancedConfiguration( String tokenAuth ) { whenNull( tokenAuth ).throwIllegalArgument( "TokenAuth must not be null." ); when( tokenAuth.length() != 32 ).throwIllegalArgument( "TokenAuth must be a String of 32 characters." ); parameters = new HashMap<String, Object>(); addParameter( getRequestKey( TOKEN_AUTH ), tokenAuth ); } protected void addParameter( String key, Object value ) { parameters.put( key, value ); } @Override public Map<String, Object> getParameter() { return parameters; } public AdvancedConfiguration setVisitorIpOverride( String visitorIpOverride ) { whenNull( visitorIpOverride ).throwIllegalArgument( "VisitorIpOverride must not be null." ); when( visitorIpOverride.isEmpty() ).throwIllegalArgument( "VisitorIpOverride must not be empty." ); addParameter( getRequestKey( VISITOR_IP_OVERRIDE ), visitorIpOverride ); return this; } public AdvancedConfiguration setDatetimeOverride( String datetimeOverride ) { whenNull( datetimeOverride ).throwIllegalArgument( "Datetime must not be null." ); when( datetimeOverride.isEmpty() ).throwIllegalArgument( "Datetime must not be empty." ); addParameter( getRequestKey( VISITOR_DATETIME_OVERRIDE ), datetimeOverride ); return this; } public AdvancedConfiguration setVisitorIdEnforced( String visitorIdEnforced ) { whenNull( visitorIdEnforced ).throwIllegalArgument( "VisitorIdEnforced must not be null." ); when( visitorIdEnforced.isEmpty() ).throwIllegalArgument( "VisitorIdEnforced must not be empty." ); addParameter( getRequestKey( VISITOR_ID_ENFORCED ), visitorIdEnforced ); return this; } public AdvancedConfiguration setNewVisit( boolean newVisit ) { addParameter( getRequestKey( NEW_VISIT ), Boolean.valueOf( newVisit ) ); return this; } public AdvancedConfiguration setCountryOverride( String visitorCountryOverride ) { whenNull( visitorCountryOverride ).throwIllegalArgument( "CountryOverride must not be null." ); when( visitorCountryOverride.isEmpty() ).throwIllegalArgument( "CountryOverride must not be empty." ); addParameter( getRequestKey( VISITOR_COUNTRY_OVERRIDE ), visitorCountryOverride ); return this; } public AdvancedConfiguration setRegionOverride( String regionOverride ) { whenNull( regionOverride ).throwIllegalArgument( "RegionOverride must not be null." ); when( regionOverride.isEmpty() ).throwIllegalArgument( "RegionOverride must not be empty." ); addParameter( getRequestKey( VISITOR_REGION_OVERRIDE ), regionOverride ); return this; } public AdvancedConfiguration setCityOverride( String cityOverride ) { whenNull( cityOverride ).throwIllegalArgument( "CityOverride must not be null." ); when( cityOverride.isEmpty() ).throwIllegalArgument( "CityOverride must not be empty." ); addParameter( getRequestKey( VISITOR_CITY_OVERRIDE ), cityOverride ); return this; } public AdvancedConfiguration setLatitudeOverride( String latitudeOverride ) { whenNull( latitudeOverride ).throwIllegalArgument( "LatitudeOverride must not be null." ); when( latitudeOverride.isEmpty() ).throwIllegalArgument( "LatitudeOverride must not be empty." ); addParameter( getRequestKey( VISITOR_LATITUDE_OVERRIDE ), latitudeOverride ); return this; } public AdvancedConfiguration setLongitudeOverride( String longitudeOverride ) { whenNull( longitudeOverride ).throwIllegalArgument( "LongitudeOverride must not be null." ); when( longitudeOverride.isEmpty() ).throwIllegalArgument( "LongitudeOverride must not be empty." ); addParameter( getRequestKey( VISITOR_LONGITUDE_OVERRIDE ), longitudeOverride ); return this; } public AdvancedConfiguration setIsBot( boolean isBot ) { addParameter( getRequestKey( IS_BOT ), Boolean.valueOf( isBot ) ); return this; } }