package fi.otavanopisto.muikku.schooldata;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.builder.HashCodeBuilder;
public class SchoolDataIdentifier {
public SchoolDataIdentifier(String identifier, String dataSource) {
super();
this.identifier = identifier;
this.dataSource = dataSource;
}
@Override
public boolean equals(Object o) {
return o instanceof SchoolDataIdentifier &&
StringUtils.equals(identifier, ((SchoolDataIdentifier) o).identifier) &&
StringUtils.equals(dataSource, ((SchoolDataIdentifier) o).dataSource);
}
@Override
public int hashCode() {
return new HashCodeBuilder(41, 77)
.append(getDataSource())
.append(getIdentifier())
.toHashCode();
}
public String getDataSource() {
return dataSource;
}
public String getIdentifier() {
return identifier;
}
public String toId() {
return String.format("%s-%s", getDataSource(), getIdentifier());
}
@Override
public String toString() {
return String.format("%s/%s", getDataSource(), getIdentifier());
}
public static SchoolDataIdentifier fromId(String id) {
int index = id == null ? -1 : id.indexOf('-');
if (index == -1) {
return null;
}
String dataSource = id.substring(0, index);
String identifier = id.substring(index + 1);
if (StringUtils.isBlank(dataSource) || StringUtils.isBlank(identifier)) {
return null;
}
return new SchoolDataIdentifier(identifier, dataSource);
}
public static SchoolDataIdentifier fromString(String id) {
int index = id == null ? -1 : id.indexOf('/');
if (index == -1) {
return null;
}
String identifier = id.substring(0, index);
String dataSource = id.substring(index + 1);
if (StringUtils.isBlank(dataSource) || StringUtils.isBlank(identifier)) {
return null;
}
return new SchoolDataIdentifier(identifier, dataSource);
}
private String identifier;
private String dataSource;
}