From c4a7a4988cd3f8c1e88b7fd029b954ae71308119 Mon Sep 17 00:00:00 2001 From: Olof Larsson Date: Wed, 15 Oct 2014 14:36:17 +0200 Subject: [PATCH] Add PriorityLines --- .../massivecore/PriorityLines.java | 104 ++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 src/main/java/com/massivecraft/massivecore/PriorityLines.java diff --git a/src/main/java/com/massivecraft/massivecore/PriorityLines.java b/src/main/java/com/massivecraft/massivecore/PriorityLines.java new file mode 100644 index 00000000..cd113c3a --- /dev/null +++ b/src/main/java/com/massivecraft/massivecore/PriorityLines.java @@ -0,0 +1,104 @@ +package com.massivecraft.massivecore; + +import java.util.Arrays; +import java.util.LinkedList; +import java.util.List; + +import com.massivecraft.massivecore.Prioritized; +import com.massivecraft.massivecore.util.MUtil; + +public class PriorityLines implements Prioritized, Comparable +{ + // -------------------------------------------- // + // FIELDS + // -------------------------------------------- // + + private int priority; + @Override public int getPriority() { return this.priority; } + public void setPriority(int priority) { this.priority = priority; } + + private List lines; + public List getLines() { return this.lines; } + public void setLines(List lines) { this.lines = lines; } + public void setLines(String... lines) { this.setLines(Arrays.asList(lines)); } + + // -------------------------------------------- // + // CONSTRUCT + // -------------------------------------------- // + + public PriorityLines(int priority, List lines) + { + this.priority = priority; + this.lines = lines; + } + + public PriorityLines(int priority, String... lines) + { + this(priority, Arrays.asList(lines)); + } + + public PriorityLines(int priority) + { + this(priority, new LinkedList()); + } + + // -------------------------------------------- // + // TO STRING + // -------------------------------------------- // + + @Override + public String toString() + { + return MassiveCore.gson.toJson(this); + } + + // -------------------------------------------- // + // COMPARABLE + // -------------------------------------------- // + + @Override + public int compareTo(PriorityLines that) + { + int ret; + + ret = Integer.valueOf(this.priority).compareTo(that.priority); + if (ret != 0) return ret; + + if (MUtil.equals(this.lines, that.lines)) return 0; + ret = HashCodeComparator.get().compare(this.lines, that.lines); + if (ret != 0) return ret; + + return ret; + } + + // -------------------------------------------- // + // HASH CODE & EQUALS + // -------------------------------------------- // + + @Override + public int hashCode() + { + final int prime = 31; + int result = 1; + result = prime * result + ((lines == null) ? 0 : lines.hashCode()); + result = prime * result + priority; + return result; + } + + @Override + public boolean equals(Object obj) + { + if (this == obj) return true; + if (obj == null) return false; + if (!(obj instanceof PriorityLines)) return false; + PriorityLines other = (PriorityLines) obj; + if (lines == null) + { + if (other.lines != null) return false; + } + else if (!lines.equals(other.lines)) return false; + if (priority != other.priority) return false; + return true; + } + +}