use of net.sourceforge.myvd.types.FilterType in project OpenUnison by TremoloSecurity.
the class OktaInsert method cleanFilter.
private boolean cleanFilter(FilterNode root) {
FilterType op;
// filter.append('(');
String comp = null;
ArrayList<FilterNode> children;
Iterator<FilterNode> filterIt;
String attribName = null;
boolean isFirst = true;
op = root.getType();
switch(op) {
case AND:
case OR:
ArrayList<FilterNode> toRemove = new ArrayList<FilterNode>();
children = root.getChildren();
for (FilterNode node : children) {
if (!cleanFilter(node)) {
toRemove.add(node);
}
}
if (!toRemove.isEmpty()) {
children.removeAll(toRemove);
}
return !children.isEmpty();
case NOT:
return cleanFilter(root.getNot());
case EQUALS:
{
if (root.getName().equalsIgnoreCase("objectclass")) {
return false;
}
break;
}
case PRESENCE:
// presence search seems broken in okta,skip it
return false;
}
return true;
}
use of net.sourceforge.myvd.types.FilterType in project OpenUnison by TremoloSecurity.
the class OktaInsert method stringFilter.
private String stringFilter(FilterNode root, StringBuffer filter) {
FilterType op;
// filter.append('(');
String comp = null;
ArrayList<FilterNode> children;
Iterator<FilterNode> filterIt;
String attribName = null;
boolean isFirst = true;
op = root.getType();
switch(op) {
case AND:
HashMap<String, ArrayList<FilterNode>> attribs = new HashMap<String, ArrayList<FilterNode>>();
// first sort the nodes into "buckets"
children = root.getChildren();
filterIt = children.iterator();
while (filterIt.hasNext()) {
FilterNode node = filterIt.next();
if (node.getType() == FilterType.AND) {
ArrayList<FilterNode> ands = attribs.get("&");
if (ands == null) {
ands = new ArrayList<FilterNode>();
attribs.put("&", ands);
}
ands.add(node);
} else if (node.getType() == FilterType.OR) {
ArrayList<FilterNode> ors = attribs.get("|");
if (ors == null) {
ors = new ArrayList<FilterNode>();
attribs.put("|", ors);
}
ors.add(node);
} else if (node.getType() == FilterType.NOT) {
ArrayList<FilterNode> nots = attribs.get("!");
if (nots == null) {
nots = new ArrayList<FilterNode>();
attribs.put("!", nots);
}
nots.add(node);
} else {
ArrayList<FilterNode> attribNodes = attribs.get(node.getName());
if (attribNodes == null) {
attribNodes = new ArrayList<FilterNode>();
attribs.put(node.getName(), attribNodes);
}
attribNodes.add(node);
}
}
filter.append(" ( ");
Iterator<String> itBuckets = attribs.keySet().iterator();
while (itBuckets.hasNext()) {
String attrib = itBuckets.next();
ArrayList<FilterNode> nodes = attribs.get(attrib);
if (attrib.equals("&")) {
Iterator<FilterNode> itNodes = nodes.iterator();
filter.append(" ( ");
while (itNodes.hasNext()) {
stringFilter(itNodes.next(), filter);
if (itNodes.hasNext()) {
filter.append(" and ");
}
}
filter.append(" ) ");
if (itBuckets.hasNext()) {
filter.append(" and ");
}
} else if (attrib.equals("|")) {
Iterator<FilterNode> itNodes = nodes.iterator();
filter.append(" ( ");
while (itNodes.hasNext()) {
stringFilter(itNodes.next(), filter);
if (itNodes.hasNext()) {
filter.append(" and ");
}
}
filter.append(" ) ");
if (itBuckets.hasNext()) {
filter.append(" and ");
}
} else if (attrib.equals("!")) {
Iterator<FilterNode> itNodes = nodes.iterator();
filter.append(" ( ");
while (itNodes.hasNext()) {
stringFilter(itNodes.next(), filter);
if (itNodes.hasNext()) {
filter.append(" and ");
}
}
filter.append(" ) ");
if (itBuckets.hasNext()) {
filter.append(" and ");
}
} else {
Iterator<FilterNode> itNodes = nodes.iterator();
filter.append(" ( ");
while (itNodes.hasNext()) {
stringFilter(itNodes.next(), filter);
if (itNodes.hasNext()) {
filter.append(" or ");
}
}
filter.append(" ) ");
if (itBuckets.hasNext()) {
filter.append(" and ");
}
}
}
filter.append(" ) ");
break;
case OR:
filter.append(" ( ");
children = root.getChildren();
filterIt = children.iterator();
while (filterIt.hasNext()) {
stringFilter(filterIt.next(), filter);
if (filterIt.hasNext()) {
filter.append(" or ");
}
}
filter.append(" ) ");
break;
case NOT:
filter.append(" NOT ( ");
stringFilter(root.getNot(), filter);
filter.append(" ) ");
break;
case EQUALS:
{
if (root.getName().equalsIgnoreCase("objectclass")) {
filter.append(" profile.displayName pr ");
} else {
attribName = root.getName();
if (attribName == null) {
filter.append(" 1 = 0 ");
} else {
filter.append("profile.").append(attribName).append(" eq \"").append(root.getValue()).append("\" ");
}
}
break;
}
case GREATER_THEN:
{
attribName = root.getName();
filter.append("profile.").append(attribName).append(" gt \"").append(root.getValue()).append("\" ");
break;
}
case LESS_THEN:
{
attribName = root.getName();
filter.append("profile.").append(attribName).append(" lt \"").append(root.getValue()).append("\" ");
break;
}
case PRESENCE:
if (root.getName().equalsIgnoreCase("objectclass")) {
filter.append(" 1=1 ");
} else {
filter.append("profile.").append(attribName).append(" pr ");
}
break;
/*case APPROX_MATCH:
filter.append((String)itr.next());
filter.append("~=");
byte[] value = (byte[])itr.next();
filter.append(byteString(value));
if (comp != null && itr.hasNext()) {
filter.append(comp);
}
break;
case LDAPSearchRequest.EXTENSIBLE_MATCH:
String oid = (String)itr.next();
filter.append((String)itr.next());
filter.append(':');
filter.append(oid);
filter.append(":=");
filter.append((String)itr.next());
if (comp != null && itr.hasNext()) {
filter.append(comp);
}
break;*/
case SUBSTR:
{
attribName = root.getName();
filter.append(attribName);
filter.append(" LIKE '");
boolean noStarLast = false;
filter.append(root.getValue().replace('*', '%')).append('\'');
break;
}
}
if (comp != null) {
filter.append(')');
}
return attribName;
}
use of net.sourceforge.myvd.types.FilterType in project OpenUnison by TremoloSecurity.
the class AmazonSimpleDB method stringFilter.
private String stringFilter(FilterNode root, StringBuffer filter, ArrayList<Object> vals) {
FilterType op;
// filter.append('(');
String comp = null;
ArrayList<FilterNode> children;
Iterator<FilterNode> filterIt;
String attribName = null;
boolean isFirst = true;
op = root.getType();
switch(op) {
case AND:
HashMap<String, ArrayList<FilterNode>> attribs = new HashMap<String, ArrayList<FilterNode>>();
// first sort the nodes into "buckets"
children = root.getChildren();
filterIt = children.iterator();
while (filterIt.hasNext()) {
FilterNode node = filterIt.next();
if (node.getType() == FilterType.AND) {
ArrayList<FilterNode> ands = attribs.get("&");
if (ands == null) {
ands = new ArrayList<FilterNode>();
attribs.put("&", ands);
}
ands.add(node);
} else if (node.getType() == FilterType.OR) {
ArrayList<FilterNode> ors = attribs.get("|");
if (ors == null) {
ors = new ArrayList<FilterNode>();
attribs.put("|", ors);
}
ors.add(node);
} else if (node.getType() == FilterType.NOT) {
ArrayList<FilterNode> nots = attribs.get("!");
if (nots == null) {
nots = new ArrayList<FilterNode>();
attribs.put("!", nots);
}
nots.add(node);
} else {
ArrayList<FilterNode> attribNodes = attribs.get(node.getName().toLowerCase());
if (attribNodes == null) {
attribNodes = new ArrayList<FilterNode>();
attribs.put(node.getName(), attribNodes);
}
attribNodes.add(node);
}
}
filter.append(" ( ");
Iterator<String> itBuckets = attribs.keySet().iterator();
while (itBuckets.hasNext()) {
String attrib = itBuckets.next();
ArrayList<FilterNode> nodes = attribs.get(attrib);
if (attrib.equals("&")) {
Iterator<FilterNode> itNodes = nodes.iterator();
filter.append(" ( ");
while (itNodes.hasNext()) {
stringFilter(itNodes.next(), filter, vals);
if (itNodes.hasNext()) {
filter.append(" AND ");
}
}
filter.append(" ) ");
if (itBuckets.hasNext()) {
filter.append(" AND ");
}
} else if (attrib.equals("|")) {
Iterator<FilterNode> itNodes = nodes.iterator();
filter.append(" ( ");
while (itNodes.hasNext()) {
stringFilter(itNodes.next(), filter, vals);
if (itNodes.hasNext()) {
filter.append(" AND ");
}
}
filter.append(" ) ");
if (itBuckets.hasNext()) {
filter.append(" AND ");
}
} else if (attrib.equals("!")) {
Iterator<FilterNode> itNodes = nodes.iterator();
filter.append(" ( ");
while (itNodes.hasNext()) {
stringFilter(itNodes.next(), filter, vals);
if (itNodes.hasNext()) {
filter.append(" AND ");
}
}
filter.append(" ) ");
if (itBuckets.hasNext()) {
filter.append(" AND ");
}
} else {
Iterator<FilterNode> itNodes = nodes.iterator();
filter.append(" ( ");
while (itNodes.hasNext()) {
stringFilter(itNodes.next(), filter, vals);
if (itNodes.hasNext()) {
filter.append(" OR ");
}
}
filter.append(" ) ");
if (itBuckets.hasNext()) {
filter.append(" AND ");
}
}
}
filter.append(" ) ");
break;
case OR:
filter.append(" ( ");
children = root.getChildren();
filterIt = children.iterator();
while (filterIt.hasNext()) {
stringFilter(filterIt.next(), filter, vals);
if (filterIt.hasNext()) {
filter.append(" OR ");
}
}
filter.append(" ) ");
break;
case NOT:
filter.append(" NOT ( ");
stringFilter(root.getNot(), filter, vals);
filter.append(" ) ");
break;
case EQUALS:
{
if (root.getName().equalsIgnoreCase("objectclass")) {
filter.append(" (uid IS NOT NULL OR cn IS NOT NULL) ");
} else {
attribName = root.getName().toLowerCase();
if (attribName == null) {
filter.append(" (uid IS NULL AND cn IS NULL) ");
} else {
filter.append(attribName);
filter.append("='");
filter.append(root.getValue());
filter.append('\'');
vals.add(root.getValue());
}
}
break;
}
case GREATER_THEN:
{
attribName = root.getName().toLowerCase();
filter.append(attribName);
filter.append(">=");
filter.append("=");
filter.append(root.getValue());
vals.add(root.getValue());
break;
}
case LESS_THEN:
{
attribName = root.getName().toLowerCase();
filter.append(attribName);
filter.append("<=");
filter.append("=");
filter.append(root.getValue());
vals.add(root.getValue());
break;
}
case PRESENCE:
if (root.getName().equalsIgnoreCase("objectclass")) {
filter.append(" (uid IS NOT NULL OR cn IS NOT NULL) ");
} else {
filter.append(root.getName().toLowerCase());
filter.append(" IS NOT NULL ");
}
break;
/*case APPROX_MATCH:
filter.append((String)itr.next());
filter.append("~=");
byte[] value = (byte[])itr.next();
filter.append(byteString(value));
if (comp != null && itr.hasNext()) {
filter.append(comp);
}
break;
case LDAPSearchRequest.EXTENSIBLE_MATCH:
String oid = (String)itr.next();
filter.append((String)itr.next());
filter.append(':');
filter.append(oid);
filter.append(":=");
filter.append((String)itr.next());
if (comp != null && itr.hasNext()) {
filter.append(comp);
}
break;*/
case SUBSTR:
{
attribName = root.getName().toLowerCase();
filter.append(attribName);
filter.append(" LIKE '");
boolean noStarLast = false;
filter.append(root.getValue().replace('*', '%')).append('\'');
break;
}
}
if (comp != null) {
filter.append(')');
}
return attribName;
}
Aggregations