Browse Source

Better comparators for RowEntity, RowPermission and RowInheritance.

master
Stanislav Usenkov 9 years ago
parent
commit
cdb7a9288c
  1. 12
      src/main/java/ru/simsonic/rscPermissions/API/RowEntity.java
  2. 16
      src/main/java/ru/simsonic/rscPermissions/API/RowInheritance.java
  3. 16
      src/main/java/ru/simsonic/rscPermissions/API/RowPermission.java

12
src/main/java/ru/simsonic/rscPermissions/API/RowEntity.java

@ -22,7 +22,15 @@ public class RowEntity implements Cloneable, Comparable<RowEntity>
@Override
public int compareTo(RowEntity other)
{
final int deltaId = id - other.id;
return deltaId != 0 ? deltaId : entity.compareTo(other.entity);
if(entityType.equals(EntityType.PLAYER))
{
final int compareByPlayerType = playerType.compareTo(other.playerType);
if(compareByPlayerType != 0)
return 0 - compareByPlayerType;
}
final int compareById = Integer.compare(id, other.id);
if(compareById != 0)
return compareById;
return entity.compareTo(other.entity);
}
}

16
src/main/java/ru/simsonic/rscPermissions/API/RowInheritance.java

@ -46,8 +46,18 @@ public class RowInheritance implements Cloneable, Comparable<RowInheritance>
@Override
public int compareTo(RowInheritance other)
{
return (priority != other.priority)
? priority - other.priority
: parent.compareTo(other.parent);
final int compareByPriority = Integer.compare(priority, other.priority);
if(compareByPriority != 0)
return compareByPriority;
final int compareByParent = parent.toLowerCase().compareTo(other.parent.toLowerCase());
if(compareByParent != 0)
return compareByParent;
if(splittedId != null && other.splittedId != null)
{
final int compareBySplittedId = splittedId.compareTo(other.splittedId);
if(compareBySplittedId != 0)
return compareBySplittedId;
}
return Integer.compare(id, other.id);
}
}

16
src/main/java/ru/simsonic/rscPermissions/API/RowPermission.java

@ -2,7 +2,7 @@ package ru.simsonic.rscPermissions.API;
import java.sql.Timestamp;
public class RowPermission implements Cloneable
public class RowPermission implements Cloneable, Comparable<RowPermission>
{
public int id;
public String entity;
@ -21,4 +21,18 @@ public class RowPermission implements Cloneable
{
return (RowPermission)super.clone();
}
@Override
public int compareTo(RowPermission other)
{
final int compareByPermission = permission.toLowerCase().compareTo(other.permission.toLowerCase());
if(compareByPermission != 0)
return compareByPermission;
if(splittedId != null && other.splittedId != null)
{
final int compareBySplittedId = splittedId.compareTo(other.splittedId);
if(compareBySplittedId != 0)
return compareBySplittedId;
}
return Integer.compare(id, other.id);
}
}

Loading…
Cancel
Save