diff --git a/connector-amqp-import/samples/amqp-import.xml b/connector-amqp-import/samples/amqp-import.xml index 2aa285c..893515f 100644 --- a/connector-amqp-import/samples/amqp-import.xml +++ b/connector-amqp-import/samples/amqp-import.xml @@ -99,19 +99,25 @@ up - + + + + c:connectorType + edu.unc.polygon.connector.amqp.AmqpConnector + + + + id - midpoint - midpoint_hr + sor + sor_person payload - Guest - locahost - midpoint_hr - Guest + 5ecr3t + mq + sor_person + mysql id @@ -364,42 +370,44 @@ full - - - true - - - c:name - - $account/attributes/id - - - - - linked - true - - - deleted - true - - http://midpoint.evolveum.com/xml/ns/public/model/action-3#deleteFocus - - - - unlinked - true - - http://midpoint.evolveum.com/xml/ns/public/model/action-3#link - - - - unmatched - true - - http://midpoint.evolveum.com/xml/ns/public/model/action-3#addFocus - - - - + + + true + + + polyStringNorm + c:name + + Matches using Name + declare namespace ri="http://midpoint.evolveum.com/xml/ns/public/resource/instance-3"; $account/attributes/icfs:name + + + + + linked + true + + + deleted + true + + http://midpoint.evolveum.com/xml/ns/public/model/action-3#deleteFocus + + + + unlinked + true + + http://midpoint.evolveum.com/xml/ns/public/model/action-3#link + + + + unmatched + true + + http://midpoint.evolveum.com/xml/ns/public/model/action-3#addFocus + + + + diff --git a/connector-amqp-import/src/main/java/edu/unc/polygon/connector/amqp/AmqpConnector.java b/connector-amqp-import/src/main/java/edu/unc/polygon/connector/amqp/AmqpConnector.java index 359d974..49a77f8 100644 --- a/connector-amqp-import/src/main/java/edu/unc/polygon/connector/amqp/AmqpConnector.java +++ b/connector-amqp-import/src/main/java/edu/unc/polygon/connector/amqp/AmqpConnector.java @@ -37,8 +37,9 @@ @ConnectorClass(displayNameKey = "UI_AMQP_CONNECTOR_NAME", configurationClass = AmqpConfiguration.class) -public class AmqpConnector implements Connector, DeleteOp, SearchOp, SchemaOp, TestOp { +public class AmqpConnector implements Connector, DeleteOp, SearchOp, SchemaOp, TestOp { +public static final String ATTR_MAIL = "email"; private static final Log LOG = Log.getLog(AmqpConnector.class); private AmqpConfiguration configuration; @@ -68,7 +69,7 @@ public void dispose() { //handler = null; } @Override - public FilterTranslator createFilterTranslator(ObjectClass oc, OperationOptions oo) { + public FilterTranslator createFilterTranslator(ObjectClass oc, OperationOptions oo) { LOG.info("inside createFilterTranslator"); return new AmqpFilterTranslator(); } @@ -186,7 +187,7 @@ public Schema schema() { } @Override - public void executeQuery(ObjectClass oc, String uid, ResultsHandler handler, OperationOptions oo) { + public void executeQuery(ObjectClass oc, AmqpFilter filter, ResultsHandler handler, OperationOptions oo) { LOG.info(">>> executeQuery "); try { LOG.info("about to create factory"); diff --git a/connector-amqp-import/src/main/java/edu/unc/polygon/connector/amqp/AmqpFilter.java b/connector-amqp-import/src/main/java/edu/unc/polygon/connector/amqp/AmqpFilter.java new file mode 100644 index 0000000..fb4f884 --- /dev/null +++ b/connector-amqp-import/src/main/java/edu/unc/polygon/connector/amqp/AmqpFilter.java @@ -0,0 +1,19 @@ +package edu.unc.polygon.connector.amqp; + +/** + * + */ +public class AmqpFilter { + public String byName; + public String byUid; + public String byEmailAddress; + + @Override + public String toString() { + return "AmqpFilter{" + + "byName='" + byName + '\'' + + ", byUid=" + byUid + + ", byEmailAddress='" + byEmailAddress + '\'' + + '}'; + } +} diff --git a/connector-amqp-import/src/main/java/edu/unc/polygon/connector/amqp/AmqpFilterTranslator.java b/connector-amqp-import/src/main/java/edu/unc/polygon/connector/amqp/AmqpFilterTranslator.java index d5024a9..fbc62dc 100644 --- a/connector-amqp-import/src/main/java/edu/unc/polygon/connector/amqp/AmqpFilterTranslator.java +++ b/connector-amqp-import/src/main/java/edu/unc/polygon/connector/amqp/AmqpFilterTranslator.java @@ -1,33 +1,64 @@ +/* + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package edu.unc.polygon.connector.amqp; +import org.identityconnectors.common.logging.Log; import org.identityconnectors.framework.common.objects.Attribute; +import org.identityconnectors.framework.common.objects.Name; import org.identityconnectors.framework.common.objects.Uid; import org.identityconnectors.framework.common.objects.filter.AbstractFilterTranslator; import org.identityconnectors.framework.common.objects.filter.EqualsFilter; -import java.util.List; - -public class AmqpFilterTranslator extends AbstractFilterTranslator { +/** + */ +public class AmqpFilterTranslator extends AbstractFilterTranslator { + private static final Log LOG = Log.getLog(AmqpFilterTranslator.class); @Override - protected String createEqualsExpression(EqualsFilter filter, boolean not) { + protected AmqpFilter createEqualsExpression(EqualsFilter filter, boolean not) { + LOG.ok("createEqualsExpression, filter: {0}, not: {1}", filter, not); + if (not) { - return null; + return null; // not supported } Attribute attr = filter.getAttribute(); - if (!attr.is(Uid.NAME)) { - return null; + LOG.ok("attr.getName: {0}, attr.getValue: {1}, Uid.NAME: {2}, Name.NAME: {3}", attr.getName(), attr.getValue(), Uid.NAME, Name.NAME); + if (Uid.NAME.equals(attr.getName())) { + if (attr.getValue() != null && attr.getValue().get(0) != null) { + AmqpFilter lf = new AmqpFilter(); + lf.byUid = String.valueOf(attr.getValue().get(0)); + LOG.ok("lf.byUid: {0}, attr.getValue().get(0): {1}", lf.byUid, attr.getValue().get(0)); + return lf; + } } - - List values = attr.getValue(); - if (values.isEmpty()) { - return null; + else if (Name.NAME.equals(attr.getName())) { + if (attr.getValue() != null && attr.getValue().get(0) != null) { + AmqpFilter lf = new AmqpFilter(); + lf.byName = String.valueOf(attr.getValue().get(0)); + return lf; + } + } + else if (AmqpConnector.ATTR_MAIL.equals(attr.getName())) { + if (attr.getValue() != null && attr.getValue().get(0) != null) { + AmqpFilter lf = new AmqpFilter(); + lf.byEmailAddress = String.valueOf(attr.getValue().get(0)); + return lf; + } } - Object value = values.get(0); - - return value != null ? value.toString() : null; + return null; // not supported } } -