blob: 1d6100b9b69d74718281cc7563f44ded849b93bf [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2009 Steffen Pingel and others.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* https://www.eclipse.org/legal/epl-2.0
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Steffen Pingel - initial API and implementation
*******************************************************************************/
package org.eclipse.mylyn.internal.trac.core.model;
/**
* The version of the Trac repository is defined by three numbers: epoch.major.minor. The default value is
* <code>-1.-1.-1</code> which indicates the version is not known.
*
* <pre>
* [0.0.0] Trac 0.9.6
* [0.0.1, 1.0.0) Trac 0.10
* [1.0.0, 2.0.0) Trac 0.11
* </pre>
*
* @author Steffen Pingel
*/
public class TracRepositoryInfo {
private final int apiEpoch;
private final int apiMajor;
private final int apiMinor;
private String version;
public TracRepositoryInfo() {
this(null);
}
public TracRepositoryInfo(int apiEpoch, int apiMajor, int apiMinor) {
this(apiEpoch, apiMajor, apiMinor, null);
}
public TracRepositoryInfo(int apiEpoch, int apiMajor, int apiMinor, String version) {
this.apiEpoch = apiEpoch;
this.apiMajor = apiMajor;
this.apiMinor = apiMinor;
this.version = version;
}
public TracRepositoryInfo(String version) {
this(-1, -1, -1, version);
}
public int getApiEpoch() {
return apiEpoch;
}
public int getApiMajor() {
return apiMajor;
}
public int getApiMinor() {
return apiMinor;
}
public String getVersion() {
return version;
}
public boolean isApiVersion(int epoch, int major, int minor) {
return apiEpoch == epoch && apiMajor == major && apiMinor == minor;
}
public boolean isApiVersionOrHigher(int epoch, int major, int minor) {
return apiEpoch > epoch //
|| apiEpoch == epoch && (apiMajor > major //
|| apiMajor == major && apiMinor >= minor);
}
public boolean isApiVersionOrSmaller(int epoch, int major, int minor) {
return apiEpoch < epoch //
|| apiEpoch == epoch && (apiMajor < major //
|| apiMajor == major && apiMinor <= minor);
}
public boolean isStale() {
return apiEpoch == -1 || apiMajor == -1 || apiMinor == -1;
}
public void setVersion(String version) {
this.version = version;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(apiEpoch);
sb.append("."); //$NON-NLS-1$
sb.append(apiMajor);
sb.append("."); //$NON-NLS-1$
sb.append(apiMinor);
if (version != null) {
sb.append(" ("); //$NON-NLS-1$
sb.append(version);
sb.append(")"); //$NON-NLS-1$
}
return sb.toString();
}
}