You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@manifoldcf.apache.org by pi...@apache.org on 2017/09/19 15:57:31 UTC
svn commit: r1808904 [1/2] - in /manifoldcf/branches/CONNECTORS-1442: ./
connectors/ connectors/alfresco-bfsi/ connectors/alfresco-bfsi/connector/
connectors/alfresco-bfsi/connector/src/
connectors/alfresco-bfsi/connector/src/main/ connectors/alfresco-...
Author: piergiorgio
Date: Tue Sep 19 15:57:30 2017
New Revision: 1808904
URL: http://svn.apache.org/viewvc?rev=1808904&view=rev
Log:
- initial version of the Alfresco BFSI Output Connector (CONNECTORS-1442)
- updated to the latest version OpenCMIS (1.1.0)
Added:
manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/
manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/build.xml (with props)
manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/
manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/
manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/
manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/java/
manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/java/org/
manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/java/org/apache/
manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/java/org/apache/manifoldcf/
manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/java/org/apache/manifoldcf/agents/
manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/java/org/apache/manifoldcf/agents/output/
manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/java/org/apache/manifoldcf/agents/output/bfsioutput/
manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/java/org/apache/manifoldcf/agents/output/bfsioutput/AlfrescoBfsiOutputAgent.java (with props)
manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/java/org/apache/manifoldcf/agents/output/bfsioutput/AlfrescoBfsiOutputConfig.java (with props)
manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/java/org/apache/manifoldcf/agents/output/bfsioutput/AlfrescoBfsiOutputConnector.java (with props)
manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/java/org/apache/manifoldcf/agents/output/bfsioutput/AlfrescoBfsiOutputConnectorUtils.java (with props)
manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/java/org/apache/manifoldcf/agents/output/bfsioutput/ColumnSet.java (with props)
manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/java/org/apache/manifoldcf/agents/output/bfsioutput/Messages.java (with props)
manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/native2ascii/
manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/native2ascii/org/
manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/native2ascii/org/apache/
manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/native2ascii/org/apache/manifoldcf/
manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/native2ascii/org/apache/manifoldcf/agents/
manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/native2ascii/org/apache/manifoldcf/agents/output/
manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/native2ascii/org/apache/manifoldcf/agents/output/bfsioutput/
manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/native2ascii/org/apache/manifoldcf/agents/output/bfsioutput/common_en_US.properties (with props)
manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/native2ascii/org/apache/manifoldcf/agents/output/bfsioutput/common_es_ES.properties (with props)
manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/native2ascii/org/apache/manifoldcf/agents/output/bfsioutput/common_ja_JP.properties (with props)
manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/native2ascii/org/apache/manifoldcf/agents/output/bfsioutput/common_pt_PT.properties (with props)
manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/native2ascii/org/apache/manifoldcf/agents/output/bfsioutput/common_zh_CN.properties (with props)
manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/resources/
manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/resources/org/
manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/resources/org/apache/
manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/resources/org/apache/manifoldcf/
manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/resources/org/apache/manifoldcf/agents/
manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/resources/org/apache/manifoldcf/agents/output/
manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/resources/org/apache/manifoldcf/agents/output/bfsioutput/
manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/resources/org/apache/manifoldcf/agents/output/bfsioutput/editConfiguration.js (with props)
manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/resources/org/apache/manifoldcf/agents/output/bfsioutput/editConfiguration_Server.html (with props)
manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/resources/org/apache/manifoldcf/agents/output/bfsioutput/viewConfiguration.html (with props)
manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/test/
manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/test/java/
manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/test/java/org/
manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/test/java/org/apache/
manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/test/java/org/apache/manifoldcf/
manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/test/resources/
manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/test/resources/authorities.sample.json
manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/test/resources/metadata.sample.json
manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/test/resources/multi.authorities.sample.json
manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/pom.xml (with props)
manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/test-materials-proprietary/
manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/test-materials-proprietary/README.txt (with props)
Modified:
manifoldcf/branches/CONNECTORS-1442/CHANGES.txt
manifoldcf/branches/CONNECTORS-1442/build.xml
manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-webscript/pom.xml
manifoldcf/branches/CONNECTORS-1442/connectors/cmis/build.xml
manifoldcf/branches/CONNECTORS-1442/connectors/cmis/pom.xml
manifoldcf/branches/CONNECTORS-1442/connectors/pom.xml
Modified: manifoldcf/branches/CONNECTORS-1442/CHANGES.txt
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-1442/CHANGES.txt?rev=1808904&r1=1808903&r2=1808904&view=diff
==============================================================================
--- manifoldcf/branches/CONNECTORS-1442/CHANGES.txt (original)
+++ manifoldcf/branches/CONNECTORS-1442/CHANGES.txt Tue Sep 19 15:57:30 2017
@@ -3,6 +3,9 @@ $Id$
======================= 2.9-dev =====================
+CONNECTORS-1442: Added the new Alfresco BFSI Output Connector
+(Luis Cabaceira)
+
CONNECTORS-1456: Tentative fix for API issue exporting jobs in JSON
format. Basically, simple valued array elements did not work.
(Adrian Conlon, Karl Wright)
Modified: manifoldcf/branches/CONNECTORS-1442/build.xml
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-1442/build.xml?rev=1808904&r1=1808903&r2=1808904&view=diff
==============================================================================
--- manifoldcf/branches/CONNECTORS-1442/build.xml (original)
+++ manifoldcf/branches/CONNECTORS-1442/build.xml Tue Sep 19 15:57:30 2017
@@ -66,7 +66,7 @@
<property name="jaxb-api.version" value="2.1"/>
<property name="jaxb-impl.version" value="2.1.11"/>
<property name="jaxws.version" value="2.2.6"/>
- <property name="chemistry.version" value="0.11.0"/>
+ <property name="chemistry.version" value="1.1.0"/>
<property name="glassfish.version" value="2.1.v20091210"/>
<property name="junit.version" value="4.12"/>
<property name="selenium.version" value="3.3.1"/>
@@ -763,6 +763,8 @@ Use Apache Forrest version forrest-0.9-d
<exclude name="alfresco/lib-proprietary/*.jar"/>
<exclude name="alfresco-webscript/test-materials-proprietary/*.war"/>
<exclude name="alfresco-webscript/connector/src/test/resources/*.json"/>
+ <exclude name="alfresco-bfsi/test-materials-proprietary/*.war"/>
+ <exclude name="alfresco-bfsi/connector/src/test/resources/*.json"/>
<exclude name="**/build/"/>
<exclude name="**/dist/"/>
<exclude name="**/test-output/"/>
@@ -944,6 +946,17 @@ Use Apache Forrest version forrest-0.9-d
<param name="artifact-type" value="amp"/>
</antcall>
</target>
+
+ <target name="download-alfresco-bfsi-plugin">
+ <mkdir dir="lib/alfresco-bfsi"/>
+ <antcall target="download-via-maven">
+ <param name="target" value="lib/alfresco-bfsi"/>
+ <param name="project-path" value="com/github/maoo/indexer"/>
+ <param name="artifact-version" value="${alfresco-indexer.version}"/>
+ <param name="artifact-name" value="alfresco-indexer-webscripts"/>
+ <param name="artifact-type" value="amp"/>
+ </antcall>
+ </target>
<target name="download-gson">
<mkdir dir="lib"/>
@@ -2700,7 +2713,7 @@ Use Apache Forrest version forrest-0.9-d
</antcall>
</target>
- <target name="make-core-deps" depends="download-less-compiler,download-forbidden-checks,download-nuxeo-client,download-json-simple,download-selenium,download-kafka-client,download-joda-time,download-aws-sdk,download-resteasy,download-jsoup,download-mockito,download-alfresco-webscript-plugin,download-alfresco-indexer-client,download-mongo-java-driver,download-jira-client,download-google-api-client,download-dropbox-client,download-solrj,download-zookeeper,download-httpcomponents,download-hsqldb,download-xerces,download-commons,download-elasticsearch-plugin,download-solr-plugins,download-sharepoint-plugins,download-jstl,download-xmlgraphics-commons,download-woodstox,download-xmlsec,download-xml-apis,download-wss4j,download-velocity,download-streambuffer,download-stax,download-servlet-api,download-xml-resolver,download-osgi,download-opensaml,download-mimepull,download-mail,download-log4j,download-junit,download-jaxws,download-glassfish,download-jaxb,download-tomcat,download-h2,downl
oad-h2-support,download-geronimo-specs,download-fop,download-postgresql,download-axis,download-saaj,download-wsdl4j,download-castor,download-jetty,download-slf4j,download-xalan,download-activation,download-avalon-framework,download-poi,download-chemistry,download-ecj,download-hadoop,download-htrace,download-protobuf,download-tika,download-jackson">
+ <target name="make-core-deps" depends="download-less-compiler,download-forbidden-checks,download-nuxeo-client,download-json-simple,download-selenium,download-kafka-client,download-joda-time,download-aws-sdk,download-resteasy,download-jsoup,download-mockito,download-alfresco-webscript-plugin,download-alfresco-bfsi-plugin,download-alfresco-indexer-client,download-mongo-java-driver,download-jira-client,download-google-api-client,download-dropbox-client,download-solrj,download-zookeeper,download-httpcomponents,download-hsqldb,download-xerces,download-commons,download-elasticsearch-plugin,download-solr-plugins,download-sharepoint-plugins,download-jstl,download-xmlgraphics-commons,download-woodstox,download-xmlsec,download-xml-apis,download-wss4j,download-velocity,download-streambuffer,download-stax,download-servlet-api,download-xml-resolver,download-osgi,download-opensaml,download-mimepull,download-mail,download-log4j,download-junit,download-jaxws,download-glassfish,download-jaxb,dow
nload-tomcat,download-h2,download-h2-support,download-geronimo-specs,download-fop,download-postgresql,download-axis,download-saaj,download-wsdl4j,download-castor,download-jetty,download-slf4j,download-xalan,download-activation,download-avalon-framework,download-poi,download-chemistry,download-ecj,download-hadoop,download-htrace,download-protobuf,download-tika,download-jackson">
<copy todir="lib">
<fileset dir="lib-license" includes="*.txt"/>
</copy>
Added: manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/build.xml
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/build.xml?rev=1808904&view=auto
==============================================================================
--- manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/build.xml (added)
+++ manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/build.xml Tue Sep 19 15:57:30 2017
@@ -0,0 +1,154 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<project name="alfresco-bfsi" default="all">
+
+ <property environment="env"/>
+ <condition property="mcf-dist" value="${env.MCFDISTPATH}">
+ <isset property="env.MCFDISTPATH"/>
+ </condition>
+ <property name="abs-dist" location="../../dist"/>
+ <condition property="mcf-dist" value="${abs-dist}">
+ <not>
+ <isset property="env.MCFDISTPATH"/>
+ </not>
+ </condition>
+
+ <import file="${mcf-dist}/connector-build.xml"/>
+
+ <property name="alfresco-indexer.version" value="0.8.1"/>
+
+ <path id="connector-classpath">
+ <path refid="mcf-connector-build.connector-classpath"/>
+ <fileset dir="../../lib">
+ <include name="alfresco-indexer-client*.jar"/>
+ <include name="chemistry*.jar"/>
+ <include name="stax*.jar"/>
+ <include name="streambuffer*.jar"/>
+ <include name="jaxb*.jar"/>
+ <include name="jaxws*.jar"/>
+ <include name="wstx-asl*.jar"/>
+ <include name="mimepull*.jar"/>
+ <include name="resolver*.jar"/>
+ <include name="org.osgi.core*.jar"/>
+ <include name="commons-lang*.jar"/>
+ <include name="joda*.jar"/>
+ </fileset>
+
+ </path>
+
+ <path id="connector-test-classpath">
+ <path refid="mcf-connector-build.connector-test-classpath"/>
+ <fileset dir="../../lib">
+ <include name="chemistry*.jar"/>
+ <include name="stax*.jar"/>
+ <include name="streambuffer*.jar"/>
+ <include name="jaxb*.jar"/>
+ <include name="jaxws*.jar"/>
+ <include name="wstx-asl*.jar"/>
+ <include name="mimepull*.jar"/>
+ <include name="resolver*.jar"/>
+ <include name="org.osgi.core*.jar"/>
+ <include name="commons-lang*.jar"/>
+ </fileset>
+ </path>
+
+ <target name="lib" depends="mcf-connector-build.lib,precompile-check" if="canBuild">
+ <mkdir dir="dist/lib"/>
+ <copy todir="dist/lib">
+ <fileset dir="../../lib">
+ <include name="alfresco-indexer-client*.jar"/>
+ </fileset>
+ </copy>
+ </target>
+
+ <target name="download-via-alfresco-indexer">
+ <get src="https://repo1.maven.org/maven2/${project-path}/${artifact-name}/${artifact-version}/${artifact-name}-${artifact-version}.${artifact-type}" dest="${target}/${artifact-name}-${artifact-version}.${artifact-type}"/>
+ </target>
+
+ <target name="download-dependencies">
+ <property name="alfresco-package" value="com/github/maoo/indexer"/>
+ <antcall target="download-via-maven">
+ <param name="project-path" value="${alfresco-package}"/>
+ <param name="artifact-version" value="${alfresco-indexer.version}"/>
+ <param name="target" value="test-materials-proprietary"/>
+ <param name="artifact-name" value="alfresco-indexer-webscripts-war"/>
+ <param name="artifact-type" value="war"/>
+ </antcall>
+ </target>
+
+ <target name="integration">
+ <mkdir dir="dist/integration/alfresco-bfsi"/>
+ <copy todir="dist/integration/alfresco-bfsi">
+ <fileset dir="../../lib/alfresco-bfsi"/>
+ </copy>
+ </target>
+
+ <target name="download-cleanup">
+ <delete>
+ <fileset dir="test-materials-proprietary" excludes="README*.txt"/>
+ </delete>
+ </target>
+
+ <target name="calculate-testcode-condition">
+ <available file="test-materials-proprietary/alfresco-indexer-webscripts-war-${alfresco-indexer.version}.war" property="alfrescoTestcodeStatus"/>
+ <condition property="tests-present">
+ <isset property="alfrescoTestcodeStatus"/>
+ </condition>
+ </target>
+
+ <target name="pretest-warn" depends="calculate-testcode-condition" unless="tests-present">
+ <echo message="Alfresco Connector integration tests cannot be be performed without alfresco.war"/>
+ </target>
+
+ <target name="deliver-connector" depends="mcf-connector-build.deliver-connector">
+ <antcall target="general-add-output-connector">
+ <param name="connector-label" value="Alfresco BFSI"/>
+ <param name="connector-class" value="org.apache.manifoldcf.agents.output.bfsioutput.AlfrescoBfsiOutputConnector"/>
+ </antcall>
+ </target>
+
+ <target name="run-IT-HSQLDB" depends="compile-tests,pretest-check" if="canTest">
+ <mkdir dir="test-HSQLDB-output"/>
+ <junit fork="true" maxmemory="1024m" dir="test-HSQLDB-output" outputtoformatters="true" showoutput="true" haltonfailure="true">
+ <jvmarg value="-DcrawlerWarPath=${mcf-dist}/web/war/mcf-crawler-ui.war"/>
+ <jvmarg value="-DauthorityserviceWarPath=${mcf-dist}/web/war/mcf-authority-service.war"/>
+ <jvmarg value="-DapiWarPath=${mcf-dist}/web/war/mcf-api-service.war"/>
+ <jvmarg value="-DcombinedWarPath=${mcf-dist}/web/war/mcf-combined-service.war"/>
+ <jvmarg value="-DalfrescoServerWarPath=../test-materials-proprietary/alfresco-indexer-webscripts-war-${alfresco-indexer.version}.war"/>
+ <jvmarg value="-Xms512m"/>
+ <jvmarg value="-Xmx1024m"/>
+ <jvmarg value="-Xss1024k"/>
+ <jvmarg value="-XX:MaxPermSize=256m"/>
+ <jvmarg value="-XX:NewSize=256m"/>
+ <classpath>
+ <fileset dir="${env.JAVA_HOME}/lib">
+ <include name="tools.jar"/>
+ </fileset>
+ <path refid="connector-test-classpath"/>
+ <pathelement location="build/connector-tests/classes"/>
+ </classpath>
+ <formatter type="brief" usefile="false"/>
+ <batchtest todir="test-HSQLDB-output">
+ <fileset dir="build/connector-tests/classes">
+ <include name="**/*HSQLDBIT.class"/>
+ </fileset>
+ </batchtest>
+ </junit>
+ </target>
+
+</project>
Propchange: manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/build.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/build.xml
------------------------------------------------------------------------------
svn:keywords = Date Revision Author HeadURL Id
Propchange: manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/build.xml
------------------------------------------------------------------------------
svn:mime-type = text/xml
Added: manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/java/org/apache/manifoldcf/agents/output/bfsioutput/AlfrescoBfsiOutputAgent.java
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/java/org/apache/manifoldcf/agents/output/bfsioutput/AlfrescoBfsiOutputAgent.java?rev=1808904&view=auto
==============================================================================
--- manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/java/org/apache/manifoldcf/agents/output/bfsioutput/AlfrescoBfsiOutputAgent.java (added)
+++ manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/java/org/apache/manifoldcf/agents/output/bfsioutput/AlfrescoBfsiOutputAgent.java Tue Sep 19 15:57:30 2017
@@ -0,0 +1,188 @@
+package org.apache.manifoldcf.agents.output.bfsioutput;
+
+
+import org.apache.commons.io.IOUtils;
+
+import java.io.*;
+import java.nio.file.Path;
+import java.nio.file.StandardCopyOption;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Properties;
+
+public class AlfrescoBfsiOutputAgent {
+
+ private static Properties properties1 = new Properties();
+
+ /**
+ * No-arguments constructor.
+ */
+ public AlfrescoBfsiOutputAgent() {
+ }
+
+ /**
+ * Get traditional properties in name=value format.
+ *
+ * @param filePathAndName Path and name of properties file (without the
+ * .properties extension).
+ * @return Properties read in from provided file.
+ */
+ public Properties loadTraditionalProperties(final String filePathAndName) {
+ final Properties properties = new Properties();
+ try {
+ final FileInputStream in = new FileInputStream(filePathAndName);
+ properties.load(in);
+ in.close();
+ } catch (FileNotFoundException fnfEx) {
+ System.err.println("Could not read properties from file " + filePathAndName);
+ } catch (IOException ioEx) {
+ System.err.println(
+ "IOException encountered while reading from " + filePathAndName);
+ }
+ return properties;
+ }
+
+
+ /**
+ * Get traditional properties in name=value format.
+ *
+ * @param fileName name of the file target for meta-data manifest creation
+ * @return String execution log
+
+ public static String createBulkManifest(final String fileName, Properties properties, Path files_deployment_location) {
+ DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
+ Calendar cal = Calendar.getInstance();
+ String date = dateFormat.format(cal.getTime());
+ FileOutputStream outStream = null;
+ String metaDatafileName = fileName + ".metadata.properties.xml";
+ String metaDatafilePath = files_deployment_location.toString() + "/" + metaDatafileName;
+ try {
+ outStream = new FileOutputStream(metaDatafilePath);
+ } catch (FileNotFoundException e) {
+ e.printStackTrace();
+ }
+ if (!(properties == null)) { // If the method was invoqued with properties object use it
+ createMetaDataXmlFile(properties, outStream);
+ } else { // else write default properties
+ properties1.setProperty("type", "cm:content");
+ properties1.setProperty("aspects", "cm:versionable,cm:dublincore");
+ properties1.setProperty("cm:title", "Crawled document from ManifoldCF Input Connectors : " + date);
+ properties1.setProperty("cm:description", "");
+ properties1.setProperty("cm:author", "Apache ManifoldCF BulkFilesystem Output Connector");
+ properties1.setProperty("cm:publisher", "BulkFilesystem Output Connector");
+ properties1.setProperty("cm:contributor", "BulkFilesystem Output Connector");
+ properties1.setProperty("cm:type", "default_plus_dubincore_aspect");
+ properties1.setProperty("cm:identifier", fileName);
+ properties1.setProperty("cm:source", "BulkFilesystem Output Connector");
+ properties1.setProperty("cm:coverage", "General");
+ properties1.setProperty("cm:rights", "");
+ properties1.setProperty("cm:subject", "Metadata file created with Apache ManifoldCF BulkFilesystem Output Connector");
+ createMetaDataXmlFile(properties1, outStream);
+ }
+ return "Created Manifest for " + fileName + ": " + files_deployment_location.toString() + "/" + metaDatafileName;
+ }*/
+
+
+
+ /**
+ * Get traditional properties in name=value format.
+ *
+ * @param fileName name of the file target for meta-data manifest creation
+ * @return String execution log
+ */
+ public static String createBulkDocument(final InputStream fileIS, final String fileName, Properties properties, Path files_deployment_location) {
+
+
+
+ File targetFile = new File(files_deployment_location.toString() + "/" + fileName);
+
+ try {
+ java.nio.file.Files.copy(
+ fileIS,
+ targetFile.toPath(),
+ StandardCopyOption.REPLACE_EXISTING);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ IOUtils.closeQuietly(fileIS);
+
+ DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
+ Calendar cal = Calendar.getInstance();
+ String date = dateFormat.format(cal.getTime());
+ FileOutputStream outStream = null;
+ String metaDatafileName = fileName + ".metadata.properties.xml";
+ String metaDatafilePath = files_deployment_location.toString() + "/" + metaDatafileName;
+ try {
+ outStream = new FileOutputStream(metaDatafilePath);
+ } catch (FileNotFoundException e) {
+ e.printStackTrace();
+ }
+ if (!(properties == null)) { // If the method was invoqued with properties object use it
+ createMetaDataXmlFile(properties, outStream);
+ } else { // else write default properties
+ properties1.setProperty("type", "cm:content");
+ properties1.setProperty("aspects", "cm:versionable,cm:dublincore");
+ properties1.setProperty("cm:title", "Crawled document from ManifoldCF Input Connectors : " + date);
+ properties1.setProperty("cm:description", "");
+ properties1.setProperty("cm:author", "Apache ManifoldCF BulkFilesystem Output Connector");
+ properties1.setProperty("cm:publisher", "BulkFilesystem Output Connector");
+ properties1.setProperty("cm:contributor", "BulkFilesystem Output Connector");
+ properties1.setProperty("cm:type", "default_plus_dubincore_aspect");
+ properties1.setProperty("cm:identifier", fileName);
+ properties1.setProperty("cm:source", "BulkFilesystem Output Connector");
+ properties1.setProperty("cm:coverage", "General");
+ properties1.setProperty("cm:rights", "");
+ properties1.setProperty("cm:subject", "Metadata file created with Apache ManifoldCF BulkFilesystem Output Connector");
+ createMetaDataXmlFile(properties1, outStream);
+ }
+ return "Created Manifest for " + fileName + ": " + files_deployment_location.toString() + "/" + metaDatafileName;
+ }
+
+
+
+ public static void createMetaDataXmlFile(final Properties sourceProperties, final OutputStream out) {
+
+ try {
+ sourceProperties.storeToXML(out, "To use with Alfresco in-place-bulk importer");
+ } catch (IOException ioEx) {
+ System.err.println("ERROR trying to store properties in XML!");
+ }
+ }
+
+ /**
+ * Store provided properties in XML format.
+ *
+ * @param sourceProperties Properties to be stored in XML format.
+ * @param out OutputStream to which to write XML formatted properties.
+ */
+ public void storeXmlProperties(final Properties sourceProperties, final OutputStream out) {
+ try {
+ sourceProperties.storeToXML(out, "This is easy!");
+ } catch (IOException ioEx) {
+ System.err.println("ERROR trying to store properties in XML!");
+ }
+ }
+
+ /**
+ * Store provided properties in XML format to provided file.
+ *
+ * @param sourceProperties Properties to be stored in XML format.
+ * @param pathAndFileName Path and name of file to which XML-formatted
+ * properties will be written.
+ */
+ public void storeXmlPropertiesToFile(
+ final Properties sourceProperties,
+ final String pathAndFileName) {
+ try {
+ FileOutputStream fos = new FileOutputStream(pathAndFileName);
+ storeXmlProperties(sourceProperties, fos);
+ fos.close();
+ } catch (FileNotFoundException fnfEx) {
+ System.err.println("ERROR writing to " + pathAndFileName);
+ } catch (IOException ioEx) {
+ System.err.println(
+ "ERROR trying to write XML properties to file " + pathAndFileName);
+ }
+ }
+}
\ No newline at end of file
Propchange: manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/java/org/apache/manifoldcf/agents/output/bfsioutput/AlfrescoBfsiOutputAgent.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/java/org/apache/manifoldcf/agents/output/bfsioutput/AlfrescoBfsiOutputAgent.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/java/org/apache/manifoldcf/agents/output/bfsioutput/AlfrescoBfsiOutputAgent.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/java/org/apache/manifoldcf/agents/output/bfsioutput/AlfrescoBfsiOutputConfig.java
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/java/org/apache/manifoldcf/agents/output/bfsioutput/AlfrescoBfsiOutputConfig.java?rev=1808904&view=auto
==============================================================================
--- manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/java/org/apache/manifoldcf/agents/output/bfsioutput/AlfrescoBfsiOutputConfig.java (added)
+++ manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/java/org/apache/manifoldcf/agents/output/bfsioutput/AlfrescoBfsiOutputConfig.java Tue Sep 19 15:57:30 2017
@@ -0,0 +1,65 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.manifoldcf.agents.output.bfsioutput;
+
+import org.apache.commons.lang.StringUtils;
+
+/**
+ * Parameters data for the Alfresco Bulk File System output connector.
+*/
+public class AlfrescoBfsiOutputConfig {
+
+ /** DropFolder */
+ public static final String DROPFOLDER_PARAM = "dropfolder";
+
+ /** Create Timestamp Tree **/
+ public static final String CREATE_TIMESTAMP_TREE_PARAM = "createTimestampTree";
+
+ /** Username */
+ public static final String USERNAME_PARAM = "username";
+ /** Password */
+ public static final String PASSWORD_PARAM = "password";
+ /** Protocol */
+ public static final String PROTOCOL_PARAM = "protocol";
+ /** Server name */
+ public static final String SERVER_PARAM = "server";
+ /** Port */
+ public static final String PORT_PARAM = "port";
+
+ /** Remote Path in the context of remote drop (streaming) */
+ public static final String PATH_PARAM = "path";
+
+
+ public static final String CREATE_TIMESTAMP_TREE_DEFAULT_VALUE = Boolean.FALSE.toString();
+
+
+ //default values
+ public static final String USERNAME_DEFAULT_VALUE = "admin";
+ public static final String PASSWORD_DEFAULT_VALUE = "admin";
+ public static final String PROTOCOL_DEFAULT_VALUE = "http";
+ public static final String SERVER_DEFAULT_VALUE = "localhost";
+ public static final String PORT_DEFAULT_VALUE = "8080";
+ public static final String PATH_DEFAULT_VALUE = "/user/tests";
+ //default values
+ public static final String DROPFOLDER_DEFAULT_VALUE = "/opt/alfresco/alf_data/contentstore/manifoldexport";
+
+
+
+
+
+
+}
\ No newline at end of file
Propchange: manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/java/org/apache/manifoldcf/agents/output/bfsioutput/AlfrescoBfsiOutputConfig.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/java/org/apache/manifoldcf/agents/output/bfsioutput/AlfrescoBfsiOutputConfig.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/java/org/apache/manifoldcf/agents/output/bfsioutput/AlfrescoBfsiOutputConfig.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/java/org/apache/manifoldcf/agents/output/bfsioutput/AlfrescoBfsiOutputConnector.java
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/java/org/apache/manifoldcf/agents/output/bfsioutput/AlfrescoBfsiOutputConnector.java?rev=1808904&view=auto
==============================================================================
--- manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/java/org/apache/manifoldcf/agents/output/bfsioutput/AlfrescoBfsiOutputConnector.java (added)
+++ manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/java/org/apache/manifoldcf/agents/output/bfsioutput/AlfrescoBfsiOutputConnector.java Tue Sep 19 15:57:30 2017
@@ -0,0 +1,914 @@
+/* $Id$ */
+
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.manifoldcf.agents.output.bfsioutput;
+
+
+import java.io.IOException;
+import java.io.InterruptedIOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.rmi.NotBoundException;
+import java.rmi.RemoteException;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Properties;
+
+import org.apache.chemistry.opencmis.client.api.ObjectId;
+import org.apache.chemistry.opencmis.client.runtime.ObjectIdImpl;
+import org.apache.chemistry.opencmis.commons.PropertyIds;
+import org.apache.commons.lang.StringUtils;
+import org.apache.manifoldcf.agents.interfaces.IOutputAddActivity;
+import org.apache.manifoldcf.agents.interfaces.IOutputRemoveActivity;
+import org.apache.manifoldcf.agents.interfaces.RepositoryDocument;
+import org.apache.manifoldcf.agents.interfaces.ServiceInterruption;
+import org.apache.manifoldcf.agents.output.BaseOutputConnector;
+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.VersionContext;
+import org.apache.manifoldcf.crawler.system.Logging;
+
+
+/**
+ * This is the "output connector" for a Alfresco Bulk File System Import format repository.
+ *
+ * @author Luis Cabaceira
+ */
+public class AlfrescoBfsiOutputConnector extends BaseOutputConnector {
+
+ protected final static String ACTIVITY_READ = "read document";
+ protected static final String RELATIONSHIP_CHILD = "child";
+ /*
+ * CMIS SPECIFIC PROPERITES
+ * */
+ private static final String CMIS_PROPERTY_PREFIX = "cmis:";
+ private static final String CMIS_DOCUMENT_TYPE = "cmis:document";
+ /*
+ * END CMIS PROPERITES
+ * */
+ /** Document accepted */
+ private final static int DOCUMENT_STATUS_ACCEPTED = 0;
+ private static final String DOCUMENT_STATUS_ACCEPTED_DESC = "Injection OK - ";
+ private static final String DOCUMENT_STATUS_REJECTED_DESC = "Injection KO - ";
+ /** Document permanently rejected */
+ private final static int DOCUMENT_STATUS_REJECTED = 1;
+ /** Document remove accepted */
+ private final static String DOCUMENT_DELETION_STATUS_ACCEPTED = "Remove request accepted";
+ /** Document remove permanently rejected */
+ private final static String DOCUMENT_DELETION_STATUS_REJECTED = "Remove request rejected";
+ /** The standard Path property for ManifoldCF used for migrate contents **/
+ private static final String CONTENT_MIGRATION_PATH_PROPERTY = "manifoldcf:path";
+
+ // Tab name properties
+ private static final String TARGET_DROP_FOLDER_TAB_PROPERTY = "AlfrescoBfsiOutputConnector.BfsiParametersTab";
+ // Template names
+ /**
+ * Forward to the javascript to check the configuration parameters
+ */
+ private static final String EDIT_CONFIG_HEADER_FORWARD = "editConfiguration.js";
+ /**
+ * Server tab template
+ */
+ private static final String EDIT_CONFIG_FORWARD_SERVER = "editConfiguration_Server.html";
+ /**
+ * Forward to the HTML template to view the configuration parameters
+ */
+ private static final String VIEW_CONFIG_FORWARD = "viewConfiguration.html";
+ /**
+ * Save activity
+ */
+ protected final static String ACTIVITY_INJECTION = "Injection";
+ /**
+ * Delete activity
+ */
+ protected final static String ACTIVITY_DELETE = "Delete";
+ /**
+ * Target path handle
+ */
+ Path DropFolderPath = null;
+
+ /**
+ * Constructor
+ */
+ public AlfrescoBfsiOutputConnector() {
+ super();
+ }
+
+ /**
+ * Return the list of activities that this connector supports (i.e. writes
+ * into the log).
+ *
+ * @return the list.
+ */
+ @Override
+ public String[] getActivitiesList() {
+ return new String[]{ACTIVITY_INJECTION, ACTIVITY_DELETE};
+ }
+
+
+ protected class CheckConnectionThread extends Thread {
+ protected Throwable exception = null;
+
+ public CheckConnectionThread() {
+ super();
+ setDaemon(true);
+ }
+
+ public void run() {
+ try {
+ if (DropFolderPath.getFileSystem().equals(null)) Logging.connectors.error(" Error checking path Object: ");
+ } catch (Throwable e) {
+ Logging.connectors.warn(" Error checking path Object: " + e.getMessage(), e);
+ this.exception = e;
+ }
+ }
+
+ public Throwable getException() {
+ return exception;
+ }
+
+ }
+
+
+
+ /**
+ * Target filesystem folder for the drop zone
+ */
+ protected String dropFolder = null;
+
+ /**
+ * Credentials (for remote mode)
+ * */
+ protected String username = null;
+ protected String password = null;
+ /** Endpoint protocol */
+ protected String protocol = null;
+ /** Endpoint server name */
+ protected String server = null;
+ /** Endpoint port */
+ protected String port = null;
+ /** Endpoint context path of the Alfresco webapp */
+ protected String path = null;
+ /**
+ * Flag for creating the new tree structure using timestamp
+ **/
+ protected String createTimestampTree = Boolean.FALSE.toString();
+ protected Map<String, String> parameters = new HashMap<String, String>();
+ protected static final long timeToRelease = 300000L;
+ protected long lastSessionFetch = -1L;
+
+ /*
+ * DropFolderPath is a java.nio Path object that represents the target for the output package
+ * The thread model enables parallel output executions
+ * */
+ protected class GetDropFolderPath extends Thread {
+ protected Throwable exception = null;
+
+ public GetDropFolderPath() {
+ super();
+ setDaemon(true);
+ }
+
+ public void run() {
+ try {
+ // Create the path object
+ DropFolderPath = Paths.get(path); // Solaris/Linux syntax
+ } catch (Throwable e) {
+ this.exception = e;
+ }
+ }
+
+ public Throwable getException() {
+ return exception;
+ }
+ }
+
+ protected class DestroyDropFolderPath extends Thread {
+ protected Throwable exception = null;
+
+ public DestroyDropFolderPath() {
+ super();
+ setDaemon(true);
+ }
+
+ public void run() {
+ try {
+ DropFolderPath = null;
+ } catch (Throwable e) {
+ this.exception = e;
+ }
+ }
+
+ public Throwable getException() {
+ return exception;
+ }
+
+ }
+
+
+ /**
+ * Close the connection. Call this before discarding the connection.
+ */
+ @Override
+ public void disconnect() throws ManifoldCFException {
+ if (DropFolderPath != null) {
+ DestroyDropFolderPath t = new DestroyDropFolderPath();
+ try {
+ t.start();
+ t.join();
+ Throwable thr = t.getException();
+ if (thr != null) {
+ if (thr instanceof RemoteException)
+ throw (RemoteException) thr;
+ else
+ throw (Error) thr;
+ }
+ DropFolderPath = null;
+ lastSessionFetch = -1L;
+ } catch (InterruptedException e) {
+ t.interrupt();
+ throw new ManifoldCFException("Interrupted: " + e.getMessage(), e, ManifoldCFException.INTERRUPTED);
+ } catch (RemoteException e) {
+ Throwable e2 = e.getCause();
+ if (e2 instanceof InterruptedException || e2 instanceof InterruptedIOException)
+ throw new ManifoldCFException(e2.getMessage(), e2, ManifoldCFException.INTERRUPTED);
+ DropFolderPath = null;
+ lastSessionFetch = -1L;
+ // Treat this as a transient problem
+ Logging.connectors.warn("Remote exception closing path object: " + e.getMessage(), e);
+ }
+
+ }
+
+ username = null;
+ password = null;
+ protocol = null;
+ server = null;
+ port = null;
+ path = null;
+ createTimestampTree = Boolean.FALSE.toString();
+ }
+
+
+ /**
+ * This method create a new "session" for a DropFolder path object
+ * This can represent S3, local filesystem or ftp
+ * @param configParameters
+ * is the set of configuration parameters, which in this case
+ * describe the target appliance, basic auth configuration, etc.
+ * (This formerly came out of the ini file.)
+ */
+ @Override
+ public void connect(ConfigParams configParams) {
+ super.connect(configParams);
+ username = params.getParameter(AlfrescoBfsiOutputConfig.USERNAME_PARAM);
+ password = params.getParameter(AlfrescoBfsiOutputConfig.PASSWORD_PARAM);
+ protocol = params.getParameter(AlfrescoBfsiOutputConfig.PROTOCOL_PARAM);
+ server = params.getParameter(AlfrescoBfsiOutputConfig.SERVER_PARAM);
+ port = params.getParameter(AlfrescoBfsiOutputConfig.PORT_PARAM);
+ path = params.getParameter(AlfrescoBfsiOutputConfig.PATH_PARAM);
+ createTimestampTree = params.getParameter(AlfrescoBfsiOutputConfig.CREATE_TIMESTAMP_TREE_PARAM);
+ //Logging.connectors.info("Connected");
+ }
+
+ /**
+ * Test the connection. Returns a string describing the connection integrity.
+ *
+ * @return the connection's status as a displayable string.
+ */
+ @Override
+ public String check() throws ManifoldCFException {
+ try {
+ //Logging.connectors.info("Checking Connection");
+ return super.check();
+ } catch (ManifoldCFException e) {
+ return "Connection failed: " + e.getMessage();
+ }
+ }
+
+
+
+
+ /** Set up a session */
+ protected void getSession() throws ManifoldCFException, ServiceInterruption {
+ //Logging.connectors.info("Getting Session ");
+ if (DropFolderPath == null) {
+ // Check for parameter validity
+ if (StringUtils.isEmpty(username))
+ throw new ManifoldCFException("Parameter " + AlfrescoBfsiOutputConfig.USERNAME_PARAM + " required but not set");
+ if (Logging.connectors.isDebugEnabled())
+ Logging.connectors.debug("Username = '" + username + "'");
+ if (StringUtils.isEmpty(password))
+ throw new ManifoldCFException("Parameter " + AlfrescoBfsiOutputConfig.PASSWORD_PARAM + " required but not set");
+ Logging.connectors.debug(" Password exists");
+ if (StringUtils.isEmpty(protocol))
+ throw new ManifoldCFException("Parameter " + AlfrescoBfsiOutputConfig.PROTOCOL_PARAM + " required but not set");
+ if (StringUtils.isEmpty(server))
+ throw new ManifoldCFException("Parameter " + AlfrescoBfsiOutputConfig.SERVER_PARAM + " required but not set");
+ if (StringUtils.isEmpty(port))
+ throw new ManifoldCFException("Parameter " + AlfrescoBfsiOutputConfig.PORT_PARAM + " required but not set");
+ if (StringUtils.isEmpty(path))
+ throw new ManifoldCFException("Parameter " + AlfrescoBfsiOutputConfig.PATH_PARAM + " required but not set");
+ // Create path object with the output connector path location (dropZone)
+ DropFolderPath= Paths.get(path);
+ }
+ long currentTime;
+ GetDropFolderPath t = new GetDropFolderPath();
+ try {
+ t.start();
+ t.join();
+ Throwable thr = t.getException();
+ if (thr != null) {
+ if (thr instanceof java.net.MalformedURLException)
+ throw (java.net.MalformedURLException) thr;
+ else if (thr instanceof NotBoundException)
+ throw (NotBoundException) thr;
+ else if (thr instanceof RemoteException)
+ throw (RemoteException) thr;
+ else
+ throw (Error) thr;
+ }
+ } catch (InterruptedException e) {
+ t.interrupt();
+ throw new ManifoldCFException("Interrupted: " + e.getMessage(), e, ManifoldCFException.INTERRUPTED);
+ } catch (java.net.MalformedURLException e) {
+ throw new ManifoldCFException(e.getMessage(), e);
+ } catch (NotBoundException e) {
+ // Transient problem: Server not available at the moment.
+ Logging.connectors.warn("Target DropFolder Path not up at the moment: " + e.getMessage(), e);
+ currentTime = System.currentTimeMillis();
+ throw new ServiceInterruption(e.getMessage(), currentTime + 60000L);
+ } catch (RemoteException e) {
+ Throwable e2 = e.getCause();
+ if (e2 instanceof InterruptedException || e2 instanceof InterruptedIOException)
+ throw new ManifoldCFException(e2.getMessage(), e2, ManifoldCFException.INTERRUPTED);
+ // Treat this as a transient problem
+ Logging.connectors.warn("Transient remote exception creating session: " + e.getMessage(), e);
+ currentTime = System.currentTimeMillis();
+ throw new ServiceInterruption(e.getMessage(), currentTime + 60000L);
+ }
+
+
+ lastSessionFetch = System.currentTimeMillis();
+ }
+
+
+ protected void checkConnection() throws ManifoldCFException, ServiceInterruption {
+ while (true) {
+ boolean noPathObject = (DropFolderPath == null);
+ getSession();
+ long currentTime;
+ CheckConnectionThread t = new CheckConnectionThread();
+ try {
+ t.start();
+ t.join();
+ Throwable thr = t.getException();
+ if (thr != null) {
+ if (thr instanceof RemoteException)
+ throw (RemoteException) thr;
+ else
+ throw (Error) thr;
+ }
+ return;
+ } catch (InterruptedException e) {
+ t.interrupt();
+ throw new ManifoldCFException("Interrupted: " + e.getMessage(), e, ManifoldCFException.INTERRUPTED);
+ } catch (RemoteException e) {
+ Throwable e2 = e.getCause();
+ if (e2 instanceof InterruptedException || e2 instanceof InterruptedIOException)
+ throw new ManifoldCFException(e2.getMessage(), e2, ManifoldCFException.INTERRUPTED);
+ if (noPathObject) {
+ currentTime = System.currentTimeMillis();
+ throw new ServiceInterruption("Transient error connecting to file system service: " + e.getMessage(),
+ currentTime + 60000L);
+ }
+ DropFolderPath = null;
+ lastSessionFetch = -1L;
+ continue;
+ }
+ }
+ }
+
+
+
+ /**
+ * Release the session, if it's time.
+ */
+ protected void releaseCheck() throws ManifoldCFException {
+ Logging.connectors.error("Starting releaseCheck ");
+ if (lastSessionFetch == -1L)
+ return;
+
+ long currentTime = System.currentTimeMillis();
+ if (currentTime >= lastSessionFetch + timeToRelease) {
+ DestroyDropFolderPath t = new DestroyDropFolderPath();
+ try {
+ t.start();
+ t.join();
+ Throwable thr = t.getException();
+ if (thr != null) {
+ if (thr instanceof RemoteException)
+ throw (RemoteException) thr;
+ else
+ throw (Error) thr;
+ }
+ DropFolderPath = null;
+ lastSessionFetch = -1L;
+ } catch (InterruptedException e) {
+ t.interrupt();
+ throw new ManifoldCFException("Interrupted: " + e.getMessage(), e, ManifoldCFException.INTERRUPTED);
+ } catch (RemoteException e) {
+ Throwable e2 = e.getCause();
+ if (e2 instanceof InterruptedException || e2 instanceof InterruptedIOException)
+ throw new ManifoldCFException(e2.getMessage(), e2, ManifoldCFException.INTERRUPTED);
+ DropFolderPath = null;
+ lastSessionFetch = -1L;
+ // Treat this as a transient problem
+ Logging.connectors.warn("Transient remote exception closing session: " + e.getMessage(), e);
+ }
+
+ }
+ }
+
+
+
+ /**
+ * This method is periodically called for all connectors that are connected
+ * but not in active use.
+ */
+ @Override
+ public void poll() throws ManifoldCFException {
+ if (lastSessionFetch == -1L)
+ return;
+
+ long currentTime = System.currentTimeMillis();
+ if (currentTime >= lastSessionFetch + timeToRelease) {
+ DestroyDropFolderPath t = new DestroyDropFolderPath();
+ try {
+ t.start();
+ t.join();
+ Throwable thr = t.getException();
+ if (thr != null) {
+ if (thr instanceof RemoteException)
+ throw (RemoteException) thr;
+ else
+ throw (Error) thr;
+ }
+ DropFolderPath = null;
+ lastSessionFetch = -1L;
+ } catch (InterruptedException e) {
+ t.interrupt();
+ throw new ManifoldCFException("Interrupted: " + e.getMessage(), e, ManifoldCFException.INTERRUPTED);
+ } catch (RemoteException e) {
+ Throwable e2 = e.getCause();
+ if (e2 instanceof InterruptedException || e2 instanceof InterruptedIOException)
+ throw new ManifoldCFException(e2.getMessage(), e2, ManifoldCFException.INTERRUPTED);
+ DropFolderPath = null;
+ lastSessionFetch = -1L;
+ // Treat this as a transient problem
+ Logging.connectors.warn("Remote exception closing path object: " + e.getMessage(), e);
+ }
+
+ }
+ }
+
+
+
+
+
+ /**
+ * This method is called to assess whether to count this connector instance
+ * should actually be counted as being connected (having a path object to dropFolder)
+ *
+ * @return true if the connector instance is actually connected (could get a path object of dropFolder)
+ */
+ @Override
+ public boolean isConnected() {
+ return DropFolderPath != null;
+ }
+
+ /**
+ * Read the content of a resource, replace the variable ${PARAMNAME} with the
+ * value and copy it to the out.
+ *
+ * @param resName
+ * @param out
+ * @throws ManifoldCFException
+ */
+ private static void outputResource(String resName, IHTTPOutput out, Locale locale, Map<String, String> paramMap)
+ throws ManifoldCFException {
+ //Logging.connectors.info(" In outputResource");
+ Messages.outputResourceWithVelocity(out, locale, resName, paramMap, true);
+ }
+
+ /**
+ * Fill in a Server tab configuration parameter map for calling a Velocity
+ * template.
+ *
+ * @param newMap
+ * is the map to fill in
+ * @param parameters
+ * is the current set of configuration parameters
+ */
+ private static void fillInServerConfigurationMap(Map<String, String> newMap, IPasswordMapperActivity mapper,
+ ConfigParams parameters) {
+
+
+ //Logging.connectors.info("In fillInServerConfigurationMap ");
+ String username = parameters.getParameter(AlfrescoBfsiOutputConfig.USERNAME_PARAM);
+ String password = parameters.getParameter(AlfrescoBfsiOutputConfig.PASSWORD_PARAM);
+ String protocol = parameters.getParameter(AlfrescoBfsiOutputConfig.PROTOCOL_PARAM);
+ String server = parameters.getParameter(AlfrescoBfsiOutputConfig.SERVER_PARAM);
+ String port = parameters.getParameter(AlfrescoBfsiOutputConfig.PORT_PARAM);
+ String path = parameters.getParameter(AlfrescoBfsiOutputConfig.PATH_PARAM);
+
+ String dropfolder = parameters.getParameter(AlfrescoBfsiOutputConfig.DROPFOLDER_PARAM);
+ String createTimestampTree = parameters.getParameter(AlfrescoBfsiOutputConfig.CREATE_TIMESTAMP_TREE_PARAM);
+
+ if (dropfolder == null)
+ dropfolder = StringUtils.EMPTY;
+
+ if(createTimestampTree == null)
+ createTimestampTree = AlfrescoBfsiOutputConfig.CREATE_TIMESTAMP_TREE_DEFAULT_VALUE;
+
+
+ if (username == null)
+ username = StringUtils.EMPTY;
+ if (password == null)
+ password = StringUtils.EMPTY;
+ else
+ password = mapper.mapPasswordToKey(password);
+ if (protocol == null)
+ protocol = AlfrescoBfsiOutputConfig.PROTOCOL_DEFAULT_VALUE;
+ if (server == null)
+ server = AlfrescoBfsiOutputConfig.SERVER_DEFAULT_VALUE;
+ if (port == null)
+ port = AlfrescoBfsiOutputConfig.PORT_DEFAULT_VALUE;
+ if (path == null)
+ path = AlfrescoBfsiOutputConfig.PATH_DEFAULT_VALUE;
+
+
+ newMap.put(AlfrescoBfsiOutputConfig.USERNAME_PARAM, username);
+ newMap.put(AlfrescoBfsiOutputConfig.PASSWORD_PARAM, password);
+ newMap.put(AlfrescoBfsiOutputConfig.PROTOCOL_PARAM, protocol);
+ newMap.put(AlfrescoBfsiOutputConfig.SERVER_PARAM, server);
+ newMap.put(AlfrescoBfsiOutputConfig.PORT_PARAM, port);
+ newMap.put(AlfrescoBfsiOutputConfig.PATH_PARAM, path);
+ newMap.put(AlfrescoBfsiOutputConfig.CREATE_TIMESTAMP_TREE_PARAM, createTimestampTree);
+ newMap.put(AlfrescoBfsiOutputConfig.DROPFOLDER_PARAM, dropfolder);
+ //Logging.connectors.info("Cabaceira Ending fillInServerConfigurationMap" + username + "-- pass - " + password + "-- protocol -- " + protocol + "--- server ---" + server + "-- port --" + port
+ //+ "---path---" + path + "--- createTimestamp ---" + createTimestampTree + " --- dropfolder ---" + dropfolder);
+ }
+
+
+ /**
+ * View configuration. This method is called in the body section of the
+ * connector's view configuration page. Its purpose is to present the
+ * connection information to the user. The coder can presume that the HTML
+ * that is output from this configuration will be within appropriate
+ * <html> and <body> tags.
+ *
+ * @param threadContext
+ * is the local thread context.
+ * @param out
+ * is the output to which any HTML should be sent.
+ * @param parameters
+ * are the configuration parameters, as they currently exist, for
+ * this connection being configured.
+ */
+ @Override
+ public void viewConfiguration(IThreadContext threadContext, IHTTPOutput out, Locale locale, ConfigParams parameters)
+ throws ManifoldCFException, IOException {
+
+ //Logging.connectors.info(" In viewConfiguration ");
+ Map<String, String> paramMap = new HashMap<String, String>();
+
+ // Fill in map from each tab
+ fillInServerConfigurationMap(paramMap, out, parameters);
+ outputResource(VIEW_CONFIG_FORWARD, out, locale, paramMap);
+ }
+
+ /**
+ *
+ * Output the configuration header section. This method is called in the head
+ * section of the connector's configuration page. Its purpose is to add the
+ * required tabs to the list, and to output any javascript methods that might
+ * be needed by the configuration editing HTML.
+ *
+ * @param threadContext
+ * is the local thread context.
+ * @param out
+ * is the output to which any HTML should be sent.
+ * @param parameters
+ * are the configuration parameters, as they currently exist, for
+ * this connection being configured.
+ * @param tabsArray
+ * is an array of tab names. Add to this array any tab names that are
+ * specific to the connector.
+ */
+ @Override
+ public void outputConfigurationHeader(IThreadContext threadContext, IHTTPOutput out, Locale locale,
+ ConfigParams parameters, List<String> tabsArray) throws ManifoldCFException, IOException {
+ // Add the Server tab
+ tabsArray.add(Messages.getString(locale, TARGET_DROP_FOLDER_TAB_PROPERTY));
+ Logging.connectors.info(" In viewConfiguration ");
+ // Map the parameters
+ Map<String, String> paramMap = new HashMap<String, String>();
+ // Fill in the parameters from each tab
+ fillInServerConfigurationMap(paramMap, out, parameters);
+ // Output the Javascript - only one Velocity template for all tabs
+ outputResource(EDIT_CONFIG_HEADER_FORWARD, out, locale, paramMap);
+ }
+
+
+
+ @Override
+ public void outputConfigurationBody(IThreadContext threadContext, IHTTPOutput out, Locale locale,
+ ConfigParams parameters, String tabName) throws ManifoldCFException, IOException {
+
+ // Call the Velocity templates for each tab
+ // Logging.connectors.error("In viewConfiguration ");
+ // Server 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);
+ outputResource(EDIT_CONFIG_FORWARD_SERVER, out, locale, paramMap);
+
+ }
+
+
+
+
+
+
+
+ /**
+ * Process a configuration post. This method is called at the start of the
+ * connector's configuration page, whenever there is a possibility that form
+ * data for a connection has been posted. Its purpose is to gather form
+ * information and modify the configuration parameters accordingly. The name
+ * of the posted form is "editconnection".
+ *
+ * @param threadContext
+ * is the local thread context.
+ * @param variableContext
+ * is the set of variables available from the post, including binary
+ * file post information.
+ * @param parameters
+ * are the configuration parameters, as they currently exist, for
+ * this connection being configured.
+ * @return null if all is well, or a string error message if there is an error
+ * that should prevent saving of the connection (and cause a
+ * redirection to an error page).
+ */
+ @Override
+ public String processConfigurationPost(IThreadContext threadContext, IPostParameters variableContext,
+ ConfigParams parameters) throws ManifoldCFException {
+
+
+ String dropfolder = variableContext.getParameter(AlfrescoBfsiOutputConfig.DROPFOLDER_PARAM);
+ if (dropfolder != null)
+ parameters.setParameter(AlfrescoBfsiOutputConfig.DROPFOLDER_PARAM, dropfolder);
+
+
+ String createTimestampTree = variableContext.getParameter(AlfrescoBfsiOutputConfig.CREATE_TIMESTAMP_TREE_PARAM);
+ if (createTimestampTree != null) {
+ parameters.setParameter(AlfrescoBfsiOutputConfig.CREATE_TIMESTAMP_TREE_PARAM, createTimestampTree);
+ }
+
+
+ String username = variableContext.getParameter(AlfrescoBfsiOutputConfig.USERNAME_PARAM);
+ if (username != null)
+ parameters.setParameter(AlfrescoBfsiOutputConfig.USERNAME_PARAM, username);
+
+ String password = variableContext.getParameter(AlfrescoBfsiOutputConfig.PASSWORD_PARAM);
+ if (password != null)
+ parameters.setParameter(AlfrescoBfsiOutputConfig.PASSWORD_PARAM, variableContext.mapKeyToPassword(password));
+
+ String protocol = variableContext.getParameter(AlfrescoBfsiOutputConfig.PROTOCOL_PARAM);
+ if (protocol != null) {
+ parameters.setParameter(AlfrescoBfsiOutputConfig.PROTOCOL_PARAM, protocol);
+ }
+
+ String server = variableContext.getParameter(AlfrescoBfsiOutputConfig.SERVER_PARAM);
+ if (server != null && !StringUtils.contains(server, '/')) {
+ parameters.setParameter(AlfrescoBfsiOutputConfig.SERVER_PARAM, server);
+ }
+
+ String port = variableContext.getParameter(AlfrescoBfsiOutputConfig.PORT_PARAM);
+ if (port != null) {
+ try {
+ Integer.parseInt(port);
+ parameters.setParameter(AlfrescoBfsiOutputConfig.PORT_PARAM, port);
+ } catch (NumberFormatException e) {
+
+ }
+ }
+
+ String path = variableContext.getParameter(AlfrescoBfsiOutputConfig.PATH_PARAM);
+ if (path != null) {
+ parameters.setParameter(AlfrescoBfsiOutputConfig.PATH_PARAM, path);
+ }
+
+
+
+
+ return null;
+ }
+
+
+ private boolean isSourceRepoCmisCompliant(RepositoryDocument document) {
+ Iterator<String> fields = document.getFields();
+ while (fields.hasNext()) {
+ String fieldName = (String) fields.next();
+ if (StringUtils.startsWith(fieldName, CMIS_PROPERTY_PREFIX)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+
+ private boolean isSourceRepoDropBox(RepositoryDocument document) {
+ Iterator<String> fields = document.getFields();
+ while (fields.hasNext()) {
+ String fieldName = (String) fields.next();
+ if (StringUtils.startsWith(fieldName, "dropbox")) { //TODO LOGIC
+ return true;
+ }
+ }
+ return false;
+ }
+
+
+ @Override // called for each content item.
+ public int addOrReplaceDocumentWithException(String documentURI, VersionContext pipelineDescription,
+ RepositoryDocument document, String authorityNameString, IOutputAddActivity activities)
+ throws ManifoldCFException, ServiceInterruption, IOException {
+
+ getSession();
+
+ DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
+ Calendar cal = Calendar.getInstance();
+ String date = dateFormat.format(cal.getTime());
+ String objectId = StringUtils.EMPTY;
+ Properties metadataProperties = new Properties();
+ /*
+ * HERE WE CAN CALL TRANSFORMERS OR CUSTOM METADATA AGENTS THAT ARE RESPONSIBLE TO EXTRACT THE METADATA FROM THE SOURCE
+ *
+ * USING SOME DEFAULT DUMMY VALUES FOR NOW
+ * */
+ metadataProperties.setProperty("type", "cm:content");
+ metadataProperties.setProperty("aspects", "cm:versionable,cm:dublincore");
+ metadataProperties.setProperty("cm:title", "Crawled document from ManifoldCF Input Connectors : " + date);
+ metadataProperties.setProperty("cm:description", "");
+ metadataProperties.setProperty("cm:author", "Apache ManifoldCF BulkFilesystem Output Connector");
+ metadataProperties.setProperty("cm:publisher", "BulkFilesystem Output Connector");
+ metadataProperties.setProperty("cm:contributor", "BulkFilesystem Output Connector");
+ metadataProperties.setProperty("cm:type", "default_plus_dubincore_aspect");
+ metadataProperties.setProperty("cm:identifier", document.getFileName());
+ metadataProperties.setProperty("cm:source", "BulkFilesystem Output Connector");
+ metadataProperties.setProperty("cm:coverage", "General");
+ metadataProperties.setProperty("cm:rights", "");
+ metadataProperties.setProperty("cm:subject", "Metadata file created with Apache ManifoldCF BulkFilesystem Output Connector");
+
+ /* *************************************************************************************************************************
+ ************************************ MAPPING LOGIC (REPOSITORY SOURCES) *************************************************
+ *************************************************************************************************************************/
+
+ /*
+ CMIS Repository Connector Source - Override the objectId for synchronizing with removeDocument method
+ */
+ if(isSourceRepoCmisCompliant(document)) {
+ //Logging.connectors.info("CmisCompliant source repo - mapping cmis metada into node's shadow metadata file");
+ String[] cmisObjectIdArray = (String[]) document.getField(PropertyIds.OBJECT_ID);
+ if(cmisObjectIdArray!=null && cmisObjectIdArray.length>0) {
+ objectId = cmisObjectIdArray[0];
+ }
+
+ //Mapping all the CMIS properties ...
+ /*
+ Iterator<String> fields = document.getFields();
+ while (fields.hasNext()) {
+ String field = (String) fields.next();
+ if(!StringUtils.equals(field, "cm:lastThumbnailModification")
+ || !StringUtils.equals(field, "cmis:secondaryObjectTypeIds")) {
+ String[] valuesArray = (String[]) document.getField(field);
+ properties.put(field,valuesArray);
+ }
+ }
+ */
+ //Agnostic metadata from cmis repo
+ metadataProperties.setProperty(PropertyIds.OBJECT_TYPE_ID, CMIS_DOCUMENT_TYPE);
+ metadataProperties.setProperty(PropertyIds.CREATION_DATE, document.getCreatedDate().toString());
+ metadataProperties.setProperty(PropertyIds.LAST_MODIFICATION_DATE, document.getModifiedDate().toString());
+ //check objectId
+ if(StringUtils.isNotEmpty(objectId)){
+ ObjectId objId = new ObjectIdImpl(objectId);
+ String uuid = objId.getId().substring(0,objId.getId().indexOf(';'));
+ metadataProperties.setProperty("sys:node-uuid", uuid);
+ }
+ }
+
+ if(isSourceRepoDropBox(document)) {
+ //Logging.connectors.info("DropBox source repo - mapping metada into node's shadow metadata file");
+ }
+
+ // Add more input connectors specific logic here
+
+
+ /* *************************************************************************************************************************
+ ************************************ END MAPPING LOGIC (REPOSITORY SOURCES) *********************************************
+ *************************************************************************************************************************/
+
+ // Creating target node in BFSI format (document + shadow metadata xml file)
+ AlfrescoBfsiOutputAgent.createBulkDocument(document.getBinaryStream(),document.getFileName(),metadataProperties,DropFolderPath);
+
+
+ // Logging.connectors.error("In addOrReplaceDocumentWithException -- " + document.getFileName());
+ // Logging.connectors.error("DropFolder filesystem is " + DropFolderPath.getFileSystem());
+ // Logging.connectors.error("DropFolder path is " + DropFolderPath.toString());
+ // Logging.connectors.error("Parent is " + DropFolderPath.getParent() + " Root is " + DropFolderPath.getRoot());
+
+
+ return DOCUMENT_STATUS_ACCEPTED;
+ }
+
+
+
+
+ @Override
+ public void removeDocument(String documentURI, String outputDescription, IOutputRemoveActivity activities)
+ throws ManifoldCFException, ServiceInterruption {
+ getSession();
+ Logging.connectors.error("In removeDocument -- " + documentURI);
+ long startTime = System.currentTimeMillis();
+ String result = StringUtils.EMPTY;
+
+ //append the prefix for the relative path in the target repo
+ String parentDropZonePath = DropFolderPath.toString();
+ String fullDocumentURIinTargetRepo = parentDropZonePath + documentURI;
+ Path documentPathInTarget = Paths.get(fullDocumentURIinTargetRepo);
+ Path documentShadowMetaPathInTarget = Paths.get(fullDocumentURIinTargetRepo + ".metadata.properties.xml");
+ try {
+ if(Files.exists(documentPathInTarget)) {
+ // delete document and shadow metadata file
+ Files.delete(documentPathInTarget);
+ Files.delete(documentShadowMetaPathInTarget);
+ result = DOCUMENT_DELETION_STATUS_ACCEPTED;
+ } else {
+ result = DOCUMENT_DELETION_STATUS_REJECTED;
+ }
+ } catch (Exception e) {
+ result = DOCUMENT_DELETION_STATUS_REJECTED;
+ throw new ManifoldCFException(e.getMessage(), e);
+ } finally {
+ activities.recordActivity(startTime, ACTIVITY_DELETE, null, documentURI, null, result);
+ }
+ }
+
+ protected static void handleIOException(IOException e, String context)
+ throws ManifoldCFException, ServiceInterruption {
+ if (e instanceof InterruptedIOException) {
+ throw new ManifoldCFException(e.getMessage(), e, ManifoldCFException.INTERRUPTED);
+ } else {
+ Logging.connectors.warn("IOException " + context + ": " + e.getMessage(), e);
+ throw new ManifoldCFException(e.getMessage(), e);
+ }
+ }
+
+
+
+
+
+
+
+}
\ No newline at end of file
Propchange: manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/java/org/apache/manifoldcf/agents/output/bfsioutput/AlfrescoBfsiOutputConnector.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/java/org/apache/manifoldcf/agents/output/bfsioutput/AlfrescoBfsiOutputConnector.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/java/org/apache/manifoldcf/agents/output/bfsioutput/AlfrescoBfsiOutputConnector.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/java/org/apache/manifoldcf/agents/output/bfsioutput/AlfrescoBfsiOutputConnectorUtils.java
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/java/org/apache/manifoldcf/agents/output/bfsioutput/AlfrescoBfsiOutputConnectorUtils.java?rev=1808904&view=auto
==============================================================================
--- manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/java/org/apache/manifoldcf/agents/output/bfsioutput/AlfrescoBfsiOutputConnectorUtils.java (added)
+++ manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/java/org/apache/manifoldcf/agents/output/bfsioutput/AlfrescoBfsiOutputConnectorUtils.java Tue Sep 19 15:57:30 2017
@@ -0,0 +1,30 @@
+/* $Id$ */
+
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.manifoldcf.agents.output.bfsioutput;
+
+
+/**
+ *
+ * @author Luis Cabaceira
+ *
+ */
+public class AlfrescoBfsiOutputConnectorUtils {
+
+
+}
\ No newline at end of file
Propchange: manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/java/org/apache/manifoldcf/agents/output/bfsioutput/AlfrescoBfsiOutputConnectorUtils.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/java/org/apache/manifoldcf/agents/output/bfsioutput/AlfrescoBfsiOutputConnectorUtils.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/java/org/apache/manifoldcf/agents/output/bfsioutput/AlfrescoBfsiOutputConnectorUtils.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/java/org/apache/manifoldcf/agents/output/bfsioutput/ColumnSet.java
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/java/org/apache/manifoldcf/agents/output/bfsioutput/ColumnSet.java?rev=1808904&view=auto
==============================================================================
--- manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/java/org/apache/manifoldcf/agents/output/bfsioutput/ColumnSet.java (added)
+++ manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/java/org/apache/manifoldcf/agents/output/bfsioutput/ColumnSet.java Tue Sep 19 15:57:30 2017
@@ -0,0 +1,61 @@
+/* $Id$ */
+
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.manifoldcf.agents.output.bfsioutput;
+
+import org.apache.commons.lang.StringUtils;
+
+/**
+ *
+ * @author Luis Cabaceira
+ *
+ */
+public class ColumnSet {
+
+ private String name = StringUtils.EMPTY;
+ private String alias = StringUtils.EMPTY;
+
+ public ColumnSet() {}
+
+ public ColumnSet(String name, String alias) {
+ this.name = name;
+ this.alias = alias;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getAlias() {
+ return alias;
+ }
+
+ public void setAlias(String alias) {
+ this.alias = alias;
+ }
+
+ @Override
+ public String toString() {
+ return "ColumnSet{name=" + name + ", alias=" + alias + '}';
+ }
+
+}
Propchange: manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/java/org/apache/manifoldcf/agents/output/bfsioutput/ColumnSet.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/java/org/apache/manifoldcf/agents/output/bfsioutput/ColumnSet.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/java/org/apache/manifoldcf/agents/output/bfsioutput/ColumnSet.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/java/org/apache/manifoldcf/agents/output/bfsioutput/Messages.java
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/java/org/apache/manifoldcf/agents/output/bfsioutput/Messages.java?rev=1808904&view=auto
==============================================================================
--- manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/java/org/apache/manifoldcf/agents/output/bfsioutput/Messages.java (added)
+++ manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/java/org/apache/manifoldcf/agents/output/bfsioutput/Messages.java Tue Sep 19 15:57:30 2017
@@ -0,0 +1,142 @@
+/* $Id$ */
+
+/**
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements. See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You under the Apache License, Version 2.0
+* (the "License"); you may not use this file except in compliance with
+* the License. You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package org.apache.manifoldcf.agents.output.bfsioutput;
+
+import org.apache.manifoldcf.core.interfaces.IHTTPOutput;
+import org.apache.manifoldcf.core.interfaces.ManifoldCFException;
+
+import java.util.Locale;
+import java.util.Map;
+
+public class Messages extends org.apache.manifoldcf.ui.i18n.Messages
+{
+ public static final String DEFAULT_BUNDLE_NAME="org.apache.manifoldcf.agents.output.bfsioutput.common";
+ public static final String DEFAULT_PATH_NAME="org.apache.manifoldcf.agents.output.bfsioutput";
+
+ /** 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-1442/connectors/alfresco-bfsi/connector/src/main/java/org/apache/manifoldcf/agents/output/bfsioutput/Messages.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/java/org/apache/manifoldcf/agents/output/bfsioutput/Messages.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: manifoldcf/branches/CONNECTORS-1442/connectors/alfresco-bfsi/connector/src/main/java/org/apache/manifoldcf/agents/output/bfsioutput/Messages.java
------------------------------------------------------------------------------
svn:mime-type = text/plain