Browse Source

InternalCache refactoring.

master
Stanislav Usenkov 10 years ago
parent
commit
27f1c0c5ea
  1. 76
      src/main/java/ru/simsonic/rscPermissions/InternalCache/InternalCache.java

76
src/main/java/ru/simsonic/rscPermissions/InternalCache/InternalCache.java

@ -12,21 +12,18 @@ import ru.simsonic.rscPermissions.Backends.DatabaseContents;
public class InternalCache public class InternalCache
{ {
public InternalCache() private final HashMap<String, RowEntity> entities_g = new HashMap<>();
{ private final HashMap<String, RowEntity> entities_u = new HashMap<>();
} private final ArrayList<RowPermission> permissions_p2g = new ArrayList<>();
protected final RowInheritance defaultInheritance = new RowInheritance(); private final ArrayList<RowPermission> permissions_p2u = new ArrayList<>();
private final ArrayList<RowInheritance> inheritance_g2g = new ArrayList<>();
private final ArrayList<RowInheritance> inheritance_g2u = new ArrayList<>();
private final RowInheritance defaultInheritance = new RowInheritance();
public void setDefaultGroup(String defaultGroup) public void setDefaultGroup(String defaultGroup)
{ {
defaultInheritance.parent = defaultGroup; defaultInheritance.parent = defaultGroup;
defaultInheritance.deriveInstance(); defaultInheritance.deriveInstance();
} }
protected final HashMap<String, RowEntity> entities_g = new HashMap<>();
protected final HashMap<String, RowEntity> entities_u = new HashMap<>();
protected final ArrayList<RowPermission> permissions_p2g = new ArrayList<>();
protected final ArrayList<RowPermission> permissions_p2u = new ArrayList<>();
protected final ArrayList<RowInheritance> inheritance_g2g = new ArrayList<>();
protected final ArrayList<RowInheritance> inheritance_g2u = new ArrayList<>();
public static class InheritanceLeaf implements Comparable<InheritanceLeaf> public static class InheritanceLeaf implements Comparable<InheritanceLeaf>
{ {
public RowInheritance node; public RowInheritance node;
@ -180,51 +177,44 @@ public class InternalCache
importEntities(contents.entities); importEntities(contents.entities);
importPermissions(contents.permissions); importPermissions(contents.permissions);
importInheritance(contents.inheritance); importInheritance(contents.inheritance);
buildEntityTree();
} }
private int importEntities(RowEntity[] rows) private void importEntities(RowEntity[] rows)
{ {
entities_g.clear(); entities_g.clear();
entities_u.clear(); entities_u.clear();
if(rows == null) if(rows != null)
return 0; for(RowEntity row : rows)
for(RowEntity row : rows) {
{ if(row.entityType == EntityType.group)
if(row.entityType == EntityType.group) entities_g.put(row.entity.toLowerCase(), row);
entities_g.put(row.entity.toLowerCase(), row); else
else entities_u.put(row.entity.toLowerCase(), row);
entities_u.put(row.entity.toLowerCase(), row); }
}
return entities_g.size() + entities_u.size();
} }
private int importPermissions(RowPermission[] rows) private void importPermissions(RowPermission[] rows)
{ {
permissions_p2g.clear(); permissions_p2g.clear();
permissions_p2u.clear(); permissions_p2u.clear();
if(rows == null) if(rows != null)
return 0; for(RowPermission row : rows)
for(RowPermission row : rows) {
{ if(row.entityType == EntityType.group)
if(row.entityType == EntityType.group) permissions_p2g.add(row);
permissions_p2g.add(row); else
else permissions_p2u.add(row);
permissions_p2u.add(row); }
}
return permissions_p2g.size() + permissions_p2u.size();
} }
private int importInheritance(RowInheritance[] rows) private void importInheritance(RowInheritance[] rows)
{ {
inheritance_g2g.clear(); inheritance_g2g.clear();
inheritance_g2u.clear(); inheritance_g2u.clear();
if(rows == null) if(rows != null)
return 0; for(RowInheritance row : rows)
for(RowInheritance row : rows) if(row.childType == EntityType.group)
{ inheritance_g2g.add(row);
if(row.childType == EntityType.group) else
inheritance_g2g.add(row); inheritance_g2u.add(row);
else
inheritance_g2u.add(row);
}
return inheritance_g2g.size() + inheritance_g2u.size();
} }
public synchronized void clear() public synchronized void clear()
{ {

Loading…
Cancel
Save