/*
* Copyright 2015 Nokia Solutions and Networks
* Licensed under the Apache License, Version 2.0,
* see license.txt file for details.
*/
package org.rf.ide.core.testdata.text.read;
import org.rf.ide.core.testdata.model.RobotVersion;
public class VersionAvailabilityInfo {
private final String representation;
private final RobotVersion availableFrom;
private final RobotVersion depracatedFrom;
private final RobotVersion removedFrom;
private VersionAvailabilityInfo(final String representation,
final RobotVersion availableFrom,
final RobotVersion depracatedFrom, final RobotVersion removedFrom) {
this.representation = representation;
this.availableFrom = availableFrom;
this.depracatedFrom = depracatedFrom;
this.removedFrom = removedFrom;
}
public String getRepresentation() {
return representation;
}
public RobotVersion getAvailableFrom() {
return availableFrom;
}
public RobotVersion getDepracatedFrom() {
return depracatedFrom;
}
public RobotVersion getRemovedFrom() {
return removedFrom;
}
public static class VersionAvailabilityInfoBuilder {
private String representation;
private RobotVersion availableFrom;
private RobotVersion deprecatedFrom;
private RobotVersion removedFrom;
private VersionAvailabilityInfoBuilder() {
}
public static VersionAvailabilityInfoBuilder create() {
return new VersionAvailabilityInfoBuilder();
}
public VersionAvailabilityInfoBuilder addRepresentation(
final String representation) {
this.representation = representation;
return this;
}
public VersionAvailabilityInfoBuilder availableFrom(
final RobotVersion availableFrom) {
this.availableFrom = availableFrom;
return this;
}
public VersionAvailabilityInfoBuilder availableFrom(
final String availableFrom) {
this.availableFrom = RobotVersion.from(availableFrom);
return this;
}
public VersionAvailabilityInfoBuilder deprecatedFrom(
final RobotVersion deprecatedFrom) {
this.deprecatedFrom = deprecatedFrom;
return this;
}
public VersionAvailabilityInfoBuilder deprecatedFrom(
final String deprecatedFrom) {
this.deprecatedFrom = RobotVersion.from(deprecatedFrom);
return this;
}
public VersionAvailabilityInfoBuilder removedFrom(
final RobotVersion removedFrom) {
this.removedFrom = removedFrom;
return this;
}
public VersionAvailabilityInfoBuilder removedFrom(
final String removedFrom) {
this.removedFrom = RobotVersion.from(removedFrom);
return this;
}
public VersionAvailabilityInfo build() {
RobotVersion available = availableFrom;
if (available == null) {
available = new RobotVersion(0, 0);
}
RobotVersion deprecated = deprecatedFrom;
if (deprecated == null) {
deprecated = new RobotVersion(Integer.MAX_VALUE,
Integer.MAX_VALUE);
}
RobotVersion removed = removedFrom;
if (removed == null) {
removed = new RobotVersion(Integer.MAX_VALUE, Integer.MAX_VALUE);
}
return new VersionAvailabilityInfo(this.representation, available,
deprecated, removed);
}
}
}