Author: rharo
Date: Fri Apr 14 21:26:16 2017
New Revision: 1791420
URL: http://svn.apache.org/viewvc?rev=1791420&view=rev
Log:
CONNECTORS-1290: Upgrading Branch to New Connector version using official Nuxeo
Java Client
Added:
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/java/
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/java/org/
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/java/org/apache/
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/java/org/apache/manifoldcf/
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/java/org/apache/manifoldcf/authorities/
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/java/org/apache/manifoldcf/authorities/authorities/
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/java/org/apache/manifoldcf/authorities/authorities/nuxeo/
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/java/org/apache/manifoldcf/authorities/authorities/nuxeo/Messages.java
(with props)
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/java/org/apache/manifoldcf/authorities/authorities/nuxeo/NuxeoAuthorityConnector.java
(with props)
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/java/org/apache/manifoldcf/crawler/
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/nuxeo/
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/nuxeo/Messages.java
(with props)
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/nuxeo/NuxeoConfiguration.java
(with props)
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/nuxeo/NuxeoRepositoryConnector.java
(with props)
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/nuxeo/exception/
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/nuxeo/exception/NuxeoException.java
(with props)
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/nuxeo/model/
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/nuxeo/model/Attachment.java
(with props)
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/nuxeo/model/DocumentManifold.java
(with props)
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/native2ascii/
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/native2ascii/org/
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/native2ascii/org/apache/
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/native2ascii/org/apache/manifoldcf/
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/native2ascii/org/apache/manifoldcf/authorities/
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/native2ascii/org/apache/manifoldcf/authorities/authorities/
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/native2ascii/org/apache/manifoldcf/authorities/authorities/nuxeo/
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/native2ascii/org/apache/manifoldcf/authorities/authorities/nuxeo/common_en_US.properties
(with props)
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/native2ascii/org/apache/manifoldcf/authorities/authorities/nuxeo/common_es_ES.properties
(with props)
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/nuxeo/
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/nuxeo/common_en_US.properties
(with props)
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/nuxeo/common_es_ES.properties
(with props)
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/resources/
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/resources/org/
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/resources/org/apache/
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/resources/org/apache/manifoldcf/
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/resources/org/apache/manifoldcf/authorities/
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/resources/org/apache/manifoldcf/authorities/authorities/
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/resources/org/apache/manifoldcf/authorities/authorities/nuxeo/
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/resources/org/apache/manifoldcf/authorities/authorities/nuxeo/editConfiguration_conf.js
(with props)
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/resources/org/apache/manifoldcf/authorities/authorities/nuxeo/editConfiguration_conf_server.html
(with props)
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/resources/org/apache/manifoldcf/authorities/authorities/nuxeo/viewConfiguration_conf.html
(with props)
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/resources/org/apache/manifoldcf/crawler/
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/nuxeo/
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/nuxeo/editConfiguration_conf.js
(with props)
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/nuxeo/editConfiguration_conf_server.html
(with props)
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/nuxeo/editSpecification_conf.js
(with props)
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/nuxeo/editSpecification_confDocuments.html
(with props)
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/nuxeo/editSpecification_confDocumentsType.html
(with props)
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/nuxeo/editSpecification_confDomains.html
(with props)
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/nuxeo/viewConfiguration_conf.html
(with props)
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/nuxeo/viewSpecification_conf.html
(with props)
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/test/
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/test/java/
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/test/java/org/
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/test/java/org/apache/
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/test/java/org/apache/manifoldcf/
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/test/java/org/apache/manifoldcf/authorities/
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/test/java/org/apache/manifoldcf/authorities/nuxeo/
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/test/java/org/apache/manifoldcf/authorities/nuxeo/tests/
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/test/java/org/apache/manifoldcf/authorities/nuxeo/tests/NuxeoAuthorityTest.java
(with props)
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/test/java/org/apache/manifoldcf/crawler/
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/test/java/org/apache/manifoldcf/crawler/connectors/
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/test/java/org/apache/manifoldcf/crawler/connectors/nuxeo/
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/test/java/org/apache/manifoldcf/crawler/connectors/nuxeo/tests/
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/test/java/org/apache/manifoldcf/crawler/connectors/nuxeo/tests/NuxeoConnectorTest.java
(with props)
Added:
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/java/org/apache/manifoldcf/authorities/authorities/nuxeo/Messages.java
URL:
http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/java/org/apache/manifoldcf/authorities/authorities/nuxeo/Messages.java?rev=1791420&view=auto
==============================================================================
---
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/java/org/apache/manifoldcf/authorities/authorities/nuxeo/Messages.java
(added)
+++
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/java/org/apache/manifoldcf/authorities/authorities/nuxeo/Messages.java
Fri Apr 14 21:26:16 2017
@@ -0,0 +1,104 @@
+package org.apache.manifoldcf.authorities.authorities.nuxeo;
+
+import java.util.Locale;
+import java.util.Map;
+
+import org.apache.manifoldcf.core.interfaces.IHTTPOutput;
+import org.apache.manifoldcf.core.interfaces.ManifoldCFException;
+
+public class Messages extends org.apache.manifoldcf.ui.i18n.Messages {
+
+ public static final String DEFAULT_BUNDLE_NAME =
"org.apache.manifoldcf.authorities.authorities.nuxeo.common";
+ public static final String DEFAULT_PATH_NAME =
"org.apache.manifoldcf.authorities.authorities.nuxeo";
+
+ /** Constructor - do no instantiate
+ */
+ protected Messages()
+ {
+ }
+
+ public static String getString(Locale locale, String messageKey) {
+ return getString(DEFAULT_BUNDLE_NAME, locale, messageKey, null);
+ }
+
+ public static String getAttributeString(Locale locale, String
messageKey) {
+ return getAttributeString(DEFAULT_BUNDLE_NAME, locale,
messageKey, null);
+ }
+
+ public static String getBodyString(Locale locale, String messageKey) {
+ return getBodyString(DEFAULT_BUNDLE_NAME, locale, messageKey,
null);
+ }
+
+ public static String getAttributeJavascriptString(Locale locale, String
messageKey) {
+ return getAttributeJavascriptString(DEFAULT_BUNDLE_NAME,
locale, messageKey, null);
+ }
+
+ public static String getBodyJavascriptString(Locale locale, String
messageKey) {
+ return getBodyJavascriptString(DEFAULT_BUNDLE_NAME, locale,
messageKey, null);
+ }
+
+ public static String getString(Locale locale, String messageKey,
Object[] args) {
+ return getString(DEFAULT_BUNDLE_NAME, locale, messageKey, args);
+ }
+
+ public static String getAttributeString(Locale locale, String
messageKey, Object[] args) {
+ return getAttributeString(DEFAULT_BUNDLE_NAME, locale,
messageKey, args);
+ }
+
+ public static String getBodyString(Locale locale, String messageKey,
Object[] args) {
+ return getBodyString(DEFAULT_BUNDLE_NAME, locale, messageKey,
args);
+ }
+
+ public static String getAttributeJavascriptString(Locale locale, String
messageKey, Object[] args) {
+ return getAttributeJavascriptString(DEFAULT_BUNDLE_NAME,
locale, messageKey, args);
+ }
+
+ public static String getBodyJavascriptString(Locale locale, String
messageKey, Object[] args) {
+ return getBodyJavascriptString(DEFAULT_BUNDLE_NAME, locale,
messageKey, args);
+ }
+
+ // More general methods which allow bundlenames and class loaders to be
+ // specified.
+
+ public static String getString(String bundleName, Locale locale, String
messageKey, Object[] args) {
+ return getString(Messages.class, bundleName, locale,
messageKey, args);
+ }
+
+ public static String getAttributeString(String bundleName, Locale
locale, String messageKey, Object[] args) {
+ return getAttributeString(Messages.class, bundleName, locale,
messageKey, args);
+ }
+
+ public static String getBodyString(String bundleName, Locale locale,
String messageKey, Object[] args) {
+ return getBodyString(Messages.class, bundleName, locale,
messageKey, args);
+ }
+
+ public static String getAttributeJavascriptString(String bundleName,
Locale locale, String messageKey,
+ Object[] args) {
+ return getAttributeJavascriptString(Messages.class, bundleName,
locale, messageKey, args);
+ }
+
+ public static String getBodyJavascriptString(String bundleName, Locale
locale, String messageKey, Object[] args) {
+ return getBodyJavascriptString(Messages.class, bundleName,
locale, messageKey, args);
+ }
+
+ // Resource output
+
+ public static void outputResource(IHTTPOutput output, Locale locale,
String resourceKey,
+ Map<String, String> substitutionParameters, boolean
mapToUpperCase) throws ManifoldCFException {
+ outputResource(output, Messages.class, DEFAULT_PATH_NAME,
locale, resourceKey, substitutionParameters,
+ mapToUpperCase);
+ }
+
+ public static void outputResourceWithVelocity(IHTTPOutput output,
Locale locale, String resourceKey,
+ Map<String, String> substitutionParameters, boolean
mapToUpperCase) throws ManifoldCFException {
+ outputResourceWithVelocity(output, Messages.class,
DEFAULT_BUNDLE_NAME, DEFAULT_PATH_NAME, locale, resourceKey,
+ substitutionParameters, mapToUpperCase);
+ }
+
+ public static void outputResourceWithVelocity(IHTTPOutput output,
Locale locale, String resourceKey,
+ Map<String, Object> contextObjects) throws
ManifoldCFException {
+ outputResourceWithVelocity(output, Messages.class,
DEFAULT_BUNDLE_NAME, DEFAULT_PATH_NAME, locale, resourceKey,
+ contextObjects);
+ }
+
+}
Propchange:
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/java/org/apache/manifoldcf/authorities/authorities/nuxeo/Messages.java
------------------------------------------------------------------------------
svn:executable = *
Added:
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/java/org/apache/manifoldcf/authorities/authorities/nuxeo/NuxeoAuthorityConnector.java
URL:
http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/java/org/apache/manifoldcf/authorities/authorities/nuxeo/NuxeoAuthorityConnector.java?rev=1791420&view=auto
==============================================================================
---
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/java/org/apache/manifoldcf/authorities/authorities/nuxeo/NuxeoAuthorityConnector.java
(added)
+++
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/java/org/apache/manifoldcf/authorities/authorities/nuxeo/NuxeoAuthorityConnector.java
Fri Apr 14 21:26:16 2017
@@ -0,0 +1,340 @@
+package org.apache.manifoldcf.authorities.authorities.nuxeo;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.manifoldcf.authorities.authorities.BaseAuthorityConnector;
+import org.apache.manifoldcf.authorities.interfaces.AuthorizationResponse;
+import org.apache.manifoldcf.core.interfaces.ConfigParams;
+import org.apache.manifoldcf.core.interfaces.IHTTPOutput;
+import org.apache.manifoldcf.core.interfaces.IPasswordMapperActivity;
+import org.apache.manifoldcf.core.interfaces.IPostParameters;
+import org.apache.manifoldcf.core.interfaces.IThreadContext;
+import org.apache.manifoldcf.core.interfaces.ManifoldCFException;
+import org.apache.manifoldcf.crawler.connectors.nuxeo.NuxeoConfiguration;
+import org.nuxeo.client.api.NuxeoClient;
+import org.nuxeo.client.api.objects.user.User;
+import org.nuxeo.client.internals.spi.NuxeoClientException;
+
+/**
+ *
+ * Nuxeo Authority Connector class
+ *
+ * @author David Arroyo Escobar <[email protected]>
+ *
+ */
+public class NuxeoAuthorityConnector extends BaseAuthorityConnector {
+
+ // Configuration tabs
+ private static final String CONF_SERVER_TAB_PROPERTY =
"NuxeoAuthorityConnector.Server";
+
+ // Prefix for nuxeo configuration and specification parameters
+ private static final String PARAMETER_PREFIX = "nuxeo_";
+
+ // Templates
+ /**
+ * Javascript to check the configuration parameters
+ */
+ private static final String EDIT_CONFIG_HEADER_FORWARD =
"editConfiguration_conf.js";
+
+ /**
+ * Server edit tab template
+ */
+ private static final String EDIT_CONFIG_FORWARD_SERVER =
"editConfiguration_conf_server.html";
+
+ /**
+ * Server view tab template
+ */
+ private static final String VIEW_CONFIG_FORWARD =
"viewConfiguration_conf.html";
+
+ /* Nuxeo instance parameters */
+ protected String protocol = null;
+ protected String host = null;
+ protected String port = null;
+ protected String path = null;
+ protected String username = null;
+ protected String password = null;
+
+ protected NuxeoClient nuxeoClient = null;
+
+ // Constructor
+ public NuxeoAuthorityConnector() {
+ super();
+ }
+
+ public void setNuxeoClient(NuxeoClient nuxeoClient) {
+ this.nuxeoClient = nuxeoClient;
+ }
+
+ // Close the connection.
+ public void disconenct() throws ManifoldCFException {
+ if (nuxeoClient != null)
+ nuxeoClient = null;
+
+ protocol = null;
+ host = null;
+ port = null;
+ path = null;
+ username = null;
+ password = null;
+ }
+
+ /** CONNECTION **/
+
+ // Makes connection to server
+ @Override
+ public void connect(ConfigParams configParams) {
+ super.connect(configParams);
+
+ protocol =
params.getParameter(NuxeoConfiguration.Server.PROTOCOL);
+ host = params.getParameter(NuxeoConfiguration.Server.HOST);
+ port = params.getParameter(NuxeoConfiguration.Server.PORT);
+ path = params.getParameter(NuxeoConfiguration.Server.PATH);
+ username =
params.getParameter(NuxeoConfiguration.Server.USERNAME);
+ password =
params.getObfuscatedParameter(NuxeoConfiguration.Server.PASSWORD);
+
+ try {
+ initNuxeoClient();
+ } catch (ManifoldCFException manifoldCFException) {
+ manifoldCFException.printStackTrace();
+ }
+ }
+
+ /**
+ * Check the connection
+ */
+ @Override
+ public String check() throws ManifoldCFException {
+ try {
+ if (!isConnected()) {
+ initNuxeoClient();
+ }
+
+ Boolean result = null;
+ try {
+ getGroupsByUser("Administrator");
+ result = true;
+ } catch (Exception ex) {
+ result = false;
+ }
+
+ if (result)
+ return super.check();
+ else
+ throw new ManifoldCFException("Nuxeo instance
could not be reached");
+
+ } catch (ManifoldCFException manifoldCFException) {
+ return "Connection failed: " +
manifoldCFException.getMessage();
+ } catch (Exception e) {
+ return "Connection failed: " + e.getMessage();
+ }
+ }
+
+ /**
+ * Initialize Nuxeo client using the configured parameters.
+ *
+ * @throws ManifoldCFException
+ */
+ private void initNuxeoClient() throws ManifoldCFException {
+ if (nuxeoClient == null) {
+
+ if (StringUtils.isEmpty(protocol)) {
+ throw new ManifoldCFException(
+ "Parameter " +
NuxeoConfiguration.Server.PROTOCOL + " required but not set");
+ }
+
+ if (StringUtils.isEmpty(host)) {
+ throw new ManifoldCFException("Parameter " +
NuxeoConfiguration.Server.HOST + " required but not set");
+ }
+
+ String url = getUrl();
+ nuxeoClient = new NuxeoClient(url, username, password);
+
+ }
+
+ }
+
+ /**
+ * Formatter URL
+ *
+ * @throws ManifoldCFException
+ */
+ public String getUrl() throws ManifoldCFException {
+ int portInt;
+ if (port != null && port.length() > 0) {
+ try {
+ portInt = Integer.parseInt(port);
+ } catch (NumberFormatException formatException) {
+ throw new ManifoldCFException("Bad number: " +
formatException.getMessage(), formatException);
+ }
+ } else {
+ if (protocol.toLowerCase(Locale.ROOT).equals("http")) {
+ portInt = 80;
+ } else {
+ portInt = 443;
+ }
+ }
+
+ String url = protocol + "://" + host + ":" + portInt + "/" +
path;
+
+ return url;
+ }
+
+ /**
+ * @return true if the connector instance is connected.
+ */
+ @Override
+ public boolean isConnected() {
+ return nuxeoClient != null;
+ }
+
+ /** VIEW CONFIGURATION **/
+ @Override
+ public void viewConfiguration(IThreadContext threadContext, IHTTPOutput
out, Locale locale, ConfigParams parameters)
+ throws ManifoldCFException, IOException {
+
+ Map<String, String> paramMap = new HashMap<String, String>();
+
+ fillInServerConfigurationMap(paramMap, out, parameters);
+
+ Messages.outputResourceWithVelocity(out, locale,
VIEW_CONFIG_FORWARD, paramMap, true);
+ }
+
+ private static void fillInServerConfigurationMap(Map<String, String>
serverMap, IPasswordMapperActivity mapper,
+ ConfigParams parameters) {
+
+ String nuxeoProtocol =
parameters.getParameter(NuxeoConfiguration.Server.PROTOCOL);
+ String nuxeoHost =
parameters.getParameter(NuxeoConfiguration.Server.HOST);
+ String nuxeoPort =
parameters.getParameter(NuxeoConfiguration.Server.PORT);
+ String nuxeoPath =
parameters.getParameter(NuxeoConfiguration.Server.PATH);
+ String nuxeoUsername =
parameters.getParameter(NuxeoConfiguration.Server.USERNAME);
+ String nuxeoPassword =
parameters.getParameter(NuxeoConfiguration.Server.PASSWORD);
+
+ if (nuxeoProtocol == null)
+ nuxeoProtocol =
NuxeoConfiguration.Server.PROTOCOL_DEFAULT_VALUE;
+ if (nuxeoHost == null)
+ nuxeoHost =
NuxeoConfiguration.Server.HOST_DEFAULT_VALUE;
+ if (nuxeoPort == null)
+ nuxeoPort =
NuxeoConfiguration.Server.PORT_DEFAULT_VALUE;
+ if (nuxeoPath == null)
+ nuxeoPath =
NuxeoConfiguration.Server.PATH_DEFAULT_VALUE;
+ if (nuxeoUsername == null)
+ nuxeoUsername =
NuxeoConfiguration.Server.USERNAME_DEFAULT_VALUE;
+ if (nuxeoPassword == null)
+ nuxeoPassword =
NuxeoConfiguration.Server.PASSWORD_DEFAULT_VALUE;
+ else
+ nuxeoPassword = mapper.mapKeyToPassword(nuxeoPassword);
+
+ serverMap.put(PARAMETER_PREFIX +
NuxeoConfiguration.Server.PROTOCOL, nuxeoProtocol);
+ serverMap.put(PARAMETER_PREFIX +
NuxeoConfiguration.Server.HOST, nuxeoHost);
+ serverMap.put(PARAMETER_PREFIX +
NuxeoConfiguration.Server.PORT, nuxeoPort);
+ serverMap.put(PARAMETER_PREFIX +
NuxeoConfiguration.Server.PATH, nuxeoPath);
+ serverMap.put(PARAMETER_PREFIX +
NuxeoConfiguration.Server.USERNAME, nuxeoUsername);
+ serverMap.put(PARAMETER_PREFIX +
NuxeoConfiguration.Server.PASSWORD, nuxeoPassword);
+ }
+
+ /** CONFIGURATION CONNECTOR **/
+ @Override
+ public void outputConfigurationHeader(IThreadContext threadContext,
IHTTPOutput out, Locale locale,
+ ConfigParams parameters, List<String> tabsArray) throws
ManifoldCFException, IOException {
+
+ // Server tab
+ tabsArray.add(Messages.getString(locale,
CONF_SERVER_TAB_PROPERTY));
+
+ Map<String, String> paramMap = new HashMap<String, String>();
+
+ // Fill in the parameters form each tab
+ fillInServerConfigurationMap(paramMap, out, parameters);
+
+ Messages.outputResourceWithVelocity(out, locale,
EDIT_CONFIG_HEADER_FORWARD, paramMap, true);
+ }
+
+ @Override
+ public void outputConfigurationBody(IThreadContext threadContext,
IHTTPOutput out, Locale locale,
+ ConfigParams parameters, String tabName) throws
ManifoldCFException, IOException {
+
+ // Call the Velocity tempaltes for each tab
+ Map<String, String> paramMap = new HashMap<String, String>();
+
+ // Set the tab name
+ paramMap.put("TabName", tabName);
+
+ // Fill in the parameters
+ fillInServerConfigurationMap(paramMap, out, parameters);
+
+ // Server tab
+ Messages.outputResourceWithVelocity(out, locale,
EDIT_CONFIG_FORWARD_SERVER, paramMap, true);
+ }
+
+ @Override
+ public String processConfigurationPost(IThreadContext thredContext,
IPostParameters variableContext,
+ ConfigParams parameters) {
+
+ String nuxeoProtocol =
variableContext.getParameter(PARAMETER_PREFIX +
NuxeoConfiguration.Server.PROTOCOL);
+ if (nuxeoProtocol != null)
+
parameters.setParameter(NuxeoConfiguration.Server.PROTOCOL, nuxeoProtocol);
+
+ String nuxeoHost =
variableContext.getParameter(PARAMETER_PREFIX + NuxeoConfiguration.Server.HOST);
+ if (nuxeoHost != null)
+ parameters.setParameter(NuxeoConfiguration.Server.HOST,
nuxeoHost);
+
+ String nuxeoPort =
variableContext.getParameter(PARAMETER_PREFIX + NuxeoConfiguration.Server.PORT);
+ if (nuxeoPort != null)
+ parameters.setParameter(NuxeoConfiguration.Server.PORT,
nuxeoPort);
+
+ String nuxeoPath =
variableContext.getParameter(PARAMETER_PREFIX + NuxeoConfiguration.Server.PATH);
+ if (nuxeoPath != null)
+ parameters.setParameter(NuxeoConfiguration.Server.PATH,
nuxeoPath);
+
+ String nuxeoUsername =
variableContext.getParameter(PARAMETER_PREFIX +
NuxeoConfiguration.Server.USERNAME);
+ if (nuxeoUsername != null)
+
parameters.setParameter(NuxeoConfiguration.Server.USERNAME, nuxeoUsername);
+
+ String nuxeoPassword =
variableContext.getParameter(PARAMETER_PREFIX +
NuxeoConfiguration.Server.PASSWORD);
+ if (nuxeoPassword != null)
+
parameters.setObfuscatedParameter(NuxeoConfiguration.Server.PASSWORD,
+
variableContext.mapKeyToPassword(nuxeoPassword));
+
+ return null; // It returns null if the configuration has been
successful
+ }
+
+ /** AUTHORITY **/
+ @Override
+ public AuthorizationResponse getDefaultAuthorizationResponse(String
userName) {
+ return RESPONSE_UNREACHABLE;
+ }
+
+ @Override
+ public AuthorizationResponse getAuthorizationResponse(String username) {
+ try {
+ List<String> authorities = getGroupsByUser(username);
+ if (authorities == null || authorities.isEmpty()) {
+ return RESPONSE_USERNOTFOUND;
+ } else {
+ return new
AuthorizationResponse(authorities.toArray(new String[0]),
AuthorizationResponse.RESPONSE_OK);
+ }
+
+ } catch (NuxeoClientException e) {
+ return RESPONSE_USERNOTFOUND;
+ } catch (Exception e) {
+ return RESPONSE_UNREACHABLE;
+ }
+ }
+
+ public List<String> getGroupsByUser(String username) {
+
+ List<String> authorities = null;
+
+ User user = nuxeoClient.getUserManager().fetchUser(username);
+ if (user != null) {
+ authorities = user.getGroups();
+ authorities.add(user.getUserName());
+ }
+
+ return authorities;
+ }
+}
Propchange:
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/java/org/apache/manifoldcf/authorities/authorities/nuxeo/NuxeoAuthorityConnector.java
------------------------------------------------------------------------------
svn:executable = *
Added:
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/nuxeo/Messages.java
URL:
http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/nuxeo/Messages.java?rev=1791420&view=auto
==============================================================================
---
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/nuxeo/Messages.java
(added)
+++
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/nuxeo/Messages.java
Fri Apr 14 21:26:16 2017
@@ -0,0 +1,105 @@
+package org.apache.manifoldcf.crawler.connectors.nuxeo;
+
+import java.util.Locale;
+import java.util.Map;
+
+import org.apache.manifoldcf.core.interfaces.IHTTPOutput;
+import org.apache.manifoldcf.core.interfaces.ManifoldCFException;
+
+public class Messages extends org.apache.manifoldcf.ui.i18n.Messages {
+
+ public static final String DEFAULT_BUNDLE_NAME =
"org.apache.manifoldcf.crawler.connectors.nuxeo.common";
+ public static final String DEFAULT_PATH_NAME =
"org.apache.manifoldcf.crawler.connectors.nuxeo";
+
+ /** Constructor - do no instantiate
+ * @
+ */
+ protected Messages()
+ {
+ }
+
+ public static String getString(Locale locale, String messageKey) {
+ return getString(DEFAULT_BUNDLE_NAME, locale, messageKey, null);
+ }
+
+ public static String getAttributeString(Locale locale, String
messageKey) {
+ return getAttributeString(DEFAULT_BUNDLE_NAME, locale,
messageKey, null);
+ }
+
+ public static String getBodyString(Locale locale, String messageKey) {
+ return getBodyString(DEFAULT_BUNDLE_NAME, locale, messageKey,
null);
+ }
+
+ public static String getAttributeJavascriptString(Locale locale, String
messageKey) {
+ return getAttributeJavascriptString(DEFAULT_BUNDLE_NAME,
locale, messageKey, null);
+ }
+
+ public static String getBodyJavascriptString(Locale locale, String
messageKey) {
+ return getBodyJavascriptString(DEFAULT_BUNDLE_NAME, locale,
messageKey, null);
+ }
+
+ public static String getString(Locale locale, String messageKey,
Object[] args) {
+ return getString(DEFAULT_BUNDLE_NAME, locale, messageKey, args);
+ }
+
+ public static String getAttributeString(Locale locale, String
messageKey, Object[] args) {
+ return getAttributeString(DEFAULT_BUNDLE_NAME, locale,
messageKey, args);
+ }
+
+ public static String getBodyString(Locale locale, String messageKey,
Object[] args) {
+ return getBodyString(DEFAULT_BUNDLE_NAME, locale, messageKey,
args);
+ }
+
+ public static String getAttributeJavascriptString(Locale locale, String
messageKey, Object[] args) {
+ return getAttributeJavascriptString(DEFAULT_BUNDLE_NAME,
locale, messageKey, args);
+ }
+
+ public static String getBodyJavascriptString(Locale locale, String
messageKey, Object[] args) {
+ return getBodyJavascriptString(DEFAULT_BUNDLE_NAME, locale,
messageKey, args);
+ }
+
+ // More general methods which allow bundlenames and class loaders to be
+ // specified.
+
+ public static String getString(String bundleName, Locale locale, String
messageKey, Object[] args) {
+ return getString(Messages.class, bundleName, locale,
messageKey, args);
+ }
+
+ public static String getAttributeString(String bundleName, Locale
locale, String messageKey, Object[] args) {
+ return getAttributeString(Messages.class, bundleName, locale,
messageKey, args);
+ }
+
+ public static String getBodyString(String bundleName, Locale locale,
String messageKey, Object[] args) {
+ return getBodyString(Messages.class, bundleName, locale,
messageKey, args);
+ }
+
+ public static String getAttributeJavascriptString(String bundleName,
Locale locale, String messageKey,
+ Object[] args) {
+ return getAttributeJavascriptString(Messages.class, bundleName,
locale, messageKey, args);
+ }
+
+ public static String getBodyJavascriptString(String bundleName, Locale
locale, String messageKey, Object[] args) {
+ return getBodyJavascriptString(Messages.class, bundleName,
locale, messageKey, args);
+ }
+
+ // Resource output
+
+ public static void outputResource(IHTTPOutput output, Locale locale,
String resourceKey,
+ Map<String, String> substitutionParameters, boolean
mapToUpperCase) throws ManifoldCFException {
+ outputResource(output, Messages.class, DEFAULT_PATH_NAME,
locale, resourceKey, substitutionParameters,
+ mapToUpperCase);
+ }
+
+ public static void outputResourceWithVelocity(IHTTPOutput output,
Locale locale, String resourceKey,
+ Map<String, String> substitutionParameters, boolean
mapToUpperCase) throws ManifoldCFException {
+ outputResourceWithVelocity(output, Messages.class,
DEFAULT_BUNDLE_NAME, DEFAULT_PATH_NAME, locale, resourceKey,
+ substitutionParameters, mapToUpperCase);
+ }
+
+ public static void outputResourceWithVelocity(IHTTPOutput output,
Locale locale, String resourceKey,
+ Map<String, Object> contextObjects) throws
ManifoldCFException {
+ outputResourceWithVelocity(output, Messages.class,
DEFAULT_BUNDLE_NAME, DEFAULT_PATH_NAME, locale, resourceKey,
+ contextObjects);
+ }
+
+}
Propchange:
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/nuxeo/Messages.java
------------------------------------------------------------------------------
svn:executable = *
Added:
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/nuxeo/NuxeoConfiguration.java
URL:
http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/nuxeo/NuxeoConfiguration.java?rev=1791420&view=auto
==============================================================================
---
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/nuxeo/NuxeoConfiguration.java
(added)
+++
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/nuxeo/NuxeoConfiguration.java
Fri Apr 14 21:26:16 2017
@@ -0,0 +1,45 @@
+package org.apache.manifoldcf.crawler.connectors.nuxeo;
+
+/**
+ *
+ * NuxeoConfiguration class
+ *
+ * Class to keep the server configuration and specification paramenters.
+ *
+ * @author David Arroyo Escobar <[email protected]>
+ *
+ */
+public class NuxeoConfiguration {
+
+ public static interface Server {
+
+ public static final String USERNAME = "username";
+ public static final String PASSWORD = "password";
+ public static final String PROTOCOL = "protocol";
+ public static final String HOST = "host";
+ public static final String PORT = "port";
+ public static final String PATH = "path";
+
+ public static final String PROTOCOL_DEFAULT_VALUE = "http";
+ public static final String HOST_DEFAULT_VALUE = "";
+ public static final String PORT_DEFAULT_VALUE = "8080";
+ public static final String PATH_DEFAULT_VALUE = "/nuxeo";
+ public static final String USERNAME_DEFAULT_VALUE = "";
+ public static final String PASSWORD_DEFAULT_VALUE = "";
+
+ }
+
+ public static interface Specification {
+
+ public static final String DOMAINS = "domains";
+ public static final String DOMAIN = "domain";
+ public static final String DOMAIN_KEY = "key";
+ public static final String DOCUMENTS = "documents";
+ public static final String PROCESS_TAGS = "process_tags";
+ public static final String PROCESS_ATTACHMENTS =
"process_attachments";
+ public static final String DOCUMENTS_TYPE = "documentsType";
+ public static final String DOCUMENT_TYPE = "documentType";
+ public static final String DOCUMENT_TYPE_KEY = "key";
+
+ }
+}
Propchange:
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/nuxeo/NuxeoConfiguration.java
------------------------------------------------------------------------------
svn:executable = *
Added:
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/nuxeo/NuxeoRepositoryConnector.java
URL:
http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/nuxeo/NuxeoRepositoryConnector.java?rev=1791420&view=auto
==============================================================================
---
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/nuxeo/NuxeoRepositoryConnector.java
(added)
+++
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/nuxeo/NuxeoRepositoryConnector.java
Fri Apr 14 21:26:16 2017
@@ -0,0 +1,894 @@
+package org.apache.manifoldcf.crawler.connectors.nuxeo;
+
+import java.io.IOException;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.TimeZone;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.manifoldcf.agents.interfaces.RepositoryDocument;
+import org.apache.manifoldcf.agents.interfaces.ServiceInterruption;
+import org.apache.manifoldcf.core.interfaces.ConfigParams;
+import org.apache.manifoldcf.core.interfaces.IHTTPOutput;
+import org.apache.manifoldcf.core.interfaces.IPasswordMapperActivity;
+import org.apache.manifoldcf.core.interfaces.IPostParameters;
+import org.apache.manifoldcf.core.interfaces.IThreadContext;
+import org.apache.manifoldcf.core.interfaces.ManifoldCFException;
+import org.apache.manifoldcf.core.interfaces.Specification;
+import org.apache.manifoldcf.core.interfaces.SpecificationNode;
+import org.apache.manifoldcf.crawler.connectors.BaseRepositoryConnector;
+import org.apache.manifoldcf.crawler.connectors.nuxeo.model.Attachment;
+import org.apache.manifoldcf.crawler.connectors.nuxeo.model.DocumentManifold;
+import org.apache.manifoldcf.crawler.interfaces.IExistingVersions;
+import org.apache.manifoldcf.crawler.interfaces.IProcessActivity;
+import org.apache.manifoldcf.crawler.interfaces.IRepositoryConnector;
+import org.apache.manifoldcf.crawler.interfaces.ISeedingActivity;
+import org.nuxeo.client.api.NuxeoClient;
+import org.nuxeo.client.api.objects.Document;
+import org.nuxeo.client.api.objects.Documents;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+
+/**
+ *
+ * Nuxeo Repository Connector class
+ *
+ * @author David Arroyo Escobar <[email protected]>
+ *
+ */
+public class NuxeoRepositoryConnector extends BaseRepositoryConnector {
+
+ private static final String URI_DOCUMENT = "SELECT * FROM Document";
+
+ protected final static String ACTIVITY_READ = "read document";
+
+ // Configuration tabs
+ private static final String NUXEO_SERVER_TAB_PROPERTY =
"NuxeoRepositoryConnector.Server";
+
+ // Specification tabs
+ private static final String CONF_DOMAINS_TAB_PROPERTY =
"NuxeoRepositoryConnector.Domains";
+ private static final String CONF_DOCUMENTS_TYPE_TAB_PROPERTY =
"NuxeoRepositoryConnector.DocumentsType";
+ private static final String CONF_DOCUMENT_PROPERTY =
"NuxeoRepositoryConnector.Documents";
+
+ // Prefix for nuxeo configuration and specification parameters
+ private static final String PARAMETER_PREFIX = "nuxeo_";
+
+ // Templates for Nuxeo configuration
+ /**
+ * Javascript to check the configuration parameters
+ */
+ private static final String EDIT_CONFIG_HEADER_FORWARD =
"editConfiguration_conf.js";
+
+ /**
+ * Server edit tab template
+ */
+ private static final String EDIT_CONFIG_FORWARD_SERVER =
"editConfiguration_conf_server.html";
+
+ /**
+ * Server view tab template
+ */
+ private static final String VIEW_CONFIG_FORWARD =
"viewConfiguration_conf.html";
+
+ // Templates for Nuxeo specification
+ /**
+ * Forward to the javascript to check the specification parameters for
the
+ * job
+ */
+ private static final String EDIT_SPEC_HEADER_FORWARD =
"editSpecification_conf.js";
+
+ /**
+ * Forward to the template to edit domains for the job
+ */
+ private static final String EDIT_SPEC_FORWARD_CONF_DOMAINS =
"editSpecification_confDomains.html";
+
+ /**
+ * Forward to the template to edit documents type for the job
+ */
+ private static final String EDIT_SPEC_FORWARD_CONF_DOCUMENTS_TYPE =
"editSpecification_confDocumentsType.html";
+
+ /**
+ * Forward to the template to edit document properties for the job
+ */
+ private static final String EDIT_SPEC_FORWARD_CONF_DOCUMENTS =
"editSpecification_confDocuments.html";
+
+ /**
+ * Forward to the template to view the specification parameters for the
job
+ */
+ private static final String VIEW_SPEC_FORWARD =
"viewSpecification_conf.html";
+
+ protected long lastSessionFetch = -1L;
+ protected static final long timeToRelease = 300000L;
+
+ private Logger logger =
LoggerFactory.getLogger(NuxeoRepositoryConnector.class);
+
+ /* Nuxeo instance parameters */
+ protected String protocol = null;
+ protected String host = null;
+ protected String port = null;
+ protected String path = null;
+ protected String username = null;
+ protected String password = null;
+
+ protected NuxeoClient nuxeoClient = null;
+
+ // Constructor
+ public NuxeoRepositoryConnector() {
+ super();
+ }
+
+ public void setNuxeoClient(NuxeoClient nuxeoClient) {
+ this.nuxeoClient = nuxeoClient;
+ }
+
+ @Override
+ public String[] getActivitiesList() {
+ return new String[] { ACTIVITY_READ };
+ }
+
+ @Override
+ public String[] getBinNames(String documentIdenfitier) {
+ return new String[] { host };
+ }
+
+ /** CONFIGURATION CONNECTOR **/
+ @Override
+ public void outputConfigurationHeader(IThreadContext threadContext,
IHTTPOutput out, Locale locale,
+ ConfigParams parameters, List<String> tabsArray) throws
ManifoldCFException, IOException {
+
+ // Server tab
+ tabsArray.add(Messages.getString(locale,
NUXEO_SERVER_TAB_PROPERTY));
+
+ Map<String, String> paramMap = new HashMap<String, String>();
+
+ // Fill in the parameters form each tab
+ fillInServerConfigurationMap(paramMap, out, parameters);
+
+ Messages.outputResourceWithVelocity(out, locale,
EDIT_CONFIG_HEADER_FORWARD, paramMap, true);
+ }
+
+ @Override
+ public void outputConfigurationBody(IThreadContext threadContext,
IHTTPOutput out, Locale locale,
+ ConfigParams parameters, String tabName) throws
ManifoldCFException, IOException {
+
+ // Call the Velocity tempaltes for each tab
+ Map<String, String> paramMap = new HashMap<String, String>();
+
+ // Set the tab name
+ paramMap.put("TabName", tabName);
+
+ // Fill in the parameters
+ fillInServerConfigurationMap(paramMap, out, parameters);
+
+ // Server tab
+ Messages.outputResourceWithVelocity(out, locale,
EDIT_CONFIG_FORWARD_SERVER, paramMap, true);
+
+ }
+
+ private static void fillInServerConfigurationMap(Map<String, String>
serverMap, IPasswordMapperActivity mapper,
+ ConfigParams parameters) {
+
+ String nuxeoProtocol =
parameters.getParameter(NuxeoConfiguration.Server.PROTOCOL);
+ String nuxeoHost =
parameters.getParameter(NuxeoConfiguration.Server.HOST);
+ String nuxeoPort =
parameters.getParameter(NuxeoConfiguration.Server.PORT);
+ String nuxeoPath =
parameters.getParameter(NuxeoConfiguration.Server.PATH);
+ String nuxeoUsername =
parameters.getParameter(NuxeoConfiguration.Server.USERNAME);
+ String nuxeoPassword =
parameters.getParameter(NuxeoConfiguration.Server.PASSWORD);
+
+ if (nuxeoProtocol == null)
+ nuxeoProtocol =
NuxeoConfiguration.Server.PROTOCOL_DEFAULT_VALUE;
+ if (nuxeoHost == null)
+ nuxeoHost =
NuxeoConfiguration.Server.HOST_DEFAULT_VALUE;
+ if (nuxeoPort == null)
+ nuxeoPort =
NuxeoConfiguration.Server.PORT_DEFAULT_VALUE;
+ if (nuxeoPath == null)
+ nuxeoPath =
NuxeoConfiguration.Server.PATH_DEFAULT_VALUE;
+ if (nuxeoUsername == null)
+ nuxeoUsername =
NuxeoConfiguration.Server.USERNAME_DEFAULT_VALUE;
+ if (nuxeoPassword == null)
+ nuxeoPassword =
NuxeoConfiguration.Server.PASSWORD_DEFAULT_VALUE;
+ else
+ nuxeoPassword = mapper.mapKeyToPassword(nuxeoPassword);
+
+ serverMap.put(PARAMETER_PREFIX +
NuxeoConfiguration.Server.PROTOCOL, nuxeoProtocol);
+ serverMap.put(PARAMETER_PREFIX +
NuxeoConfiguration.Server.HOST, nuxeoHost);
+ serverMap.put(PARAMETER_PREFIX +
NuxeoConfiguration.Server.PORT, nuxeoPort);
+ serverMap.put(PARAMETER_PREFIX +
NuxeoConfiguration.Server.PATH, nuxeoPath);
+ serverMap.put(PARAMETER_PREFIX +
NuxeoConfiguration.Server.USERNAME, nuxeoUsername);
+ serverMap.put(PARAMETER_PREFIX +
NuxeoConfiguration.Server.PASSWORD, nuxeoPassword);
+
+ }
+
+ @Override
+ public String processConfigurationPost(IThreadContext thredContext,
IPostParameters variableContext,
+ ConfigParams parameters) {
+
+ String nuxeoProtocol =
variableContext.getParameter(PARAMETER_PREFIX +
NuxeoConfiguration.Server.PROTOCOL);
+ if (nuxeoProtocol != null)
+
parameters.setParameter(NuxeoConfiguration.Server.PROTOCOL, nuxeoProtocol);
+
+ String nuxeoHost =
variableContext.getParameter(PARAMETER_PREFIX + NuxeoConfiguration.Server.HOST);
+ if (nuxeoHost != null)
+ parameters.setParameter(NuxeoConfiguration.Server.HOST,
nuxeoHost);
+
+ String nuxeoPort =
variableContext.getParameter(PARAMETER_PREFIX + NuxeoConfiguration.Server.PORT);
+ if (nuxeoPort != null)
+ parameters.setParameter(NuxeoConfiguration.Server.PORT,
nuxeoPort);
+
+ String nuxeoPath =
variableContext.getParameter(PARAMETER_PREFIX + NuxeoConfiguration.Server.PATH);
+ if (nuxeoPath != null)
+ parameters.setParameter(NuxeoConfiguration.Server.PATH,
nuxeoPath);
+
+ String nuxeoUsername =
variableContext.getParameter(PARAMETER_PREFIX +
NuxeoConfiguration.Server.USERNAME);
+ if (nuxeoUsername != null)
+
parameters.setParameter(NuxeoConfiguration.Server.USERNAME, nuxeoUsername);
+
+ String nuxeoPassword =
variableContext.getParameter(PARAMETER_PREFIX +
NuxeoConfiguration.Server.PASSWORD);
+ if (nuxeoPassword != null)
+
parameters.setObfuscatedParameter(NuxeoConfiguration.Server.PASSWORD,
+
variableContext.mapKeyToPassword(nuxeoPassword));
+
+ return null;
+ }
+
+ @Override
+ public void viewConfiguration(IThreadContext threadContext, IHTTPOutput
out, Locale locale, ConfigParams parameters)
+ throws ManifoldCFException, IOException {
+
+ Map<String, String> paramMap = new HashMap<String, String>();
+
+ fillInServerConfigurationMap(paramMap, out, parameters);
+
+ Messages.outputResourceWithVelocity(out, locale,
VIEW_CONFIG_FORWARD, paramMap, true);
+ }
+
+ /** CONNECTION **/
+ @Override
+ public void connect(ConfigParams configParams) {
+ super.connect(configParams);
+
+ protocol =
params.getParameter(NuxeoConfiguration.Server.PROTOCOL);
+ host = params.getParameter(NuxeoConfiguration.Server.HOST);
+ port = params.getParameter(NuxeoConfiguration.Server.PORT);
+ path = params.getParameter(NuxeoConfiguration.Server.PATH);
+ username =
params.getParameter(NuxeoConfiguration.Server.USERNAME);
+ password =
params.getObfuscatedParameter(NuxeoConfiguration.Server.PASSWORD);
+
+ try {
+ initNuxeoClient();
+ } catch (ManifoldCFException manifoldCFException) {
+ logger.debug("Not possible to initialize Nuxeo client.
Reason: {}", manifoldCFException.getMessage());
+ manifoldCFException.printStackTrace();
+ }
+ }
+
+ // Check the connection
+ @Override
+ public String check() throws ManifoldCFException {
+ try {
+ if (!isConnected()) {
+ initNuxeoClient();
+ }
+
+ Boolean result = true;
+ try {
+ nuxeoClient.repository().getDocumentRoot();
+ } catch (Exception ex) {
+ result = false;
+ }
+
+ if (result)
+ return super.check();
+ else
+ throw new ManifoldCFException("Nuxeo instance
could not be reached");
+
+ } catch (ManifoldCFException manifoldCFException) {
+ return "Connection failed: " +
manifoldCFException.getMessage();
+ } catch (Exception e) {
+ return "Connection failed: " + e.getMessage();
+ }
+ }
+
+ /**
+ * Initialize Nuxeo client using the configured parameters.
+ *
+ * @throws ManifoldCFException
+ */
+ private void initNuxeoClient() throws ManifoldCFException {
+ if (nuxeoClient == null) {
+
+ if (StringUtils.isEmpty(protocol)) {
+ throw new ManifoldCFException(
+ "Parameter " +
NuxeoConfiguration.Server.PROTOCOL + " required but not set");
+ }
+
+ if (StringUtils.isEmpty(host)) {
+ throw new ManifoldCFException("Parameter " +
NuxeoConfiguration.Server.HOST + " required but not set");
+ }
+
+ String url = getUrl();
+ nuxeoClient = new NuxeoClient(url, username, password);
+
+ lastSessionFetch = System.currentTimeMillis();
+
+ }
+
+ }
+
+ /**
+ * Formatter URL
+ *
+ * @throws ManifoldCFException
+ */
+ public String getUrl() throws ManifoldCFException {
+ int portInt;
+ if (port != null && port.length() > 0) {
+ try {
+ portInt = Integer.parseInt(port);
+ } catch (NumberFormatException formatException) {
+ throw new ManifoldCFException("Bad number: " +
formatException.getMessage(), formatException);
+ }
+ } else {
+ if (protocol.toLowerCase(Locale.ROOT).equals("http")) {
+ portInt = 80;
+ } else {
+ portInt = 443;
+ }
+ }
+
+ String url = protocol + "://" + host + ":" + portInt + "/" +
path;
+
+ return url;
+ }
+
+ @Override
+ public boolean isConnected() {
+ return nuxeoClient != null;
+ }
+
+ @Override
+ public void poll() throws ManifoldCFException {
+ if (lastSessionFetch == -1L) {
+ return;
+ }
+
+ long currentTime = System.currentTimeMillis();
+
+ if (currentTime > lastSessionFetch + timeToRelease) {
+ nuxeoClient.shutdown();
+ nuxeoClient = null;
+ lastSessionFetch = -1;
+ }
+ }
+
+ /** SEEDING **/
+ @Override
+ public String addSeedDocuments(ISeedingActivity activities,
Specification spec, String lastSeedVersion,
+ long seedTime, int jobMode) throws ManifoldCFException,
ServiceInterruption {
+
+ if (!isConnected())
+ initNuxeoClient();
+
+ try {
+
+ int lastStart = 0;
+ int defaultSize = 50;
+ Boolean isLast = true;
+ NuxeoSpecification ns = NuxeoSpecification.from(spec);
+ List<String> domains = ns.getDomains();
+ List<String> documentsType = ns.getDocumentsType();
+
+ do {
+
+ Documents docs = getDocsByDate(nuxeoClient,
lastSeedVersion, domains, documentsType,
+ defaultSize, lastStart);
+
+ for (Document doc : docs.getDocuments()) {
+
activities.addSeedDocument(doc.getUid());
+ }
+
+ lastStart++;
+ isLast = docs.getIsNextPageAvailable();
+
+ } while (isLast);
+
+ SimpleDateFormat sdf = new
SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
+ sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
+
+ lastSeedVersion = sdf.format(new Date());
+
+ return lastSeedVersion;
+ } catch (Exception exception) {
+ long interruptionRetryTime = 5L * 60L * 1000L;
+ String message = "Server appears down during seeding: "
+ exception.getMessage();
+ throw new ServiceInterruption(message, exception,
System.currentTimeMillis() + interruptionRetryTime, -1L,
+ 3, true);
+ }
+ }
+
+ /**
+ *
+ * @param nuxeoClient
+ * @param date
+ * @param domains
+ * @param documentsType
+ * @param limit
+ * @param start
+ * @return Documents
+ */
+ public Documents getDocsByDate(NuxeoClient nuxeoClient, String date,
List<String> domains,
+ List<String> documentsType, int limit, int start) {
+
+ String query = "";
+
+ if (date == null || date.isEmpty()) {
+ SimpleDateFormat DATE_FORMAT = new
SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
+ date = DATE_FORMAT.format(new Date(0));
+ }
+ query = "dc:modified > '" + date + "'";
+
+ if (!domains.isEmpty()) {
+ Iterator<String> itdom = domains.iterator();
+
+ query = String.format(" %s AND ( ecm:path STARTSWITH
'/%s'", query, itdom.next());
+
+ while (itdom.hasNext()) {
+ query = String.format("%s OR ecm:path
STARTSWITH '/%s'", query, itdom.next());
+ }
+
+ query = String.format("%s )", query);
+ }
+
+ if (!documentsType.isEmpty()) {
+ Iterator<String> itDocTy = documentsType.iterator();
+
+ query = String.format(" %s AND ( ecm:primaryType =
'%s'", query, itDocTy.next());
+
+ while (itDocTy.hasNext()) {
+ query = String.format("%s OR ecm:primaryType =
'%s'", query, itDocTy.next());
+ }
+
+ query = String.format("%s )", query);
+ }
+
+ query = String.format(URI_DOCUMENT + " where %s ", query);
+
+ nuxeoClient.header("X-NXDocumentProperties", "*");
+ Documents docs = nuxeoClient.repository().query(query,
String.valueOf(limit), String.valueOf(start), null, null,
+ null, null);
+
+ return docs;
+ }
+
+ /** PROCESS DOCUMENTS **/
+
+ @Override
+ public void processDocuments(String[] documentsIdentifieres,
IExistingVersions statuses, Specification spec,
+ IProcessActivity activities, int jobMode, boolean
usesDefaultAuthority)
+ throws ManifoldCFException, ServiceInterruption {
+
+ for (int i = 0; i < documentsIdentifieres.length; i++) {
+
+ String documentId = documentsIdentifieres[i];
+ String version =
statuses.getIndexedVersionString(documentId);
+
+ long startTime = System.currentTimeMillis();
+ ProcessResult pResult = null;
+ boolean doLog = true;
+
+ try {
+
+ if (!isConnected()) {
+ initNuxeoClient();
+ }
+
+ pResult = processDocument(documentId, spec,
version, activities, doLog,
+ Maps.<String, String>
newHashMap());
+ } catch (Exception exception) {
+ long interruptionRetryTime = 5L * 60L * 1000L;
+ String message = "Server appears down during
seeding: " + exception.getMessage();
+ throw new ServiceInterruption(message,
exception, System.currentTimeMillis() + interruptionRetryTime,
+ -1L, 3, true);
+ } finally {
+ if (doLog)
+ if (pResult != null &&
pResult.errorCode != null && !pResult.errorCode.isEmpty())
+ activities.recordActivity(new
Long(startTime), ACTIVITY_READ, pResult.fileSize, documentId,
+
pResult.errorCode, pResult.errorDecription, null);
+ }
+
+ }
+ }
+
+ /**
+ * @param documentId
+ * @param version
+ * @param activities
+ * @param doLog
+ * @param newHashMap
+ * @return
+ */
+
+ private ProcessResult processDocument(String documentId, Specification
spec, String version,
+ IProcessActivity activities, boolean doLog,
HashMap<String, String> extraProperties)
+ throws ManifoldCFException, ServiceInterruption,
IOException {
+
+ DocumentManifold doc = new
DocumentManifold(nuxeoClient.repository().fetchDocumentById(documentId));
+
+ return processDocumentInternal(doc, documentId, spec, version,
activities, doLog, extraProperties);
+ }
+
+ /**
+ * @param doc
+ * @param documentId
+ * @param version
+ * @param activities
+ * @param doLog
+ * @param extraProperties
+ * @return
+ */
+
+ private ProcessResult processDocumentInternal(DocumentManifold doc,
String manifoldDocumentIdentifier,
+ Specification spec, String version, IProcessActivity
activities, boolean doLog,
+ HashMap<String, String> extraProperties) throws
ManifoldCFException, ServiceInterruption, IOException {
+
+ RepositoryDocument rd = new RepositoryDocument();
+ NuxeoSpecification ns = NuxeoSpecification.from(spec);
+
+ String lastModified = doc.getDocument().getLastModified();
+ Date lastModifiedDate = null;
+
+ if (lastModified != null) {
+ DateFormat formatter = new
SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
+ try {
+ lastModifiedDate =
formatter.parse(lastModified);
+ } catch (Exception ex) {
+ lastModifiedDate = new Date(0);
+ }
+ }
+
+ int lenght = doc.getLenght();
+ if (doc.getDocument().getState() != null
+ &&
doc.getDocument().getState().equalsIgnoreCase(DocumentManifold.DELETED)) {
+ activities.deleteDocument(manifoldDocumentIdentifier);
+ return new ProcessResult(lenght, "DELETED", "");
+ }
+
+ if
(!activities.checkDocumentNeedsReindexing(manifoldDocumentIdentifier,
lastModified)) {
+ return new ProcessResult(lenght, "RETAINED", "");
+ }
+
+ if (doc.getDocument().getUid() == null) {
+ activities.deleteDocument(manifoldDocumentIdentifier);
+ return new ProcessResult(lenght, "DELETED", "");
+ }
+
+ // Add respository document information
+ rd.setMimeType(doc.getMimeType());
+ rd.setModifiedDate(lastModifiedDate);
+ rd.setIndexingDate(new Date());
+
+ // Adding Document metadata
+ Map<String, Object> docMetadata = doc.getMetadata();
+
+ for (Entry<String, Object> entry : docMetadata.entrySet()) {
+ if (entry.getValue() instanceof List) {
+ List<?> list = (List<?>) entry.getValue();
+ rd.addField(entry.getKey(), list.toArray(new
String[list.size()]));
+ } else {
+ rd.addField(entry.getKey(),
entry.getValue().toString());
+ }
+ }
+
+ if (ns.isProcessTags())
+ rd.addField("Tags", doc.getTags(nuxeoClient));
+
+ String documentUri = null;
+ try {
+ documentUri = getUrl() + "/nxpath/" +
doc.getDocument().getRepositoryName() + doc.getDocument().getPath()
+ + "@view_documents";
+ } catch (Exception ex) {
+ documentUri = doc.getDocument().getUid();
+ }
+
+ // Set repository ACLs
+ String[] permissions = doc.getPermissions(nuxeoClient);
+ rd.setSecurityACL(RepositoryDocument.SECURITY_TYPE_DOCUMENT,
permissions);
+
rd.setSecurityDenyACL(RepositoryDocument.SECURITY_TYPE_DOCUMENT, new String[] {
GLOBAL_DENY_TOKEN });
+ rd.setBinary(doc.getContent(), lenght);
+
+ // Action
+
activities.ingestDocumentWithException(manifoldDocumentIdentifier,
lastModified, documentUri, rd);
+
+ if (ns.isProcessAttachments()) {
+ for (Attachment att : doc.getAttachments(nuxeoClient)) {
+ RepositoryDocument att_rd = new
RepositoryDocument();
+ String attDocumentUri = att.getUrl();
+
+ att_rd.setMimeType(att.getMime_type());
+ att_rd.setBinary(att.getData(),
att.getLength());
+
+ if (lastModified != null)
+
att_rd.setModifiedDate(lastModifiedDate);
+ att_rd.setIndexingDate(new Date());
+
+ att_rd.addField(Attachment.ATT_KEY_NAME,
att.getName());
+ att_rd.addField(Attachment.ATT_KEY_LENGTH,
String.valueOf(att.getLength()));
+ att_rd.addField(Attachment.ATT_KEY_DIGEST,
att.getDigest());
+
att_rd.addField(Attachment.ATT_KEY_DIGEST_ALGORITHM, att.getDigestAlgorithm());
+ att_rd.addField(Attachment.ATT_KEY_ENCODING,
att.getEncoding());
+ // Set repository ACLs
+
att_rd.setSecurityACL(RepositoryDocument.SECURITY_TYPE_DOCUMENT, permissions);
+
att_rd.setSecurityDenyACL(RepositoryDocument.SECURITY_TYPE_DOCUMENT,
+ new String[] {
GLOBAL_DENY_TOKEN });
+
+
activities.ingestDocumentWithException(manifoldDocumentIdentifier,
attDocumentUri, lastModified,
+ attDocumentUri, att_rd);
+ }
+ }
+
+ return new ProcessResult(lenght, "OK", StringUtils.EMPTY);
+ }
+
+ private class ProcessResult {
+ private long fileSize;
+ private String errorCode;
+ private String errorDecription;
+
+ private ProcessResult(long fileSize, String errorCode, String
errorDescription) {
+ this.fileSize = fileSize;
+ this.errorCode = errorCode;
+ this.errorDecription = errorDescription;
+ }
+
+ }
+
+ @Override
+ public int getConnectorModel() {
+ return IRepositoryConnector.MODEL_ADD_CHANGE_DELETE;
+ }
+
+ /** Specifications **/
+
+ @Override
+ public void viewSpecification(IHTTPOutput out, Locale locale,
Specification spec, int connectionSequenceNumber)
+ throws ManifoldCFException, IOException {
+
+ Map<String, Object> paramMap = new HashMap<String, Object>();
+ paramMap.put("SeqNum",
Integer.toString(connectionSequenceNumber));
+
+ NuxeoSpecification ns = NuxeoSpecification.from(spec);
+
+
paramMap.put(NuxeoConfiguration.Specification.DOMAINS.toUpperCase(),
ns.getDomains());
+
paramMap.put(NuxeoConfiguration.Specification.DOCUMENTS_TYPE.toUpperCase(),
ns.documentsType);
+
paramMap.put(NuxeoConfiguration.Specification.PROCESS_TAGS.toUpperCase(),
ns.isProcessTags().toString());
+
paramMap.put(NuxeoConfiguration.Specification.PROCESS_ATTACHMENTS.toUpperCase(),
+ ns.isProcessAttachments().toString());
+
+ Messages.outputResourceWithVelocity(out, locale,
VIEW_SPEC_FORWARD, paramMap);
+ }
+
+ @Override
+ public String processSpecificationPost(IPostParameters variableContext,
Locale locale, Specification ds,
+ int connectionSequenceNumber) throws
ManifoldCFException {
+
+ String seqPrefix = "s" + connectionSequenceNumber + "_";
+
+ // DOMAINS
+ String xc = variableContext.getParameter(seqPrefix +
"domainscount");
+
+ if (xc != null) {
+ // Delete all preconfigured domains
+ int i = 0;
+ while (i < ds.getChildCount()) {
+ SpecificationNode sn = ds.getChild(i);
+ if
(sn.getType().equals(NuxeoConfiguration.Specification.DOMAINS)) {
+ ds.removeChild(i);
+ } else {
+ i++;
+ }
+ }
+
+ SpecificationNode domains = new
SpecificationNode(NuxeoConfiguration.Specification.DOMAINS);
+ ds.addChild(ds.getChildCount(), domains);
+ int domainsCount = Integer.parseInt(xc);
+ i = 0;
+ while (i < domainsCount) {
+ String domainDescription = "_" +
Integer.toString(i);
+ String domainOpName = seqPrefix + "domainop" +
domainDescription;
+ xc = variableContext.getParameter(domainOpName);
+ if (xc != null && xc.equals("Delete")) {
+ i++;
+ continue;
+ }
+
+ String domainKey =
variableContext.getParameter(seqPrefix + "domain" + domainDescription);
+ SpecificationNode node = new
SpecificationNode(NuxeoConfiguration.Specification.DOMAIN);
+
node.setAttribute(NuxeoConfiguration.Specification.DOMAIN_KEY, domainKey);
+ domains.addChild(domains.getChildCount(), node);
+ i++;
+ }
+
+ String op = variableContext.getParameter(seqPrefix +
"domainop");
+ if (op != null && op.equals("Add")) {
+ String domainSpec =
variableContext.getParameter(seqPrefix + "domain");
+ SpecificationNode node = new
SpecificationNode(NuxeoConfiguration.Specification.DOMAIN);
+
node.setAttribute(NuxeoConfiguration.Specification.DOMAIN_KEY, domainSpec);
+ domains.addChild(domains.getChildCount(), node);
+ }
+ }
+
+ // TYPE OF DOCUMENTS
+ String xt = variableContext.getParameter(seqPrefix +
"documentsTypecount");
+
+ if (xt != null) {
+ // Delete all preconfigured type of documents
+ int i = 0;
+ while (i < ds.getChildCount()) {
+ SpecificationNode sn = ds.getChild(i);
+ if
(sn.getType().equals(NuxeoConfiguration.Specification.DOCUMENTS_TYPE)) {
+ ds.removeChild(i);
+ } else {
+ i++;
+ }
+ }
+
+ SpecificationNode documentsType = new
SpecificationNode(NuxeoConfiguration.Specification.DOCUMENTS_TYPE);
+ ds.addChild(ds.getChildCount(), documentsType);
+ int documentsTypeCount = Integer.parseInt(xt);
+ i = 0;
+ while (i < documentsTypeCount) {
+ String documentTypeDescription = "_" +
Integer.toString(i);
+ String documentTypeOpName = seqPrefix +
"documentTypeop" + documentTypeDescription;
+ xt =
variableContext.getParameter(documentTypeOpName);
+ if (xt != null && xt.equals("Delete")) {
+ i++;
+ continue;
+ }
+
+ String documentTypeKey = variableContext
+ .getParameter(seqPrefix +
"documentType" + documentTypeDescription);
+ SpecificationNode node = new
SpecificationNode(NuxeoConfiguration.Specification.DOCUMENT_TYPE);
+
node.setAttribute(NuxeoConfiguration.Specification.DOCUMENT_TYPE_KEY,
documentTypeKey);
+
documentsType.addChild(documentsType.getChildCount(), node);
+ i++;
+ }
+
+ String op = variableContext.getParameter(seqPrefix +
"documentTypeop");
+ if (op != null && op.equals("Add")) {
+ String documentTypeSpec =
variableContext.getParameter(seqPrefix + "documentType");
+ SpecificationNode node = new
SpecificationNode(NuxeoConfiguration.Specification.DOCUMENT_TYPE);
+
node.setAttribute(NuxeoConfiguration.Specification.DOCUMENT_TYPE_KEY,
documentTypeSpec);
+
documentsType.addChild(documentsType.getChildCount(), node);
+ }
+
+ }
+
+ // TAGS
+ SpecificationNode documents = new
SpecificationNode(NuxeoConfiguration.Specification.DOCUMENTS);
+ ds.addChild(ds.getChildCount(), documents);
+
+ String processTags = variableContext.getParameter(seqPrefix +
NuxeoConfiguration.Specification.PROCESS_TAGS);
+ String processAttachments = variableContext
+ .getParameter(seqPrefix +
NuxeoConfiguration.Specification.PROCESS_ATTACHMENTS);
+
+ if (processTags != null && !processTags.isEmpty()) {
+
documents.setAttribute(NuxeoConfiguration.Specification.PROCESS_TAGS,
String.valueOf(processTags));
+ }
+ if (processAttachments != null &&
!processAttachments.isEmpty()) {
+
documents.setAttribute(NuxeoConfiguration.Specification.PROCESS_ATTACHMENTS,
+ String.valueOf(processAttachments));
+ }
+
+ return null;
+ }
+
+ @Override
+ public void outputSpecificationBody(IHTTPOutput out, Locale locale,
Specification spec,
+ int connectionSequenceNumber, int actualSequenceNumber,
String tabName)
+ throws ManifoldCFException, IOException {
+
+ Map<String, Object> paramMap = new HashMap<String, Object>();
+ paramMap.put("TabName", tabName);
+ paramMap.put("SeqNum",
Integer.toString(connectionSequenceNumber));
+ paramMap.put("SelectedNum",
Integer.toString(actualSequenceNumber));
+
+ NuxeoSpecification ns = NuxeoSpecification.from(spec);
+
+
paramMap.put(NuxeoConfiguration.Specification.DOMAINS.toUpperCase(),
ns.getDomains());
+
paramMap.put(NuxeoConfiguration.Specification.DOCUMENTS_TYPE.toUpperCase(),
ns.getDocumentsType());
+
paramMap.put(NuxeoConfiguration.Specification.PROCESS_TAGS.toUpperCase(),
ns.isProcessTags());
+
paramMap.put(NuxeoConfiguration.Specification.PROCESS_ATTACHMENTS.toUpperCase(),
ns.isProcessAttachments());
+
+ Messages.outputResourceWithVelocity(out, locale,
EDIT_SPEC_FORWARD_CONF_DOMAINS, paramMap);
+ Messages.outputResourceWithVelocity(out, locale,
EDIT_SPEC_FORWARD_CONF_DOCUMENTS_TYPE, paramMap);
+ Messages.outputResourceWithVelocity(out, locale,
EDIT_SPEC_FORWARD_CONF_DOCUMENTS, paramMap);
+
+ }
+
+ @Override
+ public void outputSpecificationHeader(IHTTPOutput out, Locale locale,
Specification spec,
+ int connectionSequenceNumber, List<String> tabsArray)
throws ManifoldCFException, IOException {
+
+ tabsArray.add(Messages.getString(locale,
CONF_DOMAINS_TAB_PROPERTY));
+ tabsArray.add(Messages.getString(locale,
CONF_DOCUMENTS_TYPE_TAB_PROPERTY));
+ tabsArray.add(Messages.getString(locale,
CONF_DOCUMENT_PROPERTY));
+
+ Map<String, Object> paramMap = new HashMap<String, Object>();
+ paramMap.put("SeqNum",
Integer.toString(connectionSequenceNumber));
+
+ Messages.outputResourceWithVelocity(out, locale,
EDIT_SPEC_HEADER_FORWARD, paramMap);
+ }
+
+ public static class NuxeoSpecification {
+
+ private List<String> domains;
+ private List<String> documentsType;
+ private Boolean processTags = false;
+ private Boolean processAttahcments = false;
+
+ public List<String> getDomains() {
+ return this.domains;
+ }
+
+ public List<String> getDocumentsType() {
+ return this.documentsType;
+ }
+
+ public Boolean isProcessTags() {
+ return this.processTags;
+ }
+
+ public Boolean isProcessAttachments() {
+ return this.processAttahcments;
+ }
+
+ /**
+ * @param spec
+ * @return
+ */
+ public static NuxeoSpecification from(Specification spec) {
+ NuxeoSpecification ns = new NuxeoSpecification();
+
+ ns.domains = Lists.newArrayList();
+ ns.documentsType = Lists.newArrayList();
+
+ for (int i = 0, len = spec.getChildCount(); i < len;
i++) {
+ SpecificationNode sn = spec.getChild(i);
+
+ if
(sn.getType().equals(NuxeoConfiguration.Specification.DOMAINS)) {
+ for (int j = 0, sLen =
sn.getChildCount(); j < sLen; j++) {
+ SpecificationNode spectNode =
sn.getChild(j);
+ if
(spectNode.getType().equals(NuxeoConfiguration.Specification.DOMAIN)) {
+
ns.domains.add(spectNode.getAttributeValue(NuxeoConfiguration.Specification.DOMAIN_KEY));
+ }
+ }
+ } else if
(sn.getType().equals(NuxeoConfiguration.Specification.DOCUMENTS_TYPE)) {
+ for (int j = 0, sLen =
sn.getChildCount(); j < sLen; j++) {
+ SpecificationNode spectNode =
sn.getChild(j);
+ if
(spectNode.getType().equals(NuxeoConfiguration.Specification.DOCUMENT_TYPE)) {
+ ns.documentsType.add(
+
spectNode.getAttributeValue(NuxeoConfiguration.Specification.DOCUMENT_TYPE_KEY));
+ }
+ }
+ } else if
(sn.getType().equals(NuxeoConfiguration.Specification.DOCUMENTS)) {
+ String procTags =
sn.getAttributeValue(NuxeoConfiguration.Specification.PROCESS_TAGS);
+ ns.processTags =
Boolean.valueOf(procTags);
+ String procAtt =
sn.getAttributeValue(NuxeoConfiguration.Specification.PROCESS_ATTACHMENTS);
+ ns.processAttahcments =
Boolean.valueOf(procAtt);
+ }
+ }
+
+ return ns;
+ }
+
+ }
+}
Propchange:
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/nuxeo/NuxeoRepositoryConnector.java
------------------------------------------------------------------------------
svn:executable = *
Added:
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/nuxeo/exception/NuxeoException.java
URL:
http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/nuxeo/exception/NuxeoException.java?rev=1791420&view=auto
==============================================================================
---
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/nuxeo/exception/NuxeoException.java
(added)
+++
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/nuxeo/exception/NuxeoException.java
Fri Apr 14 21:26:16 2017
@@ -0,0 +1,17 @@
+package org.apache.manifoldcf.crawler.connectors.nuxeo.exception;
+
+public class NuxeoException extends Exception {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = -7504820888917970500L;
+
+ public NuxeoException(String message) {
+ super(message);
+ }
+
+ public NuxeoException(String message, Throwable throwable) {
+ super(message, throwable);
+ }
+}
Propchange:
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/nuxeo/exception/NuxeoException.java
------------------------------------------------------------------------------
svn:executable = *
Added:
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/nuxeo/model/Attachment.java
URL:
http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/nuxeo/model/Attachment.java?rev=1791420&view=auto
==============================================================================
---
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/nuxeo/model/Attachment.java
(added)
+++
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/nuxeo/model/Attachment.java
Fri Apr 14 21:26:16 2017
@@ -0,0 +1,68 @@
+/**
+ *
+ */
+package org.apache.manifoldcf.crawler.connectors.nuxeo.model;
+
+import java.io.InputStream;
+
+/**
+ * @author David Arroyo Escobar <[email protected]>
+ *
+ */
+public class Attachment{
+
+ public static final String ATT_KEY_FILES = "files:files";
+ public static final String ATT_KEY_FILE = "file";
+
+ public static final String ATT_KEY_NAME = "name";
+ public static final String ATT_KEY_MIME_TYPE = "mime-type";
+ public static final String ATT_KEY_ENCODING = "encoding";
+ public static final String ATT_KEY_DIGEST = "digest";
+ public static final String ATT_KEY_DIGEST_ALGORITHM = "digestAlgorithm";
+ public static final String ATT_KEY_URL = "data";
+ public static final String ATT_KEY_LENGTH = "length";
+
+ //Properties
+ protected String name;
+ protected String mime_type;
+ protected String url;
+ protected String encoding;
+ protected String digest;
+ protected String digestAlgorithm;
+ protected long length;
+ protected InputStream data;
+
+ //Getters
+ public String getName() {
+ return name;
+ }
+
+ public String getMime_type() {
+ return mime_type;
+ }
+
+ public String getUrl() {
+ return url;
+ }
+
+ public long getLength() {
+ return length;
+ }
+
+ public String getEncoding() {
+ return encoding;
+ }
+
+ public String getDigest() {
+ return digest;
+ }
+
+ public String getDigestAlgorithm() {
+ return digestAlgorithm;
+ }
+
+ public InputStream getData() {
+ return data;
+ }
+
+}
\ No newline at end of file
Propchange:
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/nuxeo/model/Attachment.java
------------------------------------------------------------------------------
svn:executable = *
Added:
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/nuxeo/model/DocumentManifold.java
URL:
http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/nuxeo/model/DocumentManifold.java?rev=1791420&view=auto
==============================================================================
---
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/nuxeo/model/DocumentManifold.java
(added)
+++
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/nuxeo/model/DocumentManifold.java
Fri Apr 14 21:26:16 2017
@@ -0,0 +1,189 @@
+package org.apache.manifoldcf.crawler.connectors.nuxeo.model;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import org.nuxeo.client.api.NuxeoClient;
+import org.nuxeo.client.api.objects.Document;
+import org.nuxeo.client.api.objects.Documents;
+import org.nuxeo.client.api.objects.Operation;
+import org.nuxeo.client.api.objects.acl.ACE;
+import org.nuxeo.client.api.objects.acl.ACL;
+import org.nuxeo.client.api.objects.blob.Blob;
+
+import com.google.common.collect.Maps;
+
+public class DocumentManifold {
+
+ private static final String URI_TAGGING = "SELECT * FROM Tagging";
+
+ private static final String DEFAULT_MIMETYPE = "text/html;
charset=utf-8";
+ private static final String[] avoid_properties = { "file:filename",
"file:content", "files:files" };
+
+ public Document document;
+ public InputStream content;
+ protected String mimetype;
+
+ public static final String DELETED = "deleted";
+
+ public static final String DOC_UID = "uid";
+ public static final String DOC_ENTITY_TYPE = "entity-type";
+ public static final String DOC_LAST_MODIFIED = "last-modified";
+ public static final String DOC_STATE = "state";
+
+ // Constructor
+ public DocumentManifold(Document document) {
+ this.document = document;
+ processDocument();
+ }
+
+
+ /**
+ *
+ *
+ * @return Map<String, Object>
+ */
+ public Map<String, Object> getMetadata() {
+ Map<String, Object> docMetadata = Maps.newHashMap();
+
+ for (Entry<String, Object> property :
this.document.getProperties().entrySet()) {
+ if
(!Arrays.asList(avoid_properties).contains(property.getKey())) {
+ addIfNotEmpty(docMetadata, property.getKey(),
property.getValue());
+ }
+ }
+ addIfNotEmpty(docMetadata, DOC_UID, this.document.getUid());
+ addIfNotEmpty(docMetadata, DOC_ENTITY_TYPE,
this.document.getEntityType());
+ addIfNotEmpty(docMetadata, DOC_LAST_MODIFIED,
this.document.getLastModified());
+ addIfNotEmpty(docMetadata, DOC_STATE, this.document.getState());
+
+ return docMetadata;
+ }
+
+ public void addIfNotEmpty(Map<String, Object> docMetadata, String key,
Object obj) {
+ if (obj != null && ((obj instanceof String && !((String)
obj).isEmpty()) || !(obj instanceof String))) {
+ docMetadata.put(key, obj);
+ }
+ }
+
+ private void processDocument() {
+
+ // Content
+ InputStream is = null;
+ String mimetype = null;
+ try {
+ is = document.fetchBlob().getStream();
+ this.mimetype = (String) ((LinkedHashMap<?, ?>)
this.getDocument().get("file:content")).get("mime-type");
+ } catch (Exception ex) {
+ is = new ByteArrayInputStream("".getBytes());
+ mimetype = DEFAULT_MIMETYPE;
+ }
+ this.content = is;
+ this.mimetype = mimetype;
+ }
+
+ // GETTERS AND SETERS
+ public Document getDocument() {
+ return this.document;
+ }
+
+ public String getMimeType() {
+ return this.mimetype;
+ }
+
+ public int getLenght() {
+ int size;
+ try {
+ size = this.getContent().available();
+ } catch (IOException ex) {
+ size = 0;
+ }
+ return size;
+ }
+
+ public InputStream getContent() {
+ return this.content;
+ }
+
+ public String[] getPermissions(NuxeoClient nuxeoClient) {
+
+ List<String> permissions = new ArrayList<String>();
+ try {
+ for (ACL acl :
this.getDocument().fetchPermissions().getAcls()) {
+ for (ACE ace : acl.getAces()) {
+ if
(ace.getStatus().equalsIgnoreCase("effective") &&
ace.getGranted().equalsIgnoreCase("true")) {
+
permissions.add(ace.getUsername());
+ }
+ }
+ }
+
+ return permissions.toArray(new
String[permissions.size()]);
+ } catch (Exception e) {
+ return new String[] {};
+ }
+ }
+
+ public List<Attachment> getAttachments(NuxeoClient nuxeoClient) {
+ List<Attachment> attachments = new ArrayList<Attachment>();
+ List<?> arrayList = (List<?>)
this.document.get(Attachment.ATT_KEY_FILES);
+
+ for (Object object : arrayList) {
+ Attachment attach = new Attachment();
+ LinkedHashMap<?, ?> file = (LinkedHashMap<?, ?>)
((LinkedHashMap<?, ?>) object)
+ .get(Attachment.ATT_KEY_FILE);
+
+ attach.name = (String) file.get("name");
+ attach.encoding = (String) file.get("encoding");
+ attach.mime_type = (String) file.get("mime-type");
+ attach.digestAlgorithm = (String)
file.get("digestAlgorithm");
+ attach.digest = (String) file.get("digest");
+ attach.length = Long.valueOf((String)
file.get("length"));
+ attach.url = (String) file.get("data");
+
+ try {
+ Blob blob =
nuxeoClient.repository().fetchBlobById(this.document.getUid(),
+ getAttachPath(attach.url));
+
+ attach.data = blob.getStream();
+
+ } catch (Exception ex) {
+ attach.data = new
ByteArrayInputStream("".getBytes());
+ }
+
+ attachments.add(attach);
+
+ }
+
+ return attachments;
+ }
+
+ public String getAttachPath(String absolutePath) {
+ String[] splitPath = absolutePath.split("/");
+ int size = splitPath.length;
+ String path = String.join("/", splitPath[size - 4],
splitPath[size - 3], splitPath[size - 2]);
+
+ return path;
+ }
+
+ public String[] getTags(NuxeoClient nuxeoClient) {
+ try {
+ Operation op =
nuxeoClient.automation("Repository.Query").param("query",
+ URI_TAGGING + " where
relation:source='" + this.document.getUid() + "'");
+ Documents tags = op.execute();
+ List<String> ls = new ArrayList<String>();
+
+ for (Document tag : tags.getDocuments()) {
+ ls.add(tag.getTitle());
+ }
+ return ls.toArray(new String[tags.size()]);
+ } catch (Exception e) {
+ return new String[] {};
+ }
+ }
+
+}
Propchange:
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/nuxeo/model/DocumentManifold.java
------------------------------------------------------------------------------
svn:executable = *
Added:
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/native2ascii/org/apache/manifoldcf/authorities/authorities/nuxeo/common_en_US.properties
URL:
http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/native2ascii/org/apache/manifoldcf/authorities/authorities/nuxeo/common_en_US.properties?rev=1791420&view=auto
==============================================================================
---
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/native2ascii/org/apache/manifoldcf/authorities/authorities/nuxeo/common_en_US.properties
(added)
+++
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/native2ascii/org/apache/manifoldcf/authorities/authorities/nuxeo/common_en_US.properties
Fri Apr 14 21:26:16 2017
@@ -0,0 +1,23 @@
+
+
+#Tabs
+NuxeoAuthorityConnector.Server = Server
+
+#Properties
+NuxeoAuthorityConnector.Protocol = Protocol
+NuxeoAuthorityConnector.Host = Host
+NuxeoAuthorityConnector.Port = Port
+NuxeoAuthorityConnector.Path = Path
+NuxeoAuthorityConnector.Username = Username
+NuxeoAuthorityConnector.Password = Password
+
+#Errors
+NuxeoAuthorityConnector.HostMustNotBeNull = Nuxeo host must not be null
+NuxeoAuthorityConnector.PasswordMustNotBeNull = Nuxeo password must not be null
+NuxeoAuthorityConnector.HostMustNotIncludeSlash = Nuxeo host must not include
a '/' character
+NuxeoAuthorityConnector.PortMustBeAnInteger = Nuxeo port must be an integer
+NuxeoAuthorityConnector.PathMustNotBeNull = Nuxeo path must not be null
+NuxeoAuthorityConnector.PathMustBeginWithASlash = Nuxeo path must begin with
'/' character
+
+#Buttons
+NuxeoAuthorityConnector.Add = Add
\ No newline at end of file
Propchange:
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/native2ascii/org/apache/manifoldcf/authorities/authorities/nuxeo/common_en_US.properties
------------------------------------------------------------------------------
svn:executable = *
Added:
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/native2ascii/org/apache/manifoldcf/authorities/authorities/nuxeo/common_es_ES.properties
URL:
http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/native2ascii/org/apache/manifoldcf/authorities/authorities/nuxeo/common_es_ES.properties?rev=1791420&view=auto
==============================================================================
---
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/native2ascii/org/apache/manifoldcf/authorities/authorities/nuxeo/common_es_ES.properties
(added)
+++
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/native2ascii/org/apache/manifoldcf/authorities/authorities/nuxeo/common_es_ES.properties
Fri Apr 14 21:26:16 2017
@@ -0,0 +1,24 @@
+
+
+#Tabs
+NuxeoAuthorityConnector.Server = Servidor
+
+#Properties
+NuxeoAuthorityConnector.Protocol = Protocolo
+NuxeoAuthorityConnector.Host = Host
+NuxeoAuthorityConnector.Port = Puerto
+NuxeoAuthorityConnector.Path = Ruta
+NuxeoAuthorityConnector.Username = Nombre de usuario
+NuxeoAuthorityConnector.Password = Contraseña
+
+#Errors
+NuxeoAuthorityConnector.HostMustNotBeNull = El host de Nuxeo no debe ser nulo
+NuxeoAuthorityConnector.PasswordMustNotBeNull = La contraseña de nuxeo no debe
ser nula.
+NuxeoAuthorityConnector.HostMustNotIncludeSlash = El host de Nuxeo no debe
incluir el carácter '/'
+NuxeoAuthorityConnector.PortMustBeAnInteger = El puerto de Nuxeo debe ser un
entero
+NuxeoAuthorityConnector.PathMustNotBeNull = La ruta de Nuxeo no debe ser nula
+NuxeoAuthorityConnector.PathMustBeginWithASlash = La ruta de Nuxeo debe
comenzar por el carácter '/'
+
+#Buttons
+NuxeoAuthorityConnector.Add = Añadir
+
Propchange:
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/native2ascii/org/apache/manifoldcf/authorities/authorities/nuxeo/common_es_ES.properties
------------------------------------------------------------------------------
svn:executable = *
Added:
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/nuxeo/common_en_US.properties
URL:
http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/nuxeo/common_en_US.properties?rev=1791420&view=auto
==============================================================================
---
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/nuxeo/common_en_US.properties
(added)
+++
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/nuxeo/common_en_US.properties
Fri Apr 14 21:26:16 2017
@@ -0,0 +1,44 @@
+
+
+#Configuration tabs
+NuxeoRepositoryConnector.Server = Server
+
+#Specifications tabs
+NuxeoRepositoryConnector.Domains = Domains
+NuxeoRepositoryConnector.DocumentsType = Documents type
+NuxeoRepositoryConnector.Documents = Documents
+
+
+#Properties
+NuxeoRepositoryConnector.Protocol = Protocol
+NuxeoRepositoryConnector.Host = Host
+NuxeoRepositoryConnector.Port = Port
+NuxeoRepositoryConnector.Path = Path
+NuxeoRepositoryConnector.Username = Username
+NuxeoRepositoryConnector.Password = Password
+
+#Errors
+NuxeoRepositoryConnector.HostMustNotBeNull = Nuxeo host must not
be null
+NuxeoRepositoryConnector.PasswordMustNotBeNull = Nuxeo password must not be
null
+NuxeoRepositoryConnector.HostMustNotIncludeSlash = Nuxeo host must not include
a '/' character
+NuxeoRepositoryConnector.PortMustBeAnInteger = Nuxeo port must be an integer
+NuxeoRepositoryConnector.PathMustNotBeNull = Nuxeo path must not
be null
+NuxeoRepositoryConnector.PathMustBeginWithASlash = Nuxeo path must begin with
'/' character
+
+#Buttons
+NuxeoRepositoryConnector.Add = Add
+NuxeoRepositoryConnector.AddDomain = Add domain
+NuxeoRepositoryConnector.AddDocumentType = Add document type
+NuxeoRepositoryConnector.Delete = Delete
+NuxeoRepositoryConnector.DeleteDomain = Delete domain
+NuxeoRepositoryConnector.DeleteDocumentType = Delete document type
+
+
+NuxeoRepositoryConnector.NoDomainsConfigured = No domains configured.
All domains will be crawled
+NuxeoRepositoryConnector.TypeInADomain = Type in a domain
+
+NuxeoRepositoryConnector.NoDocumentsTypeConfigured = No documents
type configured. All documents type will be crawled
+NuxeoRepositoryConnector.TypeInADocumentType = Type in a
document type
+
+NuxeoRepositoryConnector.ProcessTags= Process tags
+NuxeoRepositoryConnector.ProcessAttachments= Process attachments
Propchange:
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/nuxeo/common_en_US.properties
------------------------------------------------------------------------------
svn:executable = *
Added:
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/nuxeo/common_es_ES.properties
URL:
http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/nuxeo/common_es_ES.properties?rev=1791420&view=auto
==============================================================================
---
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/nuxeo/common_es_ES.properties
(added)
+++
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/nuxeo/common_es_ES.properties
Fri Apr 14 21:26:16 2017
@@ -0,0 +1,47 @@
+
+
+#Configuration tabs
+NuxeoRepositoryConnector.Server = Servidor
+NuxeoRepositoryConnector.DocumentsType = Tipos de documentos
+NuxeoRepositoryConnector.Documents = Documentos
+
+
+#Specifications tabs
+NuxeoRepositoryConnector.Domains = Dominios
+
+#Properties
+NuxeoRepositoryConnector.Protocol = Protocolo
+NuxeoRepositoryConnector.Host = Host
+NuxeoRepositoryConnector.Port = Puerto
+NuxeoRepositoryConnector.Path = Ruta
+NuxeoRepositoryConnector.Username = Nombre de usuario
+NuxeoRepositoryConnector.Password = Contraseña
+
+#Errors
+NuxeoRepositoryConnector.HostMustNotBeNull = El host de Nuxeo no
debe ser nulo
+NuxeoRepositoryConnector.PasswordMustNotBeNull = La contraseña de
nuxeo no debe ser nula.
+NuxeoRepositoryConnector.HostMustNotIncludeSlash = El host de Nuxeo no debe
incluir el carácter '/'
+NuxeoRepositoryConnector.PortMustBeAnInteger = El puerto de Nuxeo debe ser
un entero
+NuxeoRepositoryConnector.PathMustNotBeNull = La ruta de Nuxeo no
debe ser nula
+NuxeoRepositoryConnector.PathMustBeginWithASlash = La ruta de Nuxeo debe
comenzar por el carácter '/'
+
+#Buttons
+NuxeoRepositoryConnector.Add = Añadir
+NuxeoRepositoryConnector.AddDomain = Añadir dominio
+NuxeoRepositoryConnector.AddDocumentType = Añadir tipo de documento
+NuxeoRepositoryConnector.Delete = Borrar
+NuxeoRepositoryConnector.DeleteDomain = Borrar dominio
+NuxeoRepositoryConnector.DeleteDocumentType = Borrar tipo de documento
+
+
+NuxeoRepositoryConnector.NoDomainsConfigured = Sin dominios
configurados. Todos los dominios se rastrearán.
+NuxeoRepositoryConnector.TypeInADomain = Escriba un
dominio
+
+NuxeoRepositoryConnector.NoDocumentsTypeConfigured = Sin tipo de
documentos configurados. Todos los tipos de documentos se rastrearán.
+NuxeoRepositoryConnector.TypeInADocumentType = Escriba un tipo
de documento
+
+NuxeoRepositoryConnector.ProcessTags= Procesar etiquetas
+NuxeoRepositoryConnector.ProcessAttachments = Procesar archivos adjuntos
+
+
+
Propchange:
manifoldcf/branches/CONNECTORS-1290-2/connectors/nuxeo/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/nuxeo/common_es_ES.properties
------------------------------------------------------------------------------
svn:executable = *