package ca.canucksoftware.themebuilder;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
/**
* @author Jason
*/
public class VersionControl {
private LinkedList<VersionTheme> versions;
private LinkedList<AliasVersion> aliases;
public VersionControl() {
versions = new LinkedList<VersionTheme>();
aliases = new LinkedList<AliasVersion>();
}
public VersionTheme addVersion(String version) {
VersionTheme newVersion = new VersionTheme(version);
versions.add(newVersion);
return newVersion;
}
public AliasVersion addAlias(String version, String realVersion) {
AliasVersion alias = new AliasVersion(version, realVersion);
aliases.add(alias);
return alias;
}
public List<String> list() { return list(true); }
public List<String> list(boolean includeAliases) {
LinkedList<String> allVersions = new LinkedList<String>();
for(int i=0; i<versions.size(); i++) {
allVersions.add(versions.get(i).version);
}
if(includeAliases) {
for(int i=0; i<aliases.size(); i++) {
allVersions.add(aliases.get(i).toString());
}
}
Collections.sort(allVersions);
return allVersions;
}
public VersionTheme getVersion(String version) {
VersionTheme result = null;
for(int i=0; i<versions.size(); i++) {
if(versions.get(i).version.equals(version)) {
result = versions.get(i);
}
}
return result;
}
public LinkedList<VersionTheme> listVersions() { return versions; }
public LinkedList<AliasVersion> listAliases() { return aliases; }
public void removeVersion(String version) {
for(int i=0; i<versions.size(); i++) {
if(versions.get(i).version.equals(version)) {
versions.remove(i);
break;
}
}
}
public void removeAlias(String alias) {
for(int i=0; i<aliases.size(); i++) {
if(aliases.get(i).toString().equals(alias)) {
aliases.remove(i);
break;
}
}
}
public String toString() {
String output = "Aliases:\n";
for(int i=0; i<aliases.size(); i++) {
output += "-" + aliases.get(i) + "\n";
}
output += "Versions:\n";
for(int i=0; i<versions.size(); i++) {
output += "-" + versions.get(i) + "\n";
}
return output;
}
}