• XMLImporter Utility

  • OpenKM tiene muchas características interesantes, pero es necesario un proceso de configuración para mostrar todo su potencial.
OpenKM tiene muchas características interesantes, pero es necesario un proceso de configuración para mostrar todo su potencial.
Forum rules: Por favor, antes de preguntar algo consulta el wiki de documentación o utiliza la función de búsqueda del foro. Recuerda que no tenemos una bola de cristal ni poderes mentales, o sea que que para informar sobre un error es necesario que nos indiques tanto la versión de OpenKM que usas como la del navegador y sistema operativo. Para más información consulta Cómo informar de fallos de forma efectiva.
 #29196  by gcosta
 
Buenas tardes, estoy intentando realizar una prueba con la importación de un archivo con sus propiedades a través de un XML. Lo estoy intentando partiendo y usando el XMLImporter que hay dentro del apartado de Utilidades. http://wiki.openkm.com/index.php?title= ... oldid=9485

El único cambio que he hecho por el momento ha sido modificar las variable "SYSTEM_FOLDER" para ubicar donde tengo los archivos guardados.

Genero el archivo .jar, registro el metadata, ...

En cuanto ejecuto el crontab "XMLImporter" me aparece el siguiente error en la consola de "Debug" como si esperara algo. A que puede ser debido?
Code: Select all
2014-07-08 17:49:04,931 [http-bio-0.0.0.0-8080-exec-8] WARN  com.openkm.util.ExecutionUtils - com.openkm.cron.XMLImporter.cronTask()
java.lang.NoSuchMethodException: com.openkm.cron.XMLImporter.cronTask()
	at java.lang.Class.getMethod(Class.java:1665)
	at com.openkm.util.cl.ClassLoaderUtils.invokeMethodFromClass(ClassLoaderUtils.java:103)
	at com.openkm.util.ExecutionUtils.runJar(ExecutionUtils.java:220)
	at com.openkm.core.Cron$RunnerJar.run(Cron.java:176)
	at com.openkm.servlet.admin.CronTabServlet.execute(CronTabServlet.java:231)
	at com.openkm.servlet.admin.CronTabServlet.doGet(CronTabServlet.java:115)
	at com.openkm.servlet.admin.CronTabServlet.service(CronTabServlet.java:71)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:311)
	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:116)
	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:101)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
	at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
	at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
	at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:182)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
	at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:173)
	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	at java.lang.Thread.run(Thread.java:745)
2014-07-08 18:00:00,168 [Thread-19] INFO  com.openkm.core.UserMailImporter - *** User mail importer activated ***
Os dejo tambien el codigo de mi classe XMLImporter.java
Gracias.
Code: Select all
package com.openkm.cron;
 
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
 
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
 
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
 
import com.openkm.api.OKMDocument;
import com.openkm.api.OKMPropertyGroup;
import com.openkm.api.OKMSearch;
import com.openkm.automation.AutomationException;
import com.openkm.bean.Document;
import com.openkm.bean.PropertyGroup;
import com.openkm.bean.QueryResult;
import com.openkm.core.AccessDeniedException;
import com.openkm.core.DatabaseException;
import com.openkm.core.FileSizeExceededException;
import com.openkm.core.ItemExistsException;
import com.openkm.core.LockException;
import com.openkm.core.NoSuchGroupException;
import com.openkm.core.NoSuchPropertyException;
import com.openkm.core.ParseException;
import com.openkm.core.PathNotFoundException;
import com.openkm.core.RepositoryException;
import com.openkm.core.UnsupportedMimeTypeException;
import com.openkm.core.UserQuotaExceededException;
import com.openkm.core.VirusDetectedException;
import com.openkm.dao.bean.QueryParams;
import com.openkm.extension.core.ExtensionException;
import com.openkm.module.db.stuff.DbSessionManager;
 
/**
 * XMLImporter
 * 
 */
public class XMLImporter {
	private static final String SYSTEM_FOLDER = "C:/OpenKM/import";
	private static final String OPENKM_FOLDER = "/okm:root/import";
	private static final String ATTRIBUTE_FILENAME = "Filename";
	private static final String ATTRIBUTE_FIELDS = "Fields";
	private static final String ATTRIBUTE_FIELD = "Field";
	private static final String ATTRIBUTE_NAME = "Name";
	private static final String ATTRIBUTE_VALUE = "Value";
	private static final String FIELD_NAME_FOLIO = "folio";
	private static final String FIELD_NAME_RUT = "rut";
	private static final String FIELD_NAME_PLACA_PATENTE = "placa patente";
	private static final String FIELD_NAME_NOMBRES = "nombres";
	private static final String FIELD_NAME_APELLIDO_PATERNO = "apellido paterno";
	private static final String FIELD_NAME_APELLIDO_MATERNO = "apellido materno";
	private static final String FIELD_NAME_ANO = "a�o";
	private static final String FIELD_NAME_TIPO_DOCUMENTO = "tipo de documento";
	
	public static void main(String[] args) {
		System.out.println("SYSTEM FOLDER: " + SYSTEM_FOLDER + " !!!!!");
		System.out.println(cronTask(args));
	}
 
	public static String cronTask(String[] systemToken) {
		try {
			importFiles();
			importMetadata();
		} catch (UnsupportedMimeTypeException e) {
			e.printStackTrace();
		} catch (FileSizeExceededException e) {
			e.printStackTrace();
		} catch (UserQuotaExceededException e) {
			e.printStackTrace();
		} catch (VirusDetectedException e) {
			e.printStackTrace();
		} catch (ItemExistsException e) {
			e.printStackTrace();
		} catch (PathNotFoundException e) {
			e.printStackTrace();
		} catch (AccessDeniedException e) {
			e.printStackTrace();
		} catch (RepositoryException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} catch (DatabaseException e) {
			e.printStackTrace();
		} catch (ExtensionException e) {
			e.printStackTrace();
		} catch (AutomationException e) {
			e.printStackTrace();
		} catch (ParserConfigurationException e) {
			e.printStackTrace();
		} catch (SAXException e) {
			e.printStackTrace();
		} catch (ParseException e) {
			e.printStackTrace();
		} catch (NoSuchGroupException e) {
			e.printStackTrace();
		} catch (LockException e) {
			e.printStackTrace();
		} catch (NoSuchPropertyException e) {
			e.printStackTrace();
		} 
		return "";
	}
 
	/**
	 * importMetadata
	 */
	public static void importMetadata() throws ParserConfigurationException, SAXException, IOException, ParseException,
			RepositoryException, DatabaseException, PathNotFoundException, NoSuchGroupException, LockException, AccessDeniedException,
			ExtensionException, NoSuchPropertyException, UnsupportedMimeTypeException, FileSizeExceededException,
			UserQuotaExceededException, VirusDetectedException, ItemExistsException, AutomationException {
		String fileName = "";
		String folio = "";
		String rut = "";
		String placaPatente = "";
		String nombres = "";
		String apellidoPaterno = "";
		String apellidoMaterno = "";
		String ano = "";
		String tipoDocumento = "";
 
		File folder = new File(SYSTEM_FOLDER + "/logfile");
		File[] listOfFiles = folder.listFiles();
 
		for (int i = 0; i < listOfFiles.length; i++) {
			File xmlFile = listOfFiles[i];
			if (xmlFile.isFile() && xmlFile.getName().toLowerCase().endsWith("indexlog.xml")) {
				DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
				dbf.setNamespaceAware(true);
				dbf.setAttribute("http://xml.org/sax/features/namespaces", Boolean.TRUE);
 
				DocumentBuilder db = dbf.newDocumentBuilder();
				org.w3c.dom.Document xmlDoc = db.parse(xmlFile);
				xmlDoc.getDocumentElement().normalize();
				NodeList fileNodesList = xmlDoc.getElementsByTagName("File");
 
				for (int x = 0; x < fileNodesList.getLength(); x++) {
					fileName = "";
					folio = "";
					rut = "";
					placaPatente = "";
					nombres = "";
					apellidoPaterno = "";
					apellidoMaterno = "";
					ano = "";
					tipoDocumento = "";
					Node childFildNode = fileNodesList.item(x);
					if (childFildNode.getNodeType() == Node.ELEMENT_NODE) {
						Element fileElement = (Element) childFildNode; // attibute
																		// node
						fileName = fileElement.getElementsByTagName(ATTRIBUTE_FILENAME).item(0).getTextContent();
						Node fieldsNode = fileElement.getElementsByTagName(ATTRIBUTE_FIELDS).item(0); // Only
																										// one
																										// fields
						if (fieldsNode.getNodeType() == Node.ELEMENT_NODE) {
							Element fieldsElement = (Element) fieldsNode; // fields
																			// node
							NodeList fieldList = fieldsElement.getElementsByTagName(ATTRIBUTE_FIELD);
							for (int y = 0; y < fieldList.getLength(); y++) {
								Node fieldNode = fieldList.item(y);
								if (fieldNode.getNodeType() == Node.ELEMENT_NODE) {
									Element fieldElement = (Element) fieldNode; // attibute
																				// node
									String name = fieldElement.getElementsByTagName(ATTRIBUTE_NAME).item(0).getTextContent().trim();
									String value = fieldElement.getElementsByTagName(ATTRIBUTE_VALUE).item(0).getTextContent().trim();
									if (name.toLowerCase().equals(FIELD_NAME_FOLIO)) {
										folio = value;
									} else if (name.toLowerCase().equals(FIELD_NAME_RUT)) {
										rut = value;
									} else if (name.toLowerCase().equals(FIELD_NAME_PLACA_PATENTE)) {
										placaPatente = value;
									} else if (name.toLowerCase().equals(FIELD_NAME_NOMBRES)) {
										nombres = value;
									} else if (name.toLowerCase().equals(FIELD_NAME_APELLIDO_PATERNO)) {
										apellidoPaterno = value;
									} else if (name.toLowerCase().equals(FIELD_NAME_APELLIDO_MATERNO)) {
										apellidoMaterno = value;
									} else if (name.toLowerCase().equals(FIELD_NAME_ANO)) {
										ano = value;
									} else if (name.toLowerCase().equals(FIELD_NAME_TIPO_DOCUMENTO)) {
										tipoDocumento = value;
									}
								}
							}
						}
 
						if (fileName != null && !fileName.equals("")) {
							QueryParams queryParams = new QueryParams();
							queryParams.setDomain(QueryParams.DOCUMENT);
							queryParams.setName(fileName);
							Collection<QueryResult> results = OKMSearch.getInstance().find(null, queryParams);
							if (results.size() == 1) {
								for (QueryResult queryResult : results) {
									if (queryResult.getDocument() != null) {
										System.out.println(fileName + " -ok");
										boolean found = false;
										for (PropertyGroup group : OKMPropertyGroup.getInstance().getGroups(null,
												queryResult.getDocument().getPath())) {
											if (group.getName().equals("okg:data")) {
												found = true;
											}
										}
										if (!found) {
											OKMPropertyGroup.getInstance().addGroup(null, queryResult.getDocument().getPath(), "okg:data");
										}
 
										Map<String, String> propertiesMap = new HashMap<String, String>();
										propertiesMap.put("okp:data.folio", folio);
										propertiesMap.put("okp:data.rut", rut);
										propertiesMap.put("okp:data.placa", placaPatente);
										propertiesMap.put("okp:data.nombres", nombres);
										propertiesMap.put("okp:data.apellido_padre", apellidoPaterno);
										propertiesMap.put("okp:data.apellido_madre", apellidoMaterno);
										propertiesMap.put("okp:data.year", ano);
										propertiesMap.put("okp:data.documento", tipoDocumento);
										OKMPropertyGroup.getInstance().setPropertiesSimple(null, queryResult.getDocument().getPath(),
												"okg:data", propertiesMap);
									}
								}
							} else if (results.size() > 1) {
								System.out.println(fileName + " - error");
							} else {
								System.out.println(fileName + " - not found");
							}
						}
					}
				}
				xmlFile.delete();
			}
		}
	}
 
	/**
	 * importFiles
	 */
	public static void importFiles() throws UnsupportedMimeTypeException, FileSizeExceededException, UserQuotaExceededException,
			VirusDetectedException, ItemExistsException, PathNotFoundException, AccessDeniedException, RepositoryException, IOException,
			DatabaseException, ExtensionException, AutomationException {
		String systemToken = DbSessionManager.getInstance().getSystemToken();
		// Loading files
		File folder = new File(SYSTEM_FOLDER + "/Output");
		File[] listOfFiles = folder.listFiles();
		for (int i = 0; i < listOfFiles.length; i++) {
			File file = listOfFiles[i];
			if (file.isFile() && file.getName().toLowerCase().endsWith(".pdf")) {
				Document doc = new Document();
				doc.setPath(OPENKM_FOLDER + "/" + file.getName());
				FileInputStream fis = new FileInputStream(file);
				doc = OKMDocument.getInstance().create(systemToken, doc, fis);
				file.delete();
			}
		}
	}
}
 #29212  by jllort
 
Esto es debido a que esta esperando a que tengas un método implementado que no tienes, prueba declarando estos métodos
Code: Select all
public static void main(String[] args) {
        System.out.println(cronTask(new String[] { DbSessionManager.getInstance().getSystemToken() }));
    }
    
    public static String cronTask() {
        log.info("entrada");
        return cronTask(DbSessionManager.getInstance().getSystemToken());
    }
    
    // OpenKM 6.4.1
    public static String cronTask(String[] params) {
        return cronTask(params[0]);
    }
    
    // OpenKM 6.4.2
    public static String cronTask(String systemToken) {
    }
 #29214  by gcosta
 
Gracias por la respuesta. No acabo de poder hacer funcionar, he hecho lo que me has comentado pero sigo con el mismo error. Estoy utilizando la version Community 6.3

Gracias.
 #29236  by jllort
 
Me estraña mucho que te de el mismo error. Seguro ? Puedes poner aqui la clase que estas intentando ejecutar. Por cierto al crear el jar le estas indicando el main class ( desde eclipse en la tercera o cuarta ventana - jar manifest specification - hay que indicarle la main class )
 #29243  by gcosta
 
Error que me genera:
Code: Select all
2014-07-11 11:56:37,390 [http-bio-0.0.0.0-8080-exec-3] WARN  com.openkm.util.ExecutionUtils - com.openkm.cron.XMLImporter.cronTask()
java.lang.NoSuchMethodException: com.openkm.cron.XMLImporter.cronTask()
	at java.lang.Class.getMethod(Class.java:1665)
	at com.openkm.util.cl.ClassLoaderUtils.invokeMethodFromClass(ClassLoaderUtils.java:103)
	at com.openkm.util.ExecutionUtils.runJar(ExecutionUtils.java:220)
	at com.openkm.core.Cron$RunnerJar.run(Cron.java:176)
	at com.openkm.servlet.admin.CronTabServlet.execute(CronTabServlet.java:231)
	at com.openkm.servlet.admin.CronTabServlet.doGet(CronTabServlet.java:115)
	at com.openkm.servlet.admin.CronTabServlet.service(CronTabServlet.java:71)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:311)
	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:116)
	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:101)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
	at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
	at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
	at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:182)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
	at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:173)
	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	at java.lang.Thread.run(Thread.java:745)
2014-07-11 11:56:37,400 [http-bio-0.0.0.0-8080-exec-3] WARN  com.openkm.core.Cron - Crontab task mail address is empty: 
Classe que compilo y ejecuto en el crontab:
Code: Select all
package com.openkm.cron;
 
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
 
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
 
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
 
import com.openkm.api.OKMDocument;
import com.openkm.api.OKMPropertyGroup;
import com.openkm.api.OKMSearch;
import com.openkm.automation.AutomationException;
import com.openkm.bean.Document;
import com.openkm.bean.PropertyGroup;
import com.openkm.bean.QueryResult;
import com.openkm.core.AccessDeniedException;
import com.openkm.core.DatabaseException;
import com.openkm.core.FileSizeExceededException;
import com.openkm.core.ItemExistsException;
import com.openkm.core.LockException;
import com.openkm.core.NoSuchGroupException;
import com.openkm.core.NoSuchPropertyException;
import com.openkm.core.ParseException;
import com.openkm.core.PathNotFoundException;
import com.openkm.core.RepositoryException;
import com.openkm.core.UnsupportedMimeTypeException;
import com.openkm.core.UserQuotaExceededException;
import com.openkm.core.VirusDetectedException;
import com.openkm.dao.bean.QueryParams;
import com.openkm.extension.core.ExtensionException;
import com.openkm.module.db.stuff.DbSessionManager;
 
/**
 * XMLImporter
 * 
 */
public class XMLImporter {
	private static final String SYSTEM_FOLDER = "C:/OpenKM/import";
	private static final String OPENKM_FOLDER = "/okm:root/import";
	private static final String ATTRIBUTE_FILENAME = "Filename";
	private static final String ATTRIBUTE_FIELDS = "Fields";
	private static final String ATTRIBUTE_FIELD = "Field";
	private static final String ATTRIBUTE_NAME = "Name";
	private static final String ATTRIBUTE_VALUE = "Value";
	private static final String FIELD_NAME_FOLIO = "folio";
	private static final String FIELD_NAME_RUT = "rut";
	private static final String FIELD_NAME_PLACA_PATENTE = "placa patente";
	private static final String FIELD_NAME_NOMBRES = "nombres";
	private static final String FIELD_NAME_APELLIDO_PATERNO = "apellido paterno";
	private static final String FIELD_NAME_APELLIDO_MATERNO = "apellido materno";
	private static final String FIELD_NAME_ANO = "a�o";
	private static final String FIELD_NAME_TIPO_DOCUMENTO = "tipo de documento";
	
	public static void main(String[] args) {
		System.out.println(cronTask(args));
		//System.out.println(cronTask(new String[] { DbSessionManager.getInstance().getSystemToken() }));
		//System.out.println(cronTask());
		//System.out.println(cronTask(new String[] { DbSessionManager.getInstance().getSystemToken() }));
	}
	
	
 
	public static String cronTask(String[] params) {
		try {
			importFiles();
			importMetadata();
		} catch (UnsupportedMimeTypeException e) {
			e.printStackTrace();
		} catch (FileSizeExceededException e) {
			e.printStackTrace();
		} catch (UserQuotaExceededException e) {
			e.printStackTrace();
		} catch (VirusDetectedException e) {
			e.printStackTrace();
		} catch (ItemExistsException e) {
			e.printStackTrace();
		} catch (PathNotFoundException e) {
			e.printStackTrace();
		} catch (AccessDeniedException e) {
			e.printStackTrace();
		} catch (RepositoryException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} catch (DatabaseException e) {
			e.printStackTrace();
		} catch (ExtensionException e) {
			e.printStackTrace();
		} catch (AutomationException e) {
			e.printStackTrace();
		} catch (ParserConfigurationException e) {
			e.printStackTrace();
		} catch (SAXException e) {
			e.printStackTrace();
		} catch (ParseException e) {
			e.printStackTrace();
		} catch (NoSuchGroupException e) {
			e.printStackTrace();
		} catch (LockException e) {
			e.printStackTrace();
		} catch (NoSuchPropertyException e) {
			e.printStackTrace();
		} 
		return "";
	}
 
	/**
	 * importMetadata
	 */
	public static void importMetadata() throws ParserConfigurationException, SAXException, IOException, ParseException,
			RepositoryException, DatabaseException, PathNotFoundException, NoSuchGroupException, LockException, AccessDeniedException,
			ExtensionException, NoSuchPropertyException, UnsupportedMimeTypeException, FileSizeExceededException,
			UserQuotaExceededException, VirusDetectedException, ItemExistsException, AutomationException {
		String fileName = "";
		String folio = "";
		String rut = "";
		String placaPatente = "";
		String nombres = "";
		String apellidoPaterno = "";
		String apellidoMaterno = "";
		String ano = "";
		String tipoDocumento = "";
 
		File folder = new File(SYSTEM_FOLDER + "/logfile");
		File[] listOfFiles = folder.listFiles();
 
		for (int i = 0; i < listOfFiles.length; i++) {
			File xmlFile = listOfFiles[i];
			if (xmlFile.isFile() && xmlFile.getName().toLowerCase().endsWith("indexlog.xml")) {
				DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
				dbf.setNamespaceAware(true);
				dbf.setAttribute("http://xml.org/sax/features/namespaces", Boolean.TRUE);
 
				DocumentBuilder db = dbf.newDocumentBuilder();
				org.w3c.dom.Document xmlDoc = db.parse(xmlFile);
				xmlDoc.getDocumentElement().normalize();
				NodeList fileNodesList = xmlDoc.getElementsByTagName("File");
 
				for (int x = 0; x < fileNodesList.getLength(); x++) {
					fileName = "";
					folio = "";
					rut = "";
					placaPatente = "";
					nombres = "";
					apellidoPaterno = "";
					apellidoMaterno = "";
					ano = "";
					tipoDocumento = "";
					Node childFildNode = fileNodesList.item(x);
					if (childFildNode.getNodeType() == Node.ELEMENT_NODE) {
						Element fileElement = (Element) childFildNode; // attibute
																		// node
						fileName = fileElement.getElementsByTagName(ATTRIBUTE_FILENAME).item(0).getTextContent();
						Node fieldsNode = fileElement.getElementsByTagName(ATTRIBUTE_FIELDS).item(0); // Only
																										// one
																										// fields
						if (fieldsNode.getNodeType() == Node.ELEMENT_NODE) {
							Element fieldsElement = (Element) fieldsNode; // fields
																			// node
							NodeList fieldList = fieldsElement.getElementsByTagName(ATTRIBUTE_FIELD);
							for (int y = 0; y < fieldList.getLength(); y++) {
								Node fieldNode = fieldList.item(y);
								if (fieldNode.getNodeType() == Node.ELEMENT_NODE) {
									Element fieldElement = (Element) fieldNode; // attibute
																				// node
									String name = fieldElement.getElementsByTagName(ATTRIBUTE_NAME).item(0).getTextContent().trim();
									String value = fieldElement.getElementsByTagName(ATTRIBUTE_VALUE).item(0).getTextContent().trim();
									if (name.toLowerCase().equals(FIELD_NAME_FOLIO)) {
										folio = value;
									} else if (name.toLowerCase().equals(FIELD_NAME_RUT)) {
										rut = value;
									} else if (name.toLowerCase().equals(FIELD_NAME_PLACA_PATENTE)) {
										placaPatente = value;
									} else if (name.toLowerCase().equals(FIELD_NAME_NOMBRES)) {
										nombres = value;
									} else if (name.toLowerCase().equals(FIELD_NAME_APELLIDO_PATERNO)) {
										apellidoPaterno = value;
									} else if (name.toLowerCase().equals(FIELD_NAME_APELLIDO_MATERNO)) {
										apellidoMaterno = value;
									} else if (name.toLowerCase().equals(FIELD_NAME_ANO)) {
										ano = value;
									} else if (name.toLowerCase().equals(FIELD_NAME_TIPO_DOCUMENTO)) {
										tipoDocumento = value;
									}
								}
							}
						}
 
						if (fileName != null && !fileName.equals("")) {
							QueryParams queryParams = new QueryParams();
							queryParams.setDomain(QueryParams.DOCUMENT);
							queryParams.setName(fileName);
							Collection<QueryResult> results = OKMSearch.getInstance().find(null, queryParams);
							if (results.size() == 1) {
								for (QueryResult queryResult : results) {
									if (queryResult.getDocument() != null) {
										System.out.println(fileName + " -ok");
										boolean found = false;
										for (PropertyGroup group : OKMPropertyGroup.getInstance().getGroups(null,
												queryResult.getDocument().getPath())) {
											if (group.getName().equals("okg:data")) {
												found = true;
											}
										}
										if (!found) {
											OKMPropertyGroup.getInstance().addGroup(null, queryResult.getDocument().getPath(), "okg:data");
										}
 
										Map<String, String> propertiesMap = new HashMap<String, String>();
										propertiesMap.put("okp:data.folio", folio);
										propertiesMap.put("okp:data.rut", rut);
										propertiesMap.put("okp:data.placa", placaPatente);
										propertiesMap.put("okp:data.nombres", nombres);
										propertiesMap.put("okp:data.apellido_padre", apellidoPaterno);
										propertiesMap.put("okp:data.apellido_madre", apellidoMaterno);
										propertiesMap.put("okp:data.year", ano);
										propertiesMap.put("okp:data.documento", tipoDocumento);
										OKMPropertyGroup.getInstance().setPropertiesSimple(null, queryResult.getDocument().getPath(),
												"okg:data", propertiesMap);
									}
								}
							} else if (results.size() > 1) {
								System.out.println(fileName + " - error");
							} else {
								System.out.println(fileName + " - not found");
							}
						}
					}
				}
				xmlFile.delete();
			}
		}
	}
 
	/**
	 * importFiles
	 */
	public static void importFiles() throws UnsupportedMimeTypeException, FileSizeExceededException, UserQuotaExceededException,
			VirusDetectedException, ItemExistsException, PathNotFoundException, AccessDeniedException, RepositoryException, IOException,
			DatabaseException, ExtensionException, AutomationException {
		String systemToken = DbSessionManager.getInstance().getSystemToken();
		// Loading files
		File folder = new File(SYSTEM_FOLDER + "/Output");
		File[] listOfFiles = folder.listFiles();
		for (int i = 0; i < listOfFiles.length; i++) {
			File file = listOfFiles[i];
			if (file.isFile() && file.getName().toLowerCase().endsWith(".pdf")) {
				Document doc = new Document();
				doc.setPath(OPENKM_FOLDER + "/" + file.getName());
				FileInputStream fis = new FileInputStream(file);
				doc = OKMDocument.getInstance().create(systemToken, doc, fis);
				file.delete();
			}
		}
	}
}
La versión que uso en el entorno de programación y compilación el la Community 6.2
 #29263  by pavila
 
Ya veo lo que pasa: está buscando el método cronTask() pero tu clase tiene el método cronTask(String[] params). Añade ese método que necesita (sin el parámetro). Sería algo así:
Code: Select all
package com.openkm.cron;
 
import Java.io.File;
import Java.io.FileInputStream;
import Java.io.IOException;
import Java.util.Collection;
import Java.util.HashMap;
import Java.util.Map;
 
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
 
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
 
import com.openkm.API.OKMDocument;
import com.openkm.API.OKMPropertyGroup;
import com.openkm.API.OKMSearch;
import com.openkm.automation.AutomationException;
import com.openkm.bean.Document;
import com.openkm.bean.PropertyGroup;
import com.openkm.bean.QueryResult;
import com.openkm.core.AccessDeniedException;
import com.openkm.core.DatabaseException;
import com.openkm.core.FileSizeExceededException;
import com.openkm.core.ItemExistsException;
import com.openkm.core.LockException;
import com.openkm.core.NoSuchGroupException;
import com.openkm.core.NoSuchPropertyException;
import com.openkm.core.ParseException;
import com.openkm.core.PathNotFoundException;
import com.openkm.core.RepositoryException;
import com.openkm.core.UnsupportedMimeTypeException;
import com.openkm.core.UserQuotaExceededException;
import com.openkm.core.VirusDetectedException;
import com.openkm.dao.bean.QueryParams;
import com.openkm.extension.core.ExtensionException;
import com.openkm.module.db.stuff.DbSessionManager;
 
/**
 * XMLImporter
 */
public class XMLImporter {
   private static final String SYSTEM_FOLDER = "C:/OpenKM/import";
   private static final String OPENKM_FOLDER = "/okm:root/import";
   private static final String ATTRIBUTE_FILENAME = "Filename";
   private static final String ATTRIBUTE_FIELDS = "Fields";
   private static final String ATTRIBUTE_FIELD = "Field";
   private static final String ATTRIBUTE_NAME = "Name";
   private static final String ATTRIBUTE_VALUE = "Value";
   private static final String FIELD_NAME_FOLIO = "folio";
   private static final String FIELD_NAME_RUT = "rut";
   private static final String FIELD_NAME_PLACA_PATENTE = "placa patente";
   private static final String FIELD_NAME_NOMBRES = "nombres";
   private static final String FIELD_NAME_APELLIDO_PATERNO = "apellido paterno";
   private static final String FIELD_NAME_APELLIDO_MATERNO = "apellido materno";
   private static final String FIELD_NAME_ANO = "año";
   private static final String FIELD_NAME_TIPO_DOCUMENTO = "tipo de documento";
   
   public static void main(String[] args) {
      System.out.println(cronTask(args));
      //System.out.println(cronTask(new String[] { DbSessionManager.getInstance().getSystemToken() }));
      //System.out.println(cronTask());
      //System.out.println(cronTask(new String[] { DbSessionManager.getInstance().getSystemToken() }));
   }
   
   public static String cronTask(String[] params) {
      cronTask();
   }

   public static String cronTask() {
      try {
         importFiles();
         importMetadata();
      } catch (UnsupportedMimeTypeException e) {
         e.printStackTrace();
      } catch (FileSizeExceededException e) {
         e.printStackTrace();
      } catch (UserQuotaExceededException e) {
         e.printStackTrace();
      } catch (VirusDetectedException e) {
         e.printStackTrace();
      } catch (ItemExistsException e) {
         e.printStackTrace();
      } catch (PathNotFoundException e) {
         e.printStackTrace();
      } catch (AccessDeniedException e) {
         e.printStackTrace();
      } catch (RepositoryException e) {
         e.printStackTrace();
      } catch (IOException e) {
         e.printStackTrace();
      } catch (DatabaseException e) {
         e.printStackTrace();
      } catch (ExtensionException e) {
         e.printStackTrace();
      } catch (AutomationException e) {
         e.printStackTrace();
      } catch (ParserConfigurationException e) {
         e.printStackTrace();
      } catch (SAXException e) {
         e.printStackTrace();
      } catch (ParseException e) {
         e.printStackTrace();
      } catch (NoSuchGroupException e) {
         e.printStackTrace();
      } catch (LockException e) {
         e.printStackTrace();
      } catch (NoSuchPropertyException e) {
         e.printStackTrace();
      } 
      return "";
   }
 
   /**
    * importMetadata
    */
   public static void importMetadata() throws ParserConfigurationException, SAXException, IOException, ParseException,
         RepositoryException, DatabaseException, PathNotFoundException, NoSuchGroupException, LockException, AccessDeniedException,
         ExtensionException, NoSuchPropertyException, UnsupportedMimeTypeException, FileSizeExceededException,
         UserQuotaExceededException, VirusDetectedException, ItemExistsException, AutomationException {
      String fileName = "";
      String folio = "";
      String rut = "";
      String placaPatente = "";
      String nombres = "";
      String apellidoPaterno = "";
      String apellidoMaterno = "";
      String ano = "";
      String tipoDocumento = "";
 
      File folder = new File(SYSTEM_FOLDER + "/logfile");
      File[] listOfFiles = folder.listFiles();
 
      for (int i = 0; i < listOfFiles.length; i++) {
         File xmlFile = listOfFiles[i];
         if (xmlFile.isFile() && xmlFile.getName().toLowerCase().endsWith("indexlog.xml")) {
            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
            dbf.setNamespaceAware(true);
            dbf.setAttribute("http://xml.org/sax/features/namespaces", Boolean.TRUE);
 
            DocumentBuilder db = dbf.newDocumentBuilder();
            org.w3c.dom.Document xmlDoc = db.parse(xmlFile);
            xmlDoc.getDocumentElement().normalize();
            NodeList fileNodesList = xmlDoc.getElementsByTagName("File");
 
            for (int x = 0; x < fileNodesList.getLength(); x++) {
               fileName = "";
               folio = "";
               rut = "";
               placaPatente = "";
               nombres = "";
               apellidoPaterno = "";
               apellidoMaterno = "";
               ano = "";
               tipoDocumento = "";
               Node childFildNode = fileNodesList.item(x);

               if (childFildNode.getNodeType() == Node.ELEMENT_NODE) {
                  Element fileElement = (Element) childFildNode; // attibute node
                  fileName = fileElement.getElementsByTagName(ATTRIBUTE_FILENAME).item(0).getTextContent();
                  Node fieldsNode = fileElement.getElementsByTagName(ATTRIBUTE_FIELDS).item(0); // Only one field

                  if (fieldsNode.getNodeType() == Node.ELEMENT_NODE) {
                     Element fieldsElement = (Element) fieldsNode; // fields node
                     NodeList fieldList = fieldsElement.getElementsByTagName(ATTRIBUTE_FIELD);

                     for (int y = 0; y < fieldList.getLength(); y++) {
                        Node fieldNode = fieldList.item(y);

                        if (fieldNode.getNodeType() == Node.ELEMENT_NODE) {
                           Element fieldElement = (Element) fieldNode; // attibute node
                           String name = fieldElement.getElementsByTagName(ATTRIBUTE_NAME).item(0).getTextContent().trim();
                           String value = fieldElement.getElementsByTagName(ATTRIBUTE_VALUE).item(0).getTextContent().trim();

                           if (name.toLowerCase().equals(FIELD_NAME_FOLIO)) {
                              folio = value;
                           } else if (name.toLowerCase().equals(FIELD_NAME_RUT)) {
                              rut = value;
                           } else if (name.toLowerCase().equals(FIELD_NAME_PLACA_PATENTE)) {
                              placaPatente = value;
                           } else if (name.toLowerCase().equals(FIELD_NAME_NOMBRES)) {
                              nombres = value;
                           } else if (name.toLowerCase().equals(FIELD_NAME_APELLIDO_PATERNO)) {
                              apellidoPaterno = value;
                           } else if (name.toLowerCase().equals(FIELD_NAME_APELLIDO_MATERNO)) {
                              apellidoMaterno = value;
                           } else if (name.toLowerCase().equals(FIELD_NAME_ANO)) {
                              ano = value;
                           } else if (name.toLowerCase().equals(FIELD_NAME_TIPO_DOCUMENTO)) {
                              tipoDocumento = value;
                           }
                        }
                     }
                  }
 
                  if (fileName != null && !fileName.equals("")) {
                     QueryParams queryParams = new QueryParams();
                     queryParams.setDomain(QueryParams.DOCUMENT);
                     queryParams.setName(fileName);
                     Collection<QueryResult> results = OKMSearch.getInstance().find(null, queryParams);

                     if (results.size() == 1) {
                        for (QueryResult queryResult : results) {
                           if (queryResult.getDocument() != null) {
                              System.out.println(fileName + " -ok");
                              boolean found = false;

                              for (PropertyGroup group : OKMPropertyGroup.getInstance().getGroups(null, queryResult.getDocument().getPath())) {
                                 if (group.getName().equals("okg:data")) {
                                    found = true;
                                 }
                              }

                              if (!found) {
                                 OKMPropertyGroup.getInstance().addGroup(null, queryResult.getDocument().getPath(), "okg:data");
                              }
 
                              Map<String, String> propertiesMap = new HashMap<String, String>();
                              propertiesMap.put("okp:data.folio", folio);
                              propertiesMap.put("okp:data.rut", rut);
                              propertiesMap.put("okp:data.placa", placaPatente);
                              propertiesMap.put("okp:data.nombres", nombres);
                              propertiesMap.put("okp:data.apellido_padre", apellidoPaterno);
                              propertiesMap.put("okp:data.apellido_madre", apellidoMaterno);
                              propertiesMap.put("okp:data.year", ano);
                              propertiesMap.put("okp:data.documento", tipoDocumento);
                              OKMPropertyGroup.getInstance().setPropertiesSimple(null, queryResult.getDocument().getPath(), "okg:data", propertiesMap);
                           }
                        }
                     } else if (results.size() > 1) {
                        System.out.println(fileName + " - error");
                     } else {
                        System.out.println(fileName + " - not found");
                     }
                  }
               }
            }
            xmlFile.delete();
         }
      }
   }
 
   /**
    * importFiles
    */
   public static void importFiles() throws UnsupportedMimeTypeException, FileSizeExceededException, UserQuotaExceededException,
         VirusDetectedException, ItemExistsException, PathNotFoundException, AccessDeniedException, RepositoryException, IOException,
         DatabaseException, ExtensionException, AutomationException {
      String systemToken = DbSessionManager.getInstance().getSystemToken();
      // Loading files
      File folder = new File(SYSTEM_FOLDER + "/Output");
      File[] listOfFiles = folder.listFiles();
      for (int i = 0; i < listOfFiles.length; i++) {
         File file = listOfFiles[i];
         if (file.isFile() && file.getName().toLowerCase().endsWith(".PDF")) {
            Document doc = new Document();
            doc.setPath(OPENKM_FOLDER + "/" + file.getName());
            FileInputStream fis = new FileInputStream(file);
            doc = OKMDocument.getInstance().create(systemToken, doc, fis);
            file.delete();
         }
      }
   }
}

About Us

OpenKM is part of the management software. A management software is a program that facilitates the accomplishment of administrative tasks. OpenKM is a document management system that allows you to manage business content and workflow in a more efficient way. Document managers guarantee data protection by establishing information security for business content.