package com.perforce.model;
public class License {
public static String LICENSED_LABEL = "licensed";
public static String UNLICENSED_LABEL = "unlicensed";
public static String MAX_FILECOUNT_LABEL = ">1000";
public static int MAX_FILECOUNT = -1;
public static String UNLIMITED_LABEL = "unlimited";
public static String BLANK_LABEL = "-";
public static int UNLIMITED = -1;
private boolean licensed;
private int userCount;
private int userLimit;
private int minFreeUsers;
private int clientCount;
private int clientLimit;
private int fileCount;
private int fileLimit;
public License() {
}
public License(String data) {
String[] lines = data.split(System.getProperty("line.separator"));
for(String l : lines) {
String[] parts = l.split(" ", 3);
switch(parts[1]) {
case "isLicensed":
setLicensed(parts[2]);
break;
case "userCount":
setUserCount(parts[2]);
break;
case "userLimit":
setUserLimit(parts[2]);
break;
case "userSoftLimit":
setUserLimit(parts[2]);
break;
case "clientCount":
setClientCount(parts[2]);
break;
case "clientSoftLimit":
setClientLimit(parts[2]);
case "fileCount":
setFileCount(parts[2]);
break;
case "fileLimit":
setFileLimit(parts[2]);
break;
}
}
}
public boolean isLicensed() {
return licensed;
}
public void setLicensed(String label) {
if(LICENSED_LABEL.equals(label)) {
licensed = true;
} else {
licensed = false;
}
}
public void setLicensed(boolean licensed) {
this.licensed = licensed;
}
public int getUserCount() {
return userCount;
}
public void setUserCount(String label) {
this.userCount = Integer.parseInt(label);
}
public void setUserCount(int userCount) {
this.userCount = userCount;
}
public int getUserLimit() {
return userLimit;
}
public void setUserLimit(String label) {
if(UNLIMITED_LABEL.equals(label)) {
this.userLimit = UNLIMITED;
} else {
this.userLimit = Integer.parseInt(label);
}
}
public void setUserLimit(int userLimit) {
this.userLimit = userLimit;
}
public int getMinFreeUsers() {
return minFreeUsers;
}
public void setMinFreeUsers(String label) {
if(label != null) {
this.minFreeUsers = Integer.parseInt(label);
} else {
this.minFreeUsers = 1;
}
}
public void setMinFreeUsers(int minFreeUsers) {
this.minFreeUsers = minFreeUsers;
}
public boolean canAddUser() {
return (userCount + minFreeUsers) < userLimit;
}
public int getClientCount() {
return clientCount;
}
public void setClientCount(String label) {
if(BLANK_LABEL.equals(label)) {
this.clientCount = UNLIMITED;
} else {
this.clientCount = Integer.parseInt(label);
}
}
public void setClientCount(int clientCount) {
this.clientCount = clientCount;
}
public int getClientLimit() {
return clientLimit;
}
public void setClientLimit(int clientLimit) {
this.clientLimit = clientLimit;
}
public void setClientLimit(String label) {
if(UNLIMITED_LABEL.equals(label)) {
this.clientLimit = UNLIMITED;
} else {
this.clientLimit = Integer.parseInt(label);
}
}
public int getFileCount() {
return fileCount;
}
public void setFileCount(String label) {
if(BLANK_LABEL.equals(label)) {
this.fileCount = UNLIMITED;
} else {
this.fileCount = Integer.parseInt(label);
}
}
public void setFileCount(int fileCount) {
this.fileCount = fileCount;
}
public int getFileLimit() {
return fileLimit;
}
public void setFileLimit(String label) {
if(MAX_FILECOUNT_LABEL.equals(label)) {
this.fileLimit = Integer.parseInt(label);
}
}
public void setFileLimit(int fileLimit) {
this.fileLimit = fileLimit;
}
}