package internetz; import java.io.Serializable; import logger.PjiitOutputter; public class Category implements Serializable{ private CategoryType type; private int hash; public Category(){ say("Category initialized"); } public Category(CategoryType type){ say("Category initialized with type: " + type); this.type = type; } public Category(String name){ say("Category initialized with name: " + name); hash = name.hashCode(); this.type = parseType(name); } private static CategoryType parseType(String name){ if (name.toLowerCase().equals("programming")){ return CategoryType.PROGRAMMING; } if (name.toLowerCase().equals("data")){ return CategoryType.DATA; } if (name.toLowerCase().equals("markup")){ return CategoryType.MARKUP; } if (name.toLowerCase().equals("unknown/other")){ return CategoryType.UNKNOWN; } return CategoryType.UNKNOWN; } public CategoryType getType() { return type; } public void setType(CategoryType type) { this.type = type; } private void say(String s) { PjiitOutputter.say(s); } @Override public int hashCode() { return hash * type.ordinal(); } @Override public String toString() { switch (type) { case PROGRAMMING: { return "programming"; } case MARKUP: { return "markup"; } case DATA: { return "data"; } default: break; } return "other/unknown"; } }