Package net.sf.uadetector.internal.data

Source Code of net.sf.uadetector.internal.data.DataBlueprint

/*******************************************************************************
* Copyright 2013 André Rouél
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*   http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
******************************************************************************/
package net.sf.uadetector.internal.data;

import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.SortedMap;
import java.util.SortedSet;
import java.util.TreeSet;
import java.util.regex.Pattern;

import javax.annotation.Nonnull;
import javax.annotation.concurrent.NotThreadSafe;

import net.sf.uadetector.ReadableDeviceCategory.Category;
import net.sf.uadetector.UserAgentFamily;
import net.sf.uadetector.internal.data.domain.Browser;
import net.sf.uadetector.internal.data.domain.BrowserOperatingSystemMapping;
import net.sf.uadetector.internal.data.domain.BrowserPattern;
import net.sf.uadetector.internal.data.domain.BrowserType;
import net.sf.uadetector.internal.data.domain.Device;
import net.sf.uadetector.internal.data.domain.DevicePattern;
import net.sf.uadetector.internal.data.domain.OperatingSystem;
import net.sf.uadetector.internal.data.domain.OperatingSystemPattern;
import net.sf.uadetector.internal.data.domain.Robot;

import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;

/**
* This class is intended to simplify test cases for {@link Data} and tests which needs a prepared instance of
* {@link Data}.
*/
@NotThreadSafe
public final class DataBlueprint {

  private Map<Integer, SortedSet<BrowserPattern>> browserPatterns = Maps.newHashMap();

  private Set<Browser> browsers = Sets.newHashSet();

  private Set<BrowserOperatingSystemMapping> browserToOperatingSystemMappings = Sets.newHashSet();

  private Map<Integer, BrowserType> browserTypes = Maps.newHashMap();

  private Map<Integer, SortedSet<OperatingSystemPattern>> operatingSystemPatterns = Maps.newHashMap();

  private Set<OperatingSystem> operatingSystems = Sets.newHashSet();

  private SortedMap<BrowserPattern, Browser> patternToBrowserMap = Maps.newTreeMap();

  private SortedMap<OperatingSystemPattern, OperatingSystem> patternToOperatingSystemMap = Maps.newTreeMap();

  private List<Robot> robots = Lists.newArrayList();

  private Set<Device> devices = Sets.newHashSet();

  private Map<Integer, SortedSet<DevicePattern>> devicePatterns = Maps.newHashMap();

  private SortedMap<DevicePattern, Device> patternToDeviceMap = Maps.newTreeMap();

  private String version = "test-version";

  public DataBlueprint() {
    final TreeSet<BrowserPattern> browserPatternSet = Sets.newTreeSet();
    final BrowserPattern browserPattern = new BrowserPattern(1, Pattern.compile("[a-z]+"), 1);
    browserPatternSet.add(browserPattern);
    browserPatterns.put(1, browserPatternSet);

    final SortedSet<OperatingSystemPattern> osPatternSet = new TreeSet<OperatingSystemPattern>();
    final OperatingSystemPattern operatingSystemPattern = new OperatingSystemPattern(1, Pattern.compile("1"), 1);
    osPatternSet.add(operatingSystemPattern);
    final OperatingSystem operatingSystem = new OperatingSystem(1, "n1", "f1", "iu1", osPatternSet, "p1", "pu1", "u1", "i1");
    operatingSystems.add(operatingSystem);

    patternToOperatingSystemMap.put(operatingSystemPattern, operatingSystem);

    final BrowserType browserType = new BrowserType(1, "Browser");
    browserTypes.put(browserType.getId(), browserType);

    final Browser browser = new Browser(4256, UserAgentFamily.FIREBIRD, UserAgentFamily.FIREBIRD.getName(), browserPatternSet,
        browserType, operatingSystem, "icn", "iu1", "p1", "pu1", "u1");
    browsers.add(browser);

    patternToBrowserMap.put(browserPattern, browser);

    browserToOperatingSystemMappings.add(new BrowserOperatingSystemMapping(browser.getId(), operatingSystem.getId()));

    final TreeSet<DevicePattern> devicePatternSet = Sets.newTreeSet();
    final DevicePattern devicePattern = new DevicePattern(1, Pattern.compile("[a-z]+"), 1);
    devicePatternSet.add(devicePattern);
    devicePatterns.put(1, devicePatternSet);

    final Device device = new Device("device-category-name", 1, Category.OTHER, "device.png", "device-info", devicePatternSet);
    devices.add(device);

    patternToDeviceMap.put(devicePattern, device);

    final Robot robot = new Robot(12, "Majestic-12", UserAgentFamily.MJ12BOT, "Majestic-12 bot", "http://majestic12.co.uk/bot.php",
        "Majestic-12", "http://www.majestic12.co.uk/", "MJ12bot/v1.4.3", "mj12.png");
    robots.add(robot);
  }

  public DataBlueprint browserPatterns(final Map<Integer, SortedSet<BrowserPattern>> browserPatterns) {
    this.browserPatterns = browserPatterns;
    return this;
  }

  public DataBlueprint browsers(final Set<Browser> browsers) {
    this.browsers = browsers;
    return this;
  }

  public DataBlueprint browserToOperatingSystemMappings(final Set<BrowserOperatingSystemMapping> browserToOperatingSystemMappings) {
    this.browserToOperatingSystemMappings = browserToOperatingSystemMappings;
    return this;
  }

  public DataBlueprint browserTypes(final Map<Integer, BrowserType> browserTypes) {
    this.browserTypes = browserTypes;
    return this;
  }

  @Nonnull
  public Data build() {
    return new Data(browsers, browserPatterns, browserTypes, patternToBrowserMap, browserToOperatingSystemMappings, operatingSystems,
        operatingSystemPatterns, patternToOperatingSystemMap, robots, devices, devicePatterns, patternToDeviceMap, version);
  }

  public DataBlueprint devicePatterns(final Map<Integer, SortedSet<DevicePattern>> devicePatterns) {
    this.devicePatterns = devicePatterns;
    return this;
  }

  public DataBlueprint devices(final Set<Device> devices) {
    this.devices = devices;
    return this;
  }

  public DataBlueprint operatingSystemPatterns(final Map<Integer, SortedSet<OperatingSystemPattern>> operatingSystemPatterns) {
    this.operatingSystemPatterns = operatingSystemPatterns;
    return this;
  }

  public DataBlueprint operatingSystems(final Set<OperatingSystem> operatingSystems) {
    this.operatingSystems = operatingSystems;
    return this;
  }

  public DataBlueprint patternToBrowserMap(final SortedMap<BrowserPattern, Browser> patternToBrowserMap) {
    this.patternToBrowserMap = patternToBrowserMap;
    return this;
  }

  public DataBlueprint patternToDeviceMap(final SortedMap<DevicePattern, Device> patternToDeviceMap) {
    this.patternToDeviceMap = patternToDeviceMap;
    return this;
  }

  public DataBlueprint patternToOperatingSystemMap(final SortedMap<OperatingSystemPattern, OperatingSystem> patternToOperatingSystemMap) {
    this.patternToOperatingSystemMap = patternToOperatingSystemMap;
    return this;
  }

  public DataBlueprint robots(final List<Robot> robots) {
    this.robots = robots;
    return this;
  }

  public DataBlueprint version(final String version) {
    this.version = version;
    return this;
  }

}
TOP

Related Classes of net.sf.uadetector.internal.data.DataBlueprint

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.