public Map<String, Long> getLockingIds(final Class<IObject> type, final long id, final Long groupId) { String groupClause = ""; if (groupId != null) { groupClause = "and details.group.id <> " + groupId; } // since it's a managed entity it's class.getName() might // contain // some byte-code generation string final Class<? extends IObject> klass = Utils.trueClass(type); // the values that could possibly link to this instance. final String[][] checks = metadata.getLockChecks(klass); return this.metadata.countLocks(osf.getSession(), id, checks, groupClause); }
@RolesAllowed("user") public List<Class<IAnnotated>> getAnnotationTypes() { return new ArrayList<Class<IAnnotated>>(this.metadata .getAnnotatableTypes()); }
private Set<String> classes() { return getExtendedMetadata().getClasses(); }
@SuppressWarnings({ "unchecked", "rawtypes" }) public Object[] getChecks(IObject obj, String permissions) { ExperimenterGroup trusted = load(obj); if (!voter.allowChmod(trusted)) { throw new SecurityViolation("chmod not permitted"); } PermDrop drop = new PermDrop(trusted, permissions); if (!drop.found()) { return new Object[0]; // none needed. } List<Object> checks = new ArrayList<Object>(); Collection<String> classeNames = em.getClasses(); for (String className : classeNames) { Class k = em.getHibernateClass(className); if (voter.sysTypes.isSystemType(k)) { continue; // Skip experimenters, etc. } String[][] lockChecks = em.getLockChecks(k); checks.add(new Check(trusted.getId(), permissions, k, lockChecks, drop)); } return checks.toArray(new Object[checks.size()]); }
public Map<String, Long> run(Session session, ExtendedMetadata em) { StringBuilder sb = new StringBuilder(); sb.append("x.details.group.id = "); sb.append(groupID); sb.append(" and "); sb.append("y.details.group.id = "); sb.append(groupID); if (drop.reduceGroup) { sb.append(" and x.details.owner.id <> y.details.owner.id"); } return em.countLocks(session, null, lockChecks, sb.toString()); } }
final IObject[] candidates = em.getLockCandidates(changedObject); for (IObject linkedObject : candidates) {