annotate src/main/java/de/mpiwg/itgroup/ismi/entry/dataBeans/RoleCache.java @ 194:c7fec83ab69a

fix bugs with make-public buttons in entity details form. Closes #152.
author Robert Casties <casties@mpiwg-berlin.mpg.de>
date Fri, 07 Dec 2018 15:47:06 +0100
parents 2e911857a759
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
jurzua
parents:
diff changeset
1 package de.mpiwg.itgroup.ismi.entry.dataBeans;
jurzua
parents:
diff changeset
2
jurzua
parents:
diff changeset
3 import java.util.ArrayList;
jurzua
parents:
diff changeset
4 import java.util.HashMap;
jurzua
parents:
diff changeset
5 import java.util.List;
jurzua
parents:
diff changeset
6 import java.util.Map;
jurzua
parents:
diff changeset
7
jurzua
parents:
diff changeset
8 import org.apache.commons.lang.StringUtils;
jurzua
parents:
diff changeset
9 import org.mpi.openmind.repository.bo.Entity;
jurzua
parents:
diff changeset
10 import org.mpi.openmind.repository.bo.Relation;
jurzua
parents:
diff changeset
11 import org.mpi.openmind.repository.services.ServiceRegistry;
jurzua
parents:
diff changeset
12
jurzua
parents:
diff changeset
13 public class RoleCache extends AbstractCache{
jurzua
parents:
diff changeset
14 Map<String, List<Long>> roleMap = null;
jurzua
parents:
diff changeset
15
jurzua
parents:
diff changeset
16 public RoleCache(ServiceRegistry sr) {
jurzua
parents:
diff changeset
17 super(sr);
jurzua
parents:
diff changeset
18 }
jurzua
parents:
diff changeset
19
jurzua
parents:
diff changeset
20 @Override
jurzua
parents:
diff changeset
21 public void reset(){
jurzua
parents:
diff changeset
22 super.reset();
jurzua
parents:
diff changeset
23 loadRoleMap();
jurzua
parents:
diff changeset
24 }
jurzua
parents:
diff changeset
25
jurzua
parents:
diff changeset
26 private void loadRoleMap(){
jurzua
parents:
diff changeset
27 roleMap = new HashMap<String, List<Long>>();
jurzua
parents:
diff changeset
28 //List<Entity> roles = getOtl().getLightweightAssertions("ROLE", null, -1);
jurzua
parents:
diff changeset
29 List<Entity> roles = getWrapper().getEntitiesByDef("ROLE");
jurzua
parents:
diff changeset
30 for(Entity role : roles){
jurzua
parents:
diff changeset
31 if(StringUtils.isNotEmpty(role.getOwnValue())){
jurzua
parents:
diff changeset
32 String roleLowCase = role.getOwnValue().toLowerCase();
jurzua
parents:
diff changeset
33 getRoleMap().put(roleLowCase, new ArrayList<Long>());
jurzua
parents:
diff changeset
34 List<Relation> relList = getWrapper().getTargetRelations(role, "has_role", "PERSON", -1);
jurzua
parents:
diff changeset
35 for(Relation hasRole : relList){
jurzua
parents:
diff changeset
36 getRoleMap().get(roleLowCase).add(hasRole.getSourceId());
jurzua
parents:
diff changeset
37 }
jurzua
parents:
diff changeset
38 }else{
jurzua
parents:
diff changeset
39 System.err.println("****************");
jurzua
parents:
diff changeset
40 System.err.println("Entity Role without Label: " + role);
jurzua
parents:
diff changeset
41 System.err.println("****************");
jurzua
parents:
diff changeset
42 }
jurzua
parents:
diff changeset
43 }
jurzua
parents:
diff changeset
44 }
jurzua
parents:
diff changeset
45
jurzua
parents:
diff changeset
46 public List<String> getRoleList(Long id){
jurzua
parents:
diff changeset
47 List<String> list = new ArrayList<String>();
jurzua
parents:
diff changeset
48 for(String roleName : this.getRoleMap().keySet()){
jurzua
parents:
diff changeset
49 if(this.getRoleMap().get(roleName).contains(id)){
jurzua
parents:
diff changeset
50 list.add(roleName);
jurzua
parents:
diff changeset
51
jurzua
parents:
diff changeset
52 }
jurzua
parents:
diff changeset
53 }
jurzua
parents:
diff changeset
54 return list;
jurzua
parents:
diff changeset
55 }
jurzua
parents:
diff changeset
56
jurzua
parents:
diff changeset
57 public Map<String, List<Long>> getRoleMap() {
jurzua
parents:
diff changeset
58 if(roleMap == null)
jurzua
parents:
diff changeset
59 loadRoleMap();
jurzua
parents:
diff changeset
60 return roleMap;
jurzua
parents:
diff changeset
61 }
jurzua
parents:
diff changeset
62
jurzua
parents:
diff changeset
63 public boolean roleContainsPersonId(String role, Long id){
jurzua
parents:
diff changeset
64 if(StringUtils.isEmpty(role) || this.getRoleMap().get(role.toLowerCase()) == null)
jurzua
parents:
diff changeset
65 return false;
jurzua
parents:
diff changeset
66
jurzua
parents:
diff changeset
67 return this.getRoleMap().get(role.toLowerCase()).contains(id);
jurzua
parents:
diff changeset
68 }
jurzua
parents:
diff changeset
69 }