On 01/07/19 10:50, Rainer Herbst wrote:
Thanks a lot, that solved the problem!

Or should I say, it is a goot workaround? A solution would be to escape the field names, so that the SQL statements will work no matter what field names are used? ;-)

Hi Rainer,
glad that Davide was able to help with your troubles.

Feel free to reach up the ConnId mailing list [1] to discuss this, or to submit a PR [2].

Regards.

[1] https://groups.google.com/forum/#!forum/connid-users
[2] https://github.com/Tirasa/ConnIdCSVDirBundle

On Fri, 28 Jun 2019 17:08:23 +0200
 Davide Cortellucci <davide.cortellu...@tirasa.net> wrote:
I managed to reproduce your error.

It looks like the problem is with the "group" column name: since it is one of the SQL reserved words, you should change it in your csv and update the connector accordingly.

Best regards

Davide

On 6/28/19 11:14 AM, Rainer Herbst wrote:
Hi Davide,


thank you for the quick response.
Here is the current connector configuration. The ressource configuration follows below.

{
  "key" : "566c864b-9b85-4cdf-ac86-4b9b850cdfe1",
  "adminRealm" : "/AIPTest",
  "location" : "file:/opt/syncope/bundles/",
  "connectorName" : "net.tirasa.connid.bundles.csvdir.CSVDirConnector",
  "bundleName" : "net.tirasa.connid.bundles.csvdir",
  "version" : "0.8.8",
  "displayName" : "SystemDB",
  "connRequestTimeout" : 10,
  "poolConf" : {
  "maxObjects" : 2000,
  "minIdle" : 20,
  "maxIdle" : 200,
  "maxWait" : 3000,
  "minEvictableIdleTimeMillis" : 2000
  },
  "conf" : [ {
  "schema" : {
  "name" : "sourcePath",
  "displayName" : "Source path",
  "helpMessage" : "Absolute path of a directory where the CSV files to be processed are located",
  "type" : "java.lang.String",
  "required" : true,
  "order" : 1,
  "confidential" : false,
  "defaultValues" : [ ]
  },
  "overridable" : true,
  "values" : [ "/srv/tomcat/data/" ]
  }, {
  "schema" : {
  "name" : "fileMask",
  "displayName" : "File mask",
  "helpMessage" : "Regular expression describing files to be processed",
  "type" : "java.lang.String",
  "required" : true,
  "order" : 2,
  "confidential" : false,
  "defaultValues" : [ ]
  },
  "overridable" : true,
  "values" : [ ".csv" ]
  }, {
  "schema" : {
  "name" : "encoding",
  "displayName" : "File encoding",
  "helpMessage" : "Basic encoding of the file",
  "type" : "java.lang.String",
  "required" : false,
  "order" : 3,
  "confidential" : false,
  "defaultValues" : [ "UTF-8" ]
  },
  "overridable" : true,
  "values" : [ "UTF-8" ]
  }, {
  "schema" : {
  "name" : "fieldDelimiter",
  "displayName" : "Field delimiter",
  "helpMessage" : "Delimiter used to separate fields in CSV files. Default is \",\".",
  "type" : "char",
  "required" : false,
  "order" : 4,
  "confidential" : false,
  "defaultValues" : [ "," ]
  },
  "overridable" : true,
  "values" : [ "," ]
  }, {
  "schema" : {
  "name" : "textQualifier",
  "displayName" : "Text qualifier",
  "helpMessage" : "Delimiter to determine beginning and end of text in value. Default is \".",
  "type" : "char",
  "required" : false,
  "order" : 5,
  "confidential" : false,
  "defaultValues" : [ "\"" ]
  },
  "overridable" : true,
  "values" : [ "'" ]
  }, {
  "schema" : {
  "name" : "keyColumnNames",
  "displayName" : "Key column name",
  "helpMessage" : "Name of the column used to identify user uniquely",
  "type" : "[Ljava.lang.String;",
  "required" : true,
  "order" : 6,
  "confidential" : false,
  "defaultValues" : [ ]
  },
  "overridable" : true,
  "values" : [ "uidNumber" ]
  }, {
  "schema" : {
  "name" : "passwordColumnName",
  "displayName" : "Password column name",
  "helpMessage" : "Name of the column used to specify user password",
  "type" : "java.lang.String",
  "required" : false,
  "order" : 7,
  "confidential" : false,
  "defaultValues" : [ ]
  },
  "overridable" : false,
  "values" : [ ]
  }, {
  "schema" : {
  "name" : "deleteColumnName",
  "displayName" : "Delete column name",
  "helpMessage" : "Name of the column used to specify users to be deleted",
  "type" : "java.lang.String",
  "required" : false,
  "order" : 8,
  "confidential" : false,
  "defaultValues" : [ ]
  },
  "overridable" : false,
  "values" : [ ]
  }, {
  "schema" : {
  "name" : "quotationRequired",
  "displayName" : "Value quotation required",
  "helpMessage" : "Specify if value quotation is required. Default is true.",
  "type" : "java.lang.Boolean",
  "required" : false,
  "order" : 9,
  "confidential" : false,
  "defaultValues" : [ true ]
  },
  "overridable" : false,
  "values" : [ true ]
  }, {
  "schema" : {
  "name" : "fields",
  "displayName" : "Column names",
  "helpMessage" : "Column names",
  "type" : "[Ljava.lang.String;",
  "required" : true,
  "order" : 10,
  "confidential" : false,
  "defaultValues" : [ ]
  },
  "overridable" : true,
  "values" : [ "uidNumber" ]
  }, {
  "schema" : {
  "name" : "ignoreHeader",
  "displayName" : "Ignore header",
  "helpMessage" : "Specify if first line of the file must be ignored. Default is true.",
  "type" : "java.lang.Boolean",
  "required" : false,
  "order" : 11,
  "confidential" : false,
  "defaultValues" : [ true ]
  },
  "overridable" : true,
  "values" : [ "true" ]
  }, {
  "schema" : {
  "name" : "keyseparator",
  "displayName" : "Key separator",
  "helpMessage" : "Character used to separate keys in a multi-key scenario. Default is \",\".",
  "type" : "java.lang.String",
  "required" : false,
  "order" : 12,
  "confidential" : false,
  "defaultValues" : [ "," ]
  },
  "overridable" : true,
  "values" : [ ";" ]
  }, {
  "schema" : {
  "name" : "multivalueSeparator",
  "displayName" : "Multi value separator",
  "helpMessage" : "Character used to separate values in a multi-value scenario. Multivalue unsupported if not provided.",
  "type" : "java.lang.String",
  "required" : false,
  "order" : 13,
  "confidential" : false,
  "defaultValues" : [ ]
  },
  "overridable" : false,
  "values" : [ ]
  }, {
  "schema" : {
  "name" : "defaultStatusValue",
  "displayName" : "Default Status Value",
  "helpMessage" : "Enter the value for status in case of status not specified. Default is \"true\".",
  "type" : "java.lang.String",
  "required" : false,
  "order" : 14,
  "confidential" : false,
  "defaultValues" : [ "true" ]
  },
  "overridable" : false,
  "values" : [ "true" ]
  }, {
  "schema" : {
  "name" : "disabledStatusValue",
  "displayName" : "Disabled Status Value",
  "helpMessage" : "Specify a value for disabled status. Default is \"false\".",
  "type" : "java.lang.String",
  "required" : false,
  "order" : 15,
  "confidential" : false,
  "defaultValues" : [ "false" ]
  },
  "overridable" : false,
  "values" : [ "false" ]
  }, {
  "schema" : {
  "name" : "enabledStatusValue",
  "displayName" : "Enable Status Value",
  "helpMessage" : "Specify a value for enabled status. Default is \"true\".",
  "type" : "java.lang.String",
  "required" : false,
  "order" : 16,
  "confidential" : false,
  "defaultValues" : [ "true" ]
  },
  "overridable" : false,
  "values" : [ "true" ]
  }, {
  "schema" : {
  "name" : "statusColumn",
  "displayName" : "Status Column name",
  "helpMessage" : "Status column name.",
  "type" : "java.lang.String",
  "required" : false,
  "order" : 17,
  "confidential" : false,
  "defaultValues" : [ ]
  },
  "overridable" : true,
  "values" : [ ]
  } ],
  "capabilities" : [ "SEARCH", "CREATE", "UPDATE" ]
}

Ressource config:
{
  "key" : "Users",
  "connector" : "566c864b-9b85-4cdf-ac86-4b9b850cdfe1",
  "connectorDisplayName" : "SystemDB",
  "orgUnit" : null,
  "propagationPriority" : 2,
  "randomPwdIfNotProvided" : false,
  "enforceMandatoryCondition" : false,
  "createTraceLevel" : "ALL",
  "updateTraceLevel" : "ALL",
  "deleteTraceLevel" : "ALL",
  "provisioningTraceLevel" : "ALL",
  "passwordPolicy" : "0b17832c-cdb2-4e92-9783-2ccdb23e92d1",
  "accountPolicy" : "319350c1-6809-49ed-9350-c1680929eda1",
  "pullPolicy" : "ec43ef48-4ba9-4ef0-83ef-484ba9fef083",
  "pushPolicy" : "a66afe6e-7e23-44d4-aafe-6e7e2374d4dc",
  "overrideCapabilities" : false,
  "provisions" : [ {
  "key" : "71e72b11-a3a7-4090-a72b-11a3a780902a",
  "anyType" : "USER",
  "objectClass" : "__ACCOUNT__",
  "syncToken" : null,
  "ignoreCaseMatch" : false,
  "uidOnCreate" : null,
  "mapping" : {
  "connObjectLink" : null,
  "connObjectKeyItem" : {
  "key" : "34938fac-168c-4e66-938f-ac168c0e66bd",
  "intAttrName" : "numericalUID",
  "extAttrName" : "uidNumber",
  "connObjectKey" : true,
  "password" : false,
  "mandatoryCondition" : "true",
  "purpose" : "PROPAGATION",
  "propagationJEXLTransformer" : null,
  "pullJEXLTransformer" : null,
  "transformers" : [ ]
  },
  "items" : [ {
  "key" : "34938fac-168c-4e66-938f-ac168c0e66bd",
  "intAttrName" : "numericalUID",
  "extAttrName" : "uidNumber",
  "connObjectKey" : true,
  "password" : false,
  "mandatoryCondition" : "true",
  "purpose" : "PROPAGATION",
  "propagationJEXLTransformer" : null,
  "pullJEXLTransformer" : null,
  "transformers" : [ ]
  }, {
  "key" : "3ba6be21-82db-4702-a6be-2182dba702b0",
  "intAttrName" : "organizationalUnit",
  "extAttrName" : "group",
  "connObjectKey" : false,
  "password" : false,
  "mandatoryCondition" : "false",
  "purpose" : "BOTH",
  "propagationJEXLTransformer" : null,
  "pullJEXLTransformer" : null,
  "transformers" : [ ]
  }, {
  "key" : "69557f34-b7cd-4e11-957f-34b7cd1e1167",
  "intAttrName" : "creationDate",
  "extAttrName" : "createdDatum",
  "connObjectKey" : false,
  "password" : false,
  "mandatoryCondition" : "false",
  "purpose" : "BOTH",
  "propagationJEXLTransformer" : null,
  "pullJEXLTransformer" : null,
  "transformers" : [ ]
  }, {
  "key" : "d55ae9a2-10ca-45c3-9ae9-a210cae5c31f",
  "intAttrName" : "displayName",
  "extAttrName" : "fullName",
  "connObjectKey" : false,
  "password" : false,
  "mandatoryCondition" : "false",
  "purpose" : "BOTH",
  "propagationJEXLTransformer" : null,
  "pullJEXLTransformer" : null,
  "transformers" : [ ]
  }, {
  "key" : "9ccf8d00-14cb-4085-8f8d-0014cbb08527",
  "intAttrName" : "uid",
  "extAttrName" : "uid",
  "connObjectKey" : false,
  "password" : false,
  "mandatoryCondition" : "true",
  "purpose" : "BOTH",
  "propagationJEXLTransformer" : null,
  "pullJEXLTransformer" : null,
  "transformers" : [ ]
  } ],
  "linkingItems" : [ {
  "key" : null,
  "intAttrName" : "AllUsers",
  "extAttrName" : "uid",
  "connObjectKey" : false,
  "password" : false,
  "mandatoryCondition" : "false",
  "purpose" : "BOTH",
  "propagationJEXLTransformer" : null,
  "pullJEXLTransformer" : null,
  "transformers" : [ ]
  } ]
  },
  "auxClasses" : [ ],
  "virSchemas" : [ "AllUsers" ]
  } ],
  "confOverride" : [ {
  "schema" : {
  "name" : "sourcePath",
  "displayName" : "Source path",
  "helpMessage" : "Absolute path of a directory where the CSV files to be processed are located",
  "type" : "java.lang.String",
  "required" : true,
  "order" : 1,
  "confidential" : false,
  "defaultValues" : [ ]
  },
  "overridable" : true,
  "values" : [ "/srv/tomcat/data/" ]
  }, {
  "schema" : {
  "name" : "fileMask",
  "displayName" : "File mask",
  "helpMessage" : "Regular expression describing files to be processed",
  "type" : "java.lang.String",
  "required" : true,
  "order" : 2,
  "confidential" : false,
  "defaultValues" : [ ]
  },
  "overridable" : true,
  "values" : [ "aip-system_users_test.csv" ]
  }, {
  "schema" : {
  "name" : "encoding",
  "displayName" : "File encoding",
  "helpMessage" : "Basic encoding of the file",
  "type" : "java.lang.String",
  "required" : false,
  "order" : 3,
  "confidential" : false,
  "defaultValues" : [ "UTF-8" ]
  },
  "overridable" : true,
  "values" : [ "UTF-8" ]
  }, {
  "schema" : {
  "name" : "fieldDelimiter",
  "displayName" : "Field delimiter",
  "helpMessage" : "Delimiter used to separate fields in CSV files. Default is \",\".",
  "type" : "char",
  "required" : false,
  "order" : 4,
  "confidential" : false,
  "defaultValues" : [ "," ]
  },
  "overridable" : true,
  "values" : [ "," ]
  }, {
  "schema" : {
  "name" : "textQualifier",
  "displayName" : "Text qualifier",
  "helpMessage" : "Delimiter to determine beginning and end of text in value. Default is \".",
  "type" : "char",
  "required" : false,
  "order" : 5,
  "confidential" : false,
  "defaultValues" : [ "\"" ]
  },
  "overridable" : true,
  "values" : [ "'" ]
  }, {
  "schema" : {
  "name" : "keyColumnNames",
  "displayName" : "Key column name",
  "helpMessage" : "Name of the column used to identify user uniquely",
  "type" : "[Ljava.lang.String;",
  "required" : true,
  "order" : 6,
  "confidential" : false,
  "defaultValues" : [ ]
  },
  "overridable" : true,
  "values" : [ "uidNumber" ]
  }, {
  "schema" : {
  "name" : "fields",
  "displayName" : "Column names",
  "helpMessage" : "Column names",
  "type" : "[Ljava.lang.String;",
  "required" : true,
  "order" : 10,
  "confidential" : false,
  "defaultValues" : [ ]
  },
  "overridable" : true,
  "values" : [ "createdDatum", "createdTime", "uid", "uidNumber", "gidNumber", "fullName", "office", "phone", "fax", "email", "homeDir", "host", "group", "shell", "www", "passwd", "termination", "tutor", "remarks" ]
  }, {
  "schema" : {
  "name" : "ignoreHeader",
  "displayName" : "Ignore header",
  "helpMessage" : "Specify if first line of the file must be ignored. Default is true.",
  "type" : "java.lang.Boolean",
  "required" : false,
  "order" : 11,
  "confidential" : false,
  "defaultValues" : [ true ]
  },
  "overridable" : true,
  "values" : [ "true" ]
  }, {
  "schema" : {
  "name" : "keyseparator",
  "displayName" : "Key separator",
  "helpMessage" : "Character used to separate keys in a multi-key scenario. Default is \",\".",
  "type" : "java.lang.String",
  "required" : false,
  "order" : 12,
  "confidential" : false,
  "defaultValues" : [ "," ]
  },
  "overridable" : true,
  "values" : [ ";" ]
  }, {
  "schema" : {
  "name" : "statusColumn",
  "displayName" : "Status Column name",
  "helpMessage" : "Status column name.",
  "type" : "java.lang.String",
  "required" : false,
  "order" : 17,
  "confidential" : false,
  "defaultValues" : [ ]
  },
  "overridable" : true,
  "values" : [ "passwd" ]
  } ],
  "capabilitiesOverride" : [ "SEARCH", "CREATE", "UPDATE" ],
  "propagationActions" : [ ]
}

Best regards

On Fri, 28 Jun 2019 10:40:58 +0200
 Davide Cortellucci <davide.cortellu...@tirasa.net> wrote:
Hi Rainer,

can you please share the CSVDir configuration?

Regards,
Davide

On 6/28/19 10:14 AM, Rainer Herbst wrote:
Dear all,


for the last 2 weeks I tried to get Syncope running using maven, and at least I have an instance that works somehow.

But I stumbled over a lot of problems with CSVDir not working. I created a connector and a ressource, but everytime I try to pull the content of a csv file, the task fails with error org.quartz.JobExecutionException: While pulling from connector [See nested exception: org.identityconnectors.framework.common.exceptions.ConnectorException: org.identityconnectors.framework.common.exceptions.ConnectorIOException: java.lang.IllegalStateException: java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: USER_EX88887 in statement [SELECT * FROM USER_EX88887]]

There are some files created in the CSV directory:
ldap1:/srv/tomcat/webapps/syncope/WEB-INF/classes # ls -l /srv/tomcat/data/
total 24
-rw-r--r-- 1 root  root  777 Jun 28 09:15 my_users_test.csv
-rw-r--r-- 1 tomcat tomcat  16 Jun 28 10:05 csvdir_db.lck
-rw-r--r-- 1 tomcat tomcat 1608 Jun 28 09:45 csvdir_db.log
-rw-r--r-- 1 tomcat tomcat  101 Jun 28 09:42 csvdir_db.properties
-rw-r--r-- 1 tomcat tomcat 1559 Jun 28 09:42 csvdir_db.script
drwxr-xr-x 2 tomcat tomcat 4096 Jun 28 09:09 csvdir_db.tmp

What is missing there?

I like the openess and the concepts of Syncope, but, to be honest, I did not expect to spend 2 days trying to read a simple CSV data file... :-(

Help is very much appreciated!

--
Francesco Chicchiriccò

Tirasa - Open Source Excellence
http://www.tirasa.net/

Member at The Apache Software Foundation
Syncope, Cocoon, Olingo, CXF, OpenJPA, PonyMail
http://home.apache.org/~ilgrosso/

Reply via email to