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; }