Crontab simple importer

From OpenKM Documentation
Revision as of 09:48, 25 January 2013 by Jllort (talk | contribs)

Jump to: navigation, search

Imports files fromserver file system. This is a crontab task based on scripting ( bsh ). Description:

  • Files stored in OpenKM ( can be directly stored in openkm or be a network folder connected to OpenKM server or shared by OpenKM server into the network )
  • Files are periodically imported by crontab task to some OpenKM folder ( /okm:root/Scans )

Script file

import com.openkm.core.*;
import com.openkm.api.*;
import java.io.*;
import com.openkm.module.db.stuff.DbSessionManager;

String token = DbSessionManager.getInstance().getSystemToken();
OKMDocument document = OKMDocument.getInstance();
OKMFolder folder = OKMFolder.getInstance();

public void autoImport(String okmPath, File fldpath){
  try{
	print("Scanning " + fldpath.getName() + "<br>");

	for (File file : fldpath.listFiles()) {
	  print("Importing " + file.getName() + "<br>");

	  try {
		if (file.isDirectory()){
		  try {
			folder.createSimple(token, okmPath + file.getName());
		  } catch (ItemExistsException ie) {
	   print("folder already exists<br>");
			// Folder already exists - just ignore exception
		  }
		  autoImport( okmPath + file.getName() + "/", file);
	  } else {
		  // Check if file is still being written to
		  long length = file.length();
		  Thread.sleep(1000);
	 
		  if (file.length() > length) continue;  // Skip file this time
		  document.createSimple(token, okmPath + file.getName(), new FileInputStream(file));
		}
		print("Created " + okmPath + file.getName() + "<br>");
	  } catch (Exception e) {
		print ("Exception:" + e + "<br>");
	   
		// Something bad happened to prevent import. Skip to next file.
		continue;
	  }

	  file.delete();
	}
  } catch (Exception e) {
	print("Exception: " + e + "<br>");
  }
}

autoImport("/okm:root/Scans/", new File("/home/fom/scanner"));