Difference between revisions of "Crontab simple importer"
From OpenKM Documentation
(4 intermediate revisions by the same user not shown) | |||
Line 10: | Line 10: | ||
import java.io.*; | import java.io.*; | ||
import com.openkm.module.db.stuff.DbSessionManager; | import com.openkm.module.db.stuff.DbSessionManager; | ||
− | + | ||
String token = DbSessionManager.getInstance().getSystemToken(); | String token = DbSessionManager.getInstance().getSystemToken(); | ||
OKMDocument document = OKMDocument.getInstance(); | OKMDocument document = OKMDocument.getInstance(); | ||
OKMFolder folder = OKMFolder.getInstance(); | OKMFolder folder = OKMFolder.getInstance(); | ||
− | + | ||
public void autoImport(String okmPath, File fldpath){ | public void autoImport(String okmPath, File fldpath){ | ||
− | try{ | + | 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 { | } 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>"); | |
− | file. | + | } catch (Exception e) { |
+ | print ("Exception:" + e + "<br>"); | ||
+ | // Something bad happened to prevent import. Skip to next file. | ||
+ | continue; | ||
} | } | ||
+ | file.delete(); | ||
+ | } | ||
} catch (Exception e) { | } catch (Exception e) { | ||
− | + | print("Exception: " + e + "<br>"); | |
} | } | ||
} | } | ||
Line 56: | Line 51: | ||
autoImport("/okm:root/Scans/", new File("/home/fom/scanner")); | autoImport("/okm:root/Scans/", new File("/home/fom/scanner")); | ||
</source> | </source> | ||
+ | |||
+ | == Example == | ||
+ | '''Create crontab task:''' | ||
+ | [[File:Okm_user_guide_355.png|center]] | ||
+ | |||
+ | '''Files in OpenKM server:''' | ||
+ | [[File:Okm_user_guide_356.png|center]] | ||
+ | |||
+ | '''Imported documents view from OpenKM desktop:''' | ||
+ | [[File:Okm_user_guide_357.png]] |
Latest revision as of 10:34, 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"));
Example
Create crontab task:
Files in OpenKM server: