Skip to content

Commit

Permalink
minor improvements in isAnySubordinateAttempt method.
Browse files Browse the repository at this point in the history
  • Loading branch information
1azyman committed Apr 22, 2014
1 parent 0926c73 commit 0afbc77
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 31 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -1799,9 +1799,6 @@ protected int cleanupAttempt(Class entity, Date minValue, Session session) {
query.setParameter("timestamp", XMLGregorianCalendarType.asXMLGregorianCalendar(minValue));
return query.executeUpdate();
}




@Override
public boolean isAnySubordinate(String upperOrgOid, Collection<String> lowerObjectOids) throws SchemaException {
Expand Down Expand Up @@ -1833,34 +1830,38 @@ public boolean isAnySubordinate(String upperOrgOid, Collection<String> lowerObje
}
}

private boolean isAnySubordinateAttempt(String upperOrgOid, Collection<String> lowerObjectOids)
throws SchemaException {
private boolean isAnySubordinateAttempt(String upperOrgOid, Collection<String> lowerObjectOids) {
Session session = null;
try {
session = beginTransaction();

StringBuilder sb = new StringBuilder();
sb.append("select count(*) from ROrgClosure o where ");

sb.append('(');
Iterator<String> iterator = lowerObjectOids.iterator();
int paramIndex = 0;
while (iterator.hasNext()) {
String subOid = iterator.next();
sb.append("(o.ancestorOid=:aOid").append(paramIndex);
sb.append(" and o.descendantOid=:dOid").append(paramIndex);
sb.append(')');
paramIndex++;
if (iterator.hasNext()) {
sb.append(" or ");
Query query;
if (lowerObjectOids.size() == 1) {
query = session.getNamedQuery("isAnySubordinateAttempt.oneLowerOid");
} else {
StringBuilder sb = new StringBuilder();
sb.append("select count(*) from ROrgClosure o where ");

sb.append('(');
Iterator<String> iterator = lowerObjectOids.iterator();
int paramIndex = 0;
while (iterator.hasNext()) {
iterator.next();
sb.append("(o.ancestorOid=:aOid").append(paramIndex);
sb.append(" and o.descendantOid=:dOid").append(paramIndex);
sb.append(')');
paramIndex++;
if (iterator.hasNext()) {
sb.append(" or ");
}
}
sb.append(')');

query = session.createQuery(sb.toString());
}
sb.append(')');

Query query = session.createQuery(sb.toString());

iterator = lowerObjectOids.iterator();
paramIndex = 0;

Iterator<String> iterator = lowerObjectOids.iterator();
int paramIndex = 0;
while (iterator.hasNext()) {
String subOid = iterator.next();
query.setString("aOid" + paramIndex, upperOrgOid);
Expand All @@ -1869,12 +1870,7 @@ private boolean isAnySubordinateAttempt(String upperOrgOid, Collection<String> l
}

Number number = (Number) query.uniqueResult();
if (number.longValue() != 0L) {
return true;
}

return false;

return (number != null && number.longValue() != 0L) ? true : false;
} catch (RuntimeException ex) {
handleGeneralException(ex, session, null);
} finally {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@
@NamedQuery(name = "getDefinition.ROExtPolyString", query = "select c.name, c.type, c.valueType from ROExtPolyString as c where c.ownerOid = :oid and c.ownerType = :ownerType"),
@NamedQuery(name = "getDefinition.ROExtLong", query = "select c.name, c.type, c.valueType from ROExtLong as c where c.ownerOid = :oid and c.ownerType = :ownerType"),
@NamedQuery(name = "getDefinition.ROExtReference", query = "select c.name, c.type, c.valueType from ROExtReference as c where c.ownerOid = :oid and c.ownerType = :ownerType"),
@NamedQuery(name = "isAnySubordinateAttempt.oneLowerOid", query = "select count(*) from ROrgClosure o where o.ancestorOid=:aOid0 and o.descendantOid=:dOid0"),
})
@Entity
@Table(name = "m_object")
Expand Down

0 comments on commit 0afbc77

Please sign in to comment.