• Error CSV import metadata

  • Hemos intentado hacer de OpenKM una aplicación lo más intuitiva posible, sin embargo siempre viene bien algún consejo.
Hemos intentado hacer de OpenKM una aplicación lo más intuitiva posible, sin embargo siempre viene bien algún consejo.
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.
 #43485  by ahmadmoussa
 
Hola, Estoy tratando de importar metadatos a través de un archivo csv como se muestra en el ejemplo:
https://www.openkm.com/wiki/index.php/CSV_importer

Pero está sucediendo un error, el scriptng del openkm dice que el archivo no está en el directorio.

Error: bsh.TargetError: Sourced file: inline evaluation of: ``import java.io.Reader; import java.io.FileReader; import java.util.Iterator; . . . '' : Typed variable declaration : Object constructor : at Line: 34 : in file: inline evaluation of: ``import java.io.Reader; import java.io.FileReader; import java.util.Iterator; . . . '' : new FileReader ( csvFile ) Target exception: java.io.FileNotFoundException: C:/Users/ahmad/Desktop/metadata.csv (No existe el archivo o el directorio)
 #43495  by jllort
 
El error es bastante claro, te esta diciendo que este fichero no existe "C:/Users/ahmad/Desktop/metadata.csv"

Hace un par de semanas sacamos ya la nueva documentación de la community, por lo que en el foro os vamos a ir sugiriendo durante un tiempo empezar a utilizarla, en tu caso la url que te interesa es https://docs.openkm.com/kcenter/view/ok ... -file.html

Te aconsejo, que los scripts que tenemos en la web, los transformes a tareas de crontab ( podras debugarlas etc... ) para esto necesitaras el entorno de desarrollo portable, pero a la larga veras que es mucho mejor que funcionar con scripts. Dos url que te van a interesar:
https://docs.openkm.com/kcenter/view/ok ... b-job.html
https://sourceforge.net/projects/openkmportabledev/
 #43510  by ahmadmoussa
 
Sé que el error lo dice, mi problema es que el directorio es correcto, sin embargo, todavía da este error. He intentado cambiar el directorio, cambiar el nombre del archivo, e incluso entonces el error persiste.
Code: Select all
import java.io.FileReader;
import java.io.Reader;
import java.util.Iterator;
import java.util.List;
import java.util.Collection;
 
import com.googlecode.jcsv.CSVStrategy;
import com.googlecode.jcsv.reader.CSVReader;
import com.googlecode.jcsv.reader.internal.CSVReaderBuilder;
import com.googlecode.jcsv.reader.internal.DefaultCSVEntryParser;
 
import com.openkm.dao.bean.QueryParams;
import com.openkm.bean.QueryResult;
import com.openkm.api.OKMSearch;
import com.openkm.util.FileLogger;
import com.openkm.api.OKMPropertyGroup;
import com.openkm.util.PathUtils;
 
String grpName = "okg:metadata";
String FILE_LOG_NAME = "CSVLOG";
String META_PATH = "C:/Users/ahmad/Desktop";
String META_FILE_NAME = "metadata.csv";
int uniqueFileName = 0;
int valueColumn = 1;
 
// Format defintion
char delimiter = ',';
char quoteCharacter = '"';
char commentIndicator = '#';
boolean skipHeader = true;
boolean ignoreEmptyLines = true;
CSVStrategy strategy = new CSVStrategy(delimiter, quoteCharacter, commentIndicator, skipHeader, ignoreEmptyLines);

// File reader
Reader reader = new FileReader(META_PATH + META_FILE_NAME);

// CSV reader		
CSVReader csvParser = new CSVReaderBuilder(reader).strategy(strategy).entryParser(new DefaultCSVEntryParser()).build();
List data = csvParser.readAll();
int count = 1;
int countFound = 0;
int countNotDocument = 0;
int moreThanOneDocumentFound = 0;
int notFound = 0;
int noName = 0;
 
for (Iterator it = data.listIterator(); it.hasNext();) {
    String[] row = (String[]) it.next();
    String docPath = row[uniqueFileName];
    print(count + ">>>> " + docPath);
    
    if (docPath != null && !docPath.equals("")) {
        QueryParams queryParams = new QueryParams();
        queryParams.setDomain(QueryParams.DOCUMENT);
        queryParams.setName(PathUtils.getName(docPath));
        Collection results = OKMSearch.getInstance().find(null, queryParams);
 
        if (results.size() == 1) {
            QueryResult queryResult = (QueryResult) results.iterator().next();
            if (queryResult.getNode() != null && queryResult.getNode() instanceof Document) {
                print("found");
                countFound++;

                // Add Group
                OKMPropertyGroup.getInstance().addGroup(null, docPath, grpName);

                // Add metadata
                Map map = new HashMap();
                map.put("okp:metadata.value", row[valueColumn]);
                OKMPropertyGroup.getInstance().setPropertiesSimple(null, docPath, grpName, map);
            } else {
                print("error is not document");
                countNotDocument++;
            }
        } else if (results.size() > 1) {
            print("error more than one document found can not decide");
            moreThanOneDocumentFound++;
        } else {
            print("not found");
            notFound++;
        }
    } else {
        print("error document has no name");
        noName++;
    }

    print("</br>");
 
    //FileLogger.info(FILE_LOG_NAME, "Document name ''{0}'' to ''{1}''", row[0], row[posDocRevNo]);
    count++;
}
 
print("Total:" + count + "</br>");
print("Found:" + countFound + "</br>");
print("Error not document:" + countNotDocument + "</br>");
print("Error more then one document found:" + moreThanOneDocumentFound + "</br>");
print("Error not found:" + notFound + "</br>");
print("Error name empty:" + notFound + "</br>");

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.