Difference between revisions of "Crontab simple importer"

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

Revision as of 11:29, 25 January 2013

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"));